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

import com.fasterxml.jackson.annotation.JsonFormat;
import com.prolog.cs.biz.inbound.dto.CargoChangeIn;
import com.prolog.framework.bz.core.model.BaseModel;
import com.prolog.framework.core.annotation.AutoKey;
import com.prolog.framework.core.annotation.Id;
import com.prolog.framework.core.annotation.Ignore;
import com.prolog.framework.core.annotation.Table;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * @Description
 * @Date 2021-04-02
 */

@ApiModel
@Table(value = "wms_in_rcv_instock_lines", appendDefaultJdbcType = true, camelToUnderline = true)
public class RcvInstockLines extends BaseModel implements Serializable {
	private static final long serialVersionUID = 2358683050629373819L;
	@Id
	@AutoKey(type = AutoKey.TYPE_SNOWFLAKE)
	/** 行ID **/
	@ApiModelProperty(value = "行ID")
	private String inBoundLineId;

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

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

	/** 行号 **/
	@ApiModelProperty(value = "行号")
	private BigDecimal lineNum;

	/** 库位ID **/
	@ApiModelProperty(value = "库位ID")
	private String whLocatorId;

	@ApiModelProperty(value = "库位编码")
	private String whLocatorCode;
	@ApiModelProperty(value = "库位名称")
	private String whLocatorName;
	@ApiModelProperty(value = "库别编码")
	private String whAreaCategoryCode;
	@ApiModelProperty(value = "库别名称")
	private String whAreaCategoryName;
	@ApiModelProperty(value = "建筑物编码")
	private String bldgCode;
	@ApiModelProperty(value = "库区编码")
	private String whAreaCode;

	/** 商品ID **/
	@ApiModelProperty(value = "商品ID")
	private String itemId;

	/** 单品数量 **/
	@ApiModelProperty(value = "单品数量")
	private BigDecimal pieceQty;

	/** 包装单位 **/
	@ApiModelProperty(value = "包装单位")
	private String uom;

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

	/** 包装含量 **/
	@ApiModelProperty(value = "包装含量")
	private BigDecimal conversionRate;

	/** 整箱数 **/
	@ApiModelProperty(value = "整箱数")
	private BigDecimal oddCaseQty;

	/** 零散数 **/
	@ApiModelProperty(value = "零散数")
	private BigDecimal oddPieceQty;

	/** batch_id **/
	@ApiModelProperty(value = "batch_id")
	private String batchId;

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

	/** 批次生产日期 **/
	@ApiModelProperty(value = "批次生产日期")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date batchProductionDate;

	/** 批次有效期 **/
	@ApiModelProperty(value = "批次有效期")
	@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;

	/** 上架推荐库位算法(预留) A1.R1/A2.R2 **/
	@ApiModelProperty(value = "上架推荐库位算法(预留) A1.R1/A2.R2")
	private String algorithmType;

	/** 执行者（上架员） **/
	@ApiModelProperty(value = "执行者（上架员）")
	private String executorUser;

	/** 收货库存结论（合格/不合格/待处理/待检/待处理） **/
	@ApiModelProperty(value = "收货库存结论（合格/不合格/待处理/待检/待处理）")
	private String stockStatus;

	private String segment1;

	private String segment2;

	private String segment3;

	private String segment4;

	private String segment5;

	private String attribute1;

	private String attribute2;

	private String attribute3;

	private String attribute4;

	private String attribute5;

	/** 任务池ID（来源TASK） **/
	@ApiModelProperty(value = "任务池ID（来源TASK）")
	private String taskId;

	/** 货主ID（冗余，关联收货单） **/
	@ApiModelProperty(value = "货主ID（冗余，关联收货单）")
	private String mtlOwnerId;

	/** 仓库ID（冗余，关联收货单） **/
	@ApiModelProperty(value = "仓库ID（冗余，关联收货单）")
	private String warehouseId;

	/** 来源单类型（冗余，关联收货单） **/
	@ApiModelProperty(value = "来源单类型（冗余，关联收货单）")
	private String srcBillType;

	/** 来源单头ID（冗余，关联收货单） **/
	@ApiModelProperty(value = "来源单头ID（冗余，关联收货单）")
	private String srcHeaderId;

	/** 来源单行ID（冗余，关联收货单） **/
	@ApiModelProperty(value = "来源单行ID（冗余，关联收货单）")
	private String srcLineId;

	/** ASN头ID（冗余，关联收货单） **/
	@ApiModelProperty(value = "ASN头ID（冗余，关联收货单）")
	private String asnHeaderId;

	/** ASN行ID（冗余，关联收货单） **/
	@ApiModelProperty(value = "ASN行ID（冗余，关联收货单）")
	private String asnLineId;

