报表服务
服务简码
HRPT
默认端口
8210
组件编码
hzero-report
简介
1.1 概述
通过配置数据集,通过SQL查询方式的平面报表、单据报表、图形报表的服务
1.2 组件坐标
- OP版本
<dependency>
<groupId>org.hzero</groupId>
<artifactId>hzero-report</artifactId>
<version>${hzero.service.version}</version>
</dependency>
- SaaS版本
<dependency>
<groupId>org.hzero</groupId>
<artifactId>hzero-report-saas</artifactId>
<version>${hzero.service.version}</version>
</dependency>
1.3 主要功能
- 数据集管理
- 报表定义
- 报表查询
- 报表模板管理
- 其他报表使用的API
1.4 服务配置参数
# 生成报表时,每页允许的最大数量,默认值100000
hzero.report.maxRows
# 字体文件的文件路径
hzero.report.fontPaths
# 服务使用的文件存储桶的名称
hzero.report.bucketName
# 服务使用的文件存储文件夹的名称
hzero.report.outputDirectory
开发指导
2.1 数据集sql类型
- 标准sql
标准sql
适用于简单的数据查询,例如单表查询等。sql语句的编写为通用sql写法,sql的参数使用${}
做为占位符。
例:
SELECT
template_code,
template_name,
template_title,
template_content
FROM
hmsg_message_template
WHERE
template_code like '%${templateCode}%'
AND
template_name like '%${templateName}%'
- 脚本sql
脚本sql
适用于较复杂的数据查询,例如头行结构查询。脚本sql
使用报表平台自定义的语法结构,sql的参数也使用${}
做为占位符。
语法提供了select``column``from``where
四种标签。select
标签需要指定name
属性,且不可重复
头行结构示例:
<select name="head">
<column>
hts.temp_server_id,
hts.tenant_id,
hts.message_code,
hts.message_name,
hts.enabled_flag
</column>
<from>
hmsg_template_server hts
</from>
<where>
hts.message_code like '${messageCode}'
</where>
<select name="line">
<column>
htsl.temp_server_line_id,
htsl.temp_server_id,
htsl.type_code,
htsl.template_code,
htsl.server_id,
htsl.remark
</column>
<from>
hmsg_template_server_line htsl
</from>
<where>
htsl.temp_server_id = {{TEMP_SERVER_ID}}
</where>
</select>
</select>
为了简化sql,子查询可以直接使用上一级sql查询出的结果,使用{{}}
作为占位符,字段名为数据库字段的大写
2.2 报表数据隔离
sql中可以使用一些预定义参数来获取当前用户的信息,可用于数据隔离
例如:
select user_id, name from user where user_id='${u-userId}'
在数据集管理功能中,以u-
开头的自定义参数,不会是被初始化为参数
以下为所有预定义参数:
字段名 | 含义 |
---|---|
u-userId | 当前用户Id |
u-language | 当前会话语言 |
u-roleId | 当前角色Id |
u-roleIds | 当前会话可访问的角色集合 |
u-tenantId | 当前租户 |
u-tenantIds | 当前会话可访问的租户集合 |
u-organizationId | 所属租户 |
2.3 定义报表模板
- HTML模板 报表的格式要求不高时建议使用此类型模板
示例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head >
<meta charset="utf-8" />
<style>
body{ padding:0; margin:0; font-family:SimHei;}
</style>
</head>
<body>
<table cellpadding="0" cellspacing="0" border="1">
<thead>
<tr align="center">
<th width="300px">公司名称</th>
<th width="200px">公司编码</th>
<th width="100px">汉得</th>
<th width="100px">中台</th>
<th width="100px">产品</th>
</tr>
</thead>
#foreach( $elem in $DATA)
<tbody>
<tr class="hreport-row">
<td class="hreport-fixed-column">${elem.COMPANY_NAME}</td>
<td class="hreport-fixed-column">${elem.COMPANY_NUM}</td>
<td><font color="red" size="5">帅</font></td>
<td><font color="green" size="5">到</font></td>
<td><font color="blue" size="5">爆</font></td>
</tr>
</tbody>
#end
</table>
</body>
</html>
-
RTF模板 为了简化模板开发,可以安装offic的BI Publisher插件,下载地址
安装成功后word会新增一个功能如图:
1.使用数据集
的xml示例
功能,获取一个可用的xml数据文件
2.点击word中的示例XML
,导入数据
3.点击所有字段
按钮,即可生成一个最初的rtf模板文件,根据需求调整模板的样式即可
4.offic提供了预览功能,可以导出多种文件格式 -
EXCEL模板
EXCEL模板与RTF模板类似,是在excel中进行编辑的
需要注意的是: 报表平台的字体默认只支持黑体,若报表打印时,出现乱码,很可能是字体缺失
用户可以自定义需要的字体:
1.将所有需要的字体文件上传至报表服务所在服务器
2.ymal文件中指定字体名称和字体文件的绝对路径
hzero:
report:
fontPaths:
- 宋体|C:\Windows\Fonts\simsun.ttc