指标数据解析:将 AssessmentIndicator 转换为 IndicatorsVO 列表

本文档介绍如何将 AssessmentIndicator 对象列表解析为 IndicatorsVO 对象列表,以用于前端展示指标数据。

示例数据

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

parentId 是父级的 id。

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

}

解析生成方法

public static List<IndicatorsVO> parseIndicators(List<AssessmentIndicator> indicators) {
    List<IndicatorsVO> result = new ArrayList<>();
    for (AssessmentIndicator indicator : indicators) {
        IndicatorsVO vo = new IndicatorsVO();
        vo.setTitle(indicator.getFirstName());
        vo.setDataIndex(indicator.getId());
        vo.setKey(indicator.getId());
        vo.setScore(indicator.getScore());
        vo.setCustomRender(new IndicatorsVO.CustomRender());
        vo.getCustomRender().setCustomRender(indicator.getFirstName());
        List<AssessmentIndicator> children = getChildren(indicators, indicator.getId());
        if (!CollectionUtils.isEmpty(children)) {
            vo.setChildren(parseIndicators(children));
        }
        result.add(vo);
    }
    return result;
}

private static List<AssessmentIndicator> getChildren(List<AssessmentIndicator> indicators, String parentId) {
    List<AssessmentIndicator> children = new ArrayList<>();
    for (AssessmentIndicator indicator : indicators) {
        if (parentId.equals(indicator.getParentId())) {
            children.add(indicator);
        }
    }
    return children;
}

方法说明

  • parseIndicators 方法递归遍历 AssessmentIndicator 列表,将每个 AssessmentIndicator 对象转换为 IndicatorsVO 对象,并将其添加到 result 列表中。
  • getChildren 方法获取指定父级 id 的所有子节点。

注意

  • AssessmentIndicator 类应包含 id, firstName, score, lockout, parentId 属性。
  • CollectionUtils 类来自 Spring 框架,用于判断集合是否为空。
  • parseIndicators 方法使用递归调用,确保所有指标都被解析。

代码示例

// 假设 indicators 是 AssessmentIndicator 对象列表
List<IndicatorsVO> indicatorsVOList = parseIndicators(indicators);

// indicatorsVOList 现在包含所有指标的 IndicatorsVO 对象列表

使用场景

该方法可用于将 AssessmentIndicator 对象列表转换为 IndicatorsVO 对象列表,以便在前端展示指标数据。

其他

您可以根据实际需求修改 IndicatorsVO 类和解析方法。

指标数据解析:将 AssessmentIndicator 转换为 IndicatorsVO 列表

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

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