//不定下钻次数 循环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;}
使用
//提取部门idList<String> departsId = Lists.newArrayList();departsId.add(departId);//本部门//下属部门=========================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;}}String[] departIdArr = new String[departsId.size()];//不定上钻次数 循环public Map<String,Object> doGetForP(TSDepart tSDepart){Map<String,Object> map = Maps.newHashMap(); map.put("departsName", tSDepart.getTSPDepart().getDepartname());//map.put("p", tSDepart.getTSPDepart());//return map;}/使用String depart = jrInfo.getDepart();TSDepart tsDepart_pa = new TSDepart();if(StringUtils.isNotBlank(depart)) {tsDepart_pa = this.systemService.get(TSDepart.class,depart);}//TSDepart tsDepartP = new TSDepart();String pDepartStr = tsDepart_pa.getDepartname();tsDepartP = tsDepart_pa;//当不是空那么就找父级while(oConvertUtils.isNotEmpty(tsDepartP)) {Map<String,Object> map_p = doGetForP(tsDepartP);tsDepartP = ((TSDepart)map_p.get("p"));pDepartStr = map_p.get("departsName").toString() + ">" + pDepartStr;if(oConvertUtils.isEmpty(tsDepartP.getTSPDepart())) {break;}}//上级部门串map.put("pDepartStr",pDepartStr);