技术主题/数据分析

混凝土测温
数据分析与报表生成

从实时监测、历史曲线、公式引擎到 C5-9 标准报表 —— 让数据说话,让报表可信

大体积混凝土测温每天产生数万条温度数据。如何从海量数据中快速提取关键信息,生成监理认可的标准报表,是所有测温工程师的核心痛点。我们基于 TG 云模式远程测温平台构建了完整的数据分析体系:从实时数据看板到历史曲线追溯,从自定义公式引擎到 C5-9 标准报表,从 ECharts 可视化到 XLS 一键导出。本文逐一拆解这些工具的使用方式和设计思路。

一、数据分析体系总览

TG 云平台的数据分析系统分为四个层次:

层次模块核心能力典型使用场景
L1实时看板仪表盘总览、温度分布图、设备在线率、报警概览日常巡检、快速掌握全局状态
L2历史曲线ECharts 时间序列图、单设备/多通道对比、小时/天聚合、图片打印导出趋势分析、峰值确认、异常排查
L3定制数据自定义数据列(气温/表面/中心/内部最高/温差/降温速率)、公式引擎、24h 前对比多维度温控指标自动计算
L4标准报表C5-9 格式标准报表、多定义管理、日期范围/聚合/步长、XLS 导出竣工验收提交、监理审查签字

二、实时数据看板 —— 全局态势一目了然

Dashboard 是工程师每天打开频次最高的页面。它提供了一屏纵览全局的核心统计:

统计卡片数据来源技术实现
设备统计TG_cjqSetting / DG_cjqSetting 表SQL COUNT + 在线状态轮询
在线率设备最后通信时间 vs 当前时间差值 ≤ 2h 判定在线
温度概览All_LastDt.db(所有设备最新值联合查询)max / min / avg 聚合 + 温度分布 Chart.js 图
报警概览custom_data_alarm 表规则总数 / 已启用数 / 已禁用数
趋势对比上次快照 vs 本次快照在线率 delta / 平均温度 delta

💡 设计考量

Dashboard 的数据查询针对 PostgreSQL 做了大量优化:使用物化视图汇总最新数据避免跨表 JOIN,温度图表采用 Chart.js 轻量渲染(非 ECharts),确保首次加载在 1 秒内完成。

三、历史曲线分析 —— 趋势发现的利器

3.1 单设备历史曲线

每个 TG 设备的数据存储在 PostgreSQL 数据库中(按设备 SN 分表),系统提供分页查询接口和专属曲线页面:

  • 数据查询 APIGET /api/data/history/{dtype}/{sn},支持分页(50 条/页,最大 500 条)、日期范围筛选
  • 曲线页面/data/chart/{dtype}/{sn},32 通道时间序列全量展示
  • 数据完整性:断电续传 + 断网补传机制确保曲线无断点

3.2 多分组历史曲线(ECharts 渲染)

定制数据模块中的历史图表功能,支持按测点分组渲染多条对比曲线:

  • 分组管理:用户可将传感器按"底板测点组 / 承台测点组 / 墩身测点组"等逻辑分组
  • 时间聚合:支持原始数据 / 小时均值 / 天均值三种聚合模式,适应不同分析粒度
  • 可视化交互:ECharts 时间序列图,支持缩放、拖拽、提示框、图例筛选、另存图片、打印图形
  • 数据导出:支持导出单组 XLS 和全部 XLS,方便离线分析

📌 实用技巧

分析降温速率时,建议使用"小时均值"聚合而非原始数据。原始数据由于传感器噪声会产生锯齿波动,小时均值平滑后更能反映真实的降温趋势。

四、公式引擎 —— 数据不用自己算

这是定制数据模块最核心的能力。系统内置了灵活的自定义公式引擎,让工程师像使用 Excel 一样定义数据列,系统自动从海量传感器数据中提取和计算。

4.1 传感器引用语法

语法含义示例
SN_通道号指定设备指定通道的当前值TG01_04 — TG01 设备通道 4 的当前温度
SNB通道号指定设备指定通道的 24 小时前值TG01B04 — TG01 通道 4 的 24h 前温度
max(a, b, ...)取最大值=max(TG01_01, TG01_02, TG01_03)
avg(a, b, ...)取平均值=avg(TG01_01, TG02_01, TG03_01)
abs(x)取绝对值=abs(TG01_04 - TG01_05)
+, -, *, /四则运算=TG01_01 - TG01_02

4.2 默认列定义 + 一键智能填写

系统预置了 9 个标准数据列,覆盖常用的温控指标:

#列名类型智能填写公式
1序号固定自动递增
2日期时间固定取传感器数据时间戳
3分组名称固定取最后通信时间
4气温关键字=气温传感器
5表面温度关键字=表面传感器
6中心温度关键字=max(内部传感器)
7砼内表温差关键字=abs(max(内部) - 表面)
8砼表面与气温差关键字=表面 - 气温
9降温速率(24h)关键字=avg(24h前内部) - avg(当前内部)

用户只需一键点击"智能填写",系统自动根据关键字匹配传感器引用并填充公式,无需手动输入冗长的传感器 ID。

⚠️ 公式调试技巧

系统支持实时预览——点击"计算预览"按钮,立即从数据库拉取最新传感器值代入公式试算,验证公式正确性。如果某个传感器离线挂掉,预览会显示"-"而非报错,方便快速定位问题通道。

4.3 24 小时前数据查询(降温速率核心)

