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 java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @Description 收货单头信息
 * @Author Xiong
 * @Date 2021-04-02
 */

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

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

	@ApiModelProperty(value = "自动单号", required = true)
//	@NotBlank(message = "自动单号 can not blank!", groups = validAdd.class)
	private String autoBillNum;

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

	@ApiModelProperty(value = "来源单号列表")
	private String srcAutoBillNum;

	@ApiModelProperty(value = "来源单ID列表(ASN)")
	private String asnHeaderId;

	@ApiModelProperty(value = "来源单号列表(ASN)")
	private String asnAutoBillNum;

	@ApiModelProperty(value = "手工单号")
	private String customBillNum;

	@ApiModelProperty(value = "执行者（收货员）")
	private String executorUser;

	@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 rcvDate;

	@ApiModelProperty(value = "收货类型", required = true)
	@NotBlank(message = "收货类型 can not blank!", groups = validAdd.class)
	private String rcvType;

	@ApiModelProperty(value = "状态")
//	@NotBlank(message = "状态 can not blank!", groups = validAdd.class)
	private String status;

	@ApiModelProperty(value = "status_as(辅助状态，外部系统对接 例如上传ERP)")
	private String statusAs;

	@ApiModelProperty(value = "组织ID")
	private String orgnId;

	@ApiModelProperty(value = "供应商ID")
//	@NotBlank(message = "供应商ID can not blank!", groups = validAdd.class)
	private String vendorId;

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

	@ApiModelProperty(value = "采购员ID")
	private String buyerId;

	@ApiModelProperty(value = "客户ID（销退客户ID）XT")
	private String customerId;

	@ApiModelProperty(value = "源组织ID(调拨组织ID)    YC")
	private String srcOrgnId;

	@ApiModelProperty(value = "源仓库ID(调拨源仓ID)    YC")
	private String srcWarehouseId;

	@ApiModelProperty(value = "源货主ID(移库入库的源货主ID)")
	private String srcMtlOwnerId;

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

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

	@ApiModelProperty(value = "access_level")
