//下钻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();//1List<TSDepart> childsList = Lists.newArrayList();//2tempList.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;}}