From 726a0dae13c9166ba31e4d504440334c8db26fd5 Mon Sep 17 00:00:00 2001
From: futian.liu <liufutianyoo@163.com>
Date: 星期三, 13 十二月 2023 13:55:04 +0800
Subject: [PATCH] 修改分类树
---
consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java | 67 +++++++++++++++------------------
1 files changed, 31 insertions(+), 36 deletions(-)
diff --git a/consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java
index 9811d1b..0290001 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java
@@ -1,10 +1,8 @@
package com.consum.base.service.impl;
import java.util.ArrayList;
-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;
@@ -20,9 +18,6 @@
import com.walker.infrastructure.utils.DateUtils;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
-
-import cn.hutool.core.lang.tree.TreeNode;
-import cn.hutool.core.lang.tree.TreeUtil;
/**
* @Description 鐗╁搧鍒嗙被
@@ -182,41 +177,41 @@
BaseCategory categoryParam = new BaseCategory();
categoryParam.setStates(1);
// 鏌ュ嚭鎵�鏈夊垎绫�
- List<BaseCategory> all = select(categoryParam);
- // 缁勮鎴愮埗瀛愭爲褰㈢粨鏋�
- // 1绾у垎绫�
- List<ProjectTreeResult> menus = all.stream().filter(entity -> entity.getLevels() == 1).map(entity -> {
- ProjectTreeResult projectTreeResult = new ProjectTreeResult(entity);
- if (getChildren(projectTreeResult, all).isEmpty()) {
- projectTreeResult.setChildren(null);
- } else {
- projectTreeResult.setChildren(getChildren(projectTreeResult, all));
- }
- return projectTreeResult;
- }).sorted(Comparator.comparingInt(menu -> (menu.getSort() == null ? 0 : menu.getSort())))
- .collect(Collectors.toList());
- return menus;
+ List<BaseCategory> all = this.select(categoryParam);
+ // 缁勮鎴愮埗瀛愭爲褰㈢粨鏋�
+ List<ProjectTreeResult> rootNodes = new ArrayList<>();
+ for (BaseCategory category : all) {
+ ProjectTreeResult node = new ProjectTreeResult(category);
+ Long parentId = category.getFatherCategoryId();
+ if (parentId == 0) {
+ // 娌℃湁鐖惰妭鐐癸紝灏嗗叾浣滀负鏍硅妭鐐�
+ rootNodes.add(node);
+ } else {
+ // 鏈夌埗鑺傜偣锛屽皢鍏舵坊鍔犲埌鐖惰妭鐐圭殑瀛愯妭鐐瑰垪琛ㄤ腑
+ addToParent(parentId, node, rootNodes);
+ }
+ }
+ return rootNodes;
}
- /**
- * 閫掑綊鏌ユ壘鎵�鏈夎彍鍗曠殑瀛愯彍鍗�
- */
- 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);
- // 閫氳繃閫掑綊鎵惧埌瀛愬垎绫�
- if (getChildren(projectTreeResult, all).isEmpty()) {
- projectTreeResult.setChildren(null);
- } else {
- projectTreeResult.setChildren(getChildren(projectTreeResult, all));
+ private void addToParent(Long parentId, ProjectTreeResult node, List<ProjectTreeResult> nodes) {
+ for (ProjectTreeResult parent : nodes) {
+ if (parent.getId().equals(parentId)) {
+ // 鎵惧埌浜嗙埗鑺傜偣锛屽皢鍏舵坊鍔犲埌瀛愯妭鐐瑰垪琛ㄤ腑
+ if (parent.getChildren() == null) {
+ parent.setChildren(new ArrayList<>());
}
- return projectTreeResult;
- }).sorted(Comparator.comparingInt(menu -> (menu.getSort() == null ? 0 : menu.getSort())))
- .collect(Collectors.toList());
- return children;
+ parent.getChildren().add(node);
+ break;
+ } else {
+ // 缁х画鏌ユ壘鐖惰妭鐐圭殑瀛愯妭鐐�
+ List<ProjectTreeResult> children = parent.getChildren();
+ if (children != null) {
+ addToParent(parentId, node, children);
+ }
+ }
+ }
}
/**
--
Gitblit v1.9.1