package com.xisc.pm.domain.vo;

import io.choerodon.mybatis.domain.AuditDomain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;


/**
 * @author 蒋雨航 yuhang.jiang02@hand-china.com
 * @since 2024-08-14 15:37:09
 */
@Data
public class MmPlateVO extends AuditDomain implements Serializable {
    private static final long serialVersionUID = 209054404721502709L;

    @ApiModelProperty("表ID，主键")
    @Id
    @GeneratedValue
    private Long plateId;

    @ApiModelProperty(value = "钢板号（轧制实绩的钢板号）", required = true)
    private String matNo;

    @ApiModelProperty(value = "发生代码（1：人工录入；2：二级轧制实绩上传）", required = true)
    private String occrCd;

    @ApiModelProperty(value = "产线号(1:板一,2:板二,5:5米,W:外委)", required = true)
    private String mscLineNo;

    @ApiModelProperty(value = "状态代码（1：有计划未切；2：已产出；3：已消耗）", required = true)
    private String recSts;

    @ApiModelProperty(value = "进程代码（合同跟踪模块待确认）", required = true)
    private String procCd;

    @ApiModelProperty(value = "前进程代码（合同跟踪模块待确认）")
    private String befProcCd;

    @ApiModelProperty(value = "产品代码（PP：钢板；MP:母板）", required = true)

    private String prodCd;
    @ApiModelProperty(value = "母板号（剪切时生成）")
    private String motherNo;
    @ApiModelProperty(value = "板坯号（来自于轧制计划）")
    private String slabNo;
    @ApiModelProperty(value = "计划号（来自于轧制计划）")
    private String planNo;
    @ApiModelProperty(value = "合同号（来自于板坯上的合同号）")
    private String orderNo;
    @ApiModelProperty(value = "第一次合同号(命令板坯号去生产组炉抓)")
    private String firstOrderNo;
    @ApiModelProperty(value = "原始合同号（初始值为空）")
    private String orgOrderNo;
    @ApiModelProperty(value = "制造命令号（来自于板坯主表）")
    private String pono;
    @ApiModelProperty(value = "命令板坯号（来自于板坯主表）")
    private String ponoSlab;
    @ApiModelProperty(value = "年份（来自于生产模块）")
    private String prodYear;
    @ApiModelProperty(value = "材料状态（初始值23）")
    private String matStatus;
    @ApiModelProperty(value = "生产时间（系统当前时间）", required = true)
    @NotNull
    private Date prodTime;
    @ApiModelProperty(value = "交货日期（通过合同号读取质量模块数据）")
    private Date delToTime;
    @ApiModelProperty(value = "产品规范码(质量改判时写入,初始值空)")
    private String psc;
    @ApiModelProperty(value = "产品最终用途码(质量改判时写入,初始值空)")
    private String apn;
    @ApiModelProperty(value = "冶金规范码(质量改判时写入,初始值空)")
    private String msc;

    @ApiModelProperty(value = "外委标记(0:其他,1:外委)")
    private String outtrustFlag;

    @ApiModelProperty(value = "好面朝向代码（默认为T）")
    private String betterSurfWardCode;

    @ApiModelProperty(value = "订单材/余材代码（默认为1：订单材，2：余材）")
    private String ordFl;

    @ApiModelProperty(value = "表面判定代码（0:未判定 1:合格 2:不合格 4:报废）")
    private String surfaceDecideCode;

    @ApiModelProperty(value = "表面判定时间（默认为空，提供给质量模块）")
    private Date surfaceDecideTime;

    @ApiModelProperty(value = "余材原因代码（默认为空，提供给质量模块）")
    private String remainCauseCode;

    @ApiModelProperty(value = "余材判定时间（默认为空，提供给质量模块）")
    private Date remainDecideTime;

    @ApiModelProperty(value = "余材判定责任者（默认为空，提供给质量模块）")
    private String remainDecideMaker;

    @ApiModelProperty(value = "余材判定代码（默认为空，提供给质量模块）")
    private String remainDecideCode;

    @ApiModelProperty(value = "综合判定代码（默认为空，提供给质量模块）")
    private String complexDecideCode;

    @ApiModelProperty(value = "综合判定时间（默认为空，提供给质量模块）")
    private Date complexDecideTime;

    @ApiModelProperty(value = "综合判定责任者（默认为空，提供给质量模块）")
    private String complexDecideMaker;

