From 8da7e6a32acfa08c8d8da24145bcfccfd44a59c6 Mon Sep 17 00:00:00 2001 From: zhuangtianxiang <2913129173@qq.com> Date: Mon, 9 Dec 2024 16:35:10 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=88=A0=E9=99=A4=E6=9C=AA?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=9A=84=E6=A0=91=E6=93=8D=E4=BD=9C=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除 DeptTreeUtil.java 文件,该类未被使用 - 移除 TreeUtil.java 文件,该类也未被使用 --- .../edu/gateway/framework/DeptTreeUtil.java | 69 ---------- .../zsc/edu/gateway/framework/TreeUtil.java | 130 ------------------ 2 files changed, 199 deletions(-) delete mode 100644 src/main/java/com/zsc/edu/gateway/framework/DeptTreeUtil.java delete mode 100644 src/main/java/com/zsc/edu/gateway/framework/TreeUtil.java diff --git a/src/main/java/com/zsc/edu/gateway/framework/DeptTreeUtil.java b/src/main/java/com/zsc/edu/gateway/framework/DeptTreeUtil.java deleted file mode 100644 index 544aaef..0000000 --- a/src/main/java/com/zsc/edu/gateway/framework/DeptTreeUtil.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.zsc.edu.gateway.framework; - -import com.zsc.edu.gateway.modules.system.entity.Dept; -import com.zsc.edu.gateway.modules.system.entity.User; -import com.zsc.edu.gateway.modules.system.vo.DeptTree; -import com.zsc.edu.gateway.modules.system.vo.UserTree; -import org.springframework.stereotype.Component; - -import java.util.*; -import java.util.function.BiConsumer; -import java.util.function.BiFunction; -import java.util.function.Predicate; -import java.util.stream.Collectors; - -/** - * @author zhuang - */ -@Component -public class DeptTreeUtil { - - public static List makeTree(List list, Predicate rootCheck, BiFunction parentCheck, BiConsumer> setSubChildren) { - return list.stream() - .filter(rootCheck) - .peek(x -> setSubChildren.accept(x, makeChildren(x, list, parentCheck, setSubChildren))) - .collect(Collectors.toList()); - } - - private static List makeChildren(E parent, List allData, BiFunction parentCheck, BiConsumer> setSubChildren) { - return allData.stream() - .filter(x -> parentCheck.apply(parent, x)) - .peek(x -> setSubChildren.accept(x, makeChildren(x, allData, parentCheck, setSubChildren))) - .collect(Collectors.toList()); - } - - public static List buildDeptTree(List depots, Map> userMap) { - List deptTrees = depots.stream() - .map(DeptTreeUtil::convertToDeptTree) - .collect(Collectors.toList()); - - deptTrees.forEach(deptTree -> { - List users = userMap.getOrDefault(deptTree.getId(), Collections.emptyList()); - deptTree.setMembers(users.stream() - .map(DeptTreeUtil::convertToUserTree) - .collect(Collectors.toList())); - }); - - return makeTree( - deptTrees, - deptTree -> deptTree.getPid() == null || deptTree.getPid() == 0L, - (parent, child) -> parent.getId().equals(child.getPid()), - DeptTree::setChildren - ); - } - - private static DeptTree convertToDeptTree(Dept dept) { - DeptTree deptTree = new DeptTree(); - deptTree.setId(dept.getId()); - deptTree.setPid(dept.getPid()); - deptTree.setName(dept.getName()); - return deptTree; - } - - private static UserTree convertToUserTree(User user) { - UserTree userTree = new UserTree(); - userTree.setId(user.getId()); - userTree.setName(user.getName()); - return userTree; - } -} diff --git a/src/main/java/com/zsc/edu/gateway/framework/TreeUtil.java b/src/main/java/com/zsc/edu/gateway/framework/TreeUtil.java deleted file mode 100644 index 2fb31cb..0000000 --- a/src/main/java/com/zsc/edu/gateway/framework/TreeUtil.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.zsc.edu.gateway.framework; - -import java.util.*; -import java.util.function.*; -import java.util.stream.Collectors; -import java.util.function.BiConsumer; -import java.util.function.BiFunction; -import java.util.function.Consumer; -import java.util.function.Function; - -/** - * @Description: 树操作方法工具类 - * @Copyright: Copyright (c) 赵侠客 - * @Date: 2024-07-22 10:42 - * @Version: 1.0 - */ -public class TreeUtil { - - /** - * 将list合成树 - * - * @param list 需要合成树的List - * @param rootCheck 判断E中为根节点的条件,如:x->x.getPId()==-1L , x->x.getParentId()==null,x->x.getParentMenuId()==0 - * @param parentCheck 判断E中为父节点条件,如:(x,y)->x.getId().equals(y.getPId()) - * @param setSubChildren E中设置下级数据方法,如:Menu::setSubMenus - * @param 泛型实体对象 - * @return 合成好的树 - */ - public static List makeTree(List list, Predicate rootCheck, BiFunction parentCheck, BiConsumer> setSubChildren) { - return list.stream().filter(rootCheck).peek(x -> setSubChildren.accept(x, makeChildren(x, list, parentCheck, setSubChildren))).collect(Collectors.toList()); - } - - /** - * 将树打平成tree - * - * @param tree 需要打平的树 - * @param getSubChildren 设置下级数据方法,如:Menu::getSubMenus,x->x.setSubMenus(null) - * @param setSubChildren 将下级数据置空方法,如:x->x.setSubMenus(null) - * @param 泛型实体对象 - * @return 打平后的数据 - */ - public static List flat(List tree, Function> getSubChildren, Consumer setSubChildren) { - List res = new ArrayList<>(); - forPostOrder(tree, item -> { - setSubChildren.accept(item); - res.add(item); - }, getSubChildren); - return res; - } - - /** - * 前序遍历 - * - * @param tree 需要遍历的树 - * @param consumer 遍历后对单个元素的处理方法,如:x-> System.out.println(x)、 System.out::println打印元素 - * @param setSubChildren 设置下级数据方法,如:Menu::getSubMenus,x->x.setSubMenus(null) - * @param 泛型实体对象 - */ - public static void forPreOrder(List tree, Consumer consumer, Function> setSubChildren) { - for (E l : tree) { - consumer.accept(l); - List es = setSubChildren.apply(l); - if (es != null && es.size() > 0) { - forPreOrder(es, consumer, setSubChildren); - } - } - } - - /** - * 层序遍历 - * - * @param tree 需要遍历的树 - * @param consumer 遍历后对单个元素的处理方法,如:x-> System.out.println(x)、 System.out::println打印元素 - * @param setSubChildren 设置下级数据方法,如:Menu::getSubMenus,x->x.setSubMenus(null) - * @param 泛型实体对象 - */ - public static void forLevelOrder(List tree, Consumer consumer, Function> setSubChildren) { - Queue queue = new LinkedList<>(tree); - while (!queue.isEmpty()) { - E item = queue.poll(); - consumer.accept(item); - List childList = setSubChildren.apply(item); - if (childList != null && !childList.isEmpty()) { - queue.addAll(childList); - } - } - } - - /** - * 后序遍历 - * - * @param tree 需要遍历的树 - * @param consumer 遍历后对单个元素的处理方法,如:x-> System.out.println(x)、 System.out::println打印元素 - * @param setSubChildren 设置下级数据方法,如:Menu::getSubMenus,x->x.setSubMenus(null) - * @param 泛型实体对象 - */ - public static void forPostOrder(List tree, Consumer consumer, Function> setSubChildren) { - for (E item : tree) { - List childList = setSubChildren.apply(item); - if (childList != null && !childList.isEmpty()) { - forPostOrder(childList, consumer, setSubChildren); - } - consumer.accept(item); - } - } - - /** - * 对树所有子节点按comparator排序 - * - * @param tree 需要排序的树 - * @param comparator 排序规则Comparator,如:Comparator.comparing(MenuVo::getRank)按Rank正序 ,(x,y)->y.getRank().compareTo(x.getRank()),按Rank倒序 - * @param getChildren 获取下级数据方法,如:MenuVo::getSubMenus - * @param 泛型实体对象 - * @return 排序好的树 - */ - public static List sort(List tree, Comparator comparator, Function> getChildren) { - for (E item : tree) { - List childList = getChildren.apply(item); - if (childList != null && !childList.isEmpty()) { - sort(childList, comparator, getChildren); - } - } - tree.sort(comparator); - return tree; - } - - private static List makeChildren(E parent, List allData, BiFunction parentCheck, BiConsumer> children) { - return allData.stream().filter(x -> parentCheck.apply(parent, x)).peek(x -> children.accept(x, makeChildren(x, allData, parentCheck, children))).collect(Collectors.toList()); - } -}