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

import com.fasterxml.jackson.annotation.JsonFormat;
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 org.springframework.format.annotation.DateTimeFormat;

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

/**
 * @Description 收货拒收单行 来源于拒收任务池
 * @Author Xiong
 * @Date 2021-04-02
 */
@ApiModel
public class RcvRejectLinesDTO implements Serializable {
	private static final long serialVersionUID = 7647045788296885663L;
	@ApiModelProperty(value = "行ID(主键雪花id)", required = true)
	@NotBlank(message = "行ID(主键雪花id) can not blank!", groups = validEdit.class)
	private String inRejectLineId;

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

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

	@ApiModelProperty(value = "行号", required = true)
	@NotNull(message = "行号 can not blank!")
	private BigDecimal lineNum;

	@ApiModelProperty(value = "库位ID", required = true)
	@NotBlank(message = "库位ID can not blank!")
	private String warehouseLocatorId;

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

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

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

	@ApiModelProperty(value = "包装单位类型(2019/2020)新老包装")
	private String uomType;

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

	@ApiModelProperty(value = "整箱数", required = true)
	@NotNull(message = "整箱数 can not blank!", groups = validAdd.class)
	private BigDecimal oddCaseQty;

	@ApiModelProperty(value = "零散数", required = true)
	@NotNull(message = "零散数 can not blank!", groups = validAdd.class)
	private BigDecimal oddPieceQty;

	@ApiModelProperty(value = "batch_id", required = true)
	@NotBlank(message = "batch_id can not blank!", groups = validAdd.class)
	private String batchId;

	@ApiModelProperty(value = "批次号", required = true)
	@NotBlank(message = "批次号 can not blank!", groups = validAdd.class)
	private String batchNum;

	@ApiModelProperty(value = "批次生产日期", required = true)
	@NotNull(message = "批次生产日期 can not blank!", groups = validAdd.class)
	@Past(message = "批次生产日期 can not greater than now!", groups = validAdd.class)
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date batchProductionDate;

	@ApiModelProperty(value = "批次有效期", required = true)
	@NotNull(message = "批次有效期 can not blank!", groups = validAdd.class)
	@Past(message = "批次有效期 can not greater than now!", groups = validAdd.class)
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date batchExpiredDate;

	@ApiModelProperty(value = "供应商批次号")
	private String vendorBatchNum;

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

	@ApiModelProperty(value = "容器编码")
	private String containerCode;

	@ApiModelProperty(value = "货格编码")
	private String goodsCaseCode;

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

	@ApiModelProperty(value = "结论(拒收)")
	private String result;

	@ApiModelProperty(value = "原因")
	private String reason;

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

	@ApiModelProperty(value = "任务池ID（来源TASK）", required = true)
	@NotBlank(message = "任务池ID（来源TASK） can not blank!", groups = validAdd.class)
	private String taskId;

