前言
递归拼接多级菜单名称
假设最多有5级菜单,子菜单可能是4级也可能是5级。1和2级菜单为默认根节点,不在前端展示,不用拼接进去。
一、递归代码
代码如下:
private String appendPermissionName(String permissionName,PermissionInfoVO permissionInfoVO, List<PermissionInfoVO> allList) {
List<PermissionInfoVO> collect = allList.stream()
.filter(parent ->
//permissionId等同于id,parentNode是父id
String.valueOf(parent.getPermissionId()).equals(permissionInfoVO.getParentNode()))
.collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(collect)){
PermissionInfoVO parent = collect.get(0);
if(parent!=null&&!"1".equals(parent.getPermissionLevel())
&&!"2".equals(parent.getPermission Level())){
permissionName=parent.getPermissionName()+">"+permissionName;
permissionName=appendPermissionName(permissionName,parent,allList);
}
}
return permissionName;
}
二、排序代码
//中文首字母排序
resultTrees.sort((o1, o2) -> {
Comparator<Object> com = Collator.getInstance(Locale.CHINA);
return com.compare(o1.getPermissionName(), o2.getPermissionName());
});