package com.ruoyi.oa.domain.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
import com.ruoyi.oa.domain.OaProgress;
import lombok.Data;
import java.util.Date;
import java.util.List;


/**
 * 进度管理视图对象 oa_progress
 *
 * @author hdka
 * @date 2025-04-14
 */
@Data
@ExcelIgnoreUnannotated
public class OaProgressVo {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @ExcelProperty(value = "主键ID")
    private Long progressId;

    /**
     * 所属项目ID(可根据实际需要)
     */
    @ExcelProperty(value = "所属项目ID(可根据实际需要)")
    private Long projectId;

    /**
     * 所属项目ID(可根据实际需要)
     */
    private String projectName;

    /**
     * 所属项目ID(可根据实际需要)
     */
    private String projectNum;

    /**
     * 进度类型：1-项目进度；2-付款进度(可根据实际约定)
     */
    @ExcelProperty(value = "进度类型：1-项目进度；2-付款进度(可根据实际约定)")
    private Long type;

    /**
     * 进度名称
     */
    @ExcelProperty(value = "进度名称")
    private String progressName;

    /**
     * 父进度ID，0或NULL表示没有父节点
     */
    @ExcelProperty(value = "父进度ID，0或NULL表示没有父节点")
    private Long parentId;

    /**
     * 排序字段(如需)
     */
    @ExcelProperty(value = "排序字段(如需)")
    private Long sort;

    /**
     * 备注(如需)
     */
    @ExcelProperty(value = "备注(如需)")
    private String remark;

    /**
     * 备注(如需)
     */
    private String timeRemark;

    /**
     * 状态位
     */
    @ExcelProperty(value = "状态位")
    private Long status;

    /**
     * 套数
     */
    private Long amount;

    private List<OaProgressVo> children;

    private List<OaProgressDetailVo> tasks;

    /**
     * 联系人电话
     */
    private String contactPhone;

    /**
     * 父项目电话
     */
    private String parentPhone;
    private String nowDepart;

    // 新增统计字段
    private Long progressSize;
    private Long finishCount;
    private Double completionPercent;
    private Long remainTime;
    private Double detailCompletePercent;
    private String nowLevel;
    private Long nowLevelId;
    // 项目合同金额
    private Double funds;
    private Date endTime;
    private Date payEndTime;

}
