“djh”
2025-11-11 63486c527b01c459110a88930d9cda1ded633aee
src/main/java/com/gkhy/fourierSpecialGasMonitor/domain/sysAdmin/service/impl/MenuDomainServiceImpl.java
@@ -340,33 +340,60 @@
        return parantList;
    }
    /**
     * 递归解析菜单数据,获取菜单树状结构
     * @param parantItem
     * @param childItemList
     * @return
     */
    private List<MenuItemDomainDTO> praseChildMenuItems(MenuItemDomainDTO parantItem, List<MenuItemDomainDTO> childItemList){
        if(childItemList == null || childItemList.size() == 0 || parantItem == null)
            return null;
        List<MenuItemDomainDTO> resultList = new ArrayList<>();
//        childItemList.forEach(child -> {
//    private List<MenuItemDomainDTO> praseChildMenuItems(MenuItemDomainDTO parantItem, List<MenuItemDomainDTO> childItemList){
//        if(childItemList == null || childItemList.size() == 0 || parantItem == null)
//            return null;
//        List<MenuItemDomainDTO> resultList = new ArrayList<>();
////        childItemList.forEach(child -> {
////            if(parantItem.getId().equals(child.getParentId())){
////                resultList.add(child);
////            }
////        });
//        for(MenuItemDomainDTO child : childItemList){
//            if(parantItem.getId().equals(child.getParentId())){
//                resultList.add(child);
//            }
//        });
        for(MenuItemDomainDTO child : childItemList){
            if(parantItem.getId().equals(child.getParentId())){
                resultList.add(child);
//        }
//        if(resultList.size() > 0){
//            for (MenuItemDomainDTO child : childItemList){
//                List<MenuItemDomainDTO> childList = praseChildMenuItems(child,childItemList);
//                if(childList != null && childList.size() > 0)
//                    child.setSubMenuItemList(childList);
//            }
//        }
//        return resultList;
//    }
    /**
     * 递归解析菜单数据,获取菜单树状结构
     * @param parentItem
     * @param allItems
     * @return
     */
    private List<MenuItemDomainDTO> praseChildMenuItems(MenuItemDomainDTO parentItem, List<MenuItemDomainDTO> allItems) {
        if (allItems == null || allItems.isEmpty() || parentItem == null) {
            return null;
        }
        List<MenuItemDomainDTO> directChildren = new ArrayList<>();
        // 1. 先找出当前父菜单的直接子菜单(parentId等于当前父菜单的id)
        for (MenuItemDomainDTO item : allItems) {
            if (parentItem.getId().equals(item.getParentId())) {
                directChildren.add(item);
            }
        }
        if(resultList.size() > 0){
            for (MenuItemDomainDTO child : childItemList){
                List<MenuItemDomainDTO> childList = praseChildMenuItems(child,childItemList);
                if(childList != null && childList.size() > 0)
                    child.setSubMenuItemList(childList);
        // 2. 只对直接子菜单递归,找它们的子菜单(孙菜单)
        if (!directChildren.isEmpty()) {
            for (MenuItemDomainDTO child : directChildren) { // 关键:遍历directChildren而非allItems
                List<MenuItemDomainDTO> grandChildren = praseChildMenuItems(child, allItems);
                if (grandChildren != null && !grandChildren.isEmpty()) {
                    child.setSubMenuItemList(grandChildren);
            }
        }
        return resultList;
    }
        return directChildren;
    }
}