From 05ab6e3f69a5e73624b2573db043f5923e8f7d8b Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期四, 05 十一月 2026 14:17:19 +0800
Subject: [PATCH] fix 修复bug

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteProcessServiceImpl.java |   64 +++++++++++++++++++++++++------
 1 files changed, 51 insertions(+), 13 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteProcessServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteProcessServiceImpl.java
index f88d950..a7459be 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteProcessServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteProcessServiceImpl.java
@@ -2,6 +2,7 @@
 
 import cn.hutool.core.collection.CollUtil;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.mes.controller.admin.pro.route.vo.process.MesProProcessOutputItemVO;
 import cn.iocoder.yudao.module.mes.controller.admin.pro.route.vo.process.MesProRouteProcessSaveReqVO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteProcessDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteProductBomDO;
@@ -14,9 +15,11 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -63,12 +66,8 @@
 
         // 2. 鎻掑叆
         MesProRouteProcessDO routeProcess = BeanUtils.toBean(createReqVO, MesProRouteProcessDO.class);
-        if (CollUtil.isNotEmpty(createReqVO.getOutputItemIds())) {
-            routeProcess.setOutputItemId(
-                createReqVO.getOutputItemIds().stream()
-                    .map(String::valueOf)
-                    .collect(Collectors.joining(",")));
-        }
+        // 浜у嚭閰嶇疆锛堝惈褰掑睘浜у搧锛夊簭鍒楀寲涓� JSON 瀛樺叆 output_item_id锛涘吋瀹规棫鐨� outputItemIds 骞抽摵鏍煎紡
+        routeProcess.setOutputItemId(serializeOutputs(createReqVO.getOutputs(), createReqVO.getOutputItemIds()));
         routeProcessMapper.insert(routeProcess);
 
         // 3. 鏇存柊宸ュ簭閾�
@@ -81,8 +80,14 @@
     public void updateRouteProcess(MesProRouteProcessSaveReqVO updateReqVO) {
         // 1.0 宸插惎鐢ㄧ殑宸ヨ壓璺嚎锛屼笉鍏佽鎿嶄綔
         routeService.validateRouteNotEnable(updateReqVO.getRouteId());
-        // 1.1 鏍¢獙瀛樺湪
-        validateRouteProcessExists(updateReqVO.getId());
+        // 1.1 鏍¢獙瀛樺湪锛涢儴鍒嗘洿鏂帮紙濡備粎璋冩暣浜у嚭浜у搧锛夋椂鏈紶鐨勫繀濉瓧娈电敤鐜版湁鍊煎洖濉�
+        MesProRouteProcessDO existing = validateRouteProcessExists(updateReqVO.getId());
+        if (updateReqVO.getProcessId() == null) {
+            updateReqVO.setProcessId(existing.getProcessId());
+        }
+        if (updateReqVO.getSort() == null) {
+            updateReqVO.setSort(existing.getSort());
+        }
         // 1.2 鏍¢獙宸ヨ壓璺嚎銆佸伐搴忓瓨鍦�
         validateRouteAndProcessExists(updateReqVO.getRouteId(), updateReqVO.getProcessId());
         // 1.3 鏍¢獙鍞竴鎬�
@@ -92,11 +97,10 @@
 
         // 2. 鏇存柊
         MesProRouteProcessDO updateObj = BeanUtils.toBean(updateReqVO, MesProRouteProcessDO.class);
-        if (CollUtil.isNotEmpty(updateReqVO.getOutputItemIds())) {
-            updateObj.setOutputItemId(
-                updateReqVO.getOutputItemIds().stream()
-                    .map(String::valueOf)
-                    .collect(Collectors.joining(",")));
+        // 浜у嚭閰嶇疆锛氬彧瑕佸墠绔樉寮忎紶浜� outputs / outputItemIds 灏辫鐩栵紙浼犵┖鏁扮粍琛ㄧず娓呯┖锛�
+        if (updateReqVO.getOutputs() != null || updateReqVO.getOutputItemIds() != null) {
+            String serialized = serializeOutputs(updateReqVO.getOutputs(), updateReqVO.getOutputItemIds());
+            updateObj.setOutputItemId(serialized == null ? "" : serialized);
         }
         routeProcessMapper.updateById(updateObj);
 
@@ -239,4 +243,38 @@
         routeProcessMapper.deleteByRouteId(routeId);
     }
 
+    /**
+     * 浜у嚭閰嶇疆搴忓垪鍖栧埌 output_item_id 瀛楁锛圝SON 鏁扮粍锛�
+     * 鏍煎紡锛歔{"itemId":231,"productId":231}]
+     */
+    private String serializeOutputs(List<MesProProcessOutputItemVO> outputs, List<Long> outputItemIds) {
+        List<Map<String, Object>> list = new ArrayList<>();
+        if (CollUtil.isNotEmpty(outputs)) {
+            for (MesProProcessOutputItemVO vo : outputs) {
+                if (vo == null || vo.getItemId() == null) {
+                    continue;
+                }
+                Map<String, Object> m = new LinkedHashMap<>();
+                m.put("itemId", vo.getItemId());
+                if (vo.getProductId() != null) {
+                    m.put("productId", vo.getProductId());
+                }
+                list.add(m);
+            }
+        } else if (CollUtil.isNotEmpty(outputItemIds)) {
+            for (Long id : outputItemIds) {
+                if (id == null) {
+                    continue;
+                }
+                Map<String, Object> m = new LinkedHashMap<>();
+                m.put("itemId", id);
+                list.add(m);
+            }
+        }
+        if (list.isEmpty()) {
+            return null;
+        }
+        return cn.hutool.json.JSONUtil.toJsonStr(list);
+    }
+
 }

--
Gitblit v1.9.3