数据库结构
树形结构封装工具类
package com.sunson.platform.util;
import com.sunson.platform.http.response.OrganizationRes;
import java.util.*;
import java.util.Map;
/**
* @ClassName MenuTree
* @Deacription TODO 树形结构封装工具类(递归)
* @Author LiuDaGang
* @Date 2022/5/25 10:59
* @Version 1.0
**/
public class MenuTree {
private static Map mapArray = new LinkedHashMap();
//
private List<OrganizationRes> menuCommon;
private List list = new ArrayList();
/**
* Author: LiuDaGang
* Description: TODO 以父级菜单标志为1进行封装 ,ParensID为1时代表为顶级菜单,向下查找
* TODO 适用于列出所有部门
* DateTime: 2022/5/25 16:01
*/
public List menuList(List<OrganizationRes> menu){
this.menuCommon = menu;
for (OrganizationRes x : menu) {
Map mapArr = new LinkedHashMap();
if(x.getParensID().equals("1")){
mapArr.put("id", x.getOrganizationID());
mapArr.put("title", x.getOrganizationName());
mapArr.put("spread",true);
mapArr.put("parentId", x.getParensID());
mapArr.put("children", menuChild(x.getOrganizationID()));
list.add(mapArr);
}
}
return list;
}
/**
* Author: LiuDaGang
* Description: TODO 以当前用户所在部门为父级菜单进行封装。
* * TODO 适用于列出当前用户所在部门下的部门
* DateTime: 2022/5/25 16:03
*/
public List menuListByCurrent(List<OrganizationRes> menu,String organizationID ){
this.menuCommon = menu;
for (OrganizationRes x : menu) {
Map mapArr = new LinkedHashMap();
if(x.getOrganizationID().equals(organizationID)){
mapArr.put("id", x.getOrganizationID());
mapArr.put("title", x.getOrganizationName());
mapArr.put("spread",true);
mapArr.put("parentId", x.getParensID());
mapArr.put("children", menuChild(x.getOrganizationID()));
list.add(mapArr);
}
}
return list;
}
private List menuChild(String id) {
List lists = new ArrayList();
for (OrganizationRes x : menuCommon) {
Map childArray = new LinkedHashMap();
if (x.getParensID().equals(id)) {
childArray.put("id", x.getOrganizationID());
childArray.put("title", x.getOrganizationName());
childArray.put("spread",true);
childArray.put("parentId", x.getParensID());
childArray.put("children", menuChild(x.getOrganizationID()));
lists.add(childArray);
}
}
return lists;
}
}
调用方法
查询所有的信息用List封装后传参调用