package com.xisc.pm.domain.entity;

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 javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 自动替代配置表(PmAutoSubSetting)实体类
 *
 * @author BKGY
 * @since 2024-12-27 08:56:21
 */

@ApiModel("自动替代配置表")
@VersionAudit
@ModifyAudit
@JsonInclude(value = JsonInclude.Include.NON_NULL)
@Table(name = "PM_AUTO_SUB_SETTING")
public class PmAutoSubSetting extends AuditDomain implements Serializable {
    private static final long serialVersionUID = 464289356172328642L;

    public static final String FIELD_ID = "id";
    public static final String FIELD_SUBSTITUTION_RATE = "substitutionRate";
    public static final String FIELD_RESIDUE_LEN = "residueLen";
    public static final String FIELD_MAT_LEN_MIN = "matLenMin";
    public static final String FIELD_MAT_LEN_MAX = "matLenMax";
    public static final String FIELD_MAT_WIDTH_MIN = "matWidthMin";
    public static final String FIELD_MAT_WIDTH_MAX = "matWidthMax";
    public static final String FIELD_MAT_THICK_MIN = "matThickMin";
    public static final String FIELD_MAT_THICK_MAX = "matThickMax";
    public static final String FIELD_ORDER_WIDTH_MIN = "orderWidthMin";
    public static final String FIELD_ORDER_WIDTH_MAX = "orderWidthMax";
    public static final String FIELD_ORDER_THICK_MIN = "orderThickMin";
    public static final String FIELD_ORDER_THICK_MAX = "orderThickMax";
    public static final String FIELD_DELIVY_DATE_FROM = "delivyDateFrom";
    public static final String FIELD_DELIVY_DATE_TO = "delivyDateTo";
    public static final String FIELD_IS_USE_ST = "isUseSt";
    public static final String FIELD_USEABLE_DSTOCK = "useableDstock";
    public static final String FIELD_IS_START_FLAG = "isStartFlag";
    public static final String FIELD_START_TIME = "startTime";
    public static final String FIELD_END_TIME = "endTime";
    public static final String FIELD_PRI_MODE = "priMode";
    public static final String FIELD_STOCK_RATE = "stockRate";
    public static final String FIELD_STOCK_DAY = "stockDay";
    public static final String FIELD_DELIVERY_RATE = "deliveryRate";
    public static final String FIELD_XH_COST = "xhCost";
    public static final String FIELD_FG_COST = "fgCost";
    public static final String FIELD_DELIVERY_OFFSET_DAY = "deliveryOffsetDay";
    public static final String FIELD_TENANT_ID = "tenantId";
    public static final String FIELD_ATTRIBUTE1 = "attribute1";
    public static final String FIELD_ATTRIBUTE2 = "attribute2";
    public static final String FIELD_ATTRIBUTE3 = "attribute3";
    public static final String FIELD_ATTRIBUTE4 = "attribute4";
    public static final String FIELD_ATTRIBUTE5 = "attribute5";
    public static final String FIELD_TRIGGER_CYCLE = "triggerCycle";
    public static final String FIELD_OVERSHOOT_CONDITION = "overshootCondition";

    @ApiModelProperty("主键ID")
    @Id
    @GeneratedValue
    private Long id;

    @ApiModelProperty(value = "最低替代率", required = true)
    @NotNull
    private BigDecimal substitutionRate;

    @ApiModelProperty(value = "最大剩余长度", required = true)
    @NotNull
    private BigDecimal residueLen;

    @ApiModelProperty(value = "板坯长度起", required = true)
    @NotNull
    private BigDecimal matLenMin;

    @ApiModelProperty(value = "板坯长度止", required = true)
    @NotNull
    private BigDecimal matLenMax;

    @ApiModelProperty(value = "板坯宽度起", required = true)
    @NotNull
    private BigDecimal matWidthMin;

    @ApiModelProperty(value = "板坯宽度止", required = true)
    @NotNull
    private BigDecimal matWidthMax;

    @ApiModelProperty(value = "板坯厚度起", required = true)
    @NotNull
    private BigDecimal matThickMin;

    @ApiModelProperty(value = "板坯厚度止", required = true)
    @NotNull
    private BigDecimal matThickMax;

