package com.hotwj.platform.securityManagement.hiddenDangerInspection.domain.vo;

import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import com.hotwj.platform.securityManagement.hiddenDangerInspection.domain.HotHiddenDangerInspection;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;


/**
 * 隐患排查-排查项目视图对象 hot_hidden_danger_inspection
 *
 * @author shihongwei
 * @date 2025-12-31
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = HotHiddenDangerInspection.class)
public class HotHiddenDangerInspectionVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

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

    /**
     * 公司ID
     */
    @ExcelProperty(value = "公司ID")
    private Long companyId;

    /**
     * 计划ID
     */
    @ExcelProperty(value = "计划ID")
    private Long planId;

    /**
     * 排查项目
     */
    @ExcelProperty(value = "排查项目")
    private String projectName;

    /**
     * 排查项目对应id 类型为1无
     */
    @ExcelProperty(value = "排查项目对应id 类型为1无")
    private String projectId;

    /**
     * 排查内容JSON
     */
    @ExcelProperty(value = "排查内容JSON")
    private String checkContentJson;

    /**
     * 隐患描述
     */
    @ExcelProperty(value = "隐患描述")
    private String dangerDesc;

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

    /**
     * 排查人ID
     */
    @ExcelProperty(value = "排查人ID")
    private String checkerId;

    /**
     * 排查人姓名
     */
    @ExcelProperty(value = "排查人姓名")
    private String checkerName;

    /**
     * 排查日期
     */
    @ExcelProperty(value = "排查日期")
    private Date checkDate;

    /**
     * 评估人id
     */
    @ExcelProperty(value = "评估人id")
    private Long evaluatorId;

    /**
     * 评估人姓名
     */
    @ExcelProperty(value = "评估人姓名")
    private String evaluatorName;

    /**
     * 审核人ID
     */
    @ExcelProperty(value = "审核人ID")
    private Long approverId;

    /**
     * 审核人姓名
     */
    @ExcelProperty(value = "审核人姓名")
    private String approverName;

    /**
     * 进度状态 无异常:1=特处理、2=审核中、3=完结 有异常:4=特处理、5=审核中、6=评估、7=治理、8=复查、9=完结
     */
    @ExcelProperty(value = "进度状态 无异常:1=特处理、2=审核中、3=完结 有异常:4=特处理、5=审核中、6=评估、7=治理、8=复查、9=完结")
    private Long status;

    /**
     * 排查人签名图片url
     */
    @ExcelProperty(value = "排查人签名图片url")
    private String signImgUrl;

    /**
     * 审核日期
     */
    @ExcelProperty(value = "审核日期")
    private Date auditDate;

    /**
     * 审核结论
     */
    @ExcelProperty(value = "审核结论")
    private String auditConclusion;

    /**
     * 审核人签名图片url
     */
    @ExcelProperty(value = "审核人签名图片url")
    private String approverSignImgUrl;

    /**
     * 审核-是否存在隐患 0=否 1=是
     */
    @ExcelProperty(value = "审核-是否存在隐患 0=否 1=是")
    private Long auditHasDanger;

    /**
     * 0=正常, 1=已删除
     */
    @ExcelProperty(value = "0=正常, 1=已删除")
    private Long isDeleted;

    /**
     * 排查类型（1=公司 2=车辆 3=企业）
     */
    @ExcelProperty(value = "排查类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1==公司,2==车辆,3==企业")
    private Long projectType;

    /**
     * 流程实例ID
     */
    @ExcelProperty(value = "流程实例ID")
    private String instanceId;

    /**
     * 流程状态
     */
    @ExcelProperty(value = "流程状态")
    private String flowStatus;

    /**
     * 提交版本号
     */
    private Long submitVersion;

    /**
     * 审核结果（PASS=通过 REJECT=驳回）
     */
    private String auditResult;

    /**
     * 驳回次数
     */
    private Long rejectCount;

    /**
     * 最近一次驳回原因
     */
    private String lastRejectReason;

    /**
     * 最近一次驳回时间
     */
    private Date lastRejectTime;

    /**
     * 最近一次驳回人ID
     */
    private Long lastRejectById;

    /**
     * 最近一次驳回人姓名
     */
    private String lastRejectByName;

    /**
     * 流程任务ID
     */
    private String taskId;

    private String planName;

    private Date planStartDate;

    private Date planEndDate;

    private Integer todoSortGroup;

    private String todoSortLabel;

    /**
     * 审核不通过历史
     */
    private List<HotHiddenDangerInspectionAuditHistoryVo> rejectHistoryList;
}
