7 小时以前 6d910029b6c81db0a2b66caa66952781397b153a
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockService.java
@@ -1,9 +1,12 @@
package cn.iocoder.yudao.module.mes.service.wm.materialstock;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockAdjustReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockFreezeReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockListReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockMoveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmStockSummaryRespVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO;
import jakarta.validation.Valid;
@@ -113,6 +116,22 @@
                                                  Long batchId, String batchCode, Long vendorId, LocalDateTime receiptTime);
    /**
     * 按组合键查找库存记录(只查不创建)
     *
     * @param itemId      物料编号
     * @param warehouseId 仓库编号
     * @param locationId  库区编号
     * @param areaId      库位编号
     * @param batchId     批次编号
     * @param vendorId    供应商编号
     * @return 库存记录(不存在返回 null)
     */
    MesWmMaterialStockDO getMaterialStockByCompositeKey(Long itemId, Long warehouseId, Long locationId, Long areaId,
                                                         Long batchId, Long vendorId);
    List<MesWmMaterialStockDO> getMaterialStockListByItemAndBatch(Long itemId, Long batchId);
    /**
     * 更新库存数量
     *
     * @param id 库存记录编号
@@ -120,6 +139,42 @@
     * @param checkFlag       是否校验库存充足(为 true 且扣减后为负则报错)
     */
    void updateMaterialStockQuantity(Long id, BigDecimal quantity, boolean checkFlag);
    void updateMaterialStockState(Long id, Integer stockState);
    /**
     * 按品种维度汇总库存数量(内存聚合,支持 stockState 等过滤条件)
     *
     * @param reqVO 过滤条件
     * @return 品种汇总列表
     */
    List<MesWmStockSummaryRespVO> getStockSummaryByItem(MesWmMaterialStockListReqVO reqVO);
    /**
     * 按批次维度汇总库存数量(内存聚合,支持 stockState 等过滤条件)
     *
     * @param reqVO 过滤条件
     * @return 批次汇总列表
     */
    List<MesWmStockSummaryRespVO> getStockSummaryByBatch(MesWmMaterialStockListReqVO reqVO);
    /**
     * 按仓库维度汇总库存数量(内存聚合,支持 stockState 等过滤条件)
     *
     * @param reqVO 过滤条件
     * @return 仓库汇总列表
     */
    List<MesWmStockSummaryRespVO> getStockSummaryByWarehouse(MesWmMaterialStockListReqVO reqVO);
    /**
     * 按仓库批次更新库存状态(用于种子质检合格后,将暂存库整批转为合格库)
     *
     * @param batchId   仓库批次ID
     * @param toState   目标库存状态
     * @param fromState 原库存状态(限定只更新该状态的记录)
     * @return 影响行数
     */
    int updateStockStateByBatchId(Long batchId, Integer toState, Integer fromState);
    /**
     * 库位混放规则校验
@@ -148,4 +203,27 @@
    MesWmMaterialStockDO validateSelectedStock(Long materialStockId, Long itemId, Long batchId, String batchCode,
                                               Long warehouseId, Long locationId, Long areaId, BigDecimal quantity);
    /**
     * 自定义入库
     *
     * @param reqVO 入库请求
     * @return 库存记录ID
     */
    Long adjustMaterialStockIn(@Valid MesWmMaterialStockAdjustReqVO reqVO);
    /**
     * 自定义出库
     *
     * @param reqVO 出库请求
     * @return 库存记录ID
     */
    Long adjustMaterialStockOut(@Valid MesWmMaterialStockAdjustReqVO reqVO);
    /**
     * 库存移库
     *
     * @param reqVO 移库请求
     */
    void moveMaterialStock(@Valid MesWmMaterialStockMoveReqVO reqVO);
}