From c78984f3aea4505971dc12f8acd41e30cf4fdbea Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期三, 27 五月 2026 11:48:45 +0800
Subject: [PATCH] feat 质检检测调整
---
src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java | 75 +++++++++++++++++++++++--------------
1 files changed, 46 insertions(+), 29 deletions(-)
diff --git a/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
index fdf2dd3..946f610 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
@@ -32,26 +32,60 @@
@Override
public List<ProductTreeDto> selectProductList(ProductDto productDto) {
- // 鏌ヨ鏍硅妭鐐癸紙parentId 涓� null锛�
+ // 涓�娆℃�ф煡璇㈡墍鏈夋暟鎹�
LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.isNull(Product::getParentId);
-
- // 濡傛灉鏈変骇鍝佸悕绉版潯浠讹紝娣诲姞鍒版煡璇腑
if (productDto.getProductName() != null && !productDto.getProductName().isEmpty()) {
queryWrapper.like(Product::getProductName, productDto.getProductName());
}
+ List<Product> allProducts = productMapper.selectList(queryWrapper);
- // 鏌ヨ鏍硅妭鐐瑰垪琛�
- List<Product> rootProducts = productMapper.selectList(queryWrapper);
+ // 鍦ㄥ唴瀛樹腑鏋勫缓鏍戠粨鏋�
+ return buildTree(allProducts);
+ }
- // 杞崲涓烘爲鑺傜偣骞堕�掑綊鏋勫缓瀛愭爲
+ /**
+ * 鏋勫缓鏍戠粨鏋�
+ * @param allProducts 鎵�鏈変骇鍝佹暟鎹�
+ * @return 鏍戝舰缁撴瀯鍒楄〃
+ */
+ private List<ProductTreeDto> buildTree(List<Product> allProducts) {
+ // 鎸� parentId 鍒嗙粍
+ java.util.Map<Long, List<Product>> parentMap = new java.util.HashMap<>();
+ List<Product> rootList = new ArrayList<>();
+
+ for (Product product : allProducts) {
+ if (product.getParentId() == null) {
+ rootList.add(product);
+ } else {
+ parentMap.computeIfAbsent(product.getParentId(), k -> new ArrayList<>()).add(product);
+ }
+ }
+
+ // 閫掑綊鏋勫缓瀛愯妭鐐�
List<ProductTreeDto> tree = new ArrayList<>();
- for (Product product : rootProducts) {
- ProductTreeDto node = convertToTreeDto(product);
- node.setChildren(buildChildrenNodes(product.getId()));
- tree.add(node);
+ for (Product root : rootList) {
+ tree.add(buildNode(root, parentMap));
}
return tree;
+ }
+
+ /**
+ * 閫掑綊鏋勫缓鑺傜偣鍙婂叾瀛愯妭鐐�
+ * @param product 浜у搧瀹炰綋
+ * @param parentMap 鎸塸arentId鍒嗙粍鐨刴ap
+ * @return 鏍戣妭鐐�
+ */
+ private ProductTreeDto buildNode(Product product, java.util.Map<Long, List<Product>> parentMap) {
+ ProductTreeDto node = convertToTreeDto(product);
+ List<Product> children = parentMap.get(product.getId());
+ if (children != null && !children.isEmpty()) {
+ List<ProductTreeDto> childNodes = new ArrayList<>();
+ for (Product child : children) {
+ childNodes.add(buildNode(child, parentMap));
+ }
+ node.setChildren(childNodes);
+ }
+ return node;
}
@Override
@@ -60,24 +94,7 @@
}
- // 閫掑綊鏋勫缓瀛愯妭鐐�
- private List<ProductTreeDto> buildChildrenNodes(Long parentId) {
- // 鏌ヨ褰撳墠鐖惰妭鐐圭殑瀛愯妭鐐�
- LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(Product::getParentId, parentId);
- List<Product> childProducts = productMapper.selectList(queryWrapper);
-
- // 杞崲瀛愯妭鐐瑰苟閫掑綊鏋勫缓瀹冧滑鐨勫瓙鏍�
- List<ProductTreeDto> children = new ArrayList<>();
- for (Product child : childProducts) {
- ProductTreeDto childNode = convertToTreeDto(child);
- childNode.setChildren(buildChildrenNodes(child.getId()));
- children.add(childNode);
- }
-
- return children;
- }
-
+
// 灏� Product 杞崲涓� ProductTreeDto
private ProductTreeDto convertToTreeDto(Product product) {
ProductTreeDto dto = new ProductTreeDto();
--
Gitblit v1.9.3