package com.xisc.pm.domain.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

import com.fasterxml.jackson.annotation.JsonInclude;

import io.choerodon.mybatis.annotation.ModifyAudit;
import io.choerodon.mybatis.annotation.VersionAudit;
import io.choerodon.mybatis.domain.AuditDomain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

/**
 * 生产合同主表
 *
 * @author 曾俊 jun.zeng@hand-china.com 2024-07-29 14:28:16
 */
@Getter
@Setter
@ApiModel("生产合同主表")
@VersionAudit
@ModifyAudit
@JsonInclude(value = JsonInclude.Include.NON_NULL)
@Table(name = "PM_PRO_CONT")
public class PmProCont extends AuditDomain implements Serializable{

    private static final long serialVersionUID = 2580961643768275678L;
    
    public static final String FIELD_PRO_CONT_ID = "proContId";
    public static final String FIELD_ORDER_NO = "orderNo";
    public static final String FIELD_PD_HOLD_FLG = "pdHoldFlag";
    public static final String FIELD_HOLD_MKER = "holdMaker";
    public static final String FIELD_HOLD_TIME = "holdTime";
    public static final String FIELD_REL_MKER = "relMaker";
    public static final String FIELD_REL_TIME = "relTime";
    public static final String FIELD_PD_REL_MKER = "pdRelMaker";
    public static final String FIELD_PD_REL_TIME = "pdRelTime";
    public static final String FIELD_ON_PD_FLG = "onPdFlag";
    public static final String FIELD_PD_BEGIN_TIME = "pdBeginTime";
    public static final String FIELD_PD_END_TIME = "pdEndTime";
    public static final String FIELD_PD_PROGRM = "pdProgram";
    public static final String FIELD_PD_PLNNER = "pdPlanner";
    public static final String FIELD_PD_TOT_WT = "pdTotWt";
    public static final String FIELD_PD_TOT_QTY = "pdTotQty";
    public static final String FIELD_PD_OVER_DEVO_WT = "pdOverDevoWt";
    public static final String FIELD_PD_OVER_DEVO_QTY = "pdOverDevoQty";
    public static final String FIELD_PD_OVER_DEVO_CUSE = "pdOverDevoCause";
    public static final String FIELD_PD_LCK_QTY = "pdLackQty";
    public static final String FIELD_PD_LCK_WT = "pdLackWt";
    public static final String FIELD_PD_PLN_DTE = "pdPlanDate";
    public static final String FIELD_PD_LTEST_DTE = "pdLatestDate";
    public static final String FIELD_STEEL_PLN_DTE = "steelPlanDate";
    public static final String FIELD_STEEL_LTEST_DTE = "steelLatestDate";
    public static final String FIELD_TENANT_ID = "tenantId";
    public static final String FIELD_OBJECT_VERSION_NUMBER = "objectVersionNumber";
    public static final String FIELD_CRETION_DTE = "creationDate";
    public static final String FIELD_CRETED_BY = "createdBy";
    public static final String FIELD_LST_UPDTED_BY = "lastUpdatedBy";
    public static final String FIELD_LST_UPDTE_DTE = "lastUpdateDate";
    public static final String FIELD_TTRIBUTE1 = "attribute1";
    public static final String FIELD_TTRIBUTE2 = "attribute2";
    public static final String FIELD_TTRIBUTE3 = "attribute3";
    public static final String FIELD_TTRIBUTE4 = "attribute4";
    public static final String FIELD_TTRIBUTE5 = "attribute5";

    @ApiModelProperty("表ID，主键")
    @Id
    @GeneratedValue
    private Long proContId;
    @ApiModelProperty(value = "合同号", required = true)
    @NotBlank
    private String orderNo;
    @ApiModelProperty(value = "合同封锁标记", required = true)
    @NotNull
    private Long pdHoldFlag;
    @ApiModelProperty(value = "合同封锁责任者")
    private String holdMaker;
    @ApiModelProperty(value = "合同封锁时刻（YYYY-MM-DD HH24:MI:SS）", required = true)
    @NotBlank
    private Date holdTime;
    @ApiModelProperty(value = "合同释放责任者")
    private String relMaker;
    @ApiModelProperty(value = "合同释放时刻（YYYY-MM-DD HH24:MI:SS）", required = true)
    @NotBlank
    private Date relTime;
    @ApiModelProperty(value = "组板释放责任人")
    private String pdRelMaker;
    @ApiModelProperty(value = "组板释放时刻（YYYY-MM-DD HH24:MI:SS）", required = true)
    @NotBlank
    private Date pdRelTime;
    @ApiModelProperty(value = "正在组板标记", required = true)
    @NotNull
    private Long onPdFlag;
    @ApiModelProperty(value = "组板开始时刻（YYYY-MM-DD HH24:MI:SS）", required = true)
    @NotBlank
    private Date pdBeginTime;
    @ApiModelProperty(value = "组板结束时刻（YYYY-MM-DD HH24:MI:SS）", required = true)
    @NotBlank
    private Date pdEndTime;
    @ApiModelProperty(value = "组板程序")
    private String pdProgram;
    @ApiModelProperty(value = "组板计划员ID")
    private String pdPlanner;
    @ApiModelProperty(value = "组板形成总重量")
    private BigDecimal pdTotWt;
    @ApiModelProperty(value = "组板形成总件数")
    private BigDecimal pdTotQty;
    @ApiModelProperty(value = "组板工序超投量", required = true)
    @NotNull
    private BigDecimal pdOverDevoWt;
    @ApiModelProperty(value = "组板工序超投件数", required = true)
    @NotNull
    private BigDecimal pdOverDevoQty;
    @ApiModelProperty(value = "组板超投原因")
    private String pdOverDevoCause;
    @ApiModelProperty(value = "组板工序欠件", required = true)
    @NotNull
    private BigDecimal pdLackQty;
    @ApiModelProperty(value = "组板工序欠量", required = true)
    @NotNull
    private BigDecimal pdLackWt;
    @ApiModelProperty(value = "组板计划日期（YYYY-MM-DD）", required = true)
    @NotBlank
    private Date pdPlanDate;
    @ApiModelProperty(value = "最晚组板日期（YYYY-MM-DD）", required = true)
    @NotBlank
    private Date pdLatestDate;
    @ApiModelProperty(value = "炼钢计划日期（YYYY-MM-DD）", required = true)
    @NotBlank
    private Date steelPlanDate;
    @ApiModelProperty(value = "最晚炼钢日期（YYYY-MM-DD）", required = true)
    @NotBlank
    private Date steelLatestDate;
    @ApiModelProperty(value = "租户ID", required = true)
    @NotNull
    private Long tenantId;

    private String attribute1;
    private String attribute2;
    private String attribute3;
    private String attribute4;
    private String attribute5;

}
