供应链报表漏斗过滤二开案例

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

供应链报表漏斗过滤二开案例

一、 案例需求描述

      报表的个性化需求很多,往往不同的客户都会根据其业务使用情况提出需要特殊展示的内容;

      很多客户非常喜欢报表表头的小漏斗过滤,相较于录入报表的筛选条件,操作更加方便;

      报表的字段类型也很多,如基础资料、文本、数值等等,不同字段类型的过滤,在技术实现方式差别很大,且平台无法提供统一的解决方案,所以需要业务针对具体字段类型特殊处理;

      这里提供一个demo工程作为案例,供二开参考实现报表的漏斗过滤功能。


二、 解决方案

   各业务插件自己实现漏斗过滤逻辑,总体步骤为:

   设置界面显示漏斗图标

   报表查询插件中获取漏斗过滤条件

   对原始过滤条件进行加工

   编写过滤逻辑


三、 实现步骤

    步骤1

    设置界面显示漏斗

    在报表表单插件的setSortAndFilter中设置需要支持漏斗过滤的字段:

    设置完后页面会显示漏斗图标:


    步骤2

    报表查询插件中获取漏斗过滤条件

    从平台的ReportQueryParam中获取漏斗QFilter,然后设置到自定义参数中供后续查询使用。


    步骤3

    对原始过滤条件进行加工

    总的步骤为:从步骤2的自定义参数中获取原始过滤条件,进行加工,转换成数据过滤能使用的条件。

    以下列举了常用的3种字段类型的过滤场景供参考。

        3.1

        文本类型字段过滤

        这种可直接通过字段过滤数据源单据的场景无需额外转换,直接将原始漏斗过滤条件设置到报表框架上下文参数            ReportDataCtx的pageFs中。



         3.2

         基础资料类型字段过滤

         基础资料类型的过滤相对复杂些,比如漏斗传过来的条件是material = demo,但是报表界面显示的是物料编码,即用户预期的是根据物料编码过滤,因此需要转换成material.number = demo。又比如业务插件自己进行了处理,某些情况下优化成了id去查询,这时则需要转换成material.id = demo。总之需要结合业务插件具体实现去转换,这里以转换成编码为例供参考。




       3.3

       数量类型字段过滤

       此场景为字段非数据源单据上的字段,而是通过业务插件(IReportDataHandle实现类)追加的字段,此处无需任何处理,步骤4.3中直接实现过滤即可。


    步骤4

   编写过滤逻辑

        4.1 

       文本类型字段过滤

        需要过滤的字段和数据是数据源上配置的单据和字段,报表框架通用逻辑中会获取步骤3中设置的pageFs过滤条件对单据进行过滤,这种情况下无需编写额外的过滤逻辑

        报表框架公共逻辑取pageFs过滤条件:


          4.2 

          基础资料类型字段过滤

          同步骤4.1.


         4.3

         数量类型字段过滤

         数据或字段是在框架根据数据源取数后业务插件做的追加操作,因此需要业务自己在IReportDataHandle实现类中找到合适的时点实现过滤。假设数量字段是在transFormAfterUnion这个阶段追加的,那么可以选择transFormAfterUnion之后再进行过滤,比如在transformResult这个节点进行过滤。



四、用户操作效果演示

五、开发环境及版本

     苍穹版本号:V5.0.003

     星瀚版本号:V5.0.003


六、适用单据范围

     适用于供应链所有报表


七、来源客户或项目

      供应链中台服务部


八、附件

中台报表漏斗过滤二开demo案例.zip

供应链报表漏斗过滤二开案例

一、 案例需求描述 报表的个性化需求很多,往往不同的客户都会根据其业务使用情况提出需要特殊展示的内容; 很多客户非常...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息