数据查询业务中,有时会碰到数据量很大的清单报表。用户输入的查询条件很宽泛,可能会从数据库中查出几百上千万行甚至过亿的记录,如银行的流水记录,物流的明细等。如果等着把这些记录全部检索出来再生成报表呈现,那需要很长时间,用户体验恶劣;而且报表一般采用内存运算机制,大多数情况下也装不下这么多数据。所以,我们一般都是使用分页呈现的方式,尽量快速地呈现出第一页,然后可以随意翻页显示,每次只显示一页,也不会造成内存溢出。我们使用的润乾报表,取数和呈现采用两个异步线程,取数线程发出SQL后不断取出数据并缓存到本地,呈现线程从本地缓存取数据显示。这样,只要已经取过的数据就能快速呈现,不会有等待感;而取数线程只涉及一句SQL,在数据库中是同一个事务,也不会有不一致的问题
工具/原料
润乾报表
方法/步骤
1
与普通报表开发一样,设置参数、准备数据集、绘制报表模板。报表参数为查询日期起止:
2
数据集根据参数查询订单表SQL:
3
报表模板:
4
在润乾报表属性(报表-报表属性)中设置“大数据集名称”,指向数据集ds1。
5
设置完成后,在报表设计器IDE中即可浏览报表:
6
与普通报表发布类似,大清单报表也通过JSP以tag-lib的方式发布。其中rowNumPerPage属性为每页显示记录数;fetchSize为每次从数据源读取的数据量。完整发布JSP可参考报表安装目录下[report\web\webapps\demo\reportJsp\ showBigReport.jsp]。
7
最终 WEB端呈现效果:其中,右上角的页码和总记录条数随着异步线程不断读取数据而不断变化。
8
除了展现,在润乾报表中还支持对大清单报表导出Excel
9
以及打印,
上一篇:怎么生成电脑配置清单/报表
下一篇:excel文件如何导入清单项目?