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 |   79 +++++++++++++++++++++++++--------------
 1 files changed, 51 insertions(+), 28 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 b93e14a..946f610 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
@@ -1,6 +1,8 @@
 package com.ruoyi.basic.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.basic.dto.ProductDto;
 import com.ruoyi.basic.dto.ProductTreeDto;
@@ -30,48 +32,69 @@
 
     @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;
     }
 
-
-
-    // 閫掑綊鏋勫缓瀛愯妭鐐�
-    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);
+    /**
+     * 閫掑綊鏋勫缓鑺傜偣鍙婂叾瀛愯妭鐐�
+     * @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 children;
+        return node;
     }
 
+    @Override
+    public IPage<ProductModel> listPageProductModel(Page<ProductModel> page, ProductModel productModel) {
+        return productModelMapper.listPageProductModel(page, productModel);
+    }
+
+
+    
     // 灏� Product 杞崲涓� ProductTreeDto
     private ProductTreeDto convertToTreeDto(Product product) {
         ProductTreeDto dto = new ProductTreeDto();

--
Gitblit v1.9.3