From 764d883b5ea3bdc06abbec548b6df0511e567978 Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Tue, 03 Sep 2024 09:46:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/binlog' into binlog
---
src/main/java/org/springblade/common/utils/NodeTreeUtil.java | 91 +++++++++++++++++++++++++++++++++------------
1 files changed, 66 insertions(+), 25 deletions(-)
diff --git a/src/main/java/org/springblade/common/utils/NodeTreeUtil.java b/src/main/java/org/springblade/common/utils/NodeTreeUtil.java
index 7568fd1..5e40a9c 100644
--- a/src/main/java/org/springblade/common/utils/NodeTreeUtil.java
+++ b/src/main/java/org/springblade/common/utils/NodeTreeUtil.java
@@ -3,12 +3,11 @@
import org.springblade.common.node.TreeIntegerNode;
import org.springblade.common.node.TreeLongNode;
import org.springblade.common.node.TreeStringNode;
-import org.springblade.modules.doorplateAddress.vo.DoorplateAddressVOTree;
-import org.springblade.modules.house.vo.HouseTree;
+import org.springblade.core.tool.node.TreeNode;
+import org.springblade.modules.system.node.DeptUserTreeNode;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* node tree 工具类
@@ -80,41 +79,83 @@
return tree;
}
+
+
/**
- * 树转换
- * @param treeMap
+ * list 转 tree 组织机构
+ * @param parentList
+ * @param childrenList
* @return
*/
- public static List<DoorplateAddressVOTree> getAddressNodeTree(Map<String, DoorplateAddressVOTree> treeMap){
- List<DoorplateAddressVOTree> tree = new ArrayList<>();
- if (treeMap.size() > 1) {
- treeMap.forEach((code, treeNode) -> {
- if (treeMap.containsKey(treeNode.getParentCode())) {
- treeMap.get(treeNode.getParentCode()).getChildren().add(treeNode);
- } else {
- tree.add(treeNode);
+ public static List<TreeNode> getNodeTree(List<TreeNode> parentList, List<TreeNode> childrenList){
+ // 遍历
+ for (TreeNode parentNode : parentList) {
+ // 判断是否有孩子
+ if (parentNode.getHasChildren()) {
+ List<TreeNode> tree = new ArrayList<>();
+ // 遍历子集合
+ for (TreeNode childrenNode : childrenList) {
+ if (parentNode.getId().equals(childrenNode.getParentId())) {
+ tree.add(childrenNode);
+ }
}
- });
+ // 设置孩子节点
+ parentNode.setChildren(tree);
+ }
}
- return tree;
+ return parentList;
}
/**
- * 树转换
+ * map 转 tree 组织机构(父子id不会重复的情况,数据查询来自同一个表)
+ *
+ * 把部门用户树遍历一遍,每个值,查询他的parentId在不在用户部门树中。如果存在,就把这个加在下级
+ * 最后最上级的parentId肯定不在用户部门树中,把最上级的加到新树里。返回新树
+ *
* @param treeMap
* @return
*/
- public static List<HouseTree> getHouseTree(Map<String, HouseTree> treeMap){
- List<HouseTree> tree = new ArrayList<>();
+ public static List<DeptUserTreeNode> getDeptAndUserNodeTree(Map<String, DeptUserTreeNode> treeMap){
+ List<DeptUserTreeNode> tree = new ArrayList<>();
if (treeMap.size() > 1) {
- treeMap.forEach((code, treeNode) -> {
- if (treeMap.containsKey(treeNode.getParentCode())) {
- treeMap.get(treeNode.getParentCode()).getChildren().add(treeNode);
- } else {
- tree.add(treeNode);
+ treeMap.forEach((id, treeNode) -> {
+ //是否有下级
+ if (!treeNode.getHasChildren()){
+ // 多个部门拆分
+ List<String> asList = Arrays.asList(treeNode.getParentId().split(","));
+ //有多部门
+ if (asList.size()>1){
+ for (String parentId : asList) {
+ //用户部门树中存在该部门
+ if (treeMap.containsKey(parentId)) {
+
+ //把该对象放在该部门下
+ treeMap.get(parentId).getChildren().add(treeNode);
+ } else {
+ //不存在该部门,在新的树中加入
+ tree.add(treeNode);
+ }
+ }
+ }else {
+
+ if (treeMap.containsKey(treeNode.getParentId())) {
+ DeptUserTreeNode deptUserTreeNode =treeMap.get(treeNode.getParentId());
+ deptUserTreeNode.getChildren().add(treeNode);
+ } else {
+ tree.add(treeNode);
+ }
+ }
+ }else {
+ //有下级
+ if (treeMap.containsKey(treeNode.getParentId())) {
+ treeMap.get(treeNode.getParentId()).getChildren().add(treeNode);
+ } else {
+ tree.add(treeNode);
+ }
}
});
}
+
return tree;
}
}
--
Gitblit v1.9.3