From bab71fce0017f010d96b85d35defe7fe8859dc35 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Tue, 31 Mar 2026 19:38:04 +0800 Subject: [PATCH] ✨ feat(mes): 优化库存冻结逻辑,更新盘点任务处理流程 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskLineServiceImpl.java | 6 +++--- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskServiceImpl.java | 40 ++++++++-------------------------------- 2 files changed, 11 insertions(+), 35 deletions(-) diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskLineServiceImpl.java index 9565708..1c6dd06 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskLineServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskLineServiceImpl.java @@ -12,12 +12,12 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterial import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.plan.MesWmStockTakingPlanParamDO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskDO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskLineDO; -import cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.plan.MesWmStockTakingPlanParamMapper; import cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.task.MesWmStockTakingTaskLineMapper; import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingPlanParamTypeEnum; import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingTaskLineStatusEnum; import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingTypeEnum; import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService; +import cn.iocoder.yudao.module.mes.service.wm.stocktaking.plan.MesWmStockTakingPlanParamService; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -44,7 +44,7 @@ public class MesWmStockTakingTaskLineServiceImpl implements MesWmStockTakingTask @Resource private MesWmStockTakingTaskLineMapper stockTakingTaskLineMapper; @Resource - private MesWmStockTakingPlanParamMapper stockTakingPlanParamMapper; + private MesWmStockTakingPlanParamService stockTakingPlanParamService; @Resource private MesWmMaterialStockService materialStockService; @Resource @@ -139,7 +139,7 @@ public class MesWmStockTakingTaskLineServiceImpl implements MesWmStockTakingTask */ private MesWmMaterialStockListReqVO buildStockQueryReqVO(MesWmStockTakingTaskDO task) { // 1. 从方案参数中提取过滤条件 - List params = stockTakingPlanParamMapper.selectListByPlanId(task.getPlanId()); + List params = stockTakingPlanParamService.getStockTakingPlanParamListByPlanId(task.getPlanId()); Assert.notEmpty(params, "盘点方案参数不能为空"); // 2.1 拼接通用参数 diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskServiceImpl.java index 9de738d..efaf298 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskServiceImpl.java @@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockFreezeReqVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.MesWmStockTakingTaskPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.MesWmStockTakingTaskSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskDO; @@ -20,10 +19,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import java.math.BigDecimal; import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; /** @@ -128,13 +127,8 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ .setStatus(MesWmStockTakingTaskStatusEnum.APPROVING.getStatus())); // 3. 根据冻结标识,对物资进行冻结 - // TODO @芋艿:后续跟进下! if (Boolean.TRUE.equals(task.getFrozen())) { - for (MesWmStockTakingTaskLineDO line : lines) { - if (line.getMaterialStockId() != null) { - updateMaterialStockFrozen(line.getMaterialStockId(), true); - } - } + updateMaterialStockFrozen(lines, true); } } @@ -149,10 +143,9 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ .setStatus(MesWmStockTakingTaskStatusEnum.FINISHED.getStatus())); // 3. 解冻库存 - // TODO @芋艿:后续跟进下! if (Boolean.TRUE.equals(task.getFrozen())) { List lines = stockTakingTaskLineService.getStockTakingTaskLineListByTaskId(id); - unfreezeStockTakingTaskStocks(lines); + updateMaterialStockFrozen(lines, false); } } @@ -167,7 +160,7 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ task.setStatus(MesWmStockTakingTaskStatusEnum.CANCELED.getStatus()); stockTakingTaskMapper.updateById(task); if (Boolean.TRUE.equals(task.getFrozen())) { - unfreezeStockTakingTaskStocks(stockTakingTaskLineService.getStockTakingTaskLineListByTaskId(id)); + updateMaterialStockFrozen(stockTakingTaskLineService.getStockTakingTaskLineListByTaskId(id), false); } } @@ -208,30 +201,13 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ return stockTakingTaskMapper.selectPage(pageReqVO); } - private void updateMaterialStockFrozen(Long materialStockId, boolean frozen) { - MesWmMaterialStockFreezeReqVO reqVO = new MesWmMaterialStockFreezeReqVO(); - reqVO.setId(materialStockId); - reqVO.setFrozen(frozen); - materialStockService.updateMaterialStockFrozen(reqVO); - } - - private void unfreezeStockTakingTaskStocks(List lines) { + private void updateMaterialStockFrozen(List lines, boolean frozen) { if (CollUtil.isEmpty(lines)) { return; } - for (MesWmStockTakingTaskLineDO line : lines) { - if (line.getMaterialStockId() != null) { - updateMaterialStockFrozen(line.getMaterialStockId(), false); - } - } - } - - private BigDecimal calculateStockTakingDifferenceQuantity(MesWmStockTakingTaskLineDO line) { - return getDefaultQuantity(line.getTakingQuantity()).subtract(getDefaultQuantity(line.getQuantity())); - } - - private BigDecimal getDefaultQuantity(BigDecimal quantity) { - return quantity == null ? BigDecimal.ZERO : quantity; + List materialStockIds = convertList(lines, + MesWmStockTakingTaskLineDO::getMaterialStockId, line -> line.getMaterialStockId() != null); + materialStockService.updateMaterialStockFrozen(materialStockIds, frozen); } private void validateStockTakingTaskCodeUnique(Long id, String code) { -- libgit2 0.21.4