	@ApiModelProperty(value = "货主ID（冗余，关联收货单）")
	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 = "数据版本")
	private Integer dataVersion;

	@ApiModelProperty(value = "商品编码(列表展示用)", position = 1)
	private String itemNum;
	@ApiModelProperty(value = "商品名称(列表展示用)", position = 1)
	private String itemName;
	@ApiModelProperty(value = "商品分类名(列表展示用)", position = 1)
	private String categoryName;
	@ApiModelProperty(value = "(新)商品规格说明(冗余)", position = 1)
	private String specification;
	@ApiModelProperty(value = "(新)上市许可持有人(冗余)", position = 1)
	private String itemHealthListedLicensor;
	@ApiModelProperty(value = "(新)生产企业许可证号(冗余)", position = 1)
	private String itemHealthProduceLicense;
	@ApiModelProperty(value = "(新)存储分类(冗余)", position = 1)
	private String itemHealthStoreCategory;
	@ApiModelProperty(value = "(新)商品是否进口(冗余)", position = 1)
	private Integer itemIsImported;
	@ApiModelProperty(value = "(新)商品是否复检(0否1是)(冗余)", position = 1)
	private Integer itemIsRecheck;
	@ApiModelProperty(value = "(新)商品是否器械(0否1是)(冗余)", position = 1)
	private Integer isInstrument;
	@ApiModelProperty(value = "(新)商品通用名(冗余)", position = 1)
	private String itemHealthCommonName;
	@ApiModelProperty(value = "(新)商品是否锁定(0否1是)(冗余)", position = 1)
	private Integer isLock;
	@ApiModelProperty(value = "(新)商品是否代管(0否1是)(冗余)", position = 1)
	private Integer isHosted;
	@ApiModelProperty(value = "(新)生产厂家id(冗余)", position = 1)
	private String manufacturerId;
	@ApiModelProperty(value = "(新)生产厂家id(冗余)", position = 1)
	private String manufacturerCode;
	@ApiModelProperty(value = "(新)生产厂家id(冗余)", position = 1)
	private String manufacturerName;
	@ApiModelProperty(value = "(新)入库预留保质天数(冗余)", position = 1)
	private BigDecimal inStoreDay;
	@ApiModelProperty(value = "(新)注册证号(冗余)", position = 1)
	private String itemHealthRegisterNbr;
	@ApiModelProperty(value = "(新)有效期天数(需转换)(冗余)", position = 1)
	private BigDecimal shelfLifeDays;
	@ApiModelProperty(value = "(新)保质期单位(年/月/日,默认日)(冗余)", position = 1)
	private String shelfLifeUnit;
	@ApiModelProperty(value = "(新)商品是否特殊品(0否1是)(冗余)", position = 1)
	private Integer itemIsSpecial;
	@ApiModelProperty(value = "(新)商品是否无菌(0否1是)(冗余)", position = 1)
	private Integer isBacteria;
	@ApiModelProperty(value = "(新)退货单位提供的商品售出期间储存、运输质量控制情况(冗余)", position = 1)
	private String returnInfo;
	@ApiModelProperty(value = "(新)退货冷藏品出库期质量(冗余)", position = 1)
	private String returnColdQuality;
	@ApiModelProperty(value = "(新)退货说明(冗余)", position = 1)
	private String returnExplain;
	@ApiModelProperty(value = "(新)显示生产日期", position = 1)
	private String showProductionDate;
	@ApiModelProperty(value = "(新)显示有效期至", position = 1)
	private String showExpiredDate;
	@ApiModelProperty(value = "(新)商品助记码", position = 1)
	private String itemZjm;
	@ApiModelProperty(value = "(新)商品批准文号", position = 1)
	private String approvalNumber;
	@ApiModelProperty(value = "商品产地(展示)", position = 1)
	private String productionPlace;

	public Integer getDataVersion() {
		return dataVersion;
	}

	public void setDataVersion(Integer dataVersion) {
		this.dataVersion = dataVersion;
	}

	public String getItemNum() {
		return itemNum;
	}

	public void setItemNum(String itemNum) {
		this.itemNum = itemNum;
	}

	public String getItemName() {
		return itemName;
	}

	public void setItemName(String itemName) {
		this.itemName = itemName;
	}

	public String getCategoryName() {
		return categoryName;
	}

	public void setCategoryName(String categoryName) {
		this.categoryName = categoryName;
	}

	public String getSpecification() {
		return specification;
	}

	public void setSpecification(String specification) {
		this.specification = specification;
	}

	public String getItemHealthListedLicensor() {
		return itemHealthListedLicensor;
	}

	public void setItemHealthListedLicensor(String itemHealthListedLicensor) {
		this.itemHealthListedLicensor = itemHealthListedLicensor;
	}

	public String getItemHealthProduceLicense() {
		return itemHealthProduceLicense;
	}

	public void setItemHealthProduceLicense(String itemHealthProduceLicense) {
		this.itemHealthProduceLicense = itemHealthProduceLicense;
	}

	public String getItemHealthStoreCategory() {
		return itemHealthStoreCategory;
	}

	public void setItemHealthStoreCategory(String itemHealthStoreCategory) {
		this.itemHealthStoreCategory = itemHealthStoreCategory;
	}

	public Integer getItemIsImported() {
		return itemIsImported;
	}

	public void setItemIsImported(Integer itemIsImported) {
		this.itemIsImported = itemIsImported;
	}

	public Integer getItemIsRecheck() {
		return itemIsRecheck;
	}

	public void setItemIsRecheck(Integer itemIsRecheck) {
		this.itemIsRecheck = itemIsRecheck;
	}

	public Integer getIsInstrument() {
		return isInstrument;
	}

	public void setIsInstrument(Integer isInstrument) {
		this.isInstrument = isInstrument;
	}

	public String getItemHealthCommonName() {
		return itemHealthCommonName;
	}

	public void setItemHealthCommonName(String itemHealthCommonName) {
		this.itemHealthCommonName = itemHealthCommonName;
	}

	public Integer getIsLock() {
		return isLock;
	}

	public void setIsLock(Integer isLock) {
		this.isLock = isLock;
	}

	public Integer getIsHosted() {
		return isHosted;
	}

	public void setIsHosted(Integer isHosted) {
		this.isHosted = isHosted;
	}

	public String getManufacturerId() {
		return manufacturerId;
	}

	public void setManufacturerId(String manufacturerId) {
		this.manufacturerId = manufacturerId;
	}

	public String getManufacturerCode() {
		return manufacturerCode;
	}

	public void setManufacturerCode(String manufacturerCode) {
		this.manufacturerCode = manufacturerCode;
	}

	public String getManufacturerName() {
		return manufacturerName;
	}

	public void setManufacturerName(String manufacturerName) {
		this.manufacturerName = manufacturerName;
	}

	public BigDecimal getInStoreDay() {
		return inStoreDay;
	}

	public void setInStoreDay(BigDecimal inStoreDay) {
		this.inStoreDay = inStoreDay;
	}

	public String getItemHealthRegisterNbr() {
		return itemHealthRegisterNbr;
	}

	public void setItemHealthRegisterNbr(String itemHealthRegisterNbr) {
		this.itemHealthRegisterNbr = itemHealthRegisterNbr;
	}

	public BigDecimal getShelfLifeDays() {
		return shelfLifeDays;
	}

	public void setShelfLifeDays(BigDecimal shelfLifeDays) {
		this.shelfLifeDays = shelfLifeDays;
	}

	public String getShelfLifeUnit() {
		return shelfLifeUnit;
	}

	public void setShelfLifeUnit(String shelfLifeUnit) {
		this.shelfLifeUnit = shelfLifeUnit;
	}

	public Integer getItemIsSpecial() {
		return itemIsSpecial;
	}

	public void setItemIsSpecial(Integer itemIsSpecial) {
		this.itemIsSpecial = itemIsSpecial;
	}

	public Integer getIsBacteria() {
		return isBacteria;
	}

	public void setIsBacteria(Integer isBacteria) {
		this.isBacteria = isBacteria;
	}

	public String getReturnInfo() {
		return returnInfo;
	}

	public void setReturnInfo(String returnInfo) {
		this.returnInfo = returnInfo;
	}

	public String getReturnColdQuality() {
		return returnColdQuality;
	}

	public void setReturnColdQuality(String returnColdQuality) {
		this.returnColdQuality = returnColdQuality;
	}

	public String getReturnExplain() {
		return returnExplain;
	}

	public void setReturnExplain(String returnExplain) {
		this.returnExplain = returnExplain;
	}

	public String getShowProductionDate() {
		return showProductionDate;
	}

	public void setShowProductionDate(String showProductionDate) {
		this.showProductionDate = showProductionDate;
	}

	public String getShowExpiredDate() {
		return showExpiredDate;
	}

	public void setShowExpiredDate(String showExpiredDate) {
		this.showExpiredDate = showExpiredDate;
	}

	public String getItemZjm() {
		return itemZjm;
	}

	public void setItemZjm(String itemZjm) {
		this.itemZjm = itemZjm;
	}

	public String getApprovalNumber() {
		return approvalNumber;
	}

	public void setApprovalNumber(String approvalNumber) {
		this.approvalNumber = approvalNumber;
	}

	public String getProductionPlace() {
		return productionPlace;
	}

	public void setProductionPlace(String productionPlace) {
		this.productionPlace = productionPlace;
	}

	public String getInRejectLineId() {
		return inRejectLineId;
	}

	public void setInRejectLineId(String inRejectLineId) {
		this.inRejectLineId = inRejectLineId;
	}

	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 BigDecimal getLineNum() {
		return lineNum;
	}

	public void setLineNum(BigDecimal lineNum) {
		this.lineNum = lineNum;
	}

	public String getWarehouseLocatorId() {
		return warehouseLocatorId;
	}

	public void setWarehouseLocatorId(String warehouseLocatorId) {
		this.warehouseLocatorId = warehouseLocatorId;
	}

	public String getItemId() {
		return itemId;
	}

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

	public BigDecimal getPieceQty() {
		return pieceQty;
	}

	public void setPieceQty(BigDecimal pieceQty) {
		this.pieceQty = pieceQty;
	}

	public String getUom() {
		return uom;
	}

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

	public String getUomType() {
		return uomType;
	}

	public void setUomType(String uomType) {
		this.uomType = uomType;
	}

	public BigDecimal getConversionRate() {
		return conversionRate;
	}

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

	public BigDecimal getOddCaseQty() {
		return oddCaseQty;
	}

	public void setOddCaseQty(BigDecimal oddCaseQty) {
		this.oddCaseQty = oddCaseQty;
	}

	public BigDecimal getOddPieceQty() {
		return oddPieceQty;
	}

	public void setOddPieceQty(BigDecimal oddPieceQty) {
		this.oddPieceQty = oddPieceQty;
	}

	public String getBatchId() {
		return batchId;
	}

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

	public String getBatchNum() {
		return batchNum;
	}

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

	public Date getBatchProductionDate() {
		return batchProductionDate;
	}

	public void setBatchProductionDate(Date batchProductionDate) {
		this.batchProductionDate = batchProductionDate;
	}

	public Date getBatchExpiredDate() {
		return batchExpiredDate;
	}

	public void setBatchExpiredDate(Date batchExpiredDate) {
		this.batchExpiredDate = batchExpiredDate;
	}

	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 getContainerCode() {
		return containerCode;
	}

	public void setContainerCode(String containerCode) {
		this.containerCode = containerCode;
	}

	public String getGoodsCaseCode() {
		return goodsCaseCode;
	}

	public void setGoodsCaseCode(String goodsCaseCode) {
		this.goodsCaseCode = goodsCaseCode;
	}

	public String getComments() {
		return comments;
	}

	public void setComments(String comments) {
		this.comments = comments;
	}

	public String getResult() {
		return result;
	}

	public void setResult(String result) {
		this.result = result;
	}

	public String getReason() {
		return reason;
	}

	public void setReason(String reason) {
		this.reason = reason;
	}

	public String getExecutorUser() {
		return executorUser;
	}

	public void setExecutorUser(String executorUser) {
		this.executorUser = executorUser;
	}

	public String getTaskId() {
		return taskId;
	}

	public void setTaskId(String taskId) {
		this.taskId = taskId;
	}

	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;
	}

}
