目前系统上添加异步导出功能,希望能再进一步,能支持复杂报表数据导出功能。
比如我有订单,订单明细,出库单,出库单明细等相关数据整合在一起,做成报表导出。
报表应该分两类,一种是实体表单(含视图)报表的导出,另一种是复杂数据报表的导出。
创建一张报表查询记录表(用户、查询条件、报表结果(附件)、查询时间)
–存储过程报表(涉及多表数据整合及数据清洗)
1、创建表单A(包含需要的报表字段,需要添加 查询IDD字段)
2、创建 A表单的筛选区域(可以自定义表单字段),
比如日期范围、状态、客户范围、文本,数值等
(可能会出现筛选条件不存在A表单字段上的情况,比如一些期间汇总数据,但筛选条件中需要日期范围)
3、用户可以定义多个导出模板,用户选择导出模板。
4、用户点击生成按钮(生成查询ID)
4.1 触发工作流 执行SQL语句:执行 存储过程(查询ID,筛选条件 json格式)
在存储过程中根据筛选条件写入 A表单数据。
4.2 系统根据 任务ID从A表中读取数据(加以权限数据过滤),并以用户自定义的导出模板 生成导出文件,异步生成,生成成功后提供下载。
4.3 生成导出文件后,根据查询ID清除表单A中的数据。
–视图报表
1、创建视图A(包含需要的报表字段)
2、创建 A视图的筛选区域(字段只能是A视图的字段)
3、用户可以定义多个导出模板,用户选择导出模板。
4、用户点击生成按钮
4.1 系统根据 筛选条件直接从A视图中,并以用户自定义的导出模板 生成导出文件,异步生成,提供下载。
1、导出模板支持 自定义计算列(比如有A字段,B字段,添加A/B的计算列字段)
2、查询按钮需要加以控制,如果数据在生成过程中应避免用户重复点击。
3、历史查询记录可以展示,查询结果可以下载(用户可以手工清理,或定时任务清除避免空间占用)
4、结合打印模板,将查询ID 传入,以实现复杂样式报表的体现
扩展功能:定时推送功能:需要定时生成报表数据,推送给用户(比如月报,周报等)。
可以通过 工作流定时任务,指定报表的 (导出模板、筛选条件) 生成导出文件,然后以通知附件的方式推送给用户。