liu
9 天以前 06c312e584b99df613728d5ea8b32df4e156f3cc
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockService.java
@@ -3,7 +3,10 @@
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.MesWmMaterialStockImportExcelVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockImportRespVO;
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.dal.dataobject.wm.materialstock.MesWmMaterialStockDO;
import jakarta.validation.Valid;
@@ -114,6 +117,38 @@
                                                  Long batchId, String batchCode, Long vendorId, LocalDateTime receiptTime);
    /**
     * 创建新的库存记录(不查找已有记录,始终创建新记录)
     *
     * 用于退料等场景,需要为每次退料创建独立的库存记录
     *
     * @param itemId      物料编号
     * @param warehouseId 仓库编号
     * @param locationId  库区编号
     * @param areaId      库位编号
     * @param batchId     批次编号
     * @param batchCode   批次号
     * @param vendorId    供应商编号
     * @param receiptTime 入库时间(为空则默认当前时间)
     * @return 新创建的库存记录
     */
    MesWmMaterialStockDO createMaterialStock(Long itemId, Long warehouseId, Long locationId, Long areaId,
                                              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);
    /**
     * 更新库存数量
     *
     * @param id 库存记录编号
@@ -150,11 +185,38 @@
                                               Long warehouseId, Long locationId, Long areaId, BigDecimal quantity);
    /**
     * 库存调整(自定义出入库)
     * 自定义入库
     *
     * @param reqVO 调整请求
     * @return 库存事务流水ID
     * @param reqVO 入库请求
     * @return 库存记录ID
     */
    Long adjustMaterialStock(@Valid MesWmMaterialStockAdjustReqVO reqVO);
    Long adjustMaterialStockIn(@Valid MesWmMaterialStockAdjustReqVO reqVO);
    /**
     * 自定义出库
     *
     * @param reqVO 出库请求
     * @return 库存记录ID
     */
    Long adjustMaterialStockOut(@Valid MesWmMaterialStockAdjustReqVO reqVO);
    /**
     * 库存移库
     *
     * @param reqVO 移库请求
     */
    void moveMaterialStock(@Valid MesWmMaterialStockMoveReqVO reqVO);
    /**
     * 导入库存现有量
     * <p>
     * 每行通过「操作类型」控制:增加/减少 按变动量调整在库数量;覆盖 按目标值差额调整。
     * 按「物料编码 + 仓库 + 库区 + 库位 + 批次号 + 供应商」定位库存记录。
     * 每行独立事务:单行失败不影响其它行。
     *
     * @param importList 导入数据
     * @return 导入结果
     */
    MesWmMaterialStockImportRespVO importMaterialStockList(List<MesWmMaterialStockImportExcelVO> importList);
}