From 0c1dd25eabc4472c007951d528ee7385cc114e32 Mon Sep 17 00:00:00 2001
From: futian.liu <liufutianyoo@163.com>
Date: 星期六, 11 十一月 2023 19:06:23 +0800
Subject: [PATCH] -- 采购单 -- 分类

---
 consum-base/src/main/java/com/consum/base/service/BaseCategoryServiceImpl.java |   62 ++++++++++++++++++++++---------
 1 files changed, 44 insertions(+), 18 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/service/BaseCategoryServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/BaseCategoryServiceImpl.java
index 48d474f..beb28d3 100644
--- a/consum-base/src/main/java/com/consum/base/service/BaseCategoryServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/BaseCategoryServiceImpl.java
@@ -10,13 +10,12 @@
 import com.walker.infrastructure.utils.DateUtils;
 import com.walker.infrastructure.utils.StringUtils;
 import com.walker.jdbc.service.BaseServiceImpl;
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
-
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
 
 /**
  * @Description 鐗╁搧鍒嗙被
@@ -38,7 +37,9 @@
         BeanUtils.copyProperties(param, baseCategory);
         baseCategory.setId(IdUtil.generateId());
         //灞傜骇
-        if (baseCategory.getFatherCategoryId() == 0L) {  //涓�绾у垎绫�
+        if (baseCategory.getFatherCategoryId() == null) {
+            //涓�绾у垎绫�
+            baseCategory.setFatherCategoryId(0L);
             baseCategory.setLevels(Constants.LEVELS_ONE);
         } else {
             //鏍规嵁鐖剁被id鏌ヨ涓婄骇鍒嗙被淇℃伅
@@ -59,11 +60,11 @@
     }
 
     /**
+     * @param categoryName
+     * @param fatherCategoryId
      * @Description 鏍规嵁鍒嗙被鍚嶇О鍜岀埗绫籭d鏌ヨ鍒嗙被
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/23
-     * @param categoryName
-     * @param fatherCategoryId
      */
     public BaseCategory getByCategoryNameAndFatherCategoryId(String categoryName, Long fatherCategoryId) {
         StringBuilder sql = new StringBuilder("SELECT * FROM base_category WHERE 1 = 1 ");
@@ -87,7 +88,11 @@
     public GenericPager<BaseCategory> queryBaseCategoryList(BaseCategoryParam param) {
         StringBuilder sql = new StringBuilder("SELECT * FROM base_category WHERE 1 = 1 ");
         HashMap<String, Object> paramts = new HashMap<>();
-
+        //鍒嗙被鍚嶇О
+        if (param.getFatherCategoryId() != null) {
+            sql.append("and father_category_id =:fatherCategoryId ");
+            paramts.put("fatherCategoryId", param.getFatherCategoryId());
+        }
         //鍒嗙被鍚嶇О
         if (!StringUtils.isEmpty(param.getCategoryName())) {
             sql.append(" and category_name like:category_name ");
@@ -110,7 +115,7 @@
     }
 
     /**
-     * @Description  缂栬緫
+     * @Description 缂栬緫
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/23
      */
@@ -120,6 +125,7 @@
 
     /**
      * 淇敼鐘舵��
+     *
      * @author 鍗㈠簡闃�
      * @date 2023/9/27
      */
@@ -144,6 +150,7 @@
 
     /**
      * 鏍规嵁鑺傜偣id鏌ヨ鑺傜偣璇︽儏
+     *
      * @author 鍗㈠簡闃�
      * @Date 2023/10/23
      */
@@ -161,23 +168,42 @@
         return this.select(QUERY_TREE_ALL, new Object[]{}, new BaseCategory());
     }
 
-    public List<ProjectTreeResult> tree(String categoryName) {
+    public List<ProjectTreeResult> tree() {
         BaseCategory categoryParam = new BaseCategory();
         categoryParam.setStates(1);
-        List<BaseCategory> categories = select(categoryParam);
-        return categories.stream()
-                .filter(category -> Integer.valueOf(1).equals(category.getLevels()))
-                .sorted(Comparator.comparing(BaseCategory::getOrderNumber))
-                .map(ProjectTreeResult::new)
-                .peek(lv1TreeResult -> lv1TreeResult.setChildren(categories.stream().filter(categorie -> lv1TreeResult.getId().equals(categorie.getFatherCategoryId())).sorted(Comparator.comparing(BaseCategory::getOrderNumber)).map(ProjectTreeResult::new).collect(Collectors.toList())))
-                .collect(Collectors.toList());
+        //鏌ュ嚭鎵�鏈夊垎绫�
+        List<BaseCategory> all = select(categoryParam);
+        //缁勮鎴愮埗瀛愭爲褰㈢粨鏋�
+        //1绾у垎绫�
+        List<ProjectTreeResult> menus = all.stream().filter(entity -> entity.getLevels() == 1).map(entity -> {
+            ProjectTreeResult projectTreeResult = new ProjectTreeResult(entity);
+            projectTreeResult.setChildren(getChildren(projectTreeResult, all));
+            return projectTreeResult;
+        }).sorted(Comparator.comparingInt(menu -> (menu.getSort() == null ? 0 : menu.getSort()))).collect(Collectors.toList());
+        return menus;
+
     }
 
     /**
-     * @Description  涓夌骇鍒嗙被鍒楄〃鏌ヨ
+     * 閫掑綊鏌ユ壘鎵�鏈夎彍鍗曠殑瀛愯彍鍗�
+     */
+    private List<ProjectTreeResult> getChildren(ProjectTreeResult root, List<BaseCategory> all) {
+        List<ProjectTreeResult> children = all.stream().filter(entity -> entity.getFatherCategoryId().equals(root.getId())).map(entity -> {
+
+            ProjectTreeResult projectTreeResult = new ProjectTreeResult(entity);
+            //閫氳繃閫掑綊鎵惧埌瀛愬垎绫�
+            projectTreeResult.setChildren(getChildren(projectTreeResult, all));
+            return projectTreeResult;
+        }).sorted(Comparator.comparingInt(menu -> (menu.getSort() == null ? 0 : menu.getSort()))).collect(Collectors.toList());
+        return children;
+    }
+
+
+    /**
+     * @return
+     * @Description 涓夌骇鍒嗙被鍒楄〃鏌ヨ
      * @Author 鍗㈠簡闃�
      * @Date 2023/10/30
-     * @return
      */
     public List<BaseCategory> queryForLv3Tree() {
         StringBuilder sql = new StringBuilder("SELECT * FROM base_category WHERE states = 1 and levels = 3 order by ORDER_NUMBER,CREATE_TIME desc");

--
Gitblit v1.9.1