package com.hw.wms.mapper;

import java.math.BigDecimal;
import java.util.List;
import com.hw.wms.domain.WmsProductStock;
import com.hw.wms.domain.WmsRawStock;
import org.apache.ibatis.annotations.Param;

/**
 * 成品库存Mapper接口
 *
 * @author xs
 * @date 2023-12-20
 */
public interface WmsProductStockMapper
{
    /**
     * 查询成品库存
     *
     * @param productStockId 成品库存主键
     * @return 成品库存
     */
    public WmsProductStock selectWmsProductStockByProductStockId(Long productStockId);

    /**
     * 查询成品库存列表
     *
     * @param wmsProductStock 成品库存
     * @return 成品库存集合
     */
    public List<WmsProductStock> selectWmsProductStockList(WmsProductStock wmsProductStock);

    /**
     * 新增成品库存
     *
     * @param wmsProductStock 成品库存
     * @return 结果
     */
    public int insertWmsProductStock(WmsProductStock wmsProductStock);

    /**
     * 修改成品库存
     *
     * @param wmsProductStock 成品库存
     * @return 结果
     */
    public int updateWmsProductStock(WmsProductStock wmsProductStock);

    /**
     * 删除成品库存
     *
     * @param productStockId 成品库存主键
     * @return 结果
     */
    public int deleteWmsProductStockByProductStockId(Long productStockId);

    /**
     * 批量删除成品库存
     *
     * @param productStockIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteWmsProductStockByProductStockIds(Long[] productStockIds);

    /**
     * 获取成品库存数量
     * @param wmsProductStock
     * @return
     */
    public BigDecimal getProductStockTotalAmount(WmsProductStock wmsProductStock);

    /**
     * 根据库位编码和入库批次号查询成品库存
     * @param locationCode
     * @param productBatch
     * @return WmsRawStock
     */
    public WmsProductStock selectProductStockByLocationAndBatch(@Param("locationCode") String locationCode,
                                                        @Param("productBatch") String productBatch);


    /**
     * 查询totalAmount>0成品库存列表
     *
     * @param wmsProductStock 成品库存
     * @return 成品库存集合
     */
    public List<WmsProductStock> selectWmsProductStockInList(WmsProductStock wmsProductStock);

}
