| | |
| | | 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 工具类 |
| | |
| | | */ |
| | | public static List<TreeStringNode> getStringNodeTree(Map<String, TreeStringNode> treeMap){ |
| | | List<TreeStringNode> tree = new ArrayList<>(); |
| | | if (treeMap.size() > 0) { |
| | | if (treeMap.size()==1){ |
| | | treeMap.forEach((id, treeNode) -> { |
| | | tree.add(treeNode); |
| | | }); |
| | | }else { |
| | | treeMap.forEach((id, treeNode) -> { |
| | | if (treeMap.containsKey(treeNode.getParentId())) { |
| | | treeMap.get(treeNode.getParentId()).getChildren().add(treeNode); |
| | | } else { |
| | | tree.add(treeNode); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | return tree; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * list 转 tree 组织机构 |
| | | * @param parentList |
| | | * @param childrenList |
| | | * @return |
| | | */ |
| | | 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 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 (treeMap.containsKey(treeNode.getParentId())) { |
| | | treeMap.get(treeNode.getParentId()).getChildren().add(treeNode); |
| | | } else { |
| | | tree.add(treeNode); |
| | | } |
| | | }); |
| | | } |
| | | return tree; |
| | | } |
| | | //是否有下级 |
| | | if (!treeNode.getHasChildren()){ |
| | | // 多个部门拆分 |
| | | List<String> asList = Arrays.asList(treeNode.getParentId().split(",")); |
| | | //有多部门 |
| | | if (asList.size()>1){ |
| | | for (String parentId : asList) { |
| | | //用户部门树中存在该部门 |
| | | if (treeMap.containsKey(parentId)) { |
| | | |
| | | /** |
| | | * 树转换 |
| | | * @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; |
| | | } |
| | | //把该对象放在该部门下 |
| | | treeMap.get(parentId).getChildren().add(treeNode); |
| | | } else { |
| | | //不存在该部门,在新的树中加入 |
| | | tree.add(treeNode); |
| | | } |
| | | } |
| | | }else { |
| | | |
| | | /** |
| | | * 树转换 |
| | | * @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); |
| | | 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; |
| | | } |
| | | } |