标签:报表 自动化构建报表 报表工具 java报表 echarts
原文链接:http://blog.csdn.net/u011506468/article/details/47682417
因为之前公司对内的报表需求太多,开发太累,便自己写了一个自动化构建报表的东西,后续还可以更加完善。现在把我的思路写下来。最近可能会完成更高级的配置化报表,完成后也会记录下来。
配置化增加报表,目前只支持一表一图的展示,支持导出报表,不需要写页面,只需要用以下的方法来配置即可。如果想展示丰富的页面,必须手写。
此文档为介绍动态添加报表工具如何使用。首先我准备了一些比较简单的数据来供测试用,下面的介绍都使用这个表做测试,如下图
名词介绍
输入框有两种类型可供选择
将选项选择为“单选(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
然后点击增加,可以增加一个多选框的条件,注意此处尽量不要展示太多的多选框,不美观
名词解释:
上面介绍过,条件中有个属性为“所属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},全部创建完成后,点击查看可出来结果。
名词解释:
如果不想要保存图形,此步骤可以忽略,”是否保存图形“选择否即可。图形框架使用的是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函数。因为是之前的老框架,我并没有去修改这种方式。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:报表 自动化构建报表 报表工具 java报表 echarts
原文地址:http://blog.csdn.net/u011506468/article/details/47682417