From c0a9f70dc2192da1f5e7c9d5a4d02c258ef9b003 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期三, 08 四月 2026 17:18:20 +0800
Subject: [PATCH] feat(product-structure): 新增按父节点筛选的产品结构查询接口

---
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java    |    2 +-
 src/main/java/com/ruoyi/production/service/ProductStructureService.java          |    1 +
 src/main/resources/mapper/production/ProductStructureMapper.xml                  |    3 +++
 src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java |    7 ++++++-
 src/main/java/com/ruoyi/production/controller/ProductStructureController.java    |    6 ++++++
 src/main/java/com/ruoyi/production/mapper/ProductStructureMapper.java            |    2 +-
 6 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/controller/ProductStructureController.java b/src/main/java/com/ruoyi/production/controller/ProductStructureController.java
index 89ead6d..d618ea0 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductStructureController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductStructureController.java
@@ -37,4 +37,10 @@
     public R listBybomId( @PathVariable("bomId") Integer bomId){
         return R.ok(productStructureService.listBybomId(bomId));
     }
+
+
+    @GetMapping("/listBybomIdIsParent/{bomId}")
+    public R listBybomIdIsParent(@PathVariable Integer bomId){
+        return R.ok(productStructureService.listBybomIdIsParent(bomId));
+    }
 }
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductStructureMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductStructureMapper.java
index bd59242..0e700c9 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductStructureMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProductStructureMapper.java
@@ -13,7 +13,7 @@
 @Mapper
 public interface ProductStructureMapper  extends BaseMapper<ProductStructure> {
 
-    List<ProductStructureDto> listBybomId(@Param("bomId") Integer bomId);
+    List<ProductStructureDto> listBybomId(@Param("bomId") Integer bomId,@Param("isParent") Boolean isParent);
 
     List<ProductStructureDto> listBybomAndProcess(@Param("bomId") Integer bomId, @Param("processId") Long processId);
 }
diff --git a/src/main/java/com/ruoyi/production/service/ProductStructureService.java b/src/main/java/com/ruoyi/production/service/ProductStructureService.java
index ebdddb1..2fa2056 100644
--- a/src/main/java/com/ruoyi/production/service/ProductStructureService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductStructureService.java
@@ -14,4 +14,5 @@
 
     List<ProductStructureDto> listBybomId(Integer bomId);
 
+    List<ProductStructureDto> listBybomIdIsParent(Integer bomId);
 }
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java
index 381b642..57b6fac 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java
@@ -131,7 +131,7 @@
 
     @Override
     public List<ProductStructureDto> listBybomId(Integer bomId) {
-        List<ProductStructureDto> list = productStructureMapper.listBybomId(bomId);
+        List<ProductStructureDto> list = productStructureMapper.listBybomId(bomId, false);
 
         Map<Long, ProductStructureDto> map = new HashMap<>();
         for (ProductStructureDto node : list) {
@@ -154,4 +154,9 @@
         return tree;
     }
 
+    @Override
+    public List<ProductStructureDto> listBybomIdIsParent(Integer bomId) {
+        return productStructureMapper.listBybomId(bomId, true);
+    }
+
 }
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index 68b52cb..71e7f84 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -495,7 +495,7 @@
         if (processRoute == null) {
             return R.fail("璇峰厛璁剧疆宸ヨ壓璺嚎");
         }
-        List<ProductStructureDto> productStructureDtos = productStructureMapper.listBybomId(processRoute.getBomId());
+        List<ProductStructureDto> productStructureDtos = productStructureMapper.listBybomId(processRoute.getBomId(),false);
         if (productStructureDtos.isEmpty()) {
             return R.fail("璇峰厛璁剧疆浜у搧缁撴瀯");
         }
diff --git a/src/main/resources/mapper/production/ProductStructureMapper.xml b/src/main/resources/mapper/production/ProductStructureMapper.xml
index e4a0795..b454f1c 100644
--- a/src/main/resources/mapper/production/ProductStructureMapper.xml
+++ b/src/main/resources/mapper/production/ProductStructureMapper.xml
@@ -23,6 +23,9 @@
                 left join product p on pm.product_id = p.id
                 left join product_process pp on ps.process_id = pp.id
         where ps.bom_id = #{bomId}
+        <if test="isParent">
+            and ps.parent_id is not null
+        </if>
         order by ps.id
     </select>
     <select id="listBybomAndProcess" resultType="com.ruoyi.production.dto.ProductStructureDto">

--
Gitblit v1.9.3