    @ApiModelProperty(value = "综合判定异常原因(默认为空，提供给质量模块)")
    private String complexJudgeAbn;

    @ApiModelProperty(value = "性能判定代码(默认为空，提供给质量模块)")
    private String pchJudgeCode;

    @ApiModelProperty(value = "性能判定结果(默认为空，提供给质量模块)")
    private String pchJudgeResult;

    @ApiModelProperty(value = "性能判定异常原因(默认为空，提供给质量模块)")
    private String pchJudgeAbn;

    @ApiModelProperty(value = "性能判定时间(默认为空，提供给质量模块)")
    private Date pchJudgeTime;

    @ApiModelProperty(value = "性能判定责任者(默认为空，提供给质量模块)")
    private String pchJudgeMaker;

    @ApiModelProperty(value = "原综合判定代码(默认为空，提供给质量模块)")
    private String oldComplexDecideCode;

    @ApiModelProperty(value = "原综合判定时刻(默认为空，提供给质量模块)")
    private Date oldComplexDecideTime;

    @ApiModelProperty(value = "原综合判定责任人(默认为空，提供给质量模块)")
    private String oldComplexDecideMaker;

    @ApiModelProperty(value = "封锁标记(默认为空,轧钢提供接口供质量调用)")
    private String holdFlag;

    @ApiModelProperty(value = "封锁原因代码(默认为空,轧钢提供接口供质量调用)")
    private String holdCauseCode;

    @ApiModelProperty(value = "封锁时刻(默认为空,轧钢提供接口供质量调用)")
    private Date holdTime;

    @ApiModelProperty(value = "封锁班次号(默认为空,轧钢提供接口供质量调用)")
    private String holdShiftNo;

    @ApiModelProperty(value = "封锁责任者(默认为空,轧钢提供接口供质量调用)")
    private String holdMaker;

    @ApiModelProperty(value = "释放时间(默认为空,轧钢提供接口供质量调用)")
    private Date relTime;

    @ApiModelProperty(value = "释放责任者(默认为空,轧钢提供接口供质量调用)")
    private String relMaker;

    @ApiModelProperty(value = "钢板生产班次（班次班组通过时间计算得到 方法）")
    private String shift;

    @ApiModelProperty(value = "钢板生产班别（班次班组通过时间计算得到 方法）")
    private String groupCd;

    @ApiModelProperty(value = "钢板实际厚度（母板由轧制实绩获取，子板由轧制计划获取）", required = true)
    @NotNull
    private BigDecimal matActThk;

    @ApiModelProperty(value = "钢板实际宽度（母板由轧制实绩获取，子板由轧制计划获取）", required = true)
    @NotNull
    private BigDecimal matActWid;

    @ApiModelProperty(value = "钢板实际长度（母板由轧制实绩获取，子板由轧制计划获取）", required = true)
    @NotNull
    private BigDecimal matActLen;

    @ApiModelProperty(value = "钢板实际重量（由计算获取，密度由合同号去质量模块获取）", required = true)
    @NotNull
    private BigDecimal matActWgt;

    @ApiModelProperty(value = "计算重量方式（由合同号从质量模块获取）")
    private String wgtMode;

    @ApiModelProperty(value = "钢板毛重（默认为0）")
    private BigDecimal matGrossWgt;

    @ApiModelProperty(value = "准发标志（0：正常，1：材料判断错误2：准发，红冲完成）")
    private String confmFlag;

    @ApiModelProperty(value = "实际取样代码（质量模块）")
    private String actSmpFl;

    @ApiModelProperty(value = "实际取样长度（子板的时候取定尺表切样长度）")
    private BigDecimal actSmpLen;

    @ApiModelProperty(value = "留样指示（默认为空）")
    private String smpSetFl;

    @ApiModelProperty(value = "热处理去向1(合同去抓生产)")
    private String hotDest1;

    @ApiModelProperty(value = "热处理去向2(合同去抓生产)")
    private String hotDest2;

    @ApiModelProperty(value = "热处理去向3(合同去抓生产)")
    private String hotDest3;

    @ApiModelProperty(value = "热处理去向4(合同去抓生产)")
    private String hotDest4;

    @ApiModelProperty(value = "热处理去向5(合同去抓生产)")
    private String hotDest5;

