bug
luoyisheng
2025-03-25 1abab3ed63e5648b8d88c412dce70aad0736b98a
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysMenuController.java
@@ -24,6 +24,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -47,24 +48,34 @@
        if (menus.size() == 0) {
            return AjaxResult.success(new ArrayList<>());
        }
        // 第三级
        List<SysMenu> s3 = menus.stream().filter(e -> e.getMenuType().equals("F")).collect(Collectors.toList());
        // 第二级
        List<SysMenu> s2 = menus.stream().filter(e -> e.getMenuType().equals("C")).collect(Collectors.toList());
        // 第一级
        List<SysMenu> s1 = menus.stream().filter(e -> e.getMenuType().equals("M")).collect(Collectors.toList());
        for (SysMenu menu : s2) {
            List<SysMenu> collect = s3.stream().filter(e -> e.getParentId().equals(menu.getMenuId())).collect(Collectors.toList());
            menu.setChildren(collect);
        }
        for (SysMenu menu : s1) {
            List<SysMenu> collect = s2.stream().filter(e -> e.getParentId().equals(menu.getMenuId())).collect(Collectors.toList());
            menu.setChildren(collect);
        }
        List<SysMenu> s1 = menus.stream().filter(e -> e.getMenuType().equals("M") && e.getParentId().equals(0L)).collect(Collectors.toList());
        // 构建以 parentId 为键的 Map
        Map<Long, List<SysMenu>> menuMap = menus.stream()
                .collect(Collectors.groupingBy(SysMenu::getParentId));
        // 构建树形结构
        buildMenuTree(menuMap, s1);
        return AjaxResult.success(s1);
    }
    /**
     * 封装树形层级
     *
     * @param menuMap
     * @param s1
     */
    public void buildMenuTree(Map<Long, List<SysMenu>> menuMap, List<SysMenu> s1) {
        for (SysMenu sysMenu : s1) {
            // 获取当前菜单的子级
            List<SysMenu> children = menuMap.getOrDefault(sysMenu.getMenuId(), new ArrayList<>());
            sysMenu.setChildren(children);
            //移除当前菜单
            menuMap.remove(sysMenu.getMenuId());
            // 递归设置子级菜单
            buildMenuTree(menuMap, children);
        }
    }
    /**
     * 获取菜单列表
     */