指标数据解析生成方法 - 递归生成IndicatorsVO对象列表
指标数据解析生成方法 - 递归生成IndicatorsVO对象列表
本文介绍如何使用递归方式解析指标数据,并生成IndicatorsVO对象的列表。指标数据以JSON格式存储,包含指标名称、id、分值、父级id等信息。通过对指标数据进行分组和递归解析,最终生成一个层次化的指标列表,方便后续展示和操作。
指标数据示例
{id='402880c288ae5f700188b3564a9a00a0', firstName='一级指标1', score=30, lockout=0, parentId='null'}
{id='402880c288ae5f700188b3564a9a00a0', firstName='一级指标1', score=30, lockout=0, parentId='402880c288ae5f700188b3564a9a00a0'}
parentId是父级的id。
指标数据实体类
public class IndicatorsVO {
/**
* 指标名称
*/
@ApiModelProperty(value = "指标名称", dataType = "String")
private String title;
/**
* 指标id
*/
@ApiModelProperty(value = "指标id")
private String dataIndex;
/**
* 指标key
*/
@ApiModelProperty(value = "指标key -id ", dataType = "String")
private String key;
/**
* 指标分值
*/
@ApiModelProperty(value = "指标分值")
private Integer score;
/**
* 指标插入
*/
@ApiModelProperty(value = "指标插入")
private CustomRender customRender;
/**
* 指标子集
*/
@ApiModelProperty(value = "指标子集")
private List<IndicatorsVO> children;
/**
* 指标子集
*/
@ApiModelProperty(value = "居中")
private String align;
@Data
@ApiModel(value = "考核指标插入")
public static class CustomRender{
/**
* 指标插入
*/
@ApiModelProperty(value = "指标插入")
private String customRender;
}
}
生成方法
可以使用递归的方式解析生成IndicatorsVO对象的List。首先需要将传入的指标列表按照parentId进行分组,然后遍历每个分组,将每个分组的指标转换成IndicatorsVO对象,并将子指标列表递归转换成IndicatorsVO对象的children属性。具体实现可以参考以下代码:
public List<IndicatorsVO> generateIndicatorsList(List<Indicator> indicators, String parentId) {
List<IndicatorsVO> result = new ArrayList<>();
// 按照parentId进行分组
Map<String, List<Indicator>> groupedIndicators = indicators.stream()
.collect(Collectors.groupingBy(Indicator::getParentId));
// 获取指定parentId的子指标列表
List<Indicator> childIndicators = groupedIndicators.get(parentId);
if (childIndicators != null) {
for (Indicator indicator : childIndicators) {
IndicatorsVO indicatorsVO = new IndicatorsVO();
indicatorsVO.setTitle(indicator.getFirstName());
indicatorsVO.setDataIndex(indicator.getId());
indicatorsVO.setKey(indicator.getId());
indicatorsVO.setScore(indicator.getScore());
indicatorsVO.setCustomRender(new IndicatorsVO.CustomRender());
// 递归生成子指标列表
List<IndicatorsVO> children = generateIndicatorsList(indicators, indicator.getId());
indicatorsVO.setChildren(children);
result.add(indicatorsVO);
}
}
return result;
}
调用该方法时,传入指标列表和根节点的parentId即可生成IndicatorsVO对象的List,其中根节点的parentId应该为null。
代码示例
// 指标数据示例
List<Indicator> indicators = Arrays.asList(
new Indicator("402880c288ae5f700188b3564a9a00a0", "一级指标1", 30, 0, null),
new Indicator("402880c288ae5f700188b3564a9a00a0", "一级指标1", 30, 0, "402880c288ae5f700188b3564a9a00a0")
);
// 生成指标列表
List<IndicatorsVO> indicatorsVOList = generateIndicatorsList(indicators, null);
// 打印结果
System.out.println(indicatorsVOList);
总结
本文介绍了如何使用递归方式解析指标数据并生成IndicatorsVO对象列表的方法。该方法可以有效地将指标数据转换为层次化的结构,方便后续的展示和操作。
注意
在实际应用中,指标数据可能更加复杂,例如包含多个层级、自定义属性等。需要根据具体情况对代码进行调整。
原文地址: https://www.cveoy.top/t/topic/oDHV 著作权归作者所有。请勿转载和采集!