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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014596302/article/details/82811991
	//下钻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;
			}
		}
		


猜你喜欢

转载自blog.csdn.net/u014596302/article/details/82811991