    @ApiModelProperty(value = "30转库标记（0：不能30转库，1：可以30转库）")
    private String tranferFlag;

    @ApiModelProperty(value = "热处理去向（默认来自于板坯主表）")
    private String hotDest;

    @ApiModelProperty(value = "可充当标记（默认为空，变余材时由质量模块写入）")
    private String canAssignFlag;

    @ApiModelProperty(value = "出钢记号/内部钢种（来自于板坯主表）")
    private String stNo;

    @ApiModelProperty(value = "标准（来自于板坯主表）")
    private String sgStd;

    @ApiModelProperty(value = "牌号（钢级）（来自于板坯主表）")
    private String sgSign;

    @ApiModelProperty(value = "原标准（默认为空，余材替代后，生产模块写入）")
    private String oldSgStd;

    @ApiModelProperty(value = "原牌号（钢级）（默认为空，余材替代后，生产模块写入）")
    private String oldSgSign;

    @ApiModelProperty(value = "厚板品种代码（默认为空，余材替代后，生产模块写入）")
    private String prodCodeHp;

    @ApiModelProperty(value = "大工序代码(由各个模块写入)")
    private String bigBacklogCode;

    @ApiModelProperty(value = "小工序代码（默认生产模块）")
    private String subBacklogCode;

    @ApiModelProperty(value = "小工序顺序号（默认生产模块）")
    private Long subBacklogSeq;

    @ApiModelProperty(value = "后小工序代码（默认生产模块）")
    private String nextSubBacklogCode;

    @ApiModelProperty(value = "后小工序顺序号（默认生产模块）")
    private Long nextSubBacklogSeq;

    @ApiModelProperty(value = "全程工序途经码（默认生产模块）")
    private String wholeBacklog;

    @ApiModelProperty(value = "全程工序顺序号（各模块）")
    private Long wholeBacklogSeq;

    @ApiModelProperty(value = "全程工序代码（各模块）")
    private String wholeBacklogCode;

    @ApiModelProperty(value = "后全程工序顺序号（各模块）")
    private Long nextWholeBacklogSeq;

    @ApiModelProperty(value = "后全程工序代码（各模块）")
    private String nextWholeBacklogCode;

    @ApiModelProperty(value = "厚板流向代码（默认生产模块）")
    private String plateDtCode;

    @ApiModelProperty(value = "BD材标记（来自于生产模块，钢板转板坯时使用）")
    private String bdFlag;

    @ApiModelProperty(value = "钢板形状代码（来自于生产模块）")
    private String shpCode;

    @ApiModelProperty(value = "钢板计划切割块数")
    private Long planGasCnt;

    @ApiModelProperty(value = "热处理紧急标识（0：否  1:是）")
    private String htmCrashFlag;

    @ApiModelProperty(value = "前道工序机组（来自于板坯主表）")
    private String acUnitCode;

    @ApiModelProperty(value = "最终切时间(最终切割时间)")
    private Date finalCutTime;

    @ApiModelProperty(value = "最终切断代码(0:4毛1:宽度切过2:两毛4:四切)")
    private String finalCutSurfaceCode;

    @ApiModelProperty(value = "当前机组")
    private String unitCode;

    @ApiModelProperty(value = "后道工序机组")
    private String preUnitCode;

    @ApiModelProperty(value = "试批组")
    private String smpGroup;

    @ApiModelProperty(value = "备注")
    private String remark;

    @ApiModelProperty(value = "备用字段1（默认为空）")
    private String spareField1;

    @ApiModelProperty(value = "备用字段2（默认为空）")
    private String spareField2;

    @ApiModelProperty(value = "备用字段3（默认为空）")
    private String spareField3;

    @ApiModelProperty(value = "备用字段4（默认为空）")
    private String spareField4;

    @ApiModelProperty(value = "备用字段5（默认为空）")
    private String spareField5;

    @ApiModelProperty(value = "备用字段6（默认为空）")
    private String spareField6;

    @ApiModelProperty(value = "备用字段7（默认为空）")
    private String spareField7;

    @ApiModelProperty(value = "备用字段8（默认为空）")
    private String spareField8;

    @ApiModelProperty(value = "备用字段9（默认为空）")
    private String spareField9;

    @ApiModelProperty(value = "备用字段10（默认为空）")
    private String spareField10;