	// -------------------库存服务所需字段--------------------------------
	// 供应商id
	@Ignore
	@ApiModelProperty(value = "供应商id(隐藏字段)", position = 9)
	private String vendorId;
	// 组织id
	@Ignore
	@ApiModelProperty(value = "组织id(隐藏字段)", position = 9)
	private String orgId;
	// erp
	@Ignore
	@ApiModelProperty(value = "erp批号(隐藏字段)", position = 9)
	private String erpBatchNum;
	// 产地
	@Ignore
	@ApiModelProperty(value = "商品产地(隐藏字段)", position = 9)
	private String productionPlace;
	// 单品含税额
	@Ignore
	@ApiModelProperty(value = "单品含税进价(隐藏字段)", position = 9)
	private BigDecimal piecePriceTi;
	// 单品不含税额
	@Ignore
	@ApiModelProperty(value = "单品不含税进价(隐藏字段)", position = 9)
	private BigDecimal piecePriceTe;
	// 税率
	@Ignore
	@ApiModelProperty(value = "税率(隐藏字段)", position = 9)
	private BigDecimal taxRate;

	@ApiModelProperty(value = "库别id")
	private String whAreaCategoryId;

	@ApiModelProperty(value = "收货时间(冗余)", position = -1)
	@Ignore
	private Date rcvDate;
	@ApiModelProperty(value = "收货类型", position = -1)
	@Ignore
	private String rcvType;

	// ================== 5.26 新加字段=======

	@ApiModelProperty(value = "上架标签")
	private String instockLabel;

	@ApiModelProperty(value = "库存状态", position = -1)
	private String inventoryStatus;

	@ApiModelProperty(value = "实际货位名", position = -2)
	private String realWhLocatorName;

	@ApiModelProperty(value = "实际货位id", position = -2)
	private String realWhLocatorId;

	@ApiModelProperty(value = "实际货位编码", position = -2)
	private String realWhLocatorCode;

	@ApiModelProperty(value = "建筑物id", position = -2)
	private String bldgId;

	// 来源行id
	@ApiModelProperty(value = "来源行id(一般为质检行)", position = -5)
	private String refLineId;
	// 来源类型
	@ApiModelProperty(value = "来源类型(0收货1质检2复检)", position = -5)
	private Integer refType;
	@ApiModelProperty(value = "来源头id(一般为质检头)", position = -5)
	private String refBillId;
	@ApiModelProperty(value = "来源头编码(一般为质检头)", position = -5)
	private String refBillNo;

	@ApiModelProperty(value = "(新)库存子状态(1 正常/2 虚拟/ 3 实物/4 直调)", position = -7)
	private String subStatus;
	@ApiModelProperty(value = "(新)库存转换操作类型 0-代管转正常;1-代管转待检;2-待检转正常", position = -7)
	private String inventoryOpType;
	@ApiModelProperty(value = "(新)关联的代管货位id", position = -7)
	private String hostLocatorId;
	
	@ApiModelProperty(value = "(新)是否货主转换上架", position = -7)
	@Ignore
	private CargoChangeIn cargoChangeIn;
	
	@ApiModelProperty(value = "二级库存(id&code)", position = -7)
	private String secondStatus;
	
	public String getSecondStatus() {
		return secondStatus;
	}

	public void setSecondStatus(String secondStatus) {
		this.secondStatus = secondStatus;
	}

	public CargoChangeIn getCargoChangeIn() {
		return cargoChangeIn;
	}

	public void setCargoChangeIn(CargoChangeIn cargoChangeIn) {
		this.cargoChangeIn = cargoChangeIn;
	}

	public String getInventoryOpType() {
		return inventoryOpType;
	}

	public void setInventoryOpType(String inventoryOpType) {
		this.inventoryOpType = inventoryOpType;
	}

	public String getHostLocatorId() {
		return hostLocatorId;
	}

	public void setHostLocatorId(String hostLocatorId) {
		this.hostLocatorId = hostLocatorId;
	}

	public String getRcvType() {
		return rcvType;
	}

	public void setRcvType(String rcvType) {
		this.rcvType = rcvType;
	}

	public String getSubStatus() {
		return subStatus;
	}

	public void setSubStatus(String subStatus) {
		this.subStatus = subStatus;
	}

	public String getRefLineId() {
		return refLineId;
	}

	public void setRefLineId(String refLineId) {
		this.refLineId = refLineId;
	}

	public Integer getRefType() {
		return refType;
	}

	public void setRefType(Integer refType) {
		this.refType = refType;
	}

	public String getRefBillId() {
		return refBillId;
	}

	public void setRefBillId(String refBillId) {
		this.refBillId = refBillId;
	}

	public String getRefBillNo() {
		return refBillNo;
	}

	public void setRefBillNo(String refBillNo) {
		this.refBillNo = refBillNo;
	}

	public String getBldgId() {
		return bldgId;
	}

	public void setBldgId(String bldgId) {
		this.bldgId = bldgId;
	}

	public String getRealWhLocatorName() {
		return realWhLocatorName;
	}

	public void setRealWhLocatorName(String realWhLocatorName) {
		this.realWhLocatorName = realWhLocatorName;
	}

