码迷,mamicode.com
首页 > 编程语言 > 详细

基于echarts,java的自动化配置报表项目构建

时间:2015-08-15 16:37:54      阅读:447      评论:0      收藏:0      [点我收藏+]

标签:报表   自动化构建报表   报表工具   java报表   echarts   

概述

原文链接http://blog.csdn.net/u011506468/article/details/47682417
因为之前公司对内的报表需求太多,开发太累,便自己写了一个自动化构建报表的东西,后续还可以更加完善。现在把我的思路写下来。最近可能会完成更高级的配置化报表,完成后也会记录下来。
配置化增加报表,目前只支持一表一图的展示,支持导出报表,不需要写页面,只需要用以下的方法来配置即可。如果想展示丰富的页面,必须手写。
此文档为介绍动态添加报表工具如何使用。首先我准备了一些比较简单的数据来供测试用,下面的介绍都使用这个表做测试,如下图

技术分享

新增条件

名词介绍

  • 所属SQL条件:sql中要插入条件的条件名匹配符
  • 条件类型:多媒体作用,此处只有一个作用,选择创建输入框的时候增加日期特效
  • 条件名称:展示在界面上的条件名词
  • 选项:条件类型

新增输入框类型条件

输入框有两种类型可供选择

  • 正常的输入框,如下图中将选项选择为“表单(input)”,条件类型选择为“文本”
  • 带日期控件的输入框,如下图中将选项选择为“表单(input)”,条件类型选择为“日期”,点击新增按钮后,可以新增一个输入框类型条件。

技术分享

新增固定单选列表类型条件

将选项选择为“单选(select)”,在值中输入想展示的数据,以逗号为分隔符,此处我输入1,2,3然后点击增加,可以增加一个单选列表的条件
技术分享

新增动态单选列表类型条件

新增固定单选列表类型条件 不同之处就是,此处可以根据用户输入的sql动态的展示单选条件
将选项选择为“单选(select)”,在值中输入select to_char(rp_date,‘yyyy-mm-dd‘) rp_date from test然后点击增加,可以增加一个单选列表的条件
技术分享

新增固定多选框类型条件

将选项选择为“多选(checkbox)”,在值中输入想展示的数据,以逗号为分隔符,此处我输入1,2,3然后点击增加,可以增加一个多选框的条件
技术分享

新增动态多选框类型条件

新增固定多选框类型条件 不同之处就是,此处可以根据用户输入的sql动态的展示多选条件
将选项选择为“多选(checkbox)”,在值中输入select to_char(rp_date,‘yyyy-mm-dd‘) rp_date from test然后点击增加,可以增加一个多选框的条件,注意此处尽量不要展示太多的多选框,不美观
技术分享

新增表格

名词解释:

  • 报表标志:保存报表的时候和资源管理中配置的页面url对应
  • 标题:报表标题
  • 中文列名:sql中查出来的列名的中文解释
  • 数据库列名:sql中查出来的别名,必须要给查出来的列取别名
  • sql名:此处填写与标题相同即可,方便在rp_report_sql的sql配置表中快速找到该sql属于哪个报表
  • sql名旁的单选框:标志此sql属于该报表的哪一个时间维度,可以点击多次保存sql来保存至不同的时间维度,在查看报表的时候点击报表中间的按小时、按日、按周等时会动态转换数据,保存sql时要细心

上面介绍过,条件中有个属性为“所属SQL条件”,该属性主要是在创建表格的时候和sql中的条件一 一对应,如果条件中写的为{1},sql中请写:{1}。此时我输入的sql为select to_char(rp_date,‘yyyy-mm-dd‘) rp_date, amt, cnt from test where rp_date > to_date(:{1},‘yyyy-mm-dd‘) and rp_date < to_date(:{2},‘yyyy-mm-dd‘) order by 1 desc,然后我新增了两个输入框为日期类型的条件“开始时间”和“结束时间”,分别对应sql的条件{1}和{2},全部创建完成后,点击查看可出来结果。

