**
这个里面有BUG 仅供参考
**
本来系统里面的层级是所有显示出来,但是领导说要只显示第二层,然后就用js改成了默认显示第二层。后面的层级也可以点击出来,效果,之后领导又提出了新的意见,说只能显示到到指定层级。并且可以在后台控制显示到第几层。当只显示到第指定层级时不显示下面的层级。效果
。
下面放出代码和实现思路。免得自己以后忘记了。
数据库添加层级字段
dao和service层 自己实现就行了。
下面是主要代码思路
定义全局变量,用于层深度记录
方法中初始化变量数值 , tier是获取数据库中存的值
//初始化需要循环的层
tier = titleService.findUrl("policiesregulations/rowadd.json").getTier();
//深度
x=0;
递归的时候进行判断深度
/**
* 树递归
* @param data 数据
* @param url 正常url
* @param last 末级节点url
* @return
*/
public List<Tree> recursion(List<PoliciesRegulations> data, String url,String last){
List<Tree> tlist=new ArrayList<>();
if(x<tier){
data.forEach(e->{
//判断是否为末级节点,切换不同的url
String href = e.getLast()==0?url:last;
href+=e.getId();
Tree tls = new Tree();
tls.setName(e.getName());
tls.setTitle(e.getName());
tls.setId(e.getId());
tls.setHref(href);
if(e.getPoliciesRegulations().size()==0){//2018年9月12日修改,如果不X--的话会导致第一层下标1之后的数据不迭代
x--;
}else{
//深度++
x++;
tls.setChildren(recursion(e.getPoliciesRegulations(),url,last));
}
tlist.add(tls);
});
return null;
}