package com.ruoyi.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 审查场景变更任务
 * @TableName t_review_scene_change_task
 */
@ApiModel(value = "ReviewSceneChangeTask", description = "场景变更任务")
@TableName(value ="t_review_scene_change_task")
@Accessors(chain = true)
@Data
public class ReviewSceneChangeTask {

    @TableField(exist = false)
    public static final String OPERATION_ADD = "ADD";
    @TableField(exist = false)
    public static final String OPERATION_DELETE = "DELETE";
    @TableField(exist = false)
    public static final String OPERATION_UPDATE = "UPDATE";

    @TableField(exist = false)
    public static final String STATUS_PENDING = "PENDING";
    @TableField(exist = false)
    public static final String STATUS_FINISH = "FINISH";
    @TableField(exist = false)
    public static final String STATUS_CLOSE = "CLOSE";

    @TableField(exist = false)
    public static final String RESULT_PASS = "PASS";
    @TableField(exist = false)
    public static final String RESULT_REJECT = "REJECT";

    /**
     * 参与审核的角色
     */
    @TableField(exist = false)
    public static final Long REVIEW_ROLE_ID = 103L;

    /**
     * 主键
     */
    @ApiModelProperty("主键")
    @TableId(type = IdType.ASSIGN_ID)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long id;

    /**
     * 任务编号
     */
    @ApiModelProperty("任务编号")
    private String taskNo;

    /**
     * 章节
     */
    @ApiModelProperty("章节")
    private String chapter;

    /**
     * 审查标准id
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    @ApiModelProperty("审查标准id")
    private Long standardId;

    /**
     * 审查标准
     */
    @ApiModelProperty("审查标准")
    private String standard;

    /**
     * 检查类型[system(体系审查)、car(车型审查)]
     */
    @ApiModelProperty("检查类型[system(体系审查)、car(车型审查)]")
    private String type;

    /**
     * 审查要点id
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    @ApiModelProperty("审查要点id")
    private Long keypointId;

    /**
     * 审查要点
     */
    @ApiModelProperty("审查要点")
    private String keypoint;

    /**
     * 审查细则id
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    @ApiModelProperty("审查细则id")
    private Long detailsId;

    /**
     * 审查细则
     */
    @ApiModelProperty("审查细则")
    private String details;

    /**
     * 操作 [ADD DELETE UPDATE]
     */
    @ApiModelProperty(value = "操作" , notes = "[ADD DELETE UPDATE]")
    private String operation;

    @ApiModelProperty(value = "分类" , notes = "[KEYPOINT DETAILS SCENE]")
    private String sort;

    @ApiModelProperty("评审类型")
    private String operationSort;

    /**
     * 当 operation 为 ADD 时该字段为空
     */
    @ApiModelProperty(value = "场景旧值", notes = "当 operation 为 ADD 时该字段为空")
    private String oldText;

    /**
     * 当 operation 为 DELETE 时该字段为空
     */
    @ApiModelProperty(value = "场景新值", notes = "当 operation 为 DELETE 时该字段为空")
    private String newText;

    /**
     * 任务发起人姓名
     */
    @ApiModelProperty("任务发起人姓名")
    private String taskInitiator;

    /**
     * 任务发起人部门
     */
    @ApiModelProperty("任务发起人部门")
    private String taskInitiatorDept;

    /**
     * 任务发起人Id
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    @ApiModelProperty("任务发起人Id")
    private Long taskInitiatorId;

    /**
     * 任务状态 [PENDING、FINISH、CLOSE]
     */
    @ApiModelProperty(value = "任务状态", notes = "[PENDING、FINISH、CLOSE]")
    private String taskStatus;

    /**
     * 任务结果 [PASS、REJECT]
     */
    @ApiModelProperty(value = "任务结果", notes = "[PASS、REJECT]")
    private String taskResult;

    /**
     * 任务开始时间
     */
    @ApiModelProperty("任务开始时间")
    private Date taskBeginTime;

    /**
     * 任务结束时间
     */
    @ApiModelProperty("任务结束时间")
    private Date taskEndTime;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String remark;

    /**
     * 审查场景id
     * 若为修改、删除任务时,此id在创建任务时赋值
     * 若为新增任务时,此id在审批通过并保存新场景后赋值
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    @ApiModelProperty(value = "审查场景id", notes = "1.若为修改、删除任务时,此id在创建任务时赋值; 2.若为新增任务时,此id在审批通过并保存新场景后赋值 ")
    private Long reviewSceneId;

}