package com.xzx.gc.role.util; import com.xzx.gc.entity.CoreMenu; import com.xzx.gc.role.rbac.tree.MenuItem; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class MenuBuildUtil { private MenuBuildUtil() { } public static MenuItem buildMenuTree(List list) { CoreMenu root = new CoreMenu(); root.setId(0L); root.setType(""); root.setName("主菜单"); MenuItem rootMenu = new MenuItem(root); buildTreeNode(rootMenu, list); return rootMenu; } private static void buildTreeNode(MenuItem parent, List list) { if (parent.getData().getType().equals(CoreMenu.TYPE_MENUITEM)) { return; } Long id = parent.getId(); List dels = new ArrayList<>(); for (CoreMenu sysMenu : list) { if (id.equals(sysMenu.getParentMenuId() )) { MenuItem item = new MenuItem(sysMenu); item.setParent(parent); dels.add(sysMenu); } } list.removeAll(dels); if (list.isEmpty()) { return; } sortMenu(parent.getChildren()); for (MenuItem child : parent.getChildren()) { buildTreeNode(child, list); } } private static void sortMenu(List children) { Collections.sort(children, new Comparator() { @Override public int compare(MenuItem o1, MenuItem o2) { return o1.getSeq().compareTo(o2.getSeq()); } }); } }