package com.hw.wms.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.hw.common.core.annotation.Excel;
import com.hw.common.core.web.domain.BaseEntity;

/**
 * 盘点记录明细;盘点记录对应的明细信息对象 wms_inventory_check_detail
 *
 * @author xins
 * @date 2024-03-29
 */
public class WmsInventoryCheckDetail extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 盘点记录明细ID */
    private Long inventoryCheckDetailId;

    /** 盘点记录ID */
    @Excel(name = "盘点记录ID")
    private Long inventoryCheckId;

    /** 物料ID */
    @Excel(name = "物料ID")
    private Long materialId;

    /** 库位编码 */
    @Excel(name = "库位编码")
    private String locationCode;

    /** 物料批次号 */
    @Excel(name = "物料批次号")
    private String materialBatch;

    /** 库存类型(1原材料，2半成品，3成品) */
    @Excel(name = "库存类型(1原材料，2半成品，3成品)")
    private String stockType;

    /** 库存ID（根据库存类型1是wmsRawStockId,2和3是wmsProductStockId） */
    @Excel(name = "库存ID", readConverterExp = "根=据库存类型1是wmsRawStockId,2和3是wmsProductStockId")
    private Long stockId;

    /** 库存数量 */
    @Excel(name = "库存数量")
    private BigDecimal stockAmount;

    /** 实际数量 */
    @Excel(name = "实际数量")
    private BigDecimal realAmount;

    /** 盘点状态(0待盘点,1盘点中,2盘点完成);在生成盘点任务记录明细时，选择需要盘点的状态是待盘点，没有选择的则不生成记录，在确认盘点后改为盘点中，在此次任务盘点完成后置为盘点完成，如果全部库位库存盘点完成，则需要修改盘点记录的状态为盘点完成 */
    @Excel(name = "盘点状态(0待盘点,1盘点中,2盘点完成);在生成盘点任务记录明细时，选择需要盘点的状态是待盘点，没有选择的则不生成记录，在确认盘点后改为盘点中，在此次任务盘点完成后置为盘点完成，如果全部库位库存盘点完成，则需要修改盘点记录的状态为盘点完成")
    private String checkStatus;

    /** 盘点次数;重复盘点的话记录盘点的次数 */
    @Excel(name = "盘点次数;重复盘点的话记录盘点的次数")
    private Long inventoryTime;

    /** 同步ERP状态，盘点实际数量与库存数量不同时需要同步(0:失败,1成功) */
    @Excel(name = "同步ERP状态，盘点实际数量与库存数量不同时需要同步(0:失败,1成功)")
    private String erpStatus;

    /** 同步给ERP的数量 */
    @Excel(name = "同步给ERP的数量")
    private BigDecimal erpAmount;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createDate;

    /** 最后更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updateDate;

    private String materialCode;

    private String materialName;

    /** 盘点状态(0待盘点,1盘点中,2盘点完成); 多个以,隔开 */
    private String checkStatusStr;

    public void setInventoryCheckDetailId(Long inventoryCheckDetailId)
    {
        this.inventoryCheckDetailId = inventoryCheckDetailId;
    }

    public Long getInventoryCheckDetailId()
    {
        return inventoryCheckDetailId;
    }
    public void setInventoryCheckId(Long inventoryCheckId)
    {
        this.inventoryCheckId = inventoryCheckId;
    }

    public Long getInventoryCheckId()
    {
        return inventoryCheckId;
    }
    public void setMaterialId(Long materialId)
    {
        this.materialId = materialId;
    }

    public Long getMaterialId()
    {
        return materialId;
    }
    public void setLocationCode(String locationCode)
    {
        this.locationCode = locationCode;
    }

    public String getLocationCode()
    {
        return locationCode;
    }
    public void setMaterialBatch(String materialBatch)
    {
        this.materialBatch = materialBatch;
    }

    public String getMaterialBatch()
    {
        return materialBatch;
    }
    public void setStockType(String stockType)
    {
        this.stockType = stockType;
    }

    public String getStockType()
    {
        return stockType;
    }

    public void setStockId(Long stockId)
    {
        this.stockId = stockId;
    }

    public Long getStockId()
    {
        return stockId;
    }
    public void setStockAmount(BigDecimal stockAmount)
    {
        this.stockAmount = stockAmount;
    }

    public BigDecimal getStockAmount()
    {
        return stockAmount;
    }
    public void setRealAmount(BigDecimal realAmount)
    {
        this.realAmount = realAmount;
    }

    public BigDecimal getRealAmount()
    {
        return realAmount;
    }
    public void setCheckStatus(String checkStatus)
    {
        this.checkStatus = checkStatus;
    }

    public String getCheckStatus()
    {
        return checkStatus;
    }
    public void setInventoryTime(Long inventoryTime)
    {
        this.inventoryTime = inventoryTime;
    }

    public Long getInventoryTime()
    {
        return inventoryTime;
    }
    public void setErpStatus(String erpStatus)
    {
        this.erpStatus = erpStatus;
    }

    public String getErpStatus()
    {
        return erpStatus;
    }
    public void setErpAmount(BigDecimal erpAmount)
    {
        this.erpAmount = erpAmount;
    }

    public BigDecimal getErpAmount()
    {
        return erpAmount;
    }
    public void setCreateDate(Date createDate)
    {
        this.createDate = createDate;
    }

    public Date getCreateDate()
    {
        return createDate;
    }
    public void setUpdateDate(Date updateDate)
    {
        this.updateDate = updateDate;
    }

    public Date getUpdateDate()
    {
        return updateDate;
    }

    public String getMaterialCode() {
        return materialCode;
    }

    public void setMaterialCode(String materialCode) {
        this.materialCode = materialCode;
    }

    public String getMaterialName() {
        return materialName;
    }

    public void setMaterialName(String materialName) {
        this.materialName = materialName;
    }

    public String getCheckStatusStr() {
        return checkStatusStr;
    }

    public void setCheckStatusStr(String checkStatusStr) {
        this.checkStatusStr = checkStatusStr;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("inventoryCheckDetailId", getInventoryCheckDetailId())
                .append("inventoryCheckId", getInventoryCheckId())
                .append("materialId", getMaterialId())
                .append("locationCode", getLocationCode())
                .append("materialBatch", getMaterialBatch())
                .append("stockType", getStockType())
                .append("stockId", getStockId())
                .append("stockAmount", getStockAmount())
                .append("realAmount", getRealAmount())
                .append("checkStatus", getCheckStatus())
                .append("inventoryTime", getInventoryTime())
                .append("erpStatus", getErpStatus())
                .append("erpAmount", getErpAmount())
                .append("remark", getRemark())
                .append("createBy", getCreateBy())
                .append("createDate", getCreateDate())
                .append("updateBy", getUpdateBy())
                .append("updateDate", getUpdateDate())
                .toString();
    }
}