	public String getRealWhLocatorId() {
		return realWhLocatorId;
	}

	public void setRealWhLocatorId(String realWhLocatorId) {
		this.realWhLocatorId = realWhLocatorId;
	}

	public String getRealWhLocatorCode() {
		return realWhLocatorCode;
	}

	public void setRealWhLocatorCode(String realWhLocatorCode) {
		this.realWhLocatorCode = realWhLocatorCode;
	}

	public String getInventoryStatus() {
		return inventoryStatus;
	}

	public void setInventoryStatus(String inventoryStatus) {
		this.inventoryStatus = inventoryStatus;
	}

	public String getInstockLabel() {
		return instockLabel;
	}

	public void setInstockLabel(String instockLabel) {
		this.instockLabel = instockLabel;
	}

	public Date getRcvDate() {
		return rcvDate;
	}

	public void setRcvDate(Date rcvDate) {
		this.rcvDate = rcvDate;
	}

	public String getWhAreaCategoryId() {
		return whAreaCategoryId;
	}

	public void setWhAreaCategoryId(String whAreaCategoryId) {
		this.whAreaCategoryId = whAreaCategoryId;
	}

	public String getInBoundLineId() {
		return inBoundLineId;
	}

	public void setInBoundLineId(String inBoundLineId) {
		this.inBoundLineId = inBoundLineId;
	}

	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 getWhLocatorId() {
		return whLocatorId;
	}

	public void setWhLocatorId(String whLocatorId) {
		this.whLocatorId = whLocatorId;
	}

	public String getWhLocatorCode() {
		return whLocatorCode;
	}

	public void setWhLocatorCode(String whLocatorCode) {
		this.whLocatorCode = whLocatorCode;
	}

	public String getWhLocatorName() {
		return whLocatorName;
	}

	public void setWhLocatorName(String whLocatorName) {
		this.whLocatorName = whLocatorName;
	}

	public String getWhAreaCategoryCode() {
		return whAreaCategoryCode;
	}

	public void setWhAreaCategoryCode(String whAreaCategoryCode) {
		this.whAreaCategoryCode = whAreaCategoryCode;
	}

	public String getWhAreaCategoryName() {
		return whAreaCategoryName;
	}

	public void setWhAreaCategoryName(String whAreaCategoryName) {
		this.whAreaCategoryName = whAreaCategoryName;
	}

	public String getBldgCode() {
		return bldgCode;
	}

	public void setBldgCode(String bldgCode) {
		this.bldgCode = bldgCode;
	}

	public String getWhAreaCode() {
		return whAreaCode;
	}

	public void setWhAreaCode(String whAreaCode) {
		this.whAreaCode = whAreaCode;
	}

	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 getAlgorithmType() {
		return algorithmType;
	}

	public void setAlgorithmType(String algorithmType) {
		this.algorithmType = algorithmType;
	}

	public String getExecutorUser() {
		return executorUser;
	}

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

	public String getStockStatus() {
		return stockStatus;
	}

	public void setStockStatus(String stockStatus) {
		this.stockStatus = stockStatus;
	}

	public String getSegment1() {
		return segment1;
	}

	public void setSegment1(String segment1) {
		this.segment1 = segment1;
	}

	public String getSegment2() {
		return segment2;
	}

	public void setSegment2(String segment2) {
		this.segment2 = segment2;
	}

	public String getSegment3() {
		return segment3;
	}

	public void setSegment3(String segment3) {
		this.segment3 = segment3;
	}

	public String getSegment4() {
		return segment4;
	}

	public void setSegment4(String segment4) {
		this.segment4 = segment4;
	}

	public String getSegment5() {
		return segment5;
	}

	public void setSegment5(String segment5) {
		this.segment5 = segment5;
	}

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

	public String getVendorId() {
		return vendorId;
	}

	public void setVendorId(String vendorId) {
		this.vendorId = vendorId;
	}

	public String getOrgId() {
		return orgId;
	}

	public void setOrgId(String orgId) {
		this.orgId = orgId;
	}

	public String getErpBatchNum() {
		return erpBatchNum;
	}

	public void setErpBatchNum(String erpBatchNum) {
		this.erpBatchNum = erpBatchNum;
	}

	public String getProductionPlace() {
		return productionPlace;
	}

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

	public BigDecimal getPiecePriceTi() {
		return piecePriceTi;
	}

	public void setPiecePriceTi(BigDecimal piecePriceTi) {
		this.piecePriceTi = piecePriceTi;
	}

	public BigDecimal getPiecePriceTe() {
		return piecePriceTe;
	}

	public void setPiecePriceTe(BigDecimal piecePriceTe) {
		this.piecePriceTe = piecePriceTe;
	}

	public BigDecimal getTaxRate() {
		return taxRate;
	}

	public void setTaxRate(BigDecimal taxRate) {
		this.taxRate = taxRate;
	}

}
