From ad34bc56988514c5e488096b572aefb9a4257676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AF=95=E7=9D=80=E5=A5=94=E8=B7=91=E7=9A=84=E8=8F=9C?= =?UTF-8?q?=E9=B8=9F?= <846933465@qq.com> Date: Wed, 15 May 2024 00:24:15 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E9=97=A8=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E7=BB=84=E8=A3=85=E6=A0=91=E5=9E=8B=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=201.=20=E4=BD=BF=E7=94=A8Set=E9=9B=86?= =?UTF-8?q?=E5=90=88=E4=BB=A3=E6=9B=BFList=E5=88=A4=E6=96=AD=E5=85=83?= =?UTF-8?q?=E7=B4=A0=E6=98=AF=E5=90=A6=E5=AD=98=E5=9C=A8=202.=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9recursionFn=E4=B8=AD=E9=80=9A=E8=BF=87map=E9=9B=86?= =?UTF-8?q?=E5=90=88=E7=9A=84=E5=86=85=E5=AE=B9=E5=88=A4=E6=96=AD=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E6=9C=89=E5=AD=90=E5=85=83=E7=B4=A0=E7=9A=84=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 试着奔跑的菜鸟 <846933465@qq.com> --- .../service/impl/SysDeptServiceImpl.java | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java index 67161180..300176db 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java @@ -3,6 +3,7 @@ package com.ruoyi.system.service.impl; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -68,21 +69,20 @@ public class SysDeptServiceImpl implements ISysDeptService * @return 树结构列表 */ @Override - public List buildDeptTree(List depts) - { + public List buildDeptTree(List depts) { List returnList = new ArrayList(); List tempList = depts.stream().map(SysDept::getDeptId).collect(Collectors.toList()); - for (SysDept dept : depts) - { + // 按父级分组 + Map> groupByParentIdDepts = depts.stream().filter(dept -> dept.getParentId() != null) + .collect(Collectors.groupingBy(SysDept::getParentId)); + for (SysDept dept : depts) { // 如果是顶级节点, 遍历该父节点的所有子节点 - if (!tempList.contains(dept.getParentId())) - { - recursionFn(depts, dept); + if (!tempList.contains(dept.getParentId())) { + recursionFn(groupByParentIdDepts, dept); returnList.add(dept); } } - if (returnList.isEmpty()) - { + if (returnList.isEmpty()) { returnList = depts; } return returnList; @@ -296,17 +296,17 @@ public class SysDeptServiceImpl implements ISysDeptService /** * 递归列表 */ - private void recursionFn(List list, SysDept t) - { + private void recursionFn(Map> groupByParentIdDepts, SysDept t) { // 得到子节点列表 - List childList = getChildList(list, t); - t.setChildren(childList); - for (SysDept tChild : childList) - { - if (hasChild(list, tChild)) - { - recursionFn(list, tChild); + List childList = groupByParentIdDepts.get(t.getDeptId()); + if (childList != null) { + t.setChildren(childList); + // 为每个子节点递归找到子节点 + for (SysDept tChild : childList) { + recursionFn(groupByParentIdDepts, tChild); } + } else { + t.setChildren(new ArrayList<>(0)); } }