指标数据解析与生成 - 递归方法实现

本文将介绍如何使用递归方法解析和生成指标数据,并提供一个示例代码来展示具体实现步骤。

1. 数据结构

假设我们有以下指标数据结构:

{id='402880c288ae5f700188b3564a9a00a0', firstName='一级指标1', score=30, lockout=0, parentId='null'}
{id='402880c288ae5f700188b3564a9a00a0', firstName='一级指标1', score=30, lockout=0, parentId='402880c288ae5f700188b3564a9a00a0'}

其中,parentId 表示父级的 id。

2. 指标数据实体类

为了方便处理指标数据,我们定义一个实体类 IndicatorsVO

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;
    }

}

3. 递归解析方法

我们可以使用递归方法解析生成数据,具体实现如下:

public IndicatorsVO parseIndicators(List<Indicators> indicatorsList, String parentId) {
    List<IndicatorsVO> children = new ArrayList<>();
    for (Indicators indicators : indicatorsList) {
        if (indicators.getParentId().equals(parentId)) {
            IndicatorsVO indicatorsVO = new IndicatorsVO();
            indicatorsVO.setTitle(indicators.getFirstName());
            indicatorsVO.setDataIndex(indicators.getId());
            indicatorsVO.setKey(indicators.getId());
            indicatorsVO.setScore(indicators.getScore());
            indicatorsVO.setAlign("center");
            if (indicators.getCustomRender() != null) {
                IndicatorsVO.CustomRender customRender = new IndicatorsVO.CustomRender();
                customRender.setCustomRender(indicators.getCustomRender());
                indicatorsVO.setCustomRender(customRender);
            }
            IndicatorsVO childIndicatorsVO = parseIndicators(indicatorsList, indicators.getId());
            if (childIndicatorsVO != null) {
                children.add(childIndicatorsVO);
            }
            indicatorsVO.setChildren(children);
            return indicatorsVO;
        }
    }
    return null;
}

4. 递归方法解析

在递归方法中,首先遍历所有的指标对象,判断当前指标对象的 parentId 是否等于传入的 parentId,如果是,则创建一个 IndicatorsVO 对象,并将指标对象的属性赋值给 IndicatorsVO 对象。然后递归调用 parseIndicators 方法,传入当前指标对象的 id 作为 parentId,获取当前指标对象的子指标对象。如果当前指标对象没有子指标对象,则直接返回 IndicatorsVO 对象。最后将所有的子指标对象添加到 IndicatorsVO 对象的 children 属性中,并返回 IndicatorsVO 对象。

5. 使用示例

// 假设 indicatorsList 为指标数据列表
IndicatorsVO rootIndicatorsVO = parseIndicators(indicatorsList, "null");
// 现在 rootIndicatorsVO 包含了所有解析后的指标数据

总结

通过使用递归方法,我们可以轻松地解析和生成指标数据,并将其组织成树形结构。这对于展示指标信息以及进行相关分析都非常有用。

指标数据解析与生成 - 递归方法实现

原文地址: https://www.cveoy.top/t/topic/oDHF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录