不确定下钻数的循环(部门下所属部门 多层下钻)

6 篇文章 0 订阅
	//下钻5层部门,无法动态确定   只能处理5层部门
		for (TSDepart tsd : departsList) {
			departsId.add(tsd.getId());
			
			List<TSDepart> tsdChildsList = tsd.getTSDeparts();
			for (TSDepart tsdc : tsdChildsList) {
				departsId.add(tsdc.getId());
				List<TSDepart> tsdChildsList2 = tsdc.getTSDeparts();
				for (TSDepart tsdc2 : tsdChildsList2) {
					departsId.add(tsdc2.getId());
					List<TSDepart> tsdChildsList3 = tsdc2.getTSDeparts();
					for (TSDepart tsdc3 : tsdChildsList3) {
						departsId.add(tsdc3.getId());
						List<TSDepart> tsdChildsList4 = tsdc3.getTSDeparts();
						for (TSDepart tsdc4 : tsdChildsList4) {
							departsId.add(tsdc4.getId());
							List<TSDepart> tsdChildsList5 = tsdc4.getTSDeparts();
							for (TSDepart tsdc5 : tsdChildsList5) {
								departsId.add(tsdc5.getId());
								
								
							}
							
						}
						
					}
					
				}
				
			}
		}	







//=========================动态下钻多层 ===========================


	//不定下钻次数 循环
	public Map<String,Object> doAllFor(TSDepart tSDepart){
		Map<String,Object> map = Maps.newHashMap();
		List<String> departsId = Lists.newArrayList();
		departsId.add(tSDepart.getId());
		for (TSDepart tsdc : tSDepart.getTSDeparts()) {
			departsId.add(tsdc.getId());
		}
		map.put("departsId", departsId);//
		map.put("childsList", tSDepart.getTSDeparts());//
		return map;
	}





//调用

List<TSDepart> departsList = systemService.getListByCriteriaQuery(cqorg, false);//下属部门		
		
		List<TSDepart> tempList = Lists.newArrayList();//1
		List<TSDepart> childsList = Lists.newArrayList();//2
		tempList.addAll(departsList);//第一层
		//遍历第一层的数据并汇总第二层的数据...
		k:for (int i = 0; i < tempList.size(); i++) {
			TSDepart tsd = tempList.get(i);
			Map<String,Object> map = doAllFor(tsd);
			departsId.addAll((List<String>) map.get("departsId"));
			childsList.addAll((List<TSDepart>) map.get("childsList"));
			
			if(oConvertUtils.isNotEmpty(childsList) && i == (tempList.size()-1) ) {
				tempList = Lists.newArrayList();
				tempList.addAll(childsList);
				childsList = Lists.newArrayList();
				i = 0;
				continue k;
			}
		}
		


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值