• 根据租户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;
        }
  • 相关阅读:
    Spring框架之什么是IOC的功能?
    Spring框架的特点
    spring框架的概述与入门
    struts框架总结
    struts框架之总结OGNL表达式的特殊的符号
    struts框架值栈问题七之EL表达式也会获取到值栈中的数据
    struts框架问题六之从值栈中获取值
    struts框架问题五之向值栈中保存数据
    struts框架问题四之获取到值栈的对象
    java获取屏幕密度
  • 原文地址:https://www.cnblogs.com/xianz666/p/13553451.html
Copyright © 2020-2023  润新知