/**
* 获取指标表
*
* @return
*/
@GetMapping("/metricsTablesTree")
public R getMetricsTables() {
List<MetricsTablesVo> vos = metricsTablesService.queryList(new MetricsTablesBo());
ArrayList<MetricsTablesTree> metricsTablesTrees = new ArrayList<>();
vos.forEach(vo -> {
getAllMetrics(vos, metricsTablesTrees, vo.getName(), vo.getTableKey(), vo.getFrequency());
});
TreeNodeConfig config = new TreeNodeConfig();
config.setIdKey("label");//默认为id可以不设置
config.setParentIdKey("parentLabel");//默认为parentId可以不设置
// 3.转树,Tree<>里面泛型为id的类型
List<Tree<String>> trees = TreeUtil.build(metricsTablesTrees, "root", config, (object, tree) -> {
// 也可以使用 tree.setId(object.getId());等一些默认值
tree.putExtra("id", object.getId());
tree.putExtra("label", object.getLabel());
tree.putExtra("frequency", object.getFrequency());
tree.putExtra("parentLabel", object.getParentLabel());
});
return R.ok(trees);
}
private void getAllMetrics(List<MetricsTablesVo> vos, List<MetricsTablesTree> metricsTablesTrees, String name, String tableKey, String frequency) {
// 查找最后一个下划线的位置
int lastUnderscoreIndex = name.lastIndexOf('_');
// 如果找到了下划线,并且它不是字符串的第一个字符
if (lastUnderscoreIndex > 0) {
// 分割字符串为两部分
String firstPart = name.substring(0, lastUnderscoreIndex);
String secondPart = name.substring(lastUnderscoreIndex + 1);
MetricsTablesTree obj = new MetricsTablesTree(name, firstPart, tableKey, frequency);
metricsTablesTrees.add(obj);
if (!exist(vos, firstPart)) {
getAllMetrics(vos, metricsTablesTrees, firstPart, "root-" + UUID.randomUUID(), frequency);
} else {
getAllMetrics(vos, metricsTablesTrees, firstPart, tableKey, frequency);
}
} else {
// 如果没有找到下划线或者下划线位于开头或结尾,则处理这种情况
MetricsTablesTree obj = new MetricsTablesTree(name, "root", "root-" + UUID.randomUUID(), frequency);
metricsTablesTrees.add(obj);
}
}
private boolean exist(List<MetricsTablesVo> vos, String name) {
for (MetricsTablesVo vo : vos) {
if (vo.getName().equals(name)) {
return true;
}
}
return false;
}
根据下划线生成tree
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 在scrollView滑动的过程中,改变对应title的颜色以及下划线的颜色; 1.效果图 2.实现过程 第一步,...
- AndroidSDK API版本28 直接用app:tabIndicatorFullWidth="false" 可...
- 1、_xxx 不能用于’from module import *’ 以单下划线开头的表示的是protected类型...
- 最近需要一个正则校验表达式,要求数字 字母 下划线组合,并且不能以数字下划线数字组合,不能下划线开头,不能下划线结...