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