From 28c639dd7b6db86dc3ad68903a1471d74d4a03e9 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期日, 13 九月 2026 13:43:39 +0800
Subject: [PATCH] fix: 更新技术BOM结构以支持规格变化时保留下级BOM

---
 src/main/java/com/ruoyi/technology/service/impl/TechnologyBomServiceImpl.java |   18 +++++++++++++++---
 1 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/ruoyi/technology/service/impl/TechnologyBomServiceImpl.java b/src/main/java/com/ruoyi/technology/service/impl/TechnologyBomServiceImpl.java
index 8894288..8d7d77c 100644
--- a/src/main/java/com/ruoyi/technology/service/impl/TechnologyBomServiceImpl.java
+++ b/src/main/java/com/ruoyi/technology/service/impl/TechnologyBomServiceImpl.java
@@ -116,9 +116,21 @@
         }
         if (oldBom.getProductModelId() != null && !oldBom.getProductModelId().equals(technologyBom.getProductModelId())) {
             technologyRoutingMapper.updateProductModelByBomId(technologyBom.getProductModelId(), technologyBom.getId().longValue());
-            technologyBomStructureService.remove(Wrappers.<TechnologyBomStructure>lambdaQuery()
-                    .eq(TechnologyBomStructure::getBomId, technologyBom.getId().longValue()));
-            initRootStructure(technologyBom.getId().longValue(), technologyBom.getProductModelId());
+            // 瑙勬牸鍙樺寲鏃朵粎鏇存柊鏍硅妭鐐规寚鍚戠殑瑙勬牸锛屼繚鐣欎笅绾OM缁撴瀯
+            List<TechnologyBomStructure> roots = technologyBomStructureService.list(Wrappers.<TechnologyBomStructure>lambdaQuery()
+                    .eq(TechnologyBomStructure::getBomId, technologyBom.getId().longValue())
+                    //.isNull(TechnologyBomStructure::getParentId)
+            );
+            if (roots.isEmpty()) {
+                initRootStructure(technologyBom.getId().longValue(), technologyBom.getProductModelId());
+            } else {
+                ProductModel productModel = productModelService.getById(technologyBom.getProductModelId());
+                for (TechnologyBomStructure root : roots) {
+                    root.setProductModelId(technologyBom.getProductModelId());
+                    root.setUnit(productModel.getUnit());
+                    technologyBomStructureService.updateById(root);
+                }
+            }
         }
         if (technologyBom.getBomNo() == null) {
             technologyBom.setBomNo(oldBom.getBomNo());

--
Gitblit v1.9.3