package com.ruoyi.doubledefense.dtoGov;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.Date;

/**
 * 四色图：tb_four_color_diagram
 * 双重预防汇聚计算节点
 */
@Data
public class DangerDTOGov extends GovBaseEntity {

    private static final long serialVersionUID = 4551382039921901075L;
    /**
     * 主键
     */
    @JsonProperty("ID")
    private String id;

    /**
     * 风险分析对象编码
     */
    @JsonProperty("HAZARD_CODE")
    private String hazardCode;

    /**
     * 管控措施主键
     */
    @JsonProperty("RISK_MEASURE_ID")
    private String riskMeasureId;

    /**
     * 隐患排查记录ID巡检ID
     */
    @JsonProperty("CHECK_RECORD_ID")
    private String checkTaskInventoryRecordId;

    /**
     * 隐患名称
     */
    @JsonProperty("DANGER_NAME")
    private String dangerName;

    /**
     * 隐患等级
     * 隐患等级（一般隐
     * 患：0；重大隐患：
     * 1）
     */
    @JsonProperty("DANGER_LEVEL")
    private Integer dangerLevel;

    /**
     * 登记时间
     */
    @JsonProperty("REGIST_TIME")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date registTime;

    /**
     * 登记人姓名
     */
    @JsonProperty("REGISTRANT")
    private String registRant;

    /**
     * 隐患来源
     */
    @JsonProperty("DANGER_SRC")
    private String dangerSrc;

    /**
     * 治理类型
     * 隐患治理类型（
     * 即查即改：0；
     * 限期整改：1
     * ）
     */
    @JsonProperty("DANGER_MANAGE_TYPE")
    private Integer dangerManageType;

    /**
     * 隐患类型
     * 隐患类型（安全：1；工艺：2；电气：3；仪表：4；消防：5；总图：6；设备：7；其他：8）
     */
    @JsonProperty("HAZARD_DANGER_TYPE")
    private Integer hazardDangerType;

    /**
     * 隐患描述
     */
    @JsonProperty("DANGER_DESC")
    private String dangerDesc;

    /**
     * 原因分析(没有对应的值，始终为空)
     */
    @JsonProperty("DANGER_REASON")
    private String dangerReason;

    /**
     * 控制措施_管控措施主键对应的文字说明
     */
    @JsonProperty("CONTROL_MEASURES")
    private String riskMeasureDesc;

    /**
     * 资金
     */
    @JsonProperty("COST")
    private String cost;

    /**
     * 整改责任人
     */
    @JsonProperty("LIABLE_PERSON")
    private String liablePerson;

    /**
     * 隐患治理期限
     */
    @JsonProperty("DANGER_MANAGE_DEADLINE")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date dangerManageDeaddline;

    /**
     * 验收人姓名
     */
    @JsonProperty("CHECK_ACCEPT_PERSON")
    private String checkAcceptPerson;

    /**
     * 验收时间
     */
    @JsonProperty("CHECK_ACCEPT_TIME")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date checkAcceptTime;

    /**
     * 验收情况
     */
    @JsonProperty("CHECK_ACCEPT_COMMENT")
    private String checkAcceptComment;

    /**
     * 验收状态
     */
    @JsonProperty("DANGER_STATE")
    private Integer dangerState;

    /*
    SELECT
      hazard.hazard_code 风险分析对象编码,
      t1.risk_measure_id 管控措施主键,
      t1.check_task_inventory_record_id 隐患排查记录ID巡检ID,

      t1.id,
      t1.danger_name 隐患名称,
      t1.danger_level 隐患等级,
      t1.regist_time 登记时间,
      c_user.nick_name 登记人姓名,
      t1.danger_src 隐患来源,
      t1.danger_manage_type 治理类型,
      t1.hazard_danger_type 隐患类型,
      t1.danger_desc 隐患描述,
    --   t1. 原因分析,
      risk_measure.risk_measure_desc 控制措施_管控措施主键对应的文字说明,
      t2.cost 资金,
      m_user.nick_name 整改责任人,
      t2.danger_manage_deaddline 隐患治理期限,
      check_user.nick_name 验收人姓名,
      t2.check_accept_time 验收时间,
      t2.check_accept_comment 验收情况,
     -- danger_status 隐患状态：10待审核，20认领中，30整改中，40待验收，50已验收，60取消
     -- 隐患状态（0-整改中：1-待验收：9-已验收）
      CASE t1.danger_status
        WHEN 30 THEN 0
        WHEN 40 THEN 1
        WHEN 50 THEN 9
        END
        AS 验收状态,


      t1.is_del,
      t1.create_date,
      IFNULL(c_user.nick_name, '管理员') AS createBy,
      t1.update_date,
      IFNULL(u_user.nick_name, '管理员') AS updateBy,
      t1.company_code AS companyCode
    FROM tb_danger t1
    INNER JOIN tb_danger_manage t2 ON t2.danger_id = t1.id

    LEFT JOIN tb_hazard hazard ON hazard.id = t1.hazard_id

    LEFT JOIN tb_risk_measure risk_measure ON risk_measure.id = t1.risk_measure_id

    INNER JOIN sys_user m_user ON m_user.user_id = t2.manage_user_id

    LEFT JOIN sys_user check_user ON check_user.user_id = t2.check_user_id

    LEFT JOIN tb_risk_measure risk_m ON risk_m.id = t1.risk_measure_id

    INNER JOIN sys_user c_user ON c_user.user_id = t1.create_user_id
    LEFT JOIN sys_user u_user ON u_user.user_id = t1.update_user_id
    WHERE t1.is_del = 0
    AND t1.danger_status IN (30,40,50)

    -- GROUP BY t1.id
    ORDER BY t1.create_date, t1.update_date

     */

}
