zoukankan      html  css  js  c++  java
  • 递归获取树状结构子集

    /**
    	 * 根据权限名称查询子项
    	 * @param bean
    	 * @return
    	 */
    	@Override
    	public List<Map<String, Object>> getChildrenListByAuthorityName(AuthorityManagement bean) {
    		log.info("根据权限名称查询子项bean======"+bean);
    		List<Map<String,Object>>treeList=new ArrayList<>();
    		bean.setTenantId(AuthUtil.getTenantId());
    		List<AuthorityManagement> list=list(Condition.getQueryWrapper(bean));
    		if(Func.isNotEmpty(list)){
    			List<AuthorityManagement> returnList=new ArrayList<>();
    			List<AuthorityManagement> toTreeList=getList(list,returnList);
    			if(Func.isNotEmpty(toTreeList)){
    				//将返回的实体类数据list转化成list map类型
    				List<Map<String,Object>>toList=new ArrayList<>();
    				for(AuthorityManagement beanIfo:toTreeList){
    					Map<String,Object>mapIfo=new HashMap<>();
    					mapIfo.put("id",String.valueOf(beanIfo.getId()));
    					mapIfo.put("parentId",beanIfo.getParentId());
    					mapIfo.put("key",String.valueOf(beanIfo.getId()));
    					mapIfo.put("value",String.valueOf(beanIfo.getId()));
    					mapIfo.put("title",beanIfo.getAuthorityName());
    					toList.add(mapIfo);
    				}
    				treeList= TreeListUtil.getChildrenTreeList("id","parentId","children",toList);
    			}
    		}
    		return treeList;
    	}
    
    
    /**
    	 *递归获取树状结构子集
    	 * @param list
    	 * @param returnList
    	 * @return
    	 */
    	public List<AuthorityManagement>getList(List<AuthorityManagement>list,List<AuthorityManagement>returnList){
    		if(Func.isNotEmpty(list)){
    			for(AuthorityManagement bean:list){
    				AuthorityManagement beanInfo=new AuthorityManagement();
    				beanInfo.setParentId(AuthUtil.getTenantId());
    				beanInfo.setParentId(String.valueOf(bean.getId()));
    				List<AuthorityManagement>list1=list(Condition.getQueryWrapper(beanInfo));
    				returnList.add(bean);
    				if(Func.isNotEmpty(list1)){
    					getList(list1,returnList);
    				}
    			}
    
    		}
         return returnList;
    	}
    
    
    /**
    	 *把带有父子机构的数据变成treelist形式 获取子集
    	 * @param id
    	 * @param parentId 父id
    	 * @param children 子项名称
    	 * @param list 传入的list
    	 * @return
    	 */
    	public static List<Map<String, Object>> getChildrenTreeList(String id, String parentId, 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>>());
    		}
    		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(parentId).toString();
    				if(outid.equals(inpid)) {
    					List<Map<String, Object>>maplist=(ArrayList) outmap.get(children);
    					maplist.add(inmap);
    				}
    			}
    			String prid=outmap.get(parentId).toString();
    			if(!Func.isEmpty(prid)&& prid.equals("0")) {
    				treelist.add(outmap);
    			}
    		}
    		return treelist;
    	}
    

      

  • 相关阅读:
    solr8.4.1开发测试环境的简单应用
    spring aop + xmemcached 配置service层缓存策略
    git配置httpd服务-web_dav模式
    notepad++快捷键
    Eclipse默认快捷键说明
    maven&nexus_repository 私库搭建与使用
    CENTOS下搭建git代码仓库 ssh协议
    送给iOS求职者的一份硬核面试指南,你可以不优秀,但是你必须重视!
    2020年中高级iOS大厂面试宝典+答案
    iOS开发者经验总结:在腾讯的九年,我的成长之路和职业思考
  • 原文地址:https://www.cnblogs.com/xianz666/p/14266029.html
Copyright © 2011-2022 走看看