package com.ruoyi.oa.domain.vo;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
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.common.core.domain.entity.SysUser;
import com.ruoyi.system.domain.SysOss;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.util.List;


/**
 * 任务管理视图对象 sys_oa_task
 *
 * @author huangxing
 * @date 2024-01-11
 */
@Data
@ExcelIgnoreUnannotated
public class SysOaTaskVo {

    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @ExcelProperty(value = "ID")
    private Long taskId;

    /**
     * 项目ID
     */
    @ExcelProperty(value = "项目ID")
    private Long projectId;

    /**
     * 任务主题
     */
    @ExcelProperty(value = "任务主题")
    private String taskTitle;

    /**
     * 工作类型
     */
    @ExcelProperty(value = "工作类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_work_type")
    private Long taskType;

    /**
     * 优先级
     */
    @ExcelProperty(value = "优先级")
    private String taskGrade;

    /**
     * 协作人员
     */
    @ExcelProperty(value = "协作人员")
    private String collaborator;

    /**
     * 开始时间
     */
    @ExcelProperty(value = "开始时间")
    private Date beginTime;

    /**
     * 结束时间
     */
    @ExcelProperty(value = "结束时间")
    private Date finishTime;

    /**
     * 详细描述
     */
    @ExcelProperty(value = "详细描述")
    private String content;

    /**
     * 附件
     */
    @ExcelProperty(value = "附件")
    private String accessory;

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

    /**
     * 创建者
     */
    @ExcelProperty(value = "创建者")
    private String createBy;

    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    private Date createTime;

    /**
     * 涉及工人列表
     * */
    private List<SysUser> workerList;

    /**
     * 此任务总成本
     */
    private Double projectCostTotal;

    /**
     * 创建者
     */
    private Long createUserId;

    /**
     * 被分配者
     */
    private Long workerId;

    /**
     * 最初结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date originFinishTime;

    /**
     * 推迟次数
     */
    private Long postponements;

    /**
     * 任务完成度评分
     */
    private Long rankNumber;

    /**
     * 任务完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date completedTime;

    /**
     * 任务创建者
     */
    private String createUserNickName;

    /**
     * 执行者
     */
    private String workerNickName;

    /**
     * 逾期天数
     */
    private Long overDays;

    /**
     * 项目名
     */
    private String projectName;

    /**
     * 项目编号
     */
    private String projectNum;

    /**
     * 任务状态
     */
    private Long state;

    /**
     * 任务置顶
     */
    private Long taskRank;

    /**
     * 是否置顶
     */
    private Long ownRank;


    /**
     * 任务模式
     */
    private Long status;

    /**
     * 报工间隔
     */
    private Long timeGap;

    /**
     * 最后一个item的id
     */
    private Long itemId;

    private Date tempTime;

    private List<SysOaTaskItemVo> taskItemVoList;

    private String files;
}
