栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java多级菜单树转为面包屑

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java多级菜单树转为面包屑

菜单树json格式

{
	"data": [{
		"metricsCategoryId": null,
		"metricsCategoryCode": "all",
		"metricsCategoryName": "全部",
		"parentMetricsCategoryCode": null,
		"metricsCount": 3,
		"children": [{
				"metricsCategoryId": 1,
				"metricsCategoryCode": "glximrv1",
				"metricsCategoryName": "页面相关指标",
				"parentMetricsCategoryCode": "",
				"metricsCount": 0,
				"children": []
			},
			{
				"metricsCategoryId": 2,
				"metricsCategoryCode": "hj5lmrv1",
				"metricsCategoryName": "销售相关指标",
				"parentMetricsCategoryCode": "",
				"metricsCount": 1,
				"children": []
			},
			{
				"metricsCategoryId": 3,
				"metricsCategoryCode": "wijmmrv1",
				"metricsCategoryName": "互动类指标",
				"parentMetricsCategoryCode": "",
				"metricsCount": 2,
				"children": [{
					"metricsCategoryId": 4,
					"metricsCategoryCode": "m6wvnrv1",
					"metricsCategoryName": "点击类指标",
					"parentMetricsCategoryCode": "wijmmrv1",
					"metricsCount": 0,
					"children": [{
						"metricsCategoryId": 6,
						"metricsCategoryCode": "ssrhrrv1",
						"metricsCategoryName": "3",
						"parentMetricsCategoryCode": "m6wvnrv1",
						"metricsCount": 0,
						"children": [{
							"metricsCategoryId": 7,
							"metricsCategoryCode": "v9zjrrv1",
							"metricsCategoryName": "4",
							"parentMetricsCategoryCode": "ssrhrrv1",
							"metricsCount": 0,
							"children": [{
								"metricsCategoryId": 26,
								"metricsCategoryCode": "j2ba3sv1",
								"metricsCategoryName": "5",
								"parentMetricsCategoryCode": "v9zjrrv1",
								"metricsCount": 0,
								"children": []
							}]
						}]
					}]
				}]
			}
		]
	}]
}

方法

public List>> getList(String metricsAlias) {
        LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();
        List list = this.list(queryWrapper);
        List categoryVoS = mapperFactory.getMapperFacade().mapAsList(list, MetricsCategoryVO.class);
 //       先将菜单转为树状结构
        categoryVoS = buildCategoryTree(categoryVoS);
//        key:code,value:该code从父级到自己级别的name
        List>> mapList = new ArrayList<>();
        for (MetricsCategoryVO metricsCategoryVO : categoryVoS) {
            Map> mapTemp = new LinkedHashMap<>();
            List nameLists = new ArrayList<>();
            Map> categoryMetricsVOs = this.getCategoryMetricsVOs(0,metricsCategoryVO, mapTemp, nameLists);
            mapList.add(categoryMetricsVOs);
        }
        return mapList;
    }


    
    private Map> getCategoryMetricsVOs(int i, MetricsCategoryVO metricsCategoryVO, Map> mapTemp, List nameLists) {
        nameLists.add(metricsCategoryVO.getMetricsCategoryName());
//        必须新建一个,因为下方map中的value是存的nameLists的内存地址引用
        List newNameLists = new ArrayList<>(nameLists);
        mapTemp.put(metricsCategoryVO.getMetricsCategoryCode(), newNameLists);
        List children = metricsCategoryVO.getChildren();
        if (CollectionUtil.isNotEmpty(children)) {
            for (MetricsCategoryVO c : children) {
                i = ++i;
                getCategoryMetricsVOs(i, c, mapTemp, nameLists);
            }
        } else {
//            去掉前面集合中多余名字
            for (int j = 0; j < i - 1; j++) {
                nameLists.remove(nameLists.size() - 1);
            }
        }
        return mapTemp;
    }

结果

{
	"data": [{
			"glximrv1": [
				"页面相关指标"
			]
		},
		{
			"hj5lmrv1": [
				"销售相关指标"
			]
		},
		{
			"wijmmrv1": [
				"互动类指标"
			],
			"m6wvnrv1": [
				"互动类指标",
				"点击类指标"
			],
			"ssrhrrv1": [
				"互动类指标",
				"点击类指标",
				"3"
			],
			"v9zjrrv1": [
				"互动类指标",
				"点击类指标",
				"3",
				"4"
			],
			"j2ba3sv1": [
				"互动类指标",
				"点击类指标",
				"3",
				"4",
				"5"
			]
		}
	]
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025019.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号