//不定下鑽次數 循環
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;
}
////////////////////////////使用
//提取部門id
List<String> departsId = Lists.newArrayList();
departsId.add(departId);//本部門
//下屬部門=========================
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;
}
}
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);