不確定下鑽數的迴圈(部門下所屬部門 多層下鑽)
阿新 • • 發佈:2018-12-11
//下鑽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; } }