//	@NotBlank(message = "access_level can not blank!", groups = validAdd.class)
	private String accessLevel;

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

	@ApiModelProperty(value = "audit_date")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date auditDate;

	@ApiModelProperty(value = "audited_by")
	private String auditedBy;

	@ApiModelProperty(value = "打印次数")
	private BigDecimal printCount;

	@ApiModelProperty(value = "打印日期")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date printDate;

	@ApiModelProperty(value = "打印人")
	private String printedBy;

	@ApiModelProperty(value = "audited_name")
	private String auditedName;

	@ApiModelProperty(value = "printed_name")
	private String printedName;

	@ApiModelProperty(value = "批准人id")
	private String confirmedBy;

	@ApiModelProperty(value = "批准人名称")
	private String confirmedName;

	@ApiModelProperty(value = "批准时间")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date confirmDate;

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

	// ====================6.10新加字段============
	@ApiModelProperty(value = "asn单备注说明", position = -4)
	private String asnRemark;
	@ApiModelProperty(value = "(新)要货部门", position = -4)
	private String needDept;
	@ApiModelProperty(value = "(新)要货业务员", position = -4)
	private String needUser;
	@ApiModelProperty(value = "(新)代理商", position = -4)
	private String agent;

	// ====================6.11新加字段============
	// 销退入库专用字段
	// 销售开票单号
	@ApiModelProperty(value = "(新)销售开票单号", position = -4)
	private String saleBillNo;
	// 账期类型
	@ApiModelProperty(value = "(新)账期类型", position = -4)
	private String saleBillType;
	// 部门
	@ApiModelProperty(value = "(新)部门(名称)", position = -4)
	private String department;
	// 业务员、
	@ApiModelProperty(value = "(新)业务员", position = -4)
	private String bizUser;
	// 退货类型
	@ApiModelProperty(value = "(新)退货类型(码表-rcv_return_type)", position = -4)
	private String returnType;
	// 单位助记码
	@ApiModelProperty(value = "(新)单位助记码", position = -4)
	private String shipperZjm;

	private boolean autoGen; // 是否自动生成数据

	// 代管转正常标识
	// 代管转待检标识
	@ApiModelProperty(value = "(新)收货员1id", position = -40)
	private String rcvUserId1;

	@ApiModelProperty(value = "(新)收货员1名称", position = -40)
	private String rcvUserName1;

	@ApiModelProperty(value = "(新)收货员2id", position = -40)
	private String rcvUserId2;

	@ApiModelProperty(value = "(新)收货员2名称", position = -40)
	private String rcvUserName2;

	@ApiModelProperty(value = "到货方式", position = -40)
	private String arrivalMode;

	public String getRcvUserId1() {
		return rcvUserId1;
	}

	public void setRcvUserId1(String rcvUserId1) {
		this.rcvUserId1 = rcvUserId1;
	}

	public String getRcvUserName1() {
		return rcvUserName1;
	}

	public void setRcvUserName1(String rcvUserName1) {
		this.rcvUserName1 = rcvUserName1;
	}

	public String getRcvUserId2() {
		return rcvUserId2;
	}

	public void setRcvUserId2(String rcvUserId2) {
		this.rcvUserId2 = rcvUserId2;
	}

	public String getRcvUserName2() {
		return rcvUserName2;
	}

	public void setRcvUserName2(String rcvUserName2) {
		this.rcvUserName2 = rcvUserName2;
	}

	public boolean getAutoGen() {
		return autoGen;
	}

	public void setAutoGen(boolean autoGen) {
		this.autoGen = autoGen;
	}

	public String getShipperZjm() {
		return shipperZjm;
	}

	public void setShipperZjm(String shipperZjm) {
		this.shipperZjm = shipperZjm;
	}

	public String getSaleBillNo() {
		return saleBillNo;
	}

	public void setSaleBillNo(String saleBillNo) {
		this.saleBillNo = saleBillNo;
	}

	public String getSaleBillType() {
		return saleBillType;
	}

	public void setSaleBillType(String saleBillType) {
		this.saleBillType = saleBillType;
	}

	public String getDepartment() {
		return department;
	}

	public void setDepartment(String department) {
		this.department = department;
	}

	public String getBizUser() {
		return bizUser;
	}

	public void setBizUser(String bizUser) {
		this.bizUser = bizUser;
	}

	public String getReturnType() {
		return returnType;
	}

	public void setReturnType(String returnType) {
		this.returnType = returnType;
	}

	public String getNeedDept() {
		return needDept;
	}

	public void setNeedDept(String needDept) {
		this.needDept = needDept;
	}

	public String getNeedUser() {
		return needUser;
	}

	public void setNeedUser(String needUser) {
		this.needUser = needUser;
	}

	public String getAgent() {
		return agent;
	}

	public void setAgent(String agent) {
		this.agent = agent;
	}

	public String getAsnRemark() {
		return asnRemark;
	}

	public void setAsnRemark(String asnRemark) {
		this.asnRemark = asnRemark;
	}

	public String getRcvHeaderId() {
		return this.rcvHeaderId;
	}

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

	public String getMtlOwnerId() {
		return this.mtlOwnerId;
	}

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

	public String getAutoBillNum() {
		return this.autoBillNum;
	}

	public void setAutoBillNum(String autoBillNum) {
		this.autoBillNum = autoBillNum;
	}

	public String getSrcHeaderId() {
		return this.srcHeaderId;
	}

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

	public String getSrcAutoBillNum() {
		return this.srcAutoBillNum;
	}

	public void setSrcAutoBillNum(String srcAutoBillNum) {
		this.srcAutoBillNum = srcAutoBillNum;
	}

	public String getAsnHeaderId() {
		return this.asnHeaderId;
	}

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

	public String getAsnAutoBillNum() {
		return this.asnAutoBillNum;
	}

	public void setAsnAutoBillNum(String asnAutoBillNum) {
		this.asnAutoBillNum = asnAutoBillNum;
	}

	public String getCustomBillNum() {
		return this.customBillNum;
	}

	public void setCustomBillNum(String customBillNum) {
		this.customBillNum = customBillNum;
	}

	public String getExecutorUser() {
		return this.executorUser;
	}

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

	public Date getRcvDate() {
		return this.rcvDate;
	}

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

	public String getRcvType() {
		return this.rcvType;
	}

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

	public String getStatus() {
		return this.status;
	}

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

	public String getStatusAs() {
		return this.statusAs;
	}

	public void setStatusAs(String statusAs) {
		this.statusAs = statusAs;
	}

	public String getOrgnId() {
		return this.orgnId;
	}

	public void setOrgnId(String orgnId) {
		this.orgnId = orgnId;
	}

	public String getVendorId() {
		return this.vendorId;
	}

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

	public String getWarehouseId() {
		return this.warehouseId;
	}

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

	public String getBuyerId() {
		return this.buyerId;
	}

	public void setBuyerId(String buyerId) {
		this.buyerId = buyerId;
	}

	public String getCustomerId() {
		return this.customerId;
	}

	public void setCustomerId(String customerId) {
		this.customerId = customerId;
	}

	public String getSrcOrgnId() {
		return this.srcOrgnId;
	}

	public void setSrcOrgnId(String srcOrgnId) {
		this.srcOrgnId = srcOrgnId;
	}

	public String getSrcWarehouseId() {
		return this.srcWarehouseId;
	}

	public void setSrcWarehouseId(String srcWarehouseId) {
		this.srcWarehouseId = srcWarehouseId;
	}

	public String getSrcMtlOwnerId() {
		return this.srcMtlOwnerId;
	}

	public void setSrcMtlOwnerId(String srcMtlOwnerId) {
		this.srcMtlOwnerId = srcMtlOwnerId;
	}

	public BigDecimal getCaseQty() {
		return this.caseQty;
	}

	public void setCaseQty(BigDecimal caseQty) {
		this.caseQty = caseQty;
	}

	public BigDecimal getPieceQty() {
		return this.pieceQty;
	}

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

	public String getAccessLevel() {
		return this.accessLevel;
	}

	public void setAccessLevel(String accessLevel) {
		this.accessLevel = accessLevel;
	}

	public String getComments() {
		return this.comments;
	}

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

	public Date getAuditDate() {
		return this.auditDate;
	}

	public void setAuditDate(Date auditDate) {
		this.auditDate = auditDate;
	}

	public String getAuditedBy() {
		return this.auditedBy;
	}

	public void setAuditedBy(String auditedBy) {
		this.auditedBy = auditedBy;
	}

	public BigDecimal getPrintCount() {
		return this.printCount;
	}

	public void setPrintCount(BigDecimal printCount) {
		this.printCount = printCount;
	}

	public Date getPrintDate() {
		return this.printDate;
	}

	public void setPrintDate(Date printDate) {
		this.printDate = printDate;
	}

	public String getPrintedBy() {
		return this.printedBy;
	}

	public void setPrintedBy(String printedBy) {
		this.printedBy = printedBy;
	}

	public String getAuditedName() {
		return this.auditedName;
	}

	public void setAuditedName(String auditedName) {
		this.auditedName = auditedName;
	}

	public String getPrintedName() {
		return this.printedName;
	}

	public void setPrintedName(String printedName) {
		this.printedName = printedName;
	}

	public String getConfirmedBy() {
		return this.confirmedBy;
	}

	public void setConfirmedBy(String confirmedBy) {
		this.confirmedBy = confirmedBy;
	}

	public String getConfirmedName() {
		return this.confirmedName;
	}

	public void setConfirmedName(String confirmedName) {
		this.confirmedName = confirmedName;
	}

	public Date getConfirmDate() {
		return this.confirmDate;
	}

	public void setConfirmDate(Date confirmDate) {
		this.confirmDate = confirmDate;
	}

	public String getSrcBillType() {
		return srcBillType;
	}

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

	public String getArrivalMode() {
		return arrivalMode;
	}

	public void setArrivalMode(String arrivalMode) {
		this.arrivalMode = arrivalMode;
	}
}
