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