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 |   98 ++++++++++++++++++++++++++++---------------------
 1 files changed, 56 insertions(+), 42 deletions(-)

diff --git a/src/main/java/org/springblade/common/utils/NodeTreeUtil.java b/src/main/java/org/springblade/common/utils/NodeTreeUtil.java
index c867cf4..5e40a9c 100644
--- a/src/main/java/org/springblade/common/utils/NodeTreeUtil.java
+++ b/src/main/java/org/springblade/common/utils/NodeTreeUtil.java
@@ -4,12 +4,10 @@
 import org.springblade.common.node.TreeLongNode;
 import org.springblade.common.node.TreeStringNode;
 import org.springblade.core.tool.node.TreeNode;
-import org.springblade.modules.doorplateAddress.vo.DoorplateAddressVOTree;
-import org.springblade.modules.house.vo.HouseTree;
+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 工具类
@@ -81,43 +79,6 @@
 		return tree;
 	}
 
-	/**
-	 * 树转换
-	 * @param treeMap
-	 * @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);
-				}
-			});
-		}
-		return tree;
-	}
-
-	/**
-	 * 树转换
-	 * @param treeMap
-	 * @return
-	 */
-	public static List<HouseTree> getHouseTree(Map<String, HouseTree> treeMap){
-		List<HouseTree> 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);
-				}
-			});
-		}
-		return tree;
-	}
 
 
 	/**
@@ -144,4 +105,57 @@
 		}
 		return parentList;
 	}
+
+	/**
+	 * map 转 tree 组织机构(父子id不会重复的情况,数据查询来自同一个表)
+	 *
+	 * 把部门用户树遍历一遍,每个值,查询他的parentId在不在用户部门树中。如果存在,就把这个加在下级
+	 * 最后最上级的parentId肯定不在用户部门树中,把最上级的加到新树里。返回新树
+	 *
+	 * @param treeMap
+	 * @return
+	 */
+	public  static List<DeptUserTreeNode> getDeptAndUserNodeTree(Map<String, DeptUserTreeNode> treeMap){
+		List<DeptUserTreeNode> tree = new ArrayList<>();
+		if (treeMap.size() > 1) {
+			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