xiaoyong931011
2021-06-25 a27a4871c8b214e2ba3e5f1e557ae53e683206a4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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<CoreMenu> 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<CoreMenu> list) {
 
        if (parent.getData().getType().equals(CoreMenu.TYPE_MENUITEM)) {
            return;
        }
 
 
        Long id = parent.getId();
        List<CoreMenu> 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<MenuItem> children) {
        Collections.sort(children, new Comparator<MenuItem>() {
 
            @Override
            public int compare(MenuItem o1, MenuItem o2) {
                return o1.getSeq().compareTo(o2.getSeq());
            }
            
        });
        
    }
 
}