基于JasperReport的报表方案实现

基于JasperReport的报表方案实现

从昨年就开始为公司寻觅一个报表工具,最开始接触了pentaho,结果给自己挖了好大一个坑,跳进去扑腾了两个月还差点没跳出来,

今年翻年过来又继续折腾,接着发现了JasperSoft,前车之鉴,这次准备两套方案,一是使用外部开源平台即JasperSoft套件,二是内部开发一套报表工具。

从功能、成本等方面评估后,还是选择了第一方案。

接着又是接近3个月的折腾,需求、方案、评估,折腾到6月,这货还是将就着上线了,从业务反应来看,这货卖相还不够好,有些地方业务吐槽,关键是报表的开发人员也一起吐槽,最后反馈到我这里来我只有一边表示压力大一边呵呵了。

下面来看下具体的实现方案:

ec_jasper

整个方案实现从生产抽取数据到数据仓库,再从报表平台进行数据展示的功能。

数据仓库:

使用基于MySAM的Mysql引擎,用来存放汇总和抽取后的业务数据。

抽取程序:

通过一定周期对线上数据进行聚合、转换,再放入数据仓库,抽取程序通过Mysql存储过程,调度执行配置的SQL进行数据抽取.调度的周期一般为天、周、月。

报表工具:

jasperrespor_artech

1.    整体框架
报表使用JasperSoft的开源套件,包含报表的开发工具、前端展示等工具。JasperSoft 是业界领先的开源报表系统,有丰富的文档和热度较高的社区。
官方网站: http://www.jaspersoft.com/
开源网站: http://community.jaspersoft.com/
2.    前端展示
JasperSoft 提供了报表展示工具JasperServer,是一个基于Java进行开发的WEB应用,可以提供用户在WEB界面进行报表执行、编辑等操作。
JasperServer 也包含了众多的开源套件例如: Spring、Hibernate、SpringSecurity、OpenFlashChart、jpivot等,和团队使用的研发技术比较类似。
JasperServer通过权限提供了后台管理功能,可以通过界面的方式对系统的角色、用户和权限、日志等进行配置,此外也提供了大量的API接口,通过配置文件的方式,对系统的功能进行定制。

目前主要涉及的配置文件
目录WEB-INF:
jasperserver-servlet.xml        –     默认页面
js.quartz.properties            –    定时任务的邮件配置
applicationContext-report-scheduling.xml    –    定时任务的Bean配置、邮件SMTP                                                    验证配置
applicationContext-data-snapshots.xml        –    数据快照启用配置
web.xml                                –    登录session超时配置
js.jdbc.properties                        –    数据源配置
applicationContext-security.xml            –    权限配置、LDAP配置
log4j.properties                        –    日志配置
applicationContext.xml                    –    核心配置 例如fileVirtualizerFactory
hibernate.properties                    –    Hibernate配置

目录WEB-INF\bundles:
jasperserver_messages_zh_CN.properties    –    国际化文件-中文
jasperserver_config_zh_CN.properties        –    日期格式配置、导出文件格式配置

目录WEB-INF\classes\esapi:
security-config.properties                –    SQL安全校验配置

目录\scripts\jquery\js:
jquery.ui.datepicker-zh-CN.js                –    中文区域下的日期选择器

目录\WEB-INF\jsp\templates:                    –    jsp模板文件

3.    报表开发
JasperSoft下的报表开发可以分为2个途径:
①通过Ireport工具进行后台开发,再发布。
②通过WEB界面进行及时的报表设计和编辑。
由于报表主要是提供给业务人员使用,前台的相关的渠道会被隔离开,这里主要介绍第一种方式。
Ireport是一个基于Java开发的GUI工具,能够在本地开发、调试和发布报表到JasperServer.
可以支持报表的类型有分组报表、交叉报表、图表、子报表等类型,提供了自定义的报表界面展示。目前主要用到的类型是分组报表,这也是业务人员最基础的报表需求。
在报表的展示上主要涉及到了参数、显示字段的类型和精度控制,例如参数级联、数字四舍五入以及金额保留位数。
图表目前涉及到了线状图,通过设置图表的分组属性可以方便的显示图表功能。

在报表交付给业务部门使用过程中,也逐渐的收集了部分反馈的问题,主要集中在报表的展示功能上,如:
1.复制粘贴不方便
2.导出后格式不直观
3.参数选择不够人性化。
4.参数中批量查询的支持。
5.无法为用户初始化对应的个人文件夹等
6.子报表还未研究使用方法

留下回复