Commit bab71fce0017f010d96b85d35defe7fe8859dc35

Authored by YunaiV
1 parent f8011968

✨ feat(mes): 优化库存冻结逻辑,更新盘点任务处理流程

重构库存冻结和解冻逻辑,合并相关方法以提高代码可读性和维护性。
新增表单提交和执行盘点的处理逻辑,确保用户操作的流畅性和准确性。
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
12 12 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.plan.MesWmStockTakingPlanParamDO;
13 13 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskDO;
14 14 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskLineDO;
15   -import cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.plan.MesWmStockTakingPlanParamMapper;
16 15 import cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.task.MesWmStockTakingTaskLineMapper;
17 16 import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingPlanParamTypeEnum;
18 17 import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingTaskLineStatusEnum;
19 18 import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingTypeEnum;
20 19 import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService;
  20 +import cn.iocoder.yudao.module.mes.service.wm.stocktaking.plan.MesWmStockTakingPlanParamService;
21 21 import jakarta.annotation.Resource;
22 22 import org.springframework.stereotype.Service;
23 23 import org.springframework.transaction.annotation.Transactional;
... ... @@ -44,7 +44,7 @@ public class MesWmStockTakingTaskLineServiceImpl implements MesWmStockTakingTask
44 44 @Resource
45 45 private MesWmStockTakingTaskLineMapper stockTakingTaskLineMapper;
46 46 @Resource
47   - private MesWmStockTakingPlanParamMapper stockTakingPlanParamMapper;
  47 + private MesWmStockTakingPlanParamService stockTakingPlanParamService;
48 48 @Resource
49 49 private MesWmMaterialStockService materialStockService;
50 50 @Resource
... ... @@ -139,7 +139,7 @@ public class MesWmStockTakingTaskLineServiceImpl implements MesWmStockTakingTask
139 139 */
140 140 private MesWmMaterialStockListReqVO buildStockQueryReqVO(MesWmStockTakingTaskDO task) {
141 141 // 1. 从方案参数中提取过滤条件
142   - List<MesWmStockTakingPlanParamDO> params = stockTakingPlanParamMapper.selectListByPlanId(task.getPlanId());
  142 + List<MesWmStockTakingPlanParamDO> params = stockTakingPlanParamService.getStockTakingPlanParamListByPlanId(task.getPlanId());
143 143 Assert.notEmpty(params, "盘点方案参数不能为空");
144 144  
145 145 // 2.1 拼接通用参数
... ...
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;
4 4 import cn.hutool.core.util.ObjUtil;
5 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 6 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
7   -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockFreezeReqVO;
8 7 import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.MesWmStockTakingTaskPageReqVO;
9 8 import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.MesWmStockTakingTaskSaveReqVO;
10 9 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskDO;
... ... @@ -20,10 +19,10 @@ import org.springframework.stereotype.Service;
20 19 import org.springframework.transaction.annotation.Transactional;
21 20 import org.springframework.validation.annotation.Validated;
22 21  
23   -import java.math.BigDecimal;
24 22 import java.util.List;
25 23  
26 24 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
  25 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
27 26 import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
28 27  
29 28 /**
... ... @@ -128,13 +127,8 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ
128 127 .setStatus(MesWmStockTakingTaskStatusEnum.APPROVING.getStatus()));
129 128  
130 129 // 3. 根据冻结标识,对物资进行冻结
131   - // TODO @芋艿:后续跟进下!
132 130 if (Boolean.TRUE.equals(task.getFrozen())) {
133   - for (MesWmStockTakingTaskLineDO line : lines) {
134   - if (line.getMaterialStockId() != null) {
135   - updateMaterialStockFrozen(line.getMaterialStockId(), true);
136   - }
137   - }
  131 + updateMaterialStockFrozen(lines, true);
138 132 }
139 133 }
140 134  
... ... @@ -149,10 +143,9 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ
149 143 .setStatus(MesWmStockTakingTaskStatusEnum.FINISHED.getStatus()));
150 144  
151 145 // 3. 解冻库存
152   - // TODO @芋艿:后续跟进下!
153 146 if (Boolean.TRUE.equals(task.getFrozen())) {
154 147 List<MesWmStockTakingTaskLineDO> lines = stockTakingTaskLineService.getStockTakingTaskLineListByTaskId(id);
155   - unfreezeStockTakingTaskStocks(lines);
  148 + updateMaterialStockFrozen(lines, false);
156 149 }
157 150 }
158 151  
... ... @@ -167,7 +160,7 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ
167 160 task.setStatus(MesWmStockTakingTaskStatusEnum.CANCELED.getStatus());
168 161 stockTakingTaskMapper.updateById(task);
169 162 if (Boolean.TRUE.equals(task.getFrozen())) {
170   - unfreezeStockTakingTaskStocks(stockTakingTaskLineService.getStockTakingTaskLineListByTaskId(id));
  163 + updateMaterialStockFrozen(stockTakingTaskLineService.getStockTakingTaskLineListByTaskId(id), false);
171 164 }
172 165 }
173 166  
... ... @@ -208,30 +201,13 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ
208 201 return stockTakingTaskMapper.selectPage(pageReqVO);
209 202 }
210 203  
211   - private void updateMaterialStockFrozen(Long materialStockId, boolean frozen) {
212   - MesWmMaterialStockFreezeReqVO reqVO = new MesWmMaterialStockFreezeReqVO();
213   - reqVO.setId(materialStockId);
214   - reqVO.setFrozen(frozen);
215   - materialStockService.updateMaterialStockFrozen(reqVO);
216   - }
217   -
218   - private void unfreezeStockTakingTaskStocks(List<MesWmStockTakingTaskLineDO> lines) {
  204 + private void updateMaterialStockFrozen(List<MesWmStockTakingTaskLineDO> lines, boolean frozen) {
219 205 if (CollUtil.isEmpty(lines)) {
220 206 return;
221 207 }
222   - for (MesWmStockTakingTaskLineDO line : lines) {
223   - if (line.getMaterialStockId() != null) {
224   - updateMaterialStockFrozen(line.getMaterialStockId(), false);
225   - }
226   - }
227   - }
228   -
229   - private BigDecimal calculateStockTakingDifferenceQuantity(MesWmStockTakingTaskLineDO line) {
230   - return getDefaultQuantity(line.getTakingQuantity()).subtract(getDefaultQuantity(line.getQuantity()));
231   - }
232   -
233   - private BigDecimal getDefaultQuantity(BigDecimal quantity) {
234   - return quantity == null ? BigDecimal.ZERO : quantity;
  208 + List<Long> materialStockIds = convertList(lines,
  209 + MesWmStockTakingTaskLineDO::getMaterialStockId, line -> line.getMaterialStockId() != null);
  210 + materialStockService.updateMaterialStockFrozen(materialStockIds, frozen);
235 211 }
236 212  
237 213 private void validateStockTakingTaskCodeUnique(Long id, String code) {
... ...