/**
* 根据租户id获取部门树状结构
* @param tenantId
* @return
*/
@GetMapping("getDeptTreeList")
public R getDeptTreeList(String tenantId){
List<Dept>list=deptUserUtil.getDeptList(tenantId);
System.out.println("根据租户id获取部门树状结构list================"+list);
//实体类转map
List<Map<String,Object>> listMap=EntityConvertMap(list);
//把带有父子机构的数据变成treelist形式
List<Map<String,Object>>treeList=getTreeList("id","parentId","children", listMap);
System.out.println("根据租户id获取部门树状结构treeList================"+treeList);
return R.data(treeList);
}
//list实体类转换成map
public static List<Map<String,Object>> EntityConvertMap(List<Dept> list){
List<Map<String,Object>> l = new LinkedList<>();
try {
for(Dept t : list){
Map<String,Object> map = new HashMap<>();
Method[] methods = t.getClass().getMethods();
for (Method method : methods) {
if (method.getName().startsWith("get")) {
String name = method.getName().substring(3);
name = name.substring(0, 1).toLowerCase() + name.substring(1);
Object value = method.invoke(t);
map.put(name,value);
}
}
l.add(map);
}
} catch (Exception e) {
e.printStackTrace();
}
return l;
} //把带有父子机构的数据变成treelist形式
public static List<Map<String, Object>> getTreeList(String id, String pid, String children, List<Map<String, Object>>list) { //给list的每一项加一个子项
for(int i=0;i<list.size();i++) {
list.get(i).put(children, new ArrayList<Map<String, Object>>());
list.get(i).put("id",list.get(i).get("id").toString());
list.get(i).put("parentId",list.get(i).get("parentId").toString());
//managerUser
list.get(i).put("managerUser",list.get(i).get("managerUser").toString());
}
System.out.println("把带有父子机构的数据变成treelist形式list==============="+list);
List<Map<String, Object>>treelist=new ArrayList<Map<String, Object>>();
for(Map<String, Object> outmap:list) {
//System.out.println("把带有父子机构的数据变成outmap==============="+outmap);
for(Map<String, Object> inmap:list) {
String outid=outmap.get(id).toString();
String inpid=inmap.get(pid).toString();
if(outid.equals(inpid)) {
List<Map<String, Object>>maplist=(ArrayList) outmap.get(children);
maplist.add(inmap);
}
}
String prid=outmap.get(pid).toString();
if(!Func.isEmpty(prid)&& prid.equals("0")) {
treelist.add(outmap);
}
}
return treelist;
}

根据租户id获取部门树状结构有父子结构的数据list的更多相关文章

  1. hdu5057 分块处理,当数值大于数据范围时树状数组 真是巧 将大数据分为小数据来处理

    这题说的给了100000个数有100000次操作 询问 L和R 区间内 在D位上为P的个数,用树状数组存 要开[10][10][100000]的int 开不了但是能开 这么大的unsign short ...

  2. Java递归获取部门树 返回jstree数据

    @GetMapping("/getDept")@ResponseBodypublic Tree<DeptDO> getDept(String deptId){ Tree ...

  3. FZU 2029 买票问题 树状数组+STL

    题目链接:买票问题 思路:优先队列维护忍耐度最低的人在队首,leave操作ok. vis数组记录从1到n的编号的人们是不是在队列中,top维护队首的人的编号.pop操作搞定. 然后,check操作就是 ...

  4. Luogu 2680 NOIP 2015 运输计划(树链剖分,LCA,树状数组,树的重心,二分,差分)

    Luogu 2680 NOIP 2015 运输计划(树链剖分,LCA,树状数组,树的重心,二分,差分) Description L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星球之 ...

  5. poj3067Japan——树状数组查找逆序对

    题目:http://poj.org/problem?id=3067 利用树状数组查找逆序对. 代码如下: #include<iostream> #include<cstdio> ...

  6. bzoj1878 [SDOI2009]HH的项链——树状数组

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1878 离线树状数组,巧妙的思路呢: 给每种项链记录一个最后出现的位置lst,根据项链最后出现 ...

  7. POJ2352Stars【树状数组】

    Stars Description Astronomers often examine star maps where stars are represented by points on a pla ...

  8. vue 树状图数据的循环 递归循环

    在main.js中注册一个子组件 在父组件中引用 树状图的数据格式 绑定一个数据传入子组件,子组件props接收数据 子组件中循环调用组件,就实现了递归循环

  9. linux下怎么用tree命令以树形结构显示文件目录结构?

    tree命令以树状图列出文件目录结构.不过某些Linux上(Centos 6.4)没有tree命令,本文将介绍安装方法. 常用参数: ? 1 2 3 4 5 6 tree -d 只显示目录.   tr ...

随机推荐

  1. C++的编程指南

    序言:每天更新C++的内容 一.文件结构 每个C++/C程序通常分为两个文件.一个文件用于保存程序的声明(declaration),称为头文件.另一个文件用于保存程序的实现(implementatio ...

  2. python批量definition query

    import arcpy mxd = arcpy.mapping.MapDocument("current") for lyr in arcpy.mapping.ListLayer ...

  3. 老猿学5G:融合计费场景的离线计费会话的Nchf_OfflineOnlyCharging_Release释放操作

    ☞ ░ 前往老猿Python博文目录 ░ 一.Nchf_OfflineOnlyCharging_Release消息交互流程 Nchf_OfflineOnlyCharging_Release是CHF提供 ...

  4. Python中repr(变量)和str(变量)的返回值有什么区别和联系

    Python中repr(变量)和str(变量)都返回一个描述对象的字符串,二者有关联又有不同.由于Python3.0后都是新式类,我们的分析也是基于新式类进行的.基于object派生的新式类中二者之间 ...

  5. windows server2012无法安装.Net FrameWork 3.5功能

    问题描述: 现象1:安装完服务器系统,在安装SQL Server 2012,安装到中间提示安装SQL Server 2012过程中出现"启用windows功能NetFx3时出错"以 ...

  6. Springcloud之gateway配置及swagger集成

    前言 关于引入gateway的好处我网上找了下: 性能:API高可用,负载均衡,容错机制. 安全:权限身份认证.脱敏,流量清洗,后端签名(保证全链路可信调用),黑名单(非法调用的限制). 日志:日志记 ...

  7. 题解-ARC058D Iroha Loves Strings

    题面 ARC058D Iroha Loves Strings 给定 \(n\) 个字符串,从中选出若干个按给出顺序连接起来,总长等于 \(m\),求字典序最小的,保证有解. 数据范围:\(1\le n ...

  8. Codeforces Edu Round 53 A-D

    A. Diverse Substring 找普遍性(特殊解即可). 最简单的便是存在一个区间\([i, i + 1] (1 <= i < n)\),且$str[i] $ $ != str[ ...

  9. VMware虚拟机下Centos8 设置静态IP地址

    缘起 我们在平时学习Redis.Nginx等分布式微服务的组件的时候,无法避免的需要用到Linux操作系统,而Linux操作系统的主机来源差不多就三种情况: 真实物理机 阿里云等云服务器 利用虚拟机 ...

  10. EditPlus各个版本的注册码,亲测可用

    原文链接:https://www.cnblogs.com/shihaiming/p/6422441.html EditPlus4注册码 注册名:host1991    序列号:14F50-CD5C8- ...