From 9daeb6eac6e46710055e625bbbd56331b8890e21 Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期三, 04 十一月 2026 10:10:20 +0800
Subject: [PATCH] revert(energy): 撤销 energy 模块移植(与新高原有 em 模块重复)

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteServiceImpl.java |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteServiceImpl.java
index 8b6392d..552161e 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteServiceImpl.java
@@ -13,6 +13,7 @@
 import cn.iocoder.yudao.module.mes.controller.admin.pro.route.vo.MesProRouteSaveReqVO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteProcessDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteProcessOutputDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteProductDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteProductBomDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
@@ -35,6 +36,7 @@
 import java.util.Set;
 import java.util.Comparator;
 import java.util.Arrays;
+import java.util.Objects;
 import java.util.stream.Collectors;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -209,6 +211,20 @@
                 throw exception(PRO_ROUTE_MIDDLE_OUTPUT_INVALID, process.getProcessId());
             }
         }
+        // 4. 鏈亾宸ュ簭鎴愬搧浜у嚭蹇呴』鎸変骇鍝佸綊灞烇紝閬垮厤鈥滈�氱敤鈥濅骇鍑轰覆鍒板叾瀹冧骇鍝佺殑宸ュ崟
+        List<MesProRouteProcessOutputDO> lastOutputs = routeProcessService
+                .getRouteProcessOutputListByRouteProcessIds(Collections.singletonList(lastProcess.getId()));
+        if (CollUtil.isNotEmpty(lastOutputs)) {
+            boolean attributionInvalid = lastOutputs.stream().anyMatch(output ->
+                    output.getProductId() == null || !output.getProductId().equals(output.getItemId()));
+            Set<Long> attributedProducts = lastOutputs.stream()
+                    .map(MesProRouteProcessOutputDO::getProductId)
+                    .filter(Objects::nonNull)
+                    .collect(Collectors.toSet());
+            if (attributionInvalid || !attributedProducts.containsAll(finishedItemIds)) {
+                throw exception(PRO_ROUTE_LAST_OUTPUT_ATTRIBUTION_REQUIRED, lastProcess.getProcessId());
+            }
+        }
     }
 
     private Set<Long> parseOutputItemIds(String value) {
@@ -300,6 +316,10 @@
                 routeMapper.insert(route);
                 respVO.getCreateCodes().add(importItem.getCode());
             } else if (updateSupport) {
+                if (CommonStatusEnum.ENABLE.getStatus().equals(existRoute.getStatus())) {
+                    respVO.getFailureCodes().put(key, "璺嚎宸插惎鐢紝璇峰厛鍋滅敤鍚庡啀鏇存柊");
+                    return;
+                }
                 // 2.1.2 鏇存柊锛堢姸鎬佺敱鍚敤/绂佺敤鎺ュ彛鍗曠嫭缁存姢锛屽鍏ヤ笉淇敼鐘舵�侊級
                 MesProRouteDO updateObj = BeanUtils.toBean(importItem, MesProRouteDO.class);
                 updateObj.setId(existRoute.getId());

--
Gitblit v1.9.3