当前位置: 首页 > 工具软件 > Fancytree > 使用案例 >

后台实现fancytree遍历节点数据

冯枫
2023-12-01

利用递归实现。

private Boolean isHasChild=false;
private Boolean isHasSonChild=false;
public String getJson(int pid){//传入父节点id 第一次的值是根节点,需要写死,

RequestData requestData = this.getPageData();
requestData.put("pid", pid);
//2.先把顶层查出来,
List<RequestData> list = roleService.computerHostGroup(pid);//从最顶层的数据开始,所以pid应该为0
List<RequestData> listpid = roleService.computerHostGroupPid();//所有的pid集合,
//3.判断是否有子节点
for(int i=0;i<list.size();i++){//第一次指的是根节点,第二次应该是所有同级别的儿子0
isHasSonChild=false;//默认没有子节点
for(int k=0;k<listpid.size();k++){
if(list.get(i).get("HOSTGROUPID").equals(listpid.get(k).get("parenthostgroupid"))){//
isHasSonChild=true;
break;
}
}
if(isHasSonChild){//这个条件为了判断是否有子节点
jsons += "{title:\""+list.get(i).getString("NAME")+"\",key:\""+(list.get(i).get("HOSTGROUPID")+"")+"\""+",children:[";
//查询当前父节点下的儿子节点
LOGGER.info(jsons);
String nowPid=list.get(i).get("HOSTGROUPID")+"";
requestData.put("nowPid", nowPid);
List<RequestData> listson= roleService.getAllListSon(nowPid);//所有儿子pid,查找当前节点下的所有子节点
// 遍历它的子节点 
for (int j = 0; j < listson.size(); j++) { 
isHasChild=false;
/*if(j > 0 && j < listson.size()-1){
jsons += ",";
}*/
   //4.循环遍历子节点中使用递归
for(int l=0;l<listpid.size();l++){// 判断子节点是否还有子节点
if(listson.get(j).get("HOSTGROUPID").equals(listpid.get(l).get("parenthostgroupid"))){
isHasChild=true;
break;
}

 }
if(isHasChild){
jsons += "{title:\""+listson.get(j).getString("NAME")+"\",key:\""+(listson.get(j).get("HOSTGROUPID")+"")+"\""+",children:[";
LOGGER.info(jsons);
pid=Integer.parseInt(listson.get(j).get("HOSTGROUPID")+"");
this.getJson(pid); 
jsons += "]"; //hj start
jsons += " }";
if(j<listson.size()-1){
jsons += ",";
}//hi end
}else{
 jsons += "{title:\"" + listson.get(j).getString("NAME")
 + "\" " + " }"; 
if(j < listson.size() - 1){
jsons+=",";
LOGGER.info(jsons);
}
  }

 }
jsons += "]"; //
jsons += "}"; //
if (i < list.size() - 1) 

jsons += ","; 

LOGGER.info(jsons);
}else{
jsons+="{title:\"" + list.get(i).getString("NAME")
 + "\" " + " }";
LOGGER.info(jsons);

if(i<list.size()-1){
jsons += ","; 
}
}
//pid=Integer.parseInt(list.get(i).get("HOSTGROUPID")+"");
}

return jsons;
}

 类似资料: