From 7d5f16af28bae6b5917bf3e0554ae20ffc2df094 Mon Sep 17 00:00:00 2001 From: caozhen <18736171426@139.com> Date: Fri, 15 Sep 2023 11:58:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=85=E9=83=A8=E5=B7=A5=E4=BD=9C=E7=BB=84?= =?UTF-8?q?=E6=A0=91=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LawsWorkingGroupController.java | 12 +++-- .../sys/service/ILawsWorkingGroupService.java | 7 +-- .../impl/LawsWorkingGroupServiceImpl.java | 52 +++++++++++++++---- 3 files changed, 51 insertions(+), 20 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/sys/controller/LawsWorkingGroupController.java b/laws-modules/src/main/java/com/jero/modules/sys/controller/LawsWorkingGroupController.java index b7828430..e1bc484c 100644 --- a/laws-modules/src/main/java/com/jero/modules/sys/controller/LawsWorkingGroupController.java +++ b/laws-modules/src/main/java/com/jero/modules/sys/controller/LawsWorkingGroupController.java @@ -43,10 +43,14 @@ public class LawsWorkingGroupController extends JeroController> queryList(LawsWorkingGroup lawsWorkingGroup, HttpServletRequest req) { - lawsWorkingGroup.setDelFlag("0"); - List list = lawsWorkingGroupService.queryList(lawsWorkingGroup, req); - List toTree = lawsWorkingGroupService.convertToTree(list); + public Result> queryList(LawsWorkingGroup lawsWorkingGroup) { + List list = lawsWorkingGroupService.queryList(); + List toTree = new ArrayList<>(); + if (StringUtils.isBlank(lawsWorkingGroup.getName())){ + toTree = lawsWorkingGroupService.convertToTree(list); + }else { + toTree = lawsWorkingGroupService.convertToTree(list, lawsWorkingGroup.getName()); + } return Result.OK(toTree); } diff --git a/laws-modules/src/main/java/com/jero/modules/sys/service/ILawsWorkingGroupService.java b/laws-modules/src/main/java/com/jero/modules/sys/service/ILawsWorkingGroupService.java index a1b954ba..bfe76b4b 100644 --- a/laws-modules/src/main/java/com/jero/modules/sys/service/ILawsWorkingGroupService.java +++ b/laws-modules/src/main/java/com/jero/modules/sys/service/ILawsWorkingGroupService.java @@ -16,12 +16,8 @@ public interface ILawsWorkingGroupService extends IService { /** * 列表查询 - * - * @param lawsWorkingGroup - * @param req - * @return */ - List queryList(LawsWorkingGroup lawsWorkingGroup, HttpServletRequest req); + List queryList(); /** * 保存 @@ -72,6 +68,7 @@ public interface ILawsWorkingGroupService extends IService { * 对列表数据转树结构列表(pid为空当作开始节点) */ List convertToTree(List list); + List convertToTree(List list, String name); /** * 对列表数据转树结构列表(指定开始节点) diff --git a/laws-modules/src/main/java/com/jero/modules/sys/service/impl/LawsWorkingGroupServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/sys/service/impl/LawsWorkingGroupServiceImpl.java index c6222b0e..dbec72af 100644 --- a/laws-modules/src/main/java/com/jero/modules/sys/service/impl/LawsWorkingGroupServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/sys/service/impl/LawsWorkingGroupServiceImpl.java @@ -9,14 +9,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.jero.common.exception.JeroBootException; -import java.util.ArrayList; -import java.util.List; -import java.util.Date; +import java.util.*; import java.util.stream.Collectors; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.common.system.query.QueryGenerator; -import javax.servlet.http.HttpServletRequest; /** @@ -31,14 +27,12 @@ public class LawsWorkingGroupServiceImpl extends ServiceImpl queryList(LawsWorkingGroup lawsWorkingGroup, HttpServletRequest req) { - return list(QueryGenerator.initQueryWrapper(lawsWorkingGroup, req.getParameterMap())); + public List queryList() { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(LawsWorkingGroup::getDelFlag, "0"); + return list(wrapper); } /** @@ -112,6 +106,42 @@ public class LawsWorkingGroupServiceImpl extends ServiceImpl convertToTree(List list, String name) { + List matchedNodes = list.stream().filter(node -> node.getName().contains(name)).collect(Collectors.toList()); + if (matchedNodes.isEmpty()) { + return Collections.singletonList(list.get(0)); + } + Set nodesSet = new HashSet<>(); + for (LawsWorkingGroup matchedNode : matchedNodes) { + nodesSet.addAll(findPathToRoot(list, matchedNode)); + nodesSet.addAll(findAllChildren(list, matchedNode)); + } + List LawsWorkingGroups = new ArrayList<>(nodesSet); + return this.convertToTree(LawsWorkingGroups); + } + private Set findPathToRoot(List list, LawsWorkingGroup node) { + Set pathNodes = new HashSet<>(); + LawsWorkingGroup currentHolder = node; + while (currentHolder != null) { + pathNodes.add(currentHolder); + LawsWorkingGroup finalCurrentHolder = currentHolder; + currentHolder = list.stream() + .filter(n -> n.getId().equals(finalCurrentHolder.getPid())) + .findFirst().orElse(null); + } + return pathNodes; + } + private Set findAllChildren(List list, LawsWorkingGroup node) { + Set childrenSet = new HashSet<>(); + List directChildren = list.stream().filter(n -> n.getPid().equals(node.getId())).collect(Collectors.toList()); + for (LawsWorkingGroup child : directChildren) { + childrenSet.add(child); + childrenSet.addAll(findAllChildren(list, child)); + } + return childrenSet; + } + @Override public List convertToTree(List list) { if (list == null || list.size() == 0){