package com.prolog.cs.biz.inbound.dto;

import com.prolog.cs.biz.inbound.constant.ValidatorGroup.validAdd;
import com.prolog.cs.biz.inbound.constant.ValidatorGroup.validEdit;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;

/**
 * @Description WMS质检接口表 WMS支持3种质检模式，通过新增的质检参数rqc_process进行区分（到货主，到仓库）：
 *              1-ERP抽样ERP质检， 2-WMS抽样ERP质检， 3-WMS抽样WMS质检。
 * 
 *              该数据由ERP下发
 * 
 *              抽样/质检
 * 
 * 
 *              ?
 *              当rqc_process=1时，抽样质检由ERP完成。WMS上架确认后回传收货信息给ERP，ERP抽样质检完成后下传质检结果给WMS，WMS根据ERP下传的质检结果处理库存和单据。
 *              ?
 *              当rqc_process=2时，抽样由WMS完成，质检由ERP完成。WMS上架确认后回传收货信息给ERP，ERP根据WMS回传的收货信息下传抽样信息。
 *              n
 *              若需要质检，则WMS根据ERP下传的抽样信息生成质检单，进行抽样送检作业，送检完成后等待ERP下传质检结果，WMS根据ERP下传的质检结果处理库存和单据。
 *              n 若不需要质检，则WMS根据ERP下传的收货结论处理库存和单据。 ?
 *              当rqc_process=3时，抽样质检由WMS完成。若需要质检，则WMS上架确认后生成质检单，WMS抽样质检完成后回传质检结果给ERP。
 * 
 * @Author Xiong
 * @Date 2021-04-02
 */

@ApiModel
public class InterfaceRqcBillDTO implements Serializable {
	private static final long serialVersionUID = 7615800533667901772L;
	@ApiModelProperty(value = "ID(主键雪花id)", required = true)
	@NotBlank(message = "ID(主键雪花id) can not blank!", groups = validEdit.class)
	private String interfaceRqcId;

	@ApiModelProperty(value = "货主id", required = true)
	@NotBlank(message = "货主id can not blank!", groups = validAdd.class)
	private String mtlOwnerId;

	@ApiModelProperty(value = "仓库ID", required = true)
	@NotBlank(message = "仓库ID can not blank!", groups = validAdd.class)
	private String warehouseId;

	@ApiModelProperty(value = "来源单类型")
	private String srcBillType;

	@ApiModelProperty(value = "来源单头ID")
	private String srcHeaderId;

	@ApiModelProperty(value = "来源单行ID")
	private String srcLineId;

	@ApiModelProperty(value = "ASN头ID")
	private String asnHeaderId;

	@ApiModelProperty(value = "ASN行ID")
	private String asnLineId;

	@ApiModelProperty(value = "收货单头ID")
	private String rcvHeaderId;

	@ApiModelProperty(value = "收货行ID")
	private String rcvLineId;

	@ApiModelProperty(value = "库位编码")
	private String locatorNum;

	@ApiModelProperty(value = "商品ID", required = true)
	@NotBlank(message = "商品ID can not blank!", groups = validAdd.class)
	private String itemId;

	@ApiModelProperty(value = "数量")
	private BigDecimal qty;

	@ApiModelProperty(value = "抽样数量")
	private BigDecimal checkQty;

	@ApiModelProperty(value = "包装单位", required = true)
	@NotBlank(message = "包装单位 can not blank!", groups = validAdd.class)
	private String uom;

	@ApiModelProperty(value = "包装含量", required = true)
	@NotNull(message = "包装含量 can not blank!", groups = validAdd.class)
	private BigDecimal conversionRate;

	@ApiModelProperty(value = "批次ID")
	private String batchId;

	@ApiModelProperty(value = "单品数量", required = true)
	@NotNull(message = "单品数量 can not blank!", groups = validAdd.class)
	private BigDecimal pieceQuantity;

	@ApiModelProperty(value = "单品数量(抽样)", required = true)
	@NotNull(message = "单品数量(抽样) can not blank!", groups = validAdd.class)
	private BigDecimal checkPieceQuantity;

	@ApiModelProperty(value = "批次号")
	private String batchNum;

	@ApiModelProperty(value = "批号")
	private String vendorBatchNum;

	@ApiModelProperty(value = "生产商批号")
	private String manufacturerLotNum;

