版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}
}