    @ApiModelProperty(value = "备用字段11（默认为空）")
    private Long spareField11;

    @ApiModelProperty(value = "备用字段12（默认为空）")
    private Long spareField12;

    @ApiModelProperty(value = "备用字段13（默认为空）")
    private Long spareField13;

    @ApiModelProperty(value = "备用字段14（默认为空）")
    private Long spareField14;

    @ApiModelProperty(value = "备用字段15（默认为空）")
    private Long spareField15;

    @ApiModelProperty(value = "备用字段16（默认为空）")
    private Long spareField16;

    @ApiModelProperty(value = "备用字段17（默认为空）")
    private Long spareField17;

    @ApiModelProperty(value = "备用字段18（默认为空）")
    private Long spareField18;

    @ApiModelProperty(value = "备用字段19（默认为空）")
    private Long spareField19;

    @ApiModelProperty(value = "备用字段20（默认为空）")
    private Long spareField20;

    @ApiModelProperty(value = "租户ID", required = true)
    @NotNull
    private Long tenantId;

    @ApiModelProperty(value = "材料厚度[起]", required = true)
    @Transient
    private BigDecimal matActThkFrom;

    @ApiModelProperty(value = "材料厚度[止]", required = true)
    @Transient
    private BigDecimal matActThkTo;

    @ApiModelProperty(value = "材料宽度[起]", required = true)
    @Transient
    private BigDecimal matActWidFrom;

    @ApiModelProperty(value = "材料宽度[止]", required = true)
    @Transient
    private BigDecimal matActWidTo;

    @ApiModelProperty(value = "材料宽度[起]", required = true)
    @Transient
    private BigDecimal matActLenFrom;

    @ApiModelProperty(value = "材料宽度[止]", required = true)
    @Transient
    private BigDecimal matActLenTo;

    @ApiModelProperty(value = "库位编码", required = true)
    @Transient
    private String stockCode;

    @ApiModelProperty(value = "垛位号", required = true)
    @Transient
    private String pileNo;

    @ApiModelProperty(value = "层号", required = true)
    @Transient
    private String layerNo;

    @ApiModelProperty(value = "探伤级别", required = true)
    @Transient
    private String rsltLevel;

    @ApiModelProperty(value = "探伤结果代码", required = true)
    @Transient
    private String detectResultCode;

    @ApiModelProperty(value = "交货状态", required = true)
    @Transient
    private String deliveryState;

    @ApiModelProperty(value = "轧制方向代码", required = true)
    @Transient
    private String rollDirectCode;

    @ApiModelProperty(value = "控轧代码", required = true)
    @Transient
    private String ctrlRollCode;
    
    @ApiModelProperty(value = "材料状态集合", required = true)
    @Transient
    private List<String> matStatusList;

    @ApiModelProperty(value = "订货厚度")
    @Transient
    private BigDecimal orderThickValue;

    @ApiModelProperty(value = "订货最大厚度")
    @Transient
    private BigDecimal orderThickMaxValue;

    @ApiModelProperty(value = "订货最小厚度")
    @Transient
    private BigDecimal orderThickMinValue;

    @ApiModelProperty(value = "订货长度")
    @Transient
    private BigDecimal orderLenMaxValue;

    @ApiModelProperty(value = "订货长度")
    @Transient
    private BigDecimal orderLenMinValue;

    @ApiModelProperty(value = "订货宽度")
    @Transient
    private BigDecimal orderWidthValue;

    @ApiModelProperty(value = "宽度下限")
    @Transient
    private BigDecimal widthMinValue;

    @ApiModelProperty(value = "宽度上限")
    @Transient
    private BigDecimal widthMaxValue;

    @ApiModelProperty(value = "厚度公差上限")
    @Transient
    private BigDecimal thickTolMaxValue;

    @ApiModelProperty(value = "厚度公差下限")
    @Transient
    private BigDecimal thickTolMinValue;

    @ApiModelProperty(value = "宽度公差上限")
    @Transient
    private BigDecimal widthTolMaxValue;

    @ApiModelProperty(value = "宽度公差下限")
    @Transient
    private BigDecimal widthTolMinValue;

    @ApiModelProperty(value = "长度公差上限")
    @Transient
    private BigDecimal lenTolMaxValue;

    @ApiModelProperty(value = "长度公差下限")
    @Transient
    private BigDecimal lenTolMinValue;
}
