实体类:
package tree;
import java.util.List;
/**
*
*2018-11-30
*/
public class Menu {
// 菜单id
private String id;
// 菜单名称
private String name;
// 父菜单id
private String parentId;
// 菜单url
private String url;
// 菜单图标
private String icon;
// 菜单顺序
private int order;
// 子菜单
private ListchildMenus;
public Menu(String id, String name, String parentId) {
super();
this.id = id;
this.name = name;
this.parentId = parentId;
}
@Override
public String toString() {
return "Menu [id=" + id + ", name=" + name + ", parentId=" + parentId
+ ", url=" + url + ", icon=" + icon + ", order=" + order
+ ", childMenus=" + childMenus + "]";
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public int getOrder() {
return order;
}
public void setOrder(int order) {
this.order = order;
}
public ListgetChildMenus() {
return childMenus;
}
public void setChildMenus(ListchildMenus) {
this.childMenus = childMenus;
}
}
以下为工具类:
package com.aqueduct.base.common.util;
import java.util.ArrayList; import java.util.HashMap; import
java.util.List; import java.util.Map;
import javax.annotation.Resource;
import com.alibaba.fastjson.JSON; import
com.aqueduct.base.entity.system.Menu; import
com.aqueduct.base.service.system.menu.MenuManager;
public class ZTreeInit{
@Resource(name="menuService")
private static MenuManager menuService;
/** * 初始化数据 * * @return */
public static ListinitData(){
ListtreeData = new ArrayList();
treeData.add(new Menu("1","劳务管理","0","",""));
treeData.add(new Menu("2","设备管理","0","",""));
treeData.add(new Menu("3","物料管理","0","",""));
treeData.add(new Menu("4","施工安全","0","",""));
treeData.add(new Menu("5","施工质量","0","",""));
treeData.add(new Menu("6","施工进度","0","",""));
treeData.add(new Menu("7","技术难点","0","",""));
treeData.add(new Menu("8","资料查询","0","",""));
treeData.add(new Menu("9","任务管理","0","",""));
treeData.add(new Menu("10","物联感控","0","",""));
treeData.add(new Menu("11","考勤","1","",""));
treeData.add(new Menu("12","项目部","1","",""));
treeData.add(new Menu("13","劳务队","1","",""));
treeData.add(new Menu("14","劳务分析","1","",""));
treeData.add(new Menu("15","工资结算","1","",""));
treeData.add(new Menu("16","健康防控","1","",""));
treeData.add(new Menu("17","教育培训","1","",""));
treeData.add(new Menu("18","当前位置","2","",""));
treeData.add(new Menu("19","行驶轨迹","2","",""));
treeData.add(new Menu("20","工作状态","2","",""));
treeData.add(new Menu("21","设备总览","2","",""));
treeData.add(new Menu("22","设备搜索","2","",""));
treeData.add(new Menu("23","原材信息","3","",""));
treeData.add(new Menu("24","地磅数据","3","",""));
treeData.add(new Menu("25","出入库","3","",""));
treeData.add(new Menu("26","教育培训","4","",""));
treeData.add(new Menu("27","教育培训","5","",""));
treeData.add(new Menu("28","教育培训","6","",""));
treeData.add(new Menu("29","教育培训","7","",""));
return treeData;
}
/** * 子菜单递归 * * @param id * @param rootMenu * @return */
public static ListgetChild(String id, ListrootMenu) {
// 子菜单
ListchildList = new ArrayList<>();
for (Menu menu : rootMenu) {
// 遍历所有节点,将父菜单id与传过来的id比较
if (menu.getPARENT_ID().equals(id)) {
childList.add(menu);
}
}
// 把子菜单的子菜单再循环一遍
for (Menu menu : childList) {
menu.setSubMenu(getChild(menu.getMENU_ID(), rootMenu));// 递归
}
// 判断递归结束
if (childList.size() == 0) {
return null;
}
return childList;
}
/** * @param args * @throws Exception */
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
ListtreeData = menuService.listAllMenuQx("0");//获取所有菜单; // 原始数据
// 查看结果
for (Menu menu : treeData) {
// System.out.println(menu.toString());
}
ListmenuList = new ArrayList(); // 树递归
// 先找到所有的一级菜单
for (int i = 0; i < treeData.size(); i++) {
// 一级菜单父ID为0
if (treeData.get(i).getPARENT_ID().equals("0")) {
menuList.add(treeData.get(i));
}
}
// 为一级菜单设置子菜单,getChild是递归调用的
for (Menu menu : menuList) {
menu.setSubMenu(getChild(menu.getMENU_ID(), treeData));
}
MapjsonMap = new HashMap();
jsonMap.put("menu", menuList);
System.out.println(JSON.toJSONString(menuList));
//buildMenu(menuList);
//System.out.println(str);
}
/** * 遍历菜单 * * @param arr * @return */
public static String str = "";
public static String buildMenu(Listarr) {
for (int i = 0; i < arr.size(); i++) {
/*str += "
";
str += "" + ""
+ arr.get(i).getMENU_NAME() + ""
+ ""
+ arr.get(i).getMENU_ICON() + "" + "";*/
// 存在子菜单 递归
if (arr.get(i).getSubMenu() != null
&& arr.get(i).getSubMenu().size() > 0) {
//str += "";
buildMenu(arr.get(i).getSubMenu()); // 递归
//str += "";
}
/*str += "";*/
}
return str;
}
}
数据输出: