From cea8396d93b31fe6037a0558febcabb2169363a8 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 14 十月 2026 14:02:25 +0800
Subject: [PATCH] feat(wm): 入库单和领料单支持手工填写关联信息

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueController.java |   42 +++++++++++++++++++++++++++++++-----------
 1 files changed, 31 insertions(+), 11 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueController.java
index 4836c4a..3396360 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueController.java
@@ -1,6 +1,7 @@
 package cn.iocoder.yudao.module.mes.controller.admin.wm.productissue;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
@@ -11,12 +12,15 @@
 import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.MesWmProductIssuePageReqVO;
 import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.MesWmProductIssueRespVO;
 import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.MesWmProductIssueSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.md.client.MesMdClientDO;
+import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
+import cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueDO;
-import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService;
+import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
 import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService;
+import cn.iocoder.yudao.module.mes.service.pro.task.MesProTaskService;
 import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
 import cn.iocoder.yudao.module.mes.service.wm.productissue.MesWmProductIssueService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -51,7 +55,9 @@
     @Resource
     private MesProWorkOrderService workOrderService;
     @Resource
-    private MesMdClientService clientService;
+    private MesProTaskService taskService;
+    @Resource
+    private CrmCustomerApi customerApi;
 
     @PostMapping("/create")
     @Operation(summary = "鍒涘缓棰嗘枡鍑哄簱鍗�")
@@ -165,17 +171,31 @@
                 convertSet(list, MesWmProductIssueDO::getWorkstationId));
         Map<Long, MesProWorkOrderDO> workOrderMap = workOrderService.getWorkOrderMap(
                 convertSet(list, MesWmProductIssueDO::getWorkOrderId));
-        Map<Long, MesMdClientDO> clientMap = clientService.getClientMap(
+        Map<Long, MesProTaskDO> taskMap = taskService.getTaskMap(
+                convertSet(list, MesWmProductIssueDO::getTaskId));
+        Map<Long, CrmCustomerRespDTO> clientMap = customerApi.getCustomerMap(
                 convertSet(workOrderMap.values(), MesProWorkOrderDO::getClientId));
         // 2. 鏋勫缓缁撴灉
         return BeanUtils.toBean(list, MesWmProductIssueRespVO.class, vo -> {
-            MapUtils.findAndThen(workstationMap, vo.getWorkstationId(),
-                    workstation -> vo.setWorkstationName(workstation.getName()));
-            MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(), workOrder -> {
-                vo.setWorkOrderCode(workOrder.getCode());
-                MapUtils.findAndThen(clientMap, workOrder.getClientId(), client ->
-                        vo.setClientCode(client.getCode()).setClientName(client.getName()));
-            });
+            // 宸ヤ綔绔欏悕绉颁互鍗曟嵁涓婄殑鏂囨湰涓哄噯锛堟敮鎸佹墜宸ュ~鍐欙級锛涗负绌烘椂鎵嶆寜缂栧彿鍙嶆煡锛屽吋瀹瑰巻鍙叉暟鎹�
+            if (StrUtil.isEmpty(vo.getWorkstationName())) {
+                MapUtils.findAndThen(workstationMap, vo.getWorkstationId(),
+                        workstation -> vo.setWorkstationName(workstation.getName()));
+            }
+            // 鐢熶骇浠诲姟缂栫爜鍚岀悊锛泃askName 涓嶈惤搴擄紝浠嶆寜缂栧彿鍙嶆煡
+            if (StrUtil.isEmpty(vo.getTaskCode())) {
+                MapUtils.findAndThen(taskMap, vo.getTaskId(), task ->
+                        vo.setTaskCode(task.getCode()).setTaskName(task.getName()));
+            }
+            // 鐢熶骇宸ュ崟缂栧彿鍚岀悊
+            if (StrUtil.isEmpty(vo.getWorkOrderCode())) {
+                MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(), workOrder ->
+                        vo.setWorkOrderCode(workOrder.getCode()));
+            }
+            // 瀹㈡埛鍚嶇О锛氫粛鎸� workOrderId 鈫� workOrder.clientId 鍙嶆煡锛涙墜濉崟娌℃湁宸ュ崟缂栧彿鏃朵繚鎸佷负绌�
+            MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(), workOrder ->
+                    MapUtils.findAndThen(clientMap, workOrder.getClientId(), client ->
+                            vo.setClientName(client.getName())));
         });
     }
 

--
Gitblit v1.9.3