供应链报表常用过滤二开案例

栏目:云星瀚知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

供应链报表常用过滤二开案例

变更记录

产品版本
更新内容更新日期
V5.0初始版本2023年4月27日










一、概要介绍

报表添加常用过滤

本文以即时库存为例,查询时能根据常用过滤面板的过滤条件进行查询过滤

二、实现步骤

1. 元数据添加作为过滤条件的字段


2.代码处理逻辑

2.1 扩展点简介

基于速报表框架的插件大致分为三类:

表单插件:即标准报表(旧报表)的表单插件表单插件可处理过滤面板的控制等逻辑

查询插件即标准报表(旧报表)的查询插件,查询插件可处理报表查询时的取数等逻辑;

基于速报表框架的报表还有一个扩展点插件,即在报表数据源配置中配置的Handle插件:

极速报表框架基于平台的报表框架做了封装查询取数的逻辑还是在查询插件中处理,方法入口仍然是查询插件的query方法,在查询插件运行过程中会调用对应Handle插件的方法进行扩展。

扩展点Handle插件的接口定义如下:

public interface IReportDataHandle {


    /**

     * 数据查询前,进行上下文设置

     * @param ctx

     */

    default void setupCtx(ReportDataCtx ctx) {

    }


    /**

     * 修改数据块:增、、改

     * @param blocks

     * @param ctx

     * @return

     */

    default void modifyBlocks(List<SrcBlockConf> blockCollector,ReportDataCtx ctx) {

    }


    /**

     * 在多个数据块作为Union All后,执行的数据转换器

     * @param ctx

     * @return

     */

    default void transFormAfterUnion(List<IDataXTransform> transCollector,ReportDataCtx ctx){

    }


    /**

     * 在执行group前设置group方案,或者其他上下文设置

     * @param ctx

     */

    default void beforeGroupData(ReportDataCtx ctx){

    }

    

    /**

     * group完之后,执行的数据转换器

     * @param ctx

     * @return

     */

    default void transFormAfterGroup(List<IDataXTransform> transCollector,ReportDataCtx ctx){

    }


    /**

     * 在添加汇总行前设置汇总方案,或者其他上下文设置

     * @param ctx

     */

    default void beforeAddSumRow(ReportDataCtx ctx){

    }


    /**

     * 在添加完汇总行完之后,执行的数据转换器

     * @param ctx

     * @return

     */

    default void transFormAfterAddSumRow(List<IDataXTransform> transCollector,ReportDataCtx ctx){

    }


    /**

     * 生成最终数据包后,执行的数据转换器

     * @param ctx

     * @return

     */

    default void transformResult(List<IDataTransform> transCollector,ReportDataCtx ctx){

    }

    /**

     * 构建显示列

     * @param cols

     * @param ctx

     * @return

     */

    default List<AbstractReportColumn> buildShowColumn(List<AbstractReportColumn> cols, ReportDataCtx ctx){

        return cols;

    }

    

    /**

     * 设置中间表需要的字段

     * 默认:页面选择的数值字段和维度字段

     * @param repoColFilter

     * @param ctx

     */

    default void handleBigtableCols(Set<String> repoColFilter,ReportDataCtx ctx){

        

    }

    /**

     * 设置中间表需要的字段

     * 默认:中间表需要的字段

     * 字段全集就是字段库所有字段

     * @param repoColFilter

     * @param ctx

     */


    default void handleBlockDataSelectCols(Set<String> repoColFilter,SrcBlockConf blockConf,ReportDataCtx ctx){

        

    }

}


2.2 常用过滤处理逻辑

本文以即时库存报表为例,添加常用过滤所使用的扩展点接口为 setupCtx接口。

实现思路为:在进行数据查询前,将对应的查询条件解析为QFilter设置到查询上下文中,供报表框架后续查询时使用,从而达到过滤的作用,可参考下图中的代码(图中代码可通过反编译获取,类路径:kd.scmc.im.report.algox.realbal.RealBalRptHandle


按照上述实现思路,大致需要完成两个步骤:

1解析与传递参数:在表单插件中获取常用过滤中的条件,并解析成QFilter或者对应的值,传递到Handle插件中使用;

2扩展点中获取参数并设置到上下文中:Handle插件中拿到传递过来的信息,此处需要统一转换为QFilter,通过setupCtx扩展点设置到报表查询的上下文中,后续工作由报表框架完成。

2.2.1 解析与传递参数

1)由于常用过滤的条件在报表表单插件中获取,在Handle插件中无法直接获取到对应参数,因此需要在表单插件中获取和解析条件参数,通过自定义的参数对象传递到Handle插件中。

即时库存报表自定义的参数对象继承自kd.scmc.im.report.algox.util.RptParam,定义的属性如下图所示(图中代码可通过反编译获取)

2)解析构建和传递参数参考如下代码图中代码可通过反编译获取,类路径:kd.scmc.im.report.algox.realbal.RealBalRptForm


2.2.2 扩展点中获取与设置参数

在扩展点Handle插件中获取传递的参数,并解析成QFiter设置到查询的上下文中,参考如下代码:


   至此二开骤结束,后续查询由速报表框架完成。


-the end-

供应链报表常用过滤二开案例

变更记录产品版本更新内容更新日期V5.0初始版本2023年4月27日一、概要介绍报表添加常用过滤本文以即时库存为例,查询时能根据常用过滤面板...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息