zoukankan      html  css  js  c++  java
  • 根据租户id获取部门树状结构有父子结构的数据list

    /**
         * 根据租户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;
        }
  • 相关阅读:
    越大优先级越高,优先级越高被OS选中的可能性就越大
    锁标记如果过多,就会出现线程等待其他线程释放锁标记
    使用带缓冲区的输入输出流的速度会大幅提高
    Bufferread有readline()使得字符输入更加方便
    java的开发主要以http为基础
    UDP也需要现有Server端,然后再有Client端
    端口是一种抽象的软件结构,与协议相关
    具有全球唯一性,相对于internet,IP为逻辑地址
    判断是否一个属性或对象可序列化
    把对象通过流序列化到某一个持久性介质称为对象的可持久化
  • 原文地址:https://www.cnblogs.com/xianz666/p/13553451.html
Copyright © 2011-2022 走看看