package com.fs.task.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fs.common.annotation.Excel;
import com.fs.doctor.vo.DoctorVO;
import com.fs.task.enums.TaskFinishStatusEnum;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@Data
public class TaskInfoVO {
    /**
     * 主键ID
     */
    private Long id;

    /**
     * 任务编号
     */
    private String taskNo;

    /**
     * 任务名称
     */
    private String taskName;

    /**
     * 归属部门ID
     */
    private Long deptId;

    private String deptName;

    /**
     * 归属项目ID
     */
    private Long projectId;

    /**
     * 项目名称（非表字段）
     */
    private String projectName;
    /**
     * 费用分摊ID
     */
    private Long costShareId;

    private String costShareName;
    /**
     * 任务类型
     */
    private Long taskType;

    private String taskTypeName;

    /**
     * 任务积分
     */
    private BigDecimal taskIntegral;

    /**
     * 任务数量
     */
    private Long taskCount;

    /**
     * 任务单位(字典ID)
     */
    private Long taskUnit;


    private String taskUnitName;

    /**
     * 任务状态(字典ID)
     */
    private Integer taskStatus;


    private String taskStatusName;

    /**
     * 归属产品ID
     */
    private Long productId;



    private String productName;

    /**
     * 客户/讲者ID(关联医生表)
     */

    private Long doctorId;


    private String doctorName;
    /**
     * 计划开始时间
     */

    private Date planStartTime;

    /**
     * 计划结束时间
     */

    private Date planEndTime;

    /**
     * 任务申请时间
     */

    private Date applyTime;

    /**
     * 任务创建审批时间
     */

    private Date createAuditTime;

    /**
     * 交付物审核时间
     */
    private Date deliveryAuditTime;

    /**
     * 服务确认单状态(字典ID)
     */
    private Long serviceConfirmStatus;

    private String serviceConfirmStatusName;

    /**
     * {@link TaskFinishStatusEnum}
     * 完结状态(字典ID)
     */
    private Long finishStatus;

    private String finishStatusName;

    /**
     * 归属类型(字典ID)
     */
//    @Excel(name = "归属类型(字典ID)")
    private Long belongType;

    private String belongTypeName;


    /**
     * 是否抽检(0-否 1-是)
     */
    private Long isSpotCheck;

    /**
     * 抽检人ID
     */
    private Long spotCheckUserId;
    /**
     * 抽检人姓名（非数据库字段）
     */
    private String spotCheckUserName;

    /**
     * 抽检时间
     */
    private Date spotCheckTime;

    /**
     * 审核状态(字典ID)
     */
    private Long auditStatus;


    /**
     * 是否申请补充直播间任务(0-否 1-是)
     */
    private Long isSupplementLive;

    /**
     * 补充直播任务直播间ID
     */
    private String supplementLiveTaskId;

    /**
     * 补充直播任务原因
     */
    private String supplementLiveReason;

    /**
     * 删除标识(0-未删除 1-已删除)
     */
    private Long deleted;

    /**
     * 创建审核状态：0-待审核 1-审核通过 2-审核驳回
     */
    private Integer createAuditStatus;

    /**
     * 创建审核人ID
     */
    private Long createAuditUserId;

    /**
     * 创建审核人姓名（非数据库字段）
     */
    private String createAuditUserName;

    /**
     * 创建审核意见
     */
    private String createAuditRemark;

    /**
     * 完成审核状态：0-待审核 1-审核通过 2-审核驳回
     */
    private Integer finishAuditStatus;

    /**
     * 完成审核人ID
     */
    private Long finishAuditUserId;

    /**
     * 完成审核人姓名（非数据库字段）
     */
    private String finishAuditUserName;

    /**
     * 完成审核时间
     */
    private Date finishAuditTime;

    /**
     * 完成审核意见
     */
    private String finishAuditRemark;






    /**
     * 创建审核人类型 0客服(默认) 1系统用户
     */
    private Integer caUserType;

    /**
     * 公司id
     */
    private Long companyId;

    /**
     * 公司名字
     */
    private String companyName;

    /**
     * 创建审核实例id
     */
    private Long createAuditInstanceId;

    /**
     * 完成审核实例id
     */
    private Long finishAuditInstanceId;

    /**
     * 切换状态标签字段
     */
    private String auditTab;

    /**
     * 业务员
     */
    private Long companyUserId;


    /**
     * 多选讲者
     */
    private List<Long> doctorIds;

    private DoctorVO doctorVO;

    /**
     * 交付物数据（根据taskType类型不同，对应不同的对象）
     * - 文章类型：CtArticle列表
     * - 长视频类型：CtLongVideo列表
     * - 短视频类型：CtShortVideo列表
     */
    private Object deliveries;

    /**
     * 任务材料信息列表
     */
    private List<com.fs.task.domain.TaskMaterialInfo> materialInfoList;

}
