- 概述
- 新增条件
- 新增输入框类型条件
- 新增固定单选列表类型条件
- 新增动态单选列表类型条件
- 新增固定多选框类型条件
- 新增动态多选框类型条件
- 新增表格
- 新增图形
- 保存报表
- 资源管理配置
- 查看报表是否成功
- 手动写报表
概述
原文链接: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函数。因为是之前的老框架,我并没有去修改这种方式。
版权声明:本文为博主原创文章,未经博主允许不得转载。