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_product_stock
 *
 * @author xs
 * @date 2023-12-21
 */
public class WmsProductStock extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 成品库存ID */
    private Long productStockId;

    /** 仓库ID */
    @Excel(name = "仓库ID")
    private Long warehouseId;

    /** 仓库名称 */
    @Excel(name = "仓库名称")
    private String warehouseName;

    /** 仓库楼层 */
    @Excel(name = "仓库楼层")
    private Long warehouseFloor;

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

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

    /** 入库批次号 */
    @Excel(name = "入库批次号")
    private String productBatch;

    /** 质检状态(1检验中,2质检通过,3质检不通过) */
    @Excel(name = "质检状态(1检验中,2质检通过,3质检不通过)")
    private String qualityStatus;

    /** 产品ID */
    @Excel(name = "产品ID")
    private Long productId;

    /** 产品编码 */
    @Excel(name = "产品编码")
    private String materialCode;

    /** 产品名称 */
    @Excel(name = "产品名称")
    private String materialName;

    /**
     * 计划编号,关联pd_base_plan_info的plan_id
     */
    @Excel(name = "计划编号,关联pd_base_plan_info的plan_code")
    private String planCode;

    /**
     * 计划明细ID,关联pd_base_plan_detail的plan_detail_id
     */
    @Excel(name = "计划明细编号,关联pd_base_plan_detail的plan_detail_code")
    private String planDetailCode;

    private Long saleOrderId;
    /**
     * 销售订单编号
     */
    private String saleorderCode;
    /** 总数量 */
    @Excel(name = "总数量")
    private BigDecimal totalAmount;

    /** 冻结数量 */
    @Excel(name = "冻结数量")
    private BigDecimal frozenAmount;

    /** 占用数量 */
    @Excel(name = "占用数量")
    private BigDecimal occupyAmount;

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

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

    /** 有效标记 */
    @Excel(name = "有效标记")
    private String activeFlag;

    /** 入库时间（预留） */
    @Excel(name = "入库时间", readConverterExp = "预=留")
    private Date instockDate;

    private BigDecimal orderAmount;

    private BigDecimal applyAmount;

    public void setProductStockId(Long productStockId)
    {
        this.productStockId = productStockId;
    }

    public Long getProductStockId()
    {
        return productStockId;
    }
    public void setWarehouseId(Long warehouseId)
    {
        this.warehouseId = warehouseId;
    }

    public Long getWarehouseId()
    {
        return warehouseId;
    }

    public Long getWarehouseFloor() {
        return warehouseFloor;
    }

    public void setWarehouseFloor(Long warehouseFloor) {
        this.warehouseFloor = warehouseFloor;
    }

    public void setLocationCode(String locationCode)
    {
        this.locationCode = locationCode;
    }

    public String getLocationCode()
    {
        return locationCode;
    }
    public void setStockType(String stockType)
    {
        this.stockType = stockType;
    }

    public String getStockType()
    {
        return stockType;
    }
    public void setProductBatch(String productBatch)
    {
        this.productBatch = productBatch;
    }

    public String getProductBatch()
    {
        return productBatch;
    }
    public void setQualityStatus(String qualityStatus)
    {
        this.qualityStatus = qualityStatus;
    }

    public String getQualityStatus()
    {
        return qualityStatus;
    }
    public void setProductId(Long productId)
    {
        this.productId = productId;
    }

    public Long getProductId()
    {
        return productId;
    }

    public String getPlanCode() {
        return planCode;
    }

    public void setPlanCode(String planCode) {
        this.planCode = planCode;
    }

    public String getPlanDetailCode() {
        return planDetailCode;
    }

    public void setPlanDetailCode(String planDetailCode) {
        this.planDetailCode = planDetailCode;
    }

    public Long getSaleOrderId() {
        return saleOrderId;
    }

    public void setSaleOrderId(Long saleOrderId) {
        this.saleOrderId = saleOrderId;
    }

    public String getSaleorderCode() {
        return saleorderCode;
    }

    public void setSaleorderCode(String saleorderCode) {
        this.saleorderCode = saleorderCode;
    }

    public void setTotalAmount(BigDecimal totalAmount)
    {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getTotalAmount()
    {
        return totalAmount;
    }
    public void setFrozenAmount(BigDecimal frozenAmount)
    {
        this.frozenAmount = frozenAmount;
    }

    public BigDecimal getFrozenAmount()
    {
        return frozenAmount;
    }
    public void setOccupyAmount(BigDecimal occupyAmount)
    {
        this.occupyAmount = occupyAmount;
    }

    public BigDecimal getOccupyAmount()
    {
        return occupyAmount;
    }
    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 void setActiveFlag(String activeFlag)
    {
        this.activeFlag = activeFlag;
    }

    public String getActiveFlag()
    {
        return activeFlag;
    }
    public void setInstockDate(Date instockDate)
    {
        this.instockDate = instockDate;
    }

    public Date getInstockDate()
    {
        return instockDate;
    }

    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 BigDecimal getOrderAmount() {
        return orderAmount;
    }

    public void setOrderAmount(BigDecimal orderAmount) {
        this.orderAmount = orderAmount;
    }

    public String getWarehouseName() {
        return warehouseName;
    }

    public void setWarehouseName(String warehouseName) {
        this.warehouseName = warehouseName;
    }

    public BigDecimal getApplyAmount() {
        return applyAmount;
    }

    public void setApplyAmount(BigDecimal applyAmount) {
        this.applyAmount = applyAmount;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("productStockId", getProductStockId())
            .append("warehouseId", getWarehouseId())
            .append("locationCode", getLocationCode())
            .append("stockType", getStockType())
            .append("productBatch", getProductBatch())
            .append("qualityStatus", getQualityStatus())
            .append("productId", getProductId())
            .append("planCode", getPlanCode())
            .append("planDetailCode", getPlanDetailCode())
            .append("totalAmount", getTotalAmount())
            .append("frozenAmount", getFrozenAmount())
            .append("occupyAmount", getOccupyAmount())
            .append("createBy", getCreateBy())
            .append("createDate", getCreateDate())
            .append("updateBy", getUpdateBy())
            .append("updateDate", getUpdateDate())
            .append("activeFlag", getActiveFlag())
            .append("instockDate", getInstockDate())
            .toString();
    }
}
