如何实现报表的树形折叠展示功能开发原创
金蝶云社区-时空蔷薇
时空蔷薇
6人赞赏了该文章 2485次浏览 未经作者许可,禁止转载编辑于2022年04月15日 11:19:37

关键词:

页面开发,报表,树形报表

一、需求

    报表在展示时,有些数据之间存在上下级关系,可以通过树形折叠展示的功能体现出来,方便用户清晰直观的查看,如图1

图片12.png

1

 

二、思路与方案

    通过重写setTreeReportList()方法设置该报表为树形报表,在原本的数据里面加入 pid(当前行的父行id) 、 rowid(当前数据行id)、 isgroupnode(当前行是否有下级),用于构造树形报表数据。


三、实现过程

1.页面开发

新建【树形报表示例】继承自报表模板,报表列表字段添加文本字段[父节点]pid)、整数字段[是否叶子节点]isgroupnode)、文本字段[ID]rowid),如图2

 

图片13.png

2

 

2. 报表表单插件重写setTreeReportList方法,设置该报表为树形报表。

实现代码:

public class TreeReportDemoPlugin extends AbstractReportFormPlugin {
    public void setTreeReportList(TreeReportListEvent event) {
        super.setTreeReportList(event);
        event.setTreeReportList(true);
    }
}

 

3. 报表取数插件在原本的数据里面加入pid(上级节点id)、rowid(节点id)、 isgroupnode(是否叶子节点)。

实现代码:

@Override
public DataSet query(ReportQueryParam queryParam, Object obj) throws Throwable {
    ORM orm = ORM.create();
    String selectedField = "number, name, parent as pid, isleaf, id as rowid";
    //获取树形基础资料原始数据
    DataSet ds = orm.queryDataSet(getClass().getName(), "kded_treebasedata", selectedField, queryParam.getFilter().getHeadFilters().toArray(new QFilter[0]), null);
     //添加一个布尔型字段,用于处理“是否叶子节点”字段
    RowMeta newRowMeta = LogOperactionListutils.rowMetaAddField(ds.getRowMeta(), "isgroupnode", DataType.BooleanType);
 
    List<Object[]> seqRows = new ArrayList<>();
    //把“是否叶子节点”字段值赋到新添加的布尔字段
    for (Row row : ds) {
        Row perRow = RowUtil.persist(row);
        Object[] newRows = rowAddField(perRow, !row.getBoolean("isleaf"));
        seqRows.add(newRows);
    }
 
    return Algo.create(getClass().getName()).createDataSet(seqRows.iterator(), newRowMeta);
}
 
private Object[] rowAddField(Row row, Object fieldValue) {
    // 构建Row
    Object[] rowValues = RowUtil.toArray(row);
    int len = rowValues.length;
    Object[] newValues = new Object[len + 1];
    System.arraycopy(rowValues, 0, newValues, 0, len);
    newValues[len] = fieldValue;
    return newValues;
}

 

4. 注册报表表单插件(见图3)和报表取数插件(见图4)。  

图片14.png

3

图片15.png

4

 

四、效果图

1. 树形基础资料原始数据,如图5 

图片16.png

5

2. 树形报表展示效果,如图6 

图片17.png

6

 

五、开发环境版本

COSMICV4.0.014.0

 

、参考资料

【开发平台】指导手册

学习成长中心

【官方知识】增加了报表树形报表展示功能支持

 

、附件

赞 6