    @ApiModelProperty(value = "订单宽度起", required = true)
    @NotNull
    private BigDecimal orderWidthMin;

    @ApiModelProperty(value = "订单宽度止", required = true)
    @NotNull
    private BigDecimal orderWidthMax;

    @ApiModelProperty(value = "订单厚度起", required = true)
    @NotNull
    private BigDecimal orderThickMin;

    @ApiModelProperty(value = "订单厚度止", required = true)
    @NotNull
    private BigDecimal orderThickMax;

    @ApiModelProperty(value = "订单交货期起", required = true)
    @NotNull
    private Date delivyDateFrom;

    @ApiModelProperty(value = "订单交货期止", required = true)
    @NotNull
    private Date delivyDateTo;

    @ApiModelProperty(value = "选择钢种信息", required = true)
    @NotBlank
    private String isUseSt;

    @ApiModelProperty(value = "可用仓库", required = true)
    @NotBlank
    private String useableDstock;

    @ApiModelProperty(value = "是否启动", required = true)
    @NotBlank
    private String isStartFlag;

    @ApiModelProperty(value = "启动时间起", required = true)
    @NotNull
    private Date startTime;

    @ApiModelProperty(value = "启动时间止", required = true)
    @NotNull
    private Date endTime;

    @ApiModelProperty(value = "优先模式", required = true)
    @NotBlank
    private String priMode;

    @ApiModelProperty(value = "库存最低成材率", required = true)
    @NotNull
    private BigDecimal stockRate;

    @ApiModelProperty(value = "库存时间", required = true)
    @NotNull
    private Long stockDay;

    @ApiModelProperty(value = "交货期最低成材率", required = true)
    @NotNull
    private BigDecimal deliveryRate;

    @ApiModelProperty(value = "现货价格")
    private BigDecimal xhCost;

    @ApiModelProperty(value = "废钢价格")
    private BigDecimal fgCost;

    @ApiModelProperty(value = "交货期偏移量", required = true)
    @NotNull
    private Long deliveryOffsetDay;

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

    private String attribute1;

    private String attribute2;

    private String attribute3;

    private String attribute4;

    private String attribute5;

    @ApiModelProperty(value = "触发周期", required = true)
    @NotNull
    private Long triggerCycle;

