资源描述
管理会计系统(一期) 润乾报表工具使用情况介绍,2020年7月8日2时4分,1,目 录 结 构,一、认识润乾 二、原有实现 三、集成润乾 四、存在缺陷,2020年7月8日2时4分,2,目 录 结 构,一、认识润乾 二、原有实现 三、集成润乾 四、存在缺陷,2020年7月8日2时4分,3,概述,润乾报表软件是我行采购的轻量级非线性报表工具,其核心特点在于提出了非线性报表数学模型,采用了强关联语义模型、多源关联分片、不规则分组、自由格间运算、行列对称等技术,使得复杂报表的设计简单化,以往难以实现的报表可以轻松实现,避免了大量的复杂SQL编写与前期数据准备,提高报表设计效率。 润乾报表不需安装控件,采用标准的纯HTML的Web报表,支持ie、netscape等多种浏览器,可以支持PDF,Excel等输出,提供了全面的页面与打印控制,并且能够满足Web报表的多种展现需要。同时,润乾报表对图表有良好的支持,可以生成柱图、饼图、折线图、仪表盘、雷达图、甘特图、双轴柱线图等三十几种图表。,2020年7月8日2时4分,4,主要功能,一、支持主要的报表样式,网格式报表,行式报表,2020年7月8日2时4分,5,主要功能,一、支持主要的报表样式,交叉表,2020年7月8日2时4分,6,主要功能,一、支持主要的报表样式,自由式报表,2020年7月8日2时4分,7,主要功能,一、支持主要的报表样式,主子表,2020年7月8日2时4分,8,主要功能,一、支持主要的报表样式,报表组(多表单) 统计图 多源分片 不规则分组,2020年7月8日2时4分,9,主要功能,二、类Excel设计器,润乾报表工具采用类Excel的可视化网格式编辑方案,不仅可以以可所见即所得的方式绘制出复杂表样,而且可免去使用传统控件拖拽式编辑时对齐数据项的繁琐,在保证格式整齐美观的同时大幅提高绘制效率,避免打印与显示因分辨率不一致而出现的失真现象。另外,熟悉Excel使用的人员相当多,类Excel的报表设计方式显然更易于报表绘制工作的上手。,2020年7月8日2时4分,10,主要功能,三、填报,润乾报表很好的支持了报表填报功能,目前还支持行式填报、类Excel式填报、多数据源填报及报表主填报等方式。填报允许数据库表列与报表的单元格之间进行任意匹配,设计报表样式时不需要考虑数据结构,反之设计数据结构时也只需要考虑业务规则而不用管报表样式,任意的报表样式和数据结构之间都能建立起对应关系。润乾报表在浏览器端采用纯HTML填写方案,提供文本录入框、密码框、下拉列表、下拉数据集、单选复选框、下拉日历等风格,同时提供了填报的控制和检查。,2020年7月8日2时4分,11,主要功能,四、打印,润乾报表采用JavaApplet的方式实现浏览器中的精确打印,可支持如下功能: 一纸多页:实现小票据或卡片式打印,可选择按行排列和按列排列; 缩放与定位:打印前的缩放及在纸张中的定位控制; 页码控制:选择不同页码打印; 打印前可控制是否允许再修改数据。,2020年7月8日2时4分,12,主要功能,五、即时页面展示,润乾即时报表提供了易用高效率的报表快速设计方案,采用tab页切换的设计布局,实现无编码形式设计报表。用户可利用即时报表的报表展现、汇总、统计、打印导出、生成统计图等功能搭建出轻量级企业报表平台。,2020年7月8日2时4分,13,主要功能,六、语意套件,润乾报表提出的强关联语义模型,提出了枚举分组的概念,并且将强关联模型、枚举分组概念与非线性报表模型完美结合,使得报表设计者可以在轻轻松松的拖拽中,设计出很复杂的非线性报表。它采用所见即所得的编辑方式,让用户从语义层中拖拽视图、字段时,自动生成表达式,;它把很多报表里的属性在语义层中定义,避免了用户理解和学习报表的属性和术语,更是避免了很多属性的重复定义;它独特的条件参数,使得用户不用学习条件语句的写法,就可以使用条件和参数,制作出参数报表。,2020年7月8日2时4分,14,主要功能,七、性能管理,润乾报表性能管理由缓存机制、并发控制和表达式预解析三个部分组成。 缓存机制支持单用户单用户缓存、多用户共享缓存; 并发控制包括静态并发控制和动态并发控制,静态并发可以设置最大报表运算并发数量、最大报表访问等待数量和报表访问最长等待时间,动态并发控制由用户根据服务器硬件的配置,预先设置一个允许并发运算的最大格子数,然后由服务器在运算的过程中,动态地判断当前并发访问的格子数是否达到预设值,如果达到,则控制新进访问线程,使之等待,等有空闲时接着计算。 表达式预解析是在报表对目标数据进行综合计算之前,首先对请求的报表进行检查,把设计常量、数据集字段、单元格引用的部分先计算或映射出来,从而避免整体大规模计算报表时的重复计算和重复映射。,2020年7月8日2时4分,15,类Excel设计器,2020年7月8日2时4分,16,类Excel设计器,2020年7月8日2时4分,17,格间运算,定义: 在单元格的运算中可以引用其它单元格的值,直接写单元格名即可,这样的运算称为格间运算。,2020年7月8日2时4分,18,支持多数据源,2020年7月8日2时4分,19,多类型数据集,2020年7月8日2时4分,20,丰富的函数库,润乾提供了丰富的函数库,一共可分为9大类: 数据集函数:Group(), Select(), Sum(), Count() . 单元格函数:if(), list(), map() . 字符串函数:trim(), left(), right() . 数学函数:round() . 日期时间函数:now() . 数据类型转换函数:str(), date() . 数据类型判断函数、 分页后运算函数、 统计图运算函数,2020年7月8日2时4分,21,单元格控制,思考以下几个问题如何实现:,隔行变色,一级指标粗体,二级指标缩进,满足一定条件的值用红色显示,单元格宽度由显示的内容决定,2020年7月8日2时4分,22,单元格控制,2020年7月8日2时4分,23,一个例子,2020年7月8日2时4分,24,目 录 结 构,一、认识润乾 二、原有实现 三、集成润乾 四、存在缺陷,2020年7月8日2时4分,25,一般流程,制作一张报表的一般流程:,2020年7月8日2时4分,26,原有实现,未引用润乾报表工具之前,MAP系统采用自主开发通用的处理程序,配合PLANTIX报表引擎(旧版)的方式实现报表生成的功能。,2020年7月8日2时4分,27,不足之处,模板配置采用纯文本形式,降低了配置模板的友好度; 缺少对单个单元格的控制能力,致使有些格式不能完美实现; 不支持多数据集,在有些复杂的展示需求中,只能通过预先的数据加工把一些弱联系的数据强行组织在一起,增加了主题加工的复杂度并且降低了报表生成时的效率; 不支持一些比率的指标的合计; 不支持Excel公式,对一些计算只能在取数的时候通过复杂的Sql语句实现; 不支持3级以上的动态交叉表; 不能随时看到制作的报表,测试比较麻烦; 不支持图片。,2020年7月8日2时4分,28,目 录 结 构,一、认识润乾 二、原有实现 三、集成润乾 四、存在缺陷,2020年7月8日2时4分,29,润乾的优点,类Excel的设计器使制作报表模板变得简单; 可以对单元格进行控制,完美实现业务的各种要求; 支持多数据集,减少数据加工的复杂度; 支持Excel公式,并且提供了大量的函数,可以实现复杂的比率汇总等计算,有时也可以减少很多不必要的数据加工; 支持宽表的主题数据,大大减少了主题表数据量; 可以随时浏览制作的报表,方便开发人员进行测试; 对单元格支持文本、图片字段、图片文件和HTML代码,还支持统计图等复杂类型,展示方式多样化; 为二次开发提供了集成接口,方便将其嵌入到用户的各种应用程序中。,2020年7月8日2时4分,30,Java API,Java API在结构上分成了三层:数据层、运算层和展现层;每个层面都有开放的接口允许程序员进行调用或重载。,2020年7月8日2时4分,31,Java API,/第一步,读取报表模板 ReportDefine rd = (ReportDefine) ReportUtils.read( reportFile ); /第二步,运算报表 Context context = new Context(); Engine enging = new Engine( rd, context); IReport iReport = enging.calc(); /第三步,展现 ExcelReport er = new ExcelReport(); er.export(sheet1, iReport); er.saveTo(fileOutputStream);,一个简单的报表生成的代码:,2020年7月8日2时4分,32,Java API,相关JAR包:,barcode.jarjdom.jar iTextAsian.jar jai_codec.jarjai_core.jaritext2_rq.jar log4j_128.jarpoi2.jarreport4.jar,2020年7月8日2时4分,33,集成润乾,管理会计系统(MAP)的报表需求:,2020年7月8日2时4分,34,集成润乾,管理会计系统(MAP)的报表需求:,2020年7月8日2时4分,35,集成润乾,大批量生成日/月终固定报表文件 用户针对已有业务主题的灵活查询的即席展示报表,管理会计系统(MAP)的报表需求:,特点:,主题加工的数据量大; 报表要求的时效性强; 分析维度多,条件复杂,格式要求比较灵活。,2020年7月8日2时4分,36,集成润乾,采用Plantix平台的框架调度 结合自主开发的异步调度框架,框架调度:,集成润乾报表工具的原则:,改动时减少影响,改动后简便易用,2020年7月8日2时4分,37,集成润乾,一、解决项目大批量生成日/月终固定报表文件的需求 思路:利用润乾提供的Java API,自行开发数据引擎取代润乾报表数据抽取层,采用自主开发引擎调用润乾数据运行层和展示层API的方式实现。 这样的好处是能够沿用MAP批量调度的功能,修改原有框架的报表生成节点的运行类,即可实现润乾报表工具的集成,改动非常小,对系统的影响也是最小的。 结合批量生成固定报表的特点,应避免润乾报表模板内置数据集取数的方式,利用API中的自定义数据集的接口,由自主开发的引擎一次性的取出数据,并自己组织数据集,这样能够使数据在进入润乾报表前就进行了拆分,充分利用润乾报表的灵活输出格式的优点。 这样还可以利用批量框架的并发来实现高效的输出报表的目的。,2020年7月8日2时4分,38,集成润乾,一、解决项目大批量生成日/月终固定报表文件的需求 解决方案: 自定义数据集;,2020年7月8日2时4分,39,集成润乾,一、解决项目大批量生成日/月终固定报表文件的需求 解决方案: 自定义数据集;,DataSet ds=new DataSet(); ColInfoBase colInfo = new ColInfoBase(); colInfo.setColName(编号); ds.addColInfo(colInfo); ColInfoBase colInfo = new ColInfoBase(); colInfo.setColName(名称); ds.addColInfo(colInfo); ColInfoBase colInfo = new ColInfoBase(); colInfo.setColName(数据); ds.addColInfo(colInfo); for(int i=0;i4;i+) Row row=ds.addRow(); row.setData(1,(String.valueOf(i)+ID); row.setData(2,(String.valueOf(i)+name); row.setData(3,(String.valueOf(i); ,2020年7月8日2时4分,40,集成润乾,一、解决项目大批量生成日/月终固定报表文件的需求 解决方案: 自定义数据集;,2020年7月8日2时4分,41,集成润乾,一、解决项目大批量生成日/月终固定报表文件的需求 解决方案: 报表配置信息;,2020年7月8日2时4分,42,集成润乾,一、解决项目大批量生成日/月终固定报表文件的需求 解决方案: 报表配置信息;,2020年7月8日2时4分,43,集成润乾,一、解决项目大批量生成日/月终固定报表文件的需求 解决方案: 报表配置信息;,2020年7月8日2时4分,44,集成润乾,一、解决项目大批量生成日/月终固定报表文件的需求 解决方案: 报表配置信息;,2020年7月8日2时4分,45,集成润乾,一、解决项目大批量生成日/月终固定报表文件的需求 解决方案: 程序处理流程。,读取报表配置信息,拆分并发任务,并发查询数据,组织数据集,调用润乾报表引擎,计算报表,输出报表文件,更新报表主表,2020年7月8日2时4分,46,集成润乾,ReportDefine rd = (ReportDefine) ReportUtils.read( reportFile ); DataSetClazz dsc = new DataSetClazz(dataList, columns); DataSet ds = dsc.createDataSet(cxt, rd.getDataSetMetaData().getDataSetConfig(0), true); Context context = new Context(); context.setDataSet(reportDS, ds); Engine enging = new Engine( rd, context); IReport iReport = enging.calc(); ExcelReport er = new ExcelReport(); er.export(sheet1, iReport); er.saveTo(fileOutputStream);,一、解决项目大批量生成日/月终固定报表文件的需求 解决方案: 程序片段:,2020年7月8日2时4分,47,集成润乾,一、解决项目大批量生成日/月终固定报表文件的需求,2020年7月8日2时4分,48,集成润乾,二、解决用户针对已有业务主题的灵活查询的即席展示需求 思路:即席查询采用异步框架调度的方式,结合报表表样,设计raq模板,利用Java API把用户在页面上查询的条件传递给润乾的报表上下文参数,再调用润乾的报表引擎来生成报表,实现报表的查询和下载。 与批量生成的固定报表不同,即席查询的报表一般格式更灵活,条件组合也比较多,因此不适合提前生成所有条件组合的报表。采用异步调度框架来生成报表,也可以大幅度的减少系统的压力。,2020年7月8日2时4分,49,集成润乾,二、解决用户针对已有业务主题的灵活查询的即席展示需求 解决方案: 复杂SQL数据集;,2020年7月8日2时4分,50,集成润乾,二、解决用户针对已有业务主题的灵活查询的即席展示需求 解决方案: 复杂SQL数据集;,2020年7月8日2时4分,51,集成润乾,二、解决用户针对已有业务主题的灵活查询的即席展示需求 解决方案: 程序处理流程。,读取报表配置信息,读取报表模板文件,解析并组装查询条件,调用API传参数,调用润乾报表引擎,计算报表,输出报表文件,更新报表主表,2020年7月8日2时4分,52,集成润乾,二、解决用户针对已有业务主题的灵活查询的即席展示需求,2020年7月8日2时4分,53,集成润乾,引用润乾报表工具之后:,润乾报表引擎,模板文件,配置信息,固定报表引擎,异步报表引擎,组织数据、报表计算,2020年7月8日2时4分,54,集成润乾,目录结构:,JAR包,模板文件,程序代码,2020年7月8日2时4分,55,集成润乾,三、解决需要在前端快速展示的特殊需求 思路:润乾报表工具针对JSP/HTML,提供了taglib嵌入的方式,将报表生成集成到WEB项目中。 本着技术推动业务,完善系统功能的原则,我们提出了这个需求。 解决方案: 嵌入taglib; 在JSP页面中引入润乾提供的标签库: ,2020年7月8日2时4分,56,集成润乾,目录结构:,2020年7月8日2时4分,57,目 录 结 构,一、认识润乾 二、原有实现 三、集成润乾 四、存在缺陷,2020年7月8日2时4分,58,存在缺陷,性能问题: 单就润乾报表的渲染性能来看,单元格的数量越多,分组计算越多,报表生成得越慢。通过实际使用中体会,对raq模板的优化可以提高运行的效率。具体的优化方法目前还没有能够得出权威的结论,需要在以后的工作中进行有针对性的测试。 和原有的生成方式比较,整体报表运行时间相差不大。但是由于需求变更等原因,没有机会对两种方式进行针对性的比较。 上述两个遗留问题是未来工作的重心。,2020年7月8日2时4分,59,存在缺陷,功能问题: taglib嵌入方式的使用欠妥当,如果报表模板的Sql语句较复杂,会造成服务器内存被大量占用的情况,影响整个系统的稳定性; 润乾报表对Excel2007的支持存在问题,测试中发现当数据行数大于5000时,报表无法生成; 分Sheet页导出到Excel时,每个Sheet页最多只有1万行数据,在实际应用中会造成Sheet页过多。,2020年7月8日2时4分,60,目 录 结 构,一、认识润乾 二、原有实现 三、集成润乾 四、存在缺陷,2020年7月8日2时4分,61,介绍完毕! 欢迎各位指正!,Q&A,2020年7月8日2时4分,62,联系方式:,赵海鹏/应用开发一部/软件开发中心/总行机关/ABC,
展开阅读全文