概念
UReport2是一款基于架构在Spring之上纯Java的高性能报表引擎,通过迭代单元格可以实现任意复杂的中国式报表。相比UReport1,UReport2重写了全部代码,弥补了UReport1在功能及性能上的各种不足。
在UReport2中,提供了全新的基于网页的报表设计器,可以在Chrome、Firefox、Edge等各种主流浏览器运行(IE浏览器除外)。使用UReport2,打开浏览器即可完成各种复杂报表的设计制作。
Report2是第一款基于Apache-2.0开源协议的中式报表引擎,Github地址:https://github.com/youseries/ureport
报表分类文档类报表,统计类报表。文档类的报表根据文档编码显示文档详情,如根据病案ID显示某个具体的病案首页;统计类报表按查询时间段统计某种分类信息,如2022年医院各种收入金额。
报表设计
查询逻辑设计
配置某个报表取数方法。涉及到单表取数与多表取数,多表取数配置多个表单信息。
功能说明
步骤:
右键报表信息点击新增;
2、填写新增页面信息;
填写页面编码与页面名称时,需要与与其他页面编码不同,具有唯一性。
根据需求选择页面布局,填写页面顺序号、联动数量和备注。
3、自动生成子页面信息;
首先点击左边新增的页面,然后选择一条子页面信息,再点击页面中自动生成页面功能,在弹出框处理物理表中填写物理表后,点击保存。
4、修改子页面信息;
自动生成子页面后,可选择已生成的子页面点击上方修改按钮,修改子页面信息,可根据需求修改查询sql和汇总sql。
5、获取关联代码或字段;
自动生成子页面信息后,有部分字段需要配置关联代码或字段,需进入集成平台中心端标准代码中获取,可在搜索框中填写关键信息,获取编码。
6、根据需求配置关联代码或字段。
获取编码后,选择需要配置关联代码或字段的字段显示信息,点击修改按钮,将获取的编码填入关联大妈或字段的输入框后,点击保存。
特殊说明
自动生成查询逻辑配置
展示为主从数据的报表配置
文档类展示报表配置,每一个表的字段信息都要加上doccode参数,通用外用传参。
修改了查询逻辑页面设计中看不到字段信息
页面设计中要显示代码名称配置
页面设计
进入报表系统里的报表管理-开发管理,点击页面设计的菜单进行设计。
地址:http://192.168.100.19:6060/report/ureport/designer
2.选择内置的数据源,选择要设计的数据源(后台CDR中添加的数据集);
3.选中要设计的表格(如A1),双击数据源中的字段表示该单元格显示数据源对应字段的数据;
4.设计完成以后可以通过点击左上角预览功能来查看报表。
常用函数
分组举例
选中要分组的列,在属性框选择分组项,同时展开方向向下,如图:
预览图如下:
函数举例
单元格类型选择表达式
count函数(统计数量)
count函数是对给定的表达式在计算后对象数量进行统计。
示例 | 说明 |
---|---|
count(C1,C2) | 统计相对当前所在单元格,目标C1单元格以及C2单元格加在一起的数量 |
count(C1) | 统计相对当前所在单元格,目标C1单元格数量 |
count(C1{age>20},C2{salary>2000 and degree=='本科'}) | 统计相对当前所在单元格,目标C1单元格绑定对象的age属性大于20的C1单元格以及C2单元格绑定对象的salary属性大于2000同时degree属性等于本科的单元格数量 |
count(C1{age>20}) | 统计相对当前所在单元格,目标C1单元格绑定对象的age属性大于20的C1单元格数量 |
sum函数(累加)
sum函数是对给定的表达式在计算后值进行累加,sum函数要求各个表达式计算后的值必须是数字,否则将产生错误。
示例 | 说明 |
---|---|
sum(C1) | 相对当前单元格,取到所有C1单元格值进行累加 |
sum(C1{age>20}) | 相对当前单元格,取到所有绑定对象属性age大于20的C1单元格值进行累加 |
sum(C1,C2) | 相对当前单元格,取到所有C1和C2单元格的值进行累加 |
sum(C1{age>20},C2{salary>2000 and degree=='本科'}) | 相对当前单元格,取到所有绑定对象属性age大于20的C1单元格值以及绑定对象属性salary大于2000且degree属性等于本科的C2单元格的值进行累加 |
avg函数(求平均值)
avg函数是对给定的表达式在计算后值求平均值,avg函数要求各个表达式计算后的值必须是数字,否则将产生错误。
示例 | 说明 |
---|---|
avg(C1) | 相对当前单元格,求C1单元格的平均值 |
avg(C1{age>20}) | 相对当前单元格,取到绑定对象属性age大于20的C1单元格值的平均值 |
avg(C1,C2) | 相对当前单元格,求C1和C2单元格的平均值 |
avg(C1{age>20},C2{salary>2000 and degree=='本科'}) | 相对当前单元格,取到所有绑定对象属性age大于20的C1单元格值以及绑定对象属性salary大于2000且degree属性等于本科的C2单元格的值进行求平均值 |
max函数(求最大值)
max函数是对给定的表达式在计算后值求其中的最大值,max函数要求各个表达式计算后的值必须是数字,否则将产生错误。
示例 | 说明 |
---|---|
max(C1) | 相对当前单元格,求C1单元格的最大值 |
max(C1{age>20}) | 相对当前单元格,取到绑定对象属性age大于20的C1单元格值的最大值 |
max(C1,C2) | 相对当前单元格,求C1和C2单元格的最大值 |
max(C1{age>20},C2{salary>2000 and degree=='本科'}) | 相对当前单元格,取到所有绑定对象属性age大于20的C1单元格值以及绑定对象属性salary大于2000且degree属性等于本科的C2单元格的值进行求最大值 |
min函数(求最小值)
min函数是对给定的表达式在计算后值求其中的最小值,min函数要求各个表达式计算后的值必须是数字,否则将产生错误。
示例 | 说明 |
---|---|
min(C1) | 相对当前单元格,求C1单元格的最小值 |
min(C1{age>20}) | 相对当前单元格,取到绑定对象属性age大于20的C1单元格值的最小值 |
min(C1,C2) | 相对当前单元格,求C1和C2单元格的最小值 |
min(C1{age>20},C2{salary>2000 and degree=='本科'}) | 相对当前单元格,取到所有绑定对象属性age大于20的C1单元格值以及绑定对象属性salary大于2000且degree属性等于本科的C2单元格的值进行求最小值 |
其它功能
链接实现
为单元格设置链接的url,比如url配置为:/user/index,目标窗口选择新窗口时,预览报表时点击该单元格,就将跳转http://192.168.100.19:6060/report/user/index。
配置URL上传递的参数
若获取当前单元格的数值作为参数,则值表达式应为:# 若获取当前单元格的对象的其他属性作为参数,则值表达式为:#.属性名称 若获取外部传进报表的参数作为参数,则值表达式为: param(“参数名称”)
分页功能实现
在B4单元格我们将其补充空白行属性打开,并设置数据行倍数为10,同时选中B4单元格,点击条件属性的配置条件按钮,可以看到我们也为其配置了一个条件,
如下图所示:
这里的条件配置&B4 % 10就是拿B4单元格展开后的行号值与10除求余,看余数是否等于0,如果是就在这个单元格所在行后进行分页。
运行后的报表如下图的所示:
查询条件配置
定义好含有命名参数的 SQL,这样就可以实现诸如当有参数传入 SQL 时,就取该参数过滤后的结果集,如果没有该参数传入时则取所有数据集需求。注意:如果SQL中包含单引号包裹的字符串,那么需要加上“\”来为单引号转义,否则会出现语法错误。
示例如下图所示:
参数的数据类型要求配置参数时定义好参数的数据类型, 是为了与数据库中定义的字段的数据类型匹配。参数说明如下:
参数各字段 | 说明 |
---|---|
参数名 | 对应的命名参数名称,比如上面的 paient_name等 |
数据类型 | 当前参数在数据库中定义的数据类型。UReport2 中对应的数据类型有六种,分别是:String、Integer、Float、Boolean、Date 和 List。 |
默认值 | 当前外部没有为这个命名参数提供值的时候将采用这里提供的默认值来填充 SQL。 还需要注意的是,如果 SQL 中有命名参数,那么一定义配置好参数的默认值,否则将无法为对应的SQL数据集生成对应的表字段。 |
定义好含有命名参数的 SQL 后,在下面的参数配置区域进行配置 SQL 中用到的命名参数,当然如果你的 SQL 中没用到命名参数,就不需要配置了。
点击报表模版设计器工具栏上如下图所示按钮
设计器设计方式采用直接拖曳方式,将布局或输入组件拖到画布上即可。对于输入类型的组件来说,在将其拖曳到画布后,可通过点击将其选中,然后切换到"属性"页即可对这个输入组件的属性进行调整,需要注意的是,所有的输入组件都需要配置其绑定的查询参数,否则将 HTML 预览页将不能提交查询,这里要选择的绑定查询参数,就是我们在SQL数据集里配置的参数查询,如果不配置,那么这里将无法选择。如下图所示:
通过点击预览验证是否显示正常,选中patient_id然后点击提交查看报表数据是否刷新。
第三方系统集成
内部集成
与360集成
1、配置报表:报表设计完成后,在门户后台中文档类别归类给对应的文档配置报表名称来绑定对应的报表。
2、360验证:在医师门户的病人里面通过点击病人360视图对应的文档打开报表查看报表数据是否正确显示。
与Datart集成
报表配置:首先需要配置好病人列表下转的报表,然后根据实际场景配置跳转的病人列表,将下转的报表地址配置到病人列表中。
参数配置说明:
若获取当前单元格的数值作为参数,则值表达式应为:# 若获取当前单元格的对象的其他属性作为参数,则值表达式为:#.属性名称 若获取外部传进报表的参数作为参数,则值表达式为: param(“参数名称”)
跳转配置:在datart仪表板编辑单个指标进入编辑模式,然后点击单个指标后面的小蓝点并进入跳转设置,在跳转设置中选择内部报表,在报表地址里配置病人列表跳转的报表名称(只需要修改“_u=”后面的报表名称)。
报表地址说明:“_u=”后面加的参数是报表名称。
Datart验证: 点击datart仪表板下面配置了跳转设置的指标,找到配置了跳转设置的指标,点击有数据的柱形图打开报表查看是否有数据。在打开的病人列表报表里点击一个病人的病案号,查看打开的病案首页数据是否是对应病人的数据。
检查打开的病人列表报表数据是否显示正确。
检查打开的病人病案首页数据和病人列表里点击的病人数据是否一致。
菜单调用
配置报表:首先需要配置好病人列表下转的报表,然后根据实际场景配置跳转的病人列表,将下转的报表地址配置到病人列表中。
URL参数配置
配置菜单:参考门户统一授权文档新增菜单并配置授权,其中菜单的请求地址配置,报表名称与新增的报表必须一致。报表地址说明:“_u=”后面加的参数是报表名称。
验证菜单:点击新增的菜单查看报表数据是否显示正常。
外部集成
第三方调用
配置报表:首先需要配置好病人列表下转的报表,然后根据实际场景配置跳转的病人列表,将下转的报表地址配置到病人列表中。
URL参数配置
地址调用:第三方直接通过调用平台给的地址进行使用。
地址参数说明:
参数 | 说明 |
---|---|
_u | 后面加的参数是报表名称 |
Icdclass | 表示指标的字段名称 |
daydate | 表示查询的年份 |
begindate | 表示开始查询的时间 |
enddate | 表示最后查询的时间 |
orgcode | 表示机构代码 |