降温速率是温控的关键指标,但计算它需要对比当前值与 24 小时前值。系统通过 B 后缀引用(如 TG01B04)实现:

  • 查询每个设备最新数据的时间戳(IDATETIME 字段),以此为基准向前推 24 小时
  • 从 PostgreSQL 数据库中查询最接近该时间点的记录
  • 将结果注入公式引擎替换 B 后缀引用,参与最终计算

这种设计保证了降温速率的计算不依赖持续 24 小时的连续数据——即使中间有通信中断(断网补传),系统仍能找到最接近 24 小时前的有效数据点。

五、C5-9 标准报表 —— 竣工验收的关键输出

C5-9 是大体积混凝土测温最核心的交付物。它是 GB 50496 附录中规定的《大体积混凝土测温记录表》,监理验收时必须签字存档。我们完整实现了该表格的自动生成。

5.1 报表结构

区域内容数据来源
工程信息区工程名称、施工单位、测温部位、测温方式、养护方法、编号用户手动填写(一次配置,多张报表复用)
表头定义区测点编号 + 测温时间 + 各测点温度 + 气温 + 蓄热养护温度系统自动配置(根据测点数量和传感器绑定关系)
数据区每行一条记录,含时间戳 + 所有通道温度值TG.db 实时查询 + 聚合(原始/小时均值/天均值)
签名区复核意见 + 技术负责人 / 工长 / 测温员 + 制表日期用户填写 + 日期自动生成

5.2 报表配置工具

  • 多定义管理:一个项目可以有多个报表定义(不同浇筑部位、不同养护方式),互不干扰
  • 日期范围 + 聚合 + 步长:选择任意时间范围,支持原始数据 / 小时均值 / 天均值聚合,步长 N 可跳行显示(如每 4h 取 1 行用于打印)
  • C5-9 预览 APIPOST /api/custom-data/c59-preview,传入报表定义 ID + 日期范围,返回完整的填空后数据行
  • 独立展示页面/custom-data/c59-report,A4 打印优化布局,默认隐藏按钮栏

5.3 导出能力

导出方式技术方案适用场景
XLS 导出SheetJS (xlsx 0.20.0),CDN 懒加载,table_to_sheet 转换提交监理审查、盖章归档
网页打印@media print CSS 优化,A4 纵向,隐藏 UI 控件现场打印签字、纸质存档
曲线图片ECharts 原生 getDataURL 导出 PNG插入方案报告、PPT 汇报

💡 监理认可的关键

C5-9 报表使用 SheetJS 库将 HTML 表格直接转为 XLSX,保留原始格式(合并单元格、边框、字体)。导出后的 XLS 文件与 GB 50496 附录表格格式一致,监理签字的接受率接近 100%。

六、数据可靠性与完整性保障

数据分析的基础是数据质量。TG 系统从三个层面保障数据可靠:

保障机制实现方式效果
断电续传TG 终端内置 EEPROM + TF 卡双存储,断电后恢复自动补传零数据丢失
断网补传4G 信号中断时数据暂存本地,网络恢复后按时间戳顺序回传无断点曲线
传感器校准出厂逐点校准,±0.2℃ 精度,可附 CNAS 证书数据源头可信
数据冗余硬盘备份 + 蓝牙转存(TF 卡本地备份),多副本保障多重容灾

七、报表系统的后端设计要点

报表系统的后端(custom_data.py,约 1455 行)是整个平台最复杂的模块之一。以下是几个关键技术决策:

7.1 PostgreSQL 配置存储 + JSON 序列化

报表配置、图表表头、报警规则等用户自定义数据,均以 JSON 格式存储在 PostgreSQL 的 JSONB 字段中。这样做的好处是:

  • 配置结构灵活,无需 ALTER TABLE(每个用户的列定义可能不同)
  • JSON 直接在前后端之间传递,无需额外序列化/反序列化
  • PostgreSQL 集中式部署,单库管理所有项目数据,支持主从复制与自动备份

7.2 多数据库联合查询

一个报表可能涉及多个 TG 设备的数据——每个设备的数据存储在同一 PostgreSQL 数据库中(按设备 SN 分表)。系统通过 UNION ALL 或跨表 JOIN 直接联合查询,无需 ATTACH/DETACH 操作,天然支持并发访问。

7.3 聚合查询优化

对于历史图表的大时间跨度查询(如 30 天),直接查原始数据返回数万行会导致前端渲染卡顿。系统在后端 SQL 层直接执行聚合:

-- 小时均值聚合(每个传感器通道)
SELECT strftime('%Y-%m-%d %H:00:00', 
       REPLACE(IDATETIME, '#', '')) as dt_hour,
       AVG(WD01), AVG(WD02), ..., AVG(WD32)
FROM sheet1 
WHERE dt_hour BETWEEN ? AND ?
GROUP BY dt_hour
ORDER BY dt_hour

这套机制将前端渲染量从数万条降至最多 720 行(30 天 × 24 小时),图表加载从 5 秒降至 500ms。

📋 结语

数据分析不是目的,让数据产生决策价值才是目的。TG 云平台的数据分析体系围绕三个"快"字设计:看板刷新快(1 秒全局态势)、趋势发现快(ECharts 缩放比 Excel 拖拽快 10 倍)、报表出得快(一键生成 + 一键导出)。对于测温工程师来说,这意味着把更多时间花在分析数据含义上,而不是花在制表和画图上。