From 9e300f3329459d54d1ad2511f64cdc3a60fd5a6c Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 28 八月 2026 20:39:54 +0800
Subject: [PATCH] fix: 入库记录修改为批号倒序

---
 src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingServiceImpl.java |   24 ++++++++++++++++++++++++
 1 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingServiceImpl.java b/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingServiceImpl.java
index 0eff194..3e2fb0c 100644
--- a/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingServiceImpl.java
+++ b/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingServiceImpl.java
@@ -9,6 +9,8 @@
 import com.ruoyi.common.utils.OrderUtils;
 import com.ruoyi.technology.bean.dto.TechnologyRoutingDto;
 import com.ruoyi.technology.bean.vo.TechnologyRoutingVo;
+import com.ruoyi.production.mapper.ProductionOrderRoutingMapper;
+import com.ruoyi.production.pojo.ProductionOrderRouting;
 import com.ruoyi.technology.mapper.*;
 import com.ruoyi.technology.pojo.*;
 import com.ruoyi.technology.service.TechnologyRoutingService;
@@ -39,6 +41,8 @@
     private final TechnologyOperationParamMapper technologyOperationParamMapper;
     private final TechnologyParamMapper technologyParamMapper;
     private final TechnologyRoutingOperationParamMapper technologyRoutingOperationParamMapper;
+
+    private final ProductionOrderRoutingMapper productionOrderRoutingMapper;
 
     @Override
     public IPage<TechnologyRoutingVo> pageTechnologyRouting(Page<TechnologyRoutingDto> page, TechnologyRoutingDto technologyRoutingDto) {
@@ -78,6 +82,13 @@
     public boolean removeTechnologyRouting(List<Long> ids) {
         if (ids == null || ids.isEmpty()) {
             return false;
+        }
+        // 鍒ゆ柇鏄惁鏈夌敓浜ц鍗曠粦瀹氳宸ヨ壓璺嚎
+        Long count = productionOrderRoutingMapper.selectCount(
+                Wrappers.<ProductionOrderRouting>lambdaQuery()
+                        .in(ProductionOrderRouting::getTechnologyRoutingId, ids));
+        if (count > 0) {
+            throw new ServiceException("璇ュ伐鑹鸿矾绾垮凡缁戝畾鐢熶骇璁㈠崟锛屾棤娉曞垹闄わ紒");
         }
         List<TechnologyRoutingOperation> routingOperationList = technologyRoutingOperationMapper.selectList(
                 Wrappers.<TechnologyRoutingOperation>lambdaQuery()
@@ -166,6 +177,10 @@
         if (bomStructure == null) {
             return routingProductModelId;
         }
+        if (hasChildren(bomStructure, structureById)) {
+            return bomStructure.getProductModelId() != null
+                    ? bomStructure.getProductModelId() : routingProductModelId;
+        }
         Long parentId = bomStructure.getParentId();
         if (parentId == null) {
             return routingProductModelId != null ? routingProductModelId : bomStructure.getProductModelId();
@@ -177,6 +192,15 @@
         return routingProductModelId != null ? routingProductModelId : bomStructure.getProductModelId();
     }
 
+    private boolean hasChildren(TechnologyBomStructure bomStructure,
+                                Map<Long, TechnologyBomStructure> structureById) {
+        if (bomStructure == null || bomStructure.getId() == null || structureById == null) {
+            return false;
+        }
+        return structureById.values().stream()
+                .anyMatch(child -> child != null && java.util.Objects.equals(child.getParentId(), bomStructure.getId()));
+    }
+
     private void syncRoutingOperationParams(Long technologyRoutingOperationId, Long technologyOperationId) {
         List<TechnologyOperationParam> operationParamList = technologyOperationParamMapper.selectList(
                 Wrappers.<TechnologyOperationParam>lambdaQuery()

--
Gitblit v1.9.3