技术分享

新增图形

名词解释:

  • 图表Option:echarts中的option,此处不用填数据,主要构造图形的标题、横坐标、纵坐标属性、legend、展示的数据属于哪些纵坐标等等属性。
  • dataColumn与legend对应关系:上面表格的数据库列名和要展示的legend的对应关系,格式为“rp_date:日期,amt:金额,cnt:笔数”,第一个请放时间列,会用做横坐标

如果不想要保存图形,此步骤可以忽略,”是否保存图形“选择否即可。图形框架使用的是echarts,想使用图形功能,请先了解echarts图形展示框架,此处可以什么都不填,点击“刷新图标”,默认展示规则为:从表格中第一列获取的数据为横坐标,后面按顺序展现为柱状图。最好不要使用默认的刷新图标,因为表格中的数据不可能每列都是要用来展示的,而且有的列会有中文。

技术分享

保存报表

保存报表是有顺序的,在上面保存表格成功后,请记得要把对应的sql保存,在没有保存sql的情况下,保存报表按钮是不允许点击的。原因:我设计的一张报表可以保存多个时间维度,所以一张报表可能对应多个sql,所以要先保存好sql,再将sqlid组装好一起存起来。

技术分享

资源管理配置

此处保存报表成功后,只是将报表的一些元素存了起来,页面上并没有对应。需要去权限管理系统里的资源管理页面配置一个报表页面,然后分配权限给对应用户即可。
资源配置说明:配置的url格式为tpl/tool/smartReportShow.jsp?reportFlag=报表标志|time=时间维度,报表标志即为你在新增报表页面填写的报表标志,时间维度为按小时:h,按天:d,按周:w,按月:m。加上时间维度主要是因为区分同一张报表的多个时间维度的url,请严格按照格式配置

技术分享
此处介绍下报表资源管理的规则,可以看到报表系统左上角是有个模块的选择,选择完模块后左边才展示对应模块的报表子模块,然后资源管理里会有个时报、日报、周报、月报等菜单,这部分主要是区分该报表属于哪个时间维度,在点击报表中间的时报、日报等按钮时会自动切换为对应的菜单下的报表。如果不放在日报、周报等的菜单下的话,点击报表中间的时报、日报等按钮时该页面会同时存在于多个时间维度下
技术分享

查看报表是否成功

到此大功告成,去你刚才配置的资源页面查看是否成功
技术分享

手动写报表

手动写报表主要用于展示丰富的界面时使用。跟上面介绍的完全不同,需要手动在rp_report_sql中加入一条sql(记得要把序列执行加1,否则下次新增会报错)。手动写报表的条件我使用的是之前报表老框架的条件配置,跟自动配置这个不同,比如想得到上面的结果,需要的sql为 select rp_date,amt,cnt from test where 1=1 {whereclause} order by 1 desc,此时在页面需要配置的条件封装为

filters = {groupOp:"and",rules:[
{field:"rp_date",op:"ge",data:beginTime,funcBefore:"to_date(",funcAfter:",‘yyyymmdd‘)"},
{field:"rp_date",op:"le",data:endTime,funcBefore:"to_date(",funcAfter:",‘yyyymmdd‘)"}]};

资源管理的url就为此jsp的路径,具体可以参考下iboxpay-report-main\iboxpay-report-webapp\src\main\webapp\tpl\merchant_tran_num_d_rp.jsp。条件配置方法比较麻烦,可以参考iboxpay-report-main\iboxpay-report-core\src\main\java\com\iboxpay\omp\report\queryrule\QueryFilter.java 中的main函数。因为是之前的老框架,我并没有去修改这种方式。

版权声明:本文为博主原创文章,未经博主允许不得转载。

基于echarts,java的自动化配置报表项目构建

标签:报表   自动化构建报表   报表工具   java报表   echarts   

原文地址:http://blog.csdn.net/u011506468/article/details/47682417

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!