	@ApiModelProperty(value = "是否允许作业标识", required = true)
	@NotBlank(message = "是否允许作业标识 can not blank!", groups = validAdd.class)
	private String activeFlag;

	@ApiModelProperty(value = "状态")
	private String status;

	@ApiModelProperty(value = "执行者")
	private String executor;

	public String getInterfaceRqcId() {
		return interfaceRqcId;
	}

	public void setInterfaceRqcId(String interfaceRqcId) {
		this.interfaceRqcId = interfaceRqcId;
	}

	public String getMtlOwnerId() {
		return mtlOwnerId;
	}

	public void setMtlOwnerId(String mtlOwnerId) {
		this.mtlOwnerId = mtlOwnerId;
	}

	public String getWarehouseId() {
		return warehouseId;
	}

	public void setWarehouseId(String warehouseId) {
		this.warehouseId = warehouseId;
	}

	public String getSrcBillType() {
		return srcBillType;
	}

	public void setSrcBillType(String srcBillType) {
		this.srcBillType = srcBillType;
	}

	public String getSrcHeaderId() {
		return srcHeaderId;
	}

	public void setSrcHeaderId(String srcHeaderId) {
		this.srcHeaderId = srcHeaderId;
	}

	public String getSrcLineId() {
		return srcLineId;
	}

	public void setSrcLineId(String srcLineId) {
		this.srcLineId = srcLineId;
	}

	public String getAsnHeaderId() {
		return asnHeaderId;
	}

	public void setAsnHeaderId(String asnHeaderId) {
		this.asnHeaderId = asnHeaderId;
	}

	public String getAsnLineId() {
		return asnLineId;
	}

	public void setAsnLineId(String asnLineId) {
		this.asnLineId = asnLineId;
	}

	public String getRcvHeaderId() {
		return rcvHeaderId;
	}

	public void setRcvHeaderId(String rcvHeaderId) {
		this.rcvHeaderId = rcvHeaderId;
	}

	public String getRcvLineId() {
		return rcvLineId;
	}

	public void setRcvLineId(String rcvLineId) {
		this.rcvLineId = rcvLineId;
	}

	public String getLocatorNum() {
		return locatorNum;
	}

	public void setLocatorNum(String locatorNum) {
		this.locatorNum = locatorNum;
	}

	public String getItemId() {
		return itemId;
	}

	public void setItemId(String itemId) {
		this.itemId = itemId;
	}

	public BigDecimal getQty() {
		return qty;
	}

	public void setQty(BigDecimal qty) {
		this.qty = qty;
	}

	public BigDecimal getCheckQty() {
		return checkQty;
	}

	public void setCheckQty(BigDecimal checkQty) {
		this.checkQty = checkQty;
	}

	public String getUom() {
		return uom;
	}

	public void setUom(String uom) {
		this.uom = uom;
	}

	public BigDecimal getConversionRate() {
		return conversionRate;
	}

	public void setConversionRate(BigDecimal conversionRate) {
		this.conversionRate = conversionRate;
	}

	public String getBatchId() {
		return batchId;
	}

	public void setBatchId(String batchId) {
		this.batchId = batchId;
	}

	public BigDecimal getPieceQuantity() {
		return pieceQuantity;
	}

	public void setPieceQuantity(BigDecimal pieceQuantity) {
		this.pieceQuantity = pieceQuantity;
	}

	public BigDecimal getCheckPieceQuantity() {
		return checkPieceQuantity;
	}

	public void setCheckPieceQuantity(BigDecimal checkPieceQuantity) {
		this.checkPieceQuantity = checkPieceQuantity;
	}

	public String getBatchNum() {
		return batchNum;
	}

	public void setBatchNum(String batchNum) {
		this.batchNum = batchNum;
	}

	public String getVendorBatchNum() {
		return vendorBatchNum;
	}

	public void setVendorBatchNum(String vendorBatchNum) {
		this.vendorBatchNum = vendorBatchNum;
	}

	public String getManufacturerLotNum() {
		return manufacturerLotNum;
	}

	public void setManufacturerLotNum(String manufacturerLotNum) {
		this.manufacturerLotNum = manufacturerLotNum;
	}

	public String getActiveFlag() {
		return activeFlag;
	}

	public void setActiveFlag(String activeFlag) {
		this.activeFlag = activeFlag;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public String getExecutor() {
		return executor;
	}

	public void setExecutor(String executor) {
		this.executor = executor;
	}

}
