找回密码
 立即注册

QQ登录

只需一步,快速开始

Eden.Sun Wyn认证
超级版主   /  发表于:2024-9-12 16:02  /   查看:74  /  回复:0
本帖最后由 Eden.Sun 于 2024-9-14 15:18 编辑

    今天介绍报表内容的动态生成。我们可以根据自己的要求动态的调整报表的顺序、选择展示的报表模块。多用于周报、月报、年报等的设计,并且根据受众差异,报告中涉及的模块也能选择性的增删。
    这种场景只通过报表设计无法实现,需要借助代码,在集成场景中实现。


    实现的思路和步骤如下:
    1. 设计报表:包括多个子报表和一个包含所有子报表的主报表;
    2. 每次使用都在主报表的基础上复制一个子报表;
    3. 获取复制的子报表内容;
    4. 修改子报表:根据要展示的内容、顺序调整子报表的内容,然后更新、保存修改后的报表;
    5. 报表使用:预览、导出等操作;
    6. 定时删除复制出来的子报表。

    具体的实现过程如下:
    1. 报表设计:按照实际的内容设计即可,我们做了三个demo报表,作为示例:
    image.png503489379.png
    第一个报表:
    image.png121513976.png

    第二个报表:
    image.png707272033.png

    第三个报表:
    image.png995196228.png

    主报表中创建三个报表区域,每个区域都通过子报表组件引入一个子报表,然后将报表区域的名称修改为对应的报表名称:
    image.png219130248.png

   
    2. 复制报表。通过POST类型 接口 http://ip:port/api/graphql?token=XXX  复制系统中的主报表,如下:
    image.png677875365.png
   
    返回值是复制后的新报表的报表id,返回的报表id需要记录下来,后面操作、使用的都是这个新的报表:

    image.png877518920.png



    3. 获取子报表的内容
    这里需要通过接口获取报表的 json 文件,不能通过下载获取,下载接口返回的是 xml 格式的报表文件,操作起来比较麻烦。我们需要通过接口获取到报表的 json 格式的文件,方便后面代码中的操作。
    接口:http://ip:port/api/v2.0/reporting/reports/{reportId}?token=XXX   获取到的报表数据如下:
    image.png255626830.png

   
    4. 报表内容修改
    这一步需要在报表之外创建一个参数,将要展示的报表以及对应的展示顺序记录下来,参数的值就是设计的主报表中的每个报表区域的名称:
    然后对前一步(第3步)获取到的json报表对象进行操作更新。
    针对性分析第3步中获取到的报表对象,可以发现,报表的设计内容都保存在 ReportSections 数组字段中,  每一个报表区域 都是 ReportSections 中的一个对象,并且对象的排列顺序就是报表的展示顺序:
    image.png767455138.png


    我们可以将报表原先的 ReportSections 内容保存,然后根据要展示的内容和顺序,创建新的 ReportSections 数组对象。替换原报表中的 ReportSections 字段。
    修改好之后的报表,通过接口进行更新。接口是PUT类型的:http://ip:port/api/v2.0/reporting/reports/{reportId}?token=XXX
      image.png775401000.png

    5. 消费报表
    到这一步就可以直接预览我们的报表,并在其中进行打印、导出等操作
    image.png494304809.png

    6. 删除报表
    报表创建之后,不会自己删除,如果长时间不清理,会形成大量的无用报表。我们可以通过报表删除接口,定时删除无用的报表:
    删除接口是:http://localhost:51980/api/v2/common/documents/{reportId}/delete   (DELETE类型的)
    image.png807667846.png
   至此,我们动态生成、消费再到最后的回收全流程的动态报表使用就完成了。感兴趣的小伙伴,快去试试吧。

    具体的代码设计可以看这篇帖子:
    【Wyn7.1】动态报表(二)——代码设计介绍

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部