    @ApiModelProperty(value = "超投条件", required = true)
    @NotBlank
    private String overshootCondition;


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }


    public Date getDelivyDateFrom() {
        return delivyDateFrom;
    }

    public void setDelivyDateFrom(Date delivyDateFrom) {
        this.delivyDateFrom = delivyDateFrom;
    }

    public Date getDelivyDateTo() {
        return delivyDateTo;
    }

    public void setDelivyDateTo(Date delivyDateTo) {
        this.delivyDateTo = delivyDateTo;
    }

    public String getIsUseSt() {
        return isUseSt;
    }

    public void setIsUseSt(String isUseSt) {
        this.isUseSt = isUseSt;
    }

    public String getUseableDstock() {
        return useableDstock;
    }

    public void setUseableDstock(String useableDstock) {
        this.useableDstock = useableDstock;
    }

    public String getIsStartFlag() {
        return isStartFlag;
    }

    public void setIsStartFlag(String isStartFlag) {
        this.isStartFlag = isStartFlag;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public String getPriMode() {
        return priMode;
    }

    public void setPriMode(String priMode) {
        this.priMode = priMode;
    }


    public Long getDeliveryOffsetDay() {
        return deliveryOffsetDay;
    }

    public void setDeliveryOffsetDay(Long deliveryOffsetDay) {
        this.deliveryOffsetDay = deliveryOffsetDay;
    }

    public Long getTenantId() {
        return tenantId;
    }

    public void setTenantId(Long tenantId) {
        this.tenantId = tenantId;
    }

    public String getAttribute1() {
        return attribute1;
    }

    public void setAttribute1(String attribute1) {
        this.attribute1 = attribute1;
    }

    public String getAttribute2() {
        return attribute2;
    }

    public void setAttribute2(String attribute2) {
        this.attribute2 = attribute2;
    }

    public String getAttribute3() {
        return attribute3;
    }

    public void setAttribute3(String attribute3) {
        this.attribute3 = attribute3;
    }

    public String getAttribute4() {
        return attribute4;
    }

    public void setAttribute4(String attribute4) {
        this.attribute4 = attribute4;
    }

    public String getAttribute5() {
        return attribute5;
    }

    public void setAttribute5(String attribute5) {
        this.attribute5 = attribute5;
    }

    public Long getTriggerCycle() {
        return triggerCycle;
    }

    public void setTriggerCycle(Long triggerCycle) {
        this.triggerCycle = triggerCycle;
    }

    public String getOvershootCondition() {
        return overshootCondition;
    }

    public void setOvershootCondition(String overshootCondition) {
        this.overshootCondition = overshootCondition;
    }

    public @NotNull BigDecimal getSubstitutionRate() {
        return substitutionRate;
    }

    public void setSubstitutionRate(@NotNull BigDecimal substitutionRate) {
        this.substitutionRate = substitutionRate;
    }

    public @NotNull BigDecimal getResidueLen() {
        return residueLen;
    }

    public void setResidueLen(@NotNull BigDecimal residueLen) {
        this.residueLen = residueLen;
    }

    public @NotNull BigDecimal getMatLenMin() {
        return matLenMin;
    }

    public void setMatLenMin(@NotNull BigDecimal matLenMin) {
        this.matLenMin = matLenMin;
    }

    public @NotNull BigDecimal getMatLenMax() {
        return matLenMax;
    }

    public void setMatLenMax(@NotNull BigDecimal matLenMax) {
        this.matLenMax = matLenMax;
    }

    public @NotNull BigDecimal getMatWidthMin() {
        return matWidthMin;
    }

    public void setMatWidthMin(@NotNull BigDecimal matWidthMin) {
        this.matWidthMin = matWidthMin;
    }

    public @NotNull BigDecimal getMatWidthMax() {
        return matWidthMax;
    }

    public void setMatWidthMax(@NotNull BigDecimal matWidthMax) {
        this.matWidthMax = matWidthMax;
    }

    public @NotNull BigDecimal getMatThickMin() {
        return matThickMin;
    }

    public void setMatThickMin(@NotNull BigDecimal matThickMin) {
        this.matThickMin = matThickMin;
    }

    public @NotNull BigDecimal getMatThickMax() {
        return matThickMax;
    }

    public void setMatThickMax(@NotNull BigDecimal matThickMax) {
        this.matThickMax = matThickMax;
    }

    public @NotNull BigDecimal getOrderWidthMin() {
        return orderWidthMin;
    }

    public void setOrderWidthMin(@NotNull BigDecimal orderWidthMin) {
        this.orderWidthMin = orderWidthMin;
    }

    public @NotNull BigDecimal getOrderWidthMax() {
        return orderWidthMax;
    }

    public void setOrderWidthMax(@NotNull BigDecimal orderWidthMax) {
        this.orderWidthMax = orderWidthMax;
    }

    public @NotNull BigDecimal getOrderThickMin() {
        return orderThickMin;
    }

    public void setOrderThickMin(@NotNull BigDecimal orderThickMin) {
        this.orderThickMin = orderThickMin;
    }

    public @NotNull BigDecimal getOrderThickMax() {
        return orderThickMax;
    }

    public void setOrderThickMax(@NotNull BigDecimal orderThickMax) {
        this.orderThickMax = orderThickMax;
    }

    public @NotNull BigDecimal getStockRate() {
        return stockRate;
    }

    public void setStockRate(@NotNull BigDecimal stockRate) {
        this.stockRate = stockRate;
    }

    public @NotNull Long getStockDay() {
        return stockDay;
    }

    public void setStockDay(@NotNull Long stockDay) {
        this.stockDay = stockDay;
    }

    public @NotNull BigDecimal getDeliveryRate() {
        return deliveryRate;
    }

    public void setDeliveryRate(@NotNull BigDecimal deliveryRate) {
        this.deliveryRate = deliveryRate;
    }

    public BigDecimal getXhCost() {
        return xhCost;
    }

    public void setXhCost(BigDecimal xhCost) {
        this.xhCost = xhCost;
    }

    public BigDecimal getFgCost() {
        return fgCost;
    }

    public void setFgCost(BigDecimal fgCost) {
        this.fgCost = fgCost;
    }
}

