From abf1c0a35d85d38239ff5d2ed746a4e4b797c9d1 Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期四, 20 八月 2026 14:05:02 +0800
Subject: [PATCH] feat 功能修正
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskLineServiceImpl.java | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 58 insertions(+), 0 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 5f68604..1fed457 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
@@ -7,6 +7,8 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockListReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLineSaveReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLineImportExcelVO;
+import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLineImportRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.result.MesWmStockTakingTaskResultSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.plan.MesWmStockTakingPlanParamDO;
@@ -50,6 +52,8 @@
private MesWmMaterialStockService materialStockService;
@Resource
private MesWmStockTakingTaskService stockTakingTaskService;
+ @Resource
+ private cn.iocoder.yudao.module.mdm.api.item.MdmItemApi mdmItemApi;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -230,4 +234,58 @@
return param != null ? param.getValueId() : null;
}
+ @Override
+ public MesWmStockTakingTaskLineImportRespVO importTakingQuantity(Long taskId,
+ List<MesWmStockTakingTaskLineImportExcelVO> list) {
+ MesWmStockTakingTaskLineImportRespVO respVO = new MesWmStockTakingTaskLineImportRespVO();
+ respVO.setSuccessCount(0);
+ respVO.setFailureCount(0);
+ respVO.setFailureMessages(new java.util.ArrayList<>());
+ if (CollUtil.isEmpty(list)) {
+ return respVO;
+ }
+ // 1. 鑾峰彇鐩樼偣浠诲姟琛�
+ List<MesWmStockTakingTaskLineDO> lines = stockTakingTaskLineMapper.selectListByTaskId(taskId);
+ if (CollUtil.isEmpty(lines)) {
+ throw exception(cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_STOCK_TAKING_TASK_LINE_NOT_EXISTS);
+ }
+ // 2. 鏋勫缓 鐗╂枡缂栫爜 -> 鐗╂枡ID 鏄犲皠
+ java.util.Set<Long> itemIds = lines.stream().map(MesWmStockTakingTaskLineDO::getItemId)
+ .filter(Objects::nonNull).collect(java.util.stream.Collectors.toSet());
+ java.util.Map<Long, cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO> itemMap =
+ mdmItemApi.getItemMap(itemIds);
+ java.util.Map<String, Long> codeToItemIdMap = new java.util.HashMap<>();
+ itemMap.values().forEach(item -> {
+ if (item.getCode() != null) {
+ codeToItemIdMap.put(item.getCode(), item.getId());
+ }
+ });
+ // 3. 閫愯鍖归厤骞跺啓鍏ュ疄鐩樻暟閲�
+ for (MesWmStockTakingTaskLineImportExcelVO row : list) {
+ Long itemId = codeToItemIdMap.get(row.getItemCode());
+ if (itemId == null) {
+ respVO.setFailureCount(respVO.getFailureCount() + 1);
+ respVO.getFailureMessages().add("鐗╂枡缂栫爜涓嶅瓨鍦�: " + row.getItemCode());
+ continue;
+ }
+ MesWmStockTakingTaskLineDO matched = lines.stream()
+ .filter(line -> Objects.equals(line.getItemId(), itemId)
+ && Objects.equals(line.getBatchCode(), row.getBatchCode()))
+ .findFirst().orElse(null);
+ if (matched == null) {
+ respVO.setFailureCount(respVO.getFailureCount() + 1);
+ respVO.getFailureMessages().add("鏈壘鍒板搴旂洏鐐硅: 鐗╂枡=" + row.getItemCode() + " 鎵规=" + row.getBatchCode());
+ continue;
+ }
+ if (row.getTakingQuantity() == null) {
+ respVO.setFailureCount(respVO.getFailureCount() + 1);
+ respVO.getFailureMessages().add("瀹炵洏鏁伴噺涓虹┖: 鐗╂枡=" + row.getItemCode());
+ continue;
+ }
+ updateStockTakingTaskLineTakingQuantity(matched.getId(), row.getTakingQuantity());
+ respVO.setSuccessCount(respVO.getSuccessCount() + 1);
+ }
+ return respVO;
+ }
+
}
--
Gitblit v1.9.3