文档首页 / 后处理脚本与计算字段

后处理脚本与计算字段

SQL 与 API 数据集的「后处理脚本」(查询后用脚本处理结果集)和「计算字段」(按行表达式,最多 10 个)。

概述

数据集查询得到结果后,可以再做两类加工:

能力 作用 适用类型
后处理脚本 对整个结果集做过滤、排序、改写 SQL、API
计算字段 按行增加新字段 SQL、API、内置、派生、运行时注入

平台没有独立的「脚本数据集」类型;脚本能力由这两项、派生数据集的「脚本处理生成」(见 派生数据集)以及 SQL 中的 #{}、${} 承担。执行顺序是:查询,后处理脚本,计算字段,之后才是报表中的过滤。

功能入口

「编辑数据集」或「编辑API数据集」对话框中的「后处理脚本」「计算字段」标签页。

操作步骤

后处理脚本

  1. 打开「后处理脚本」标签页。
  2. 编写脚本。$$data 是原始结果(List<Map>),$参数名 是报表参数。
  3. 脚本必须 return 处理后的列表。
  4. 点击「数据预览」验证,预览会依次应用后处理脚本和计算字段。

计算字段

  1. 打开「计算字段」标签页,点击「添加计算字段」,填写字段名、类型、表达式。
  2. 点击「校验」检查表达式,「校验全部」检查全部。
  3. 每个字段可「编辑」「删除」。

属性说明

后处理脚本约定

项 说明
$$data 原始结果,List<Map>
$参数名 报表参数
返回值 必须是 List<Map>;返回其他类型会被忽略
超时 配置项 script.postScript.timeoutSeconds,默认 30 秒

计算字段

属性 说明 取值
数量 每个数据集最多 10 个,超过时提示「最多添加 10 个计算字段」 上限 10
字段名 新字段名 文本
类型 字段类型 字符串、数值、整数、浮点数、日期、日期时间、布尔
表达式 当前行字段写作 $$record['字段名'],报表参数写作 $参数名 受限表达式

表达式中只允许下列函数(括号内为参数个数):

类别 函数
数值 round(1-2)、ceil(1)、floor(1)、abs(1)、min(2 个以上)、max(2 个以上)、formatNumber(2)
空值 ifNull(2)、ifEmpty(2)、coalesce(2 个以上)
文本 concat(1 个以上)、upper、lower、trim、substring(2-3)、replace(3)、left(2)、right(2)、length
日期 formatDate(1-3)、formatDateTime(1)、year、month、day

示例

后处理脚本:只保留费用大于 0 的记录,并按费用降序(假设结果含 fee 字段):

return $$data.filter(item => item.fee > 0).sort((a, b) => b.fee - a.fee);

计算字段:门诊费用含税价,fee 为数据集字段,rate 为报表参数:

round($$record['fee'] * (1 + $rate), 2)

姓名为空时显示占位:

ifNull($$record['patient_name'], '未登记')

注意事项

注意:脚本返回的不是 List<Map> 时结果被忽略,看起来就像脚本没有生效,遇到这种情况先检查返回值。

提示:能在 SQL 里完成的过滤和计算,优先写在 SQL 中,由数据库完成。脚本只用于 SQL 难以表达的逻辑。

相关文档

联系我们

请填写您的信息,我们将在 1 个工作日内与您联系。