package com.casic.missiles.dto.equipment;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.alibaba.excel.enums.poi.BorderStyleEnum;
import com.baomidou.mybatisplus.annotation.TableField;
import com.casic.missiles.annotation.DictCodeField;
import com.casic.missiles.constants.MeterDictCode;
import com.casic.missiles.model.equipment.EquipmentApplyEquipment;
import com.casic.missiles.model.equipment.EquipmentApplyFile;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.List;


@Data
@ApiModel
@ColumnWidth(30)
@HeadRowHeight(15)
@ContentRowHeight(20)
@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN)
@ExcelIgnoreUnannotated
public class AcceptanceCheck {
    /**
     * 主键
     */
    @ApiModelProperty(value = "主键", dataType = "Long")
    private Long id;

    /**
     * 检修申请id
     */
    @ApiModelProperty(value = "检修申请id", dataType = "String")
    private String acceptanceCheckId;

    /**
     * 验收单编号
     */
    @ExcelProperty(value = "验收单编号",order = 0)
    @ApiModelProperty(value = "验收单编号", dataType = "String")
    private String applyNo;

    /**
     * 验收单名称
     */
    @ExcelProperty(value = "验收单名称",order = 1)
    @ApiModelProperty(value = "验收单名称", dataType = "String")
    private String applyName;

    /**
     * 检修单编号
     */
    @ExcelProperty(value = "检修单编号",order = 2)
    @ApiModelProperty(value = "检修单编号", dataType = "String")
    private String checkApplyNo;

    /**
     * 检修单名称
     */
    @ExcelProperty(value = "检修单名称",order = 3)
    @ApiModelProperty(value = "检修单名称", dataType = "String")
    private String checkApplyName;

    /**
     * 检修保养人
     */
    @ExcelProperty(value = "检修保养人",order = 4)
    @ApiModelProperty(value = "检修保养人", dataType = "String")
    private String overhaulPerson;

    /**
     * 检修日期
     */
    @ExcelProperty(value = "检修日期",order = 5)
    @ApiModelProperty(value = "检修日期", dataType = "String")
    private String checkDate;

    /**
     * 审批状态-字典code
     */
    @TableField("approval_status")
    @DictCodeField(message = "审批状态不合法", cacheName = MeterDictCode.APPROVAL_STATUS)
    @ApiModelProperty(value = "审批状态-字典code", dataType = "String")
    private String approvalStatus;

    /**
     * 流程实例ID
     */
    @TableField("process_id")
    @ApiModelProperty(value = "流程实例ID", dataType = "String")
    private String processId;

    /**
     * 审批状态名称
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "审批状态名称", dataType = "String")
    private String approvalStatusName;

    /**
     * 任务id
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "任务id（同意、驳回等操作使用）", dataType = "String")
    private String taskId;

    /**
     * 备注
     */
    @TableField("remark")
    @ApiModelProperty(value = "备注", dataType = "String")
    private String remark;

    /**
     * 删除标记
     */
    @TableField("is_del")
    @ApiModelProperty(value = "删除标记", dataType = "Integer")
    private Integer isDel;


    /**
     * 创建人
     */
    @TableField("create_user")
    @ApiModelProperty(value = "创建人", dataType = "String")
    private String createUser;

    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间", dataType = "String")
    private String createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    @ApiModelProperty(value = "更新时间", dataType = "String")
    private String updateTime;

    /**
     * 检修设备列表
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "检修设备列表", dataType = "List")
    List<EquipmentApplyEquipment> checkList;

    /**
     * 附件列表
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "附件列表", dataType = "List")
    List<EquipmentApplyFile> fileList;

    /**
     * 可选决策项
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "可选决策项（1同意驳回拒绝 2同意驳回 3同意拒绝，用于待审批列表同意/驳回/拒绝按钮展示）", dataType = "Integer")
    private Integer decisionItem;

}
