前言
前面解决了水质 "怎么采样、怎么检测、怎么出报告",决策报表回答最后一个问题:这些业务数据怎么沉淀成管理者能直接看、能对比、能决策的报表。它不是另起炉灶建一套报表库,而是直接在采样任务、检测数据、检测报告、监测设备四张业务表之上做实时统计 ------ 日报掌握底数、月报看同比环比、年报支撑规划,自定义报表应对临时分析需求。
最近研读决策报表模块中 "水质报表" 的需求文档,它严格沿用 "自定义报表 + 自动生成时间尺度报表(日 / 周 / 月 / 季 / 半年 / 年)" 的双模式架构,且无独立报表数据库表。本文延续系列分享,梳理其业务架构、核心闭环与设计亮点。
一、系统整体架构总览
水质决策报表层延续同一套四层架构:
- PC 管理操作端:面向决策分析员、管理专员、领导与管理层,完成自动开关配置、报表生成、自定义筛选、查看分析、导出、编辑删除全业务处理;
- 移动查看层:领导与管理人员移动端查阅周期报表、核心指标速览;
- 数字驾驶舱 & 决策分析看板:全域水质达标率、采样完成率、检测及时率等指标卡片,水质等级分布、各区域指标对比、核心指标周期趋势、水质等级占比一屏统揽;
- 数据底座层:不建独立报表库,直接基于 sample_task(采样任务)、test_data(检测数据)、test_report(检测报告)、device_info(监测设备)四张业务表实时 SQL 统计。
水质决策报表层延续并强化的设计原则:
- 双模式报表:自动定时生成(开关可持久化启停)+ 自定义手动生成(全字段多维筛选);
- 六时间尺度分级:日、周、月、季、半年、年逐层加码,信息密度与分析深度递进;
- 无独立建表:报表由业务表实时 SQL 聚合生成,数据随业务数据实时同步,避免口径割裂;
- 全业务闭环:生成→查看→筛选→导出,报表生命周期完整;
- 钻取联动:看板指标点击下钻明细,自定义筛选组合灵活;
- 全程留痕:生成、导出、编辑、删除操作自动留存审计日志。

二、核心业务模块拆解
(一)报表生成与开关管控
- 自动生成开关:支持手动开启 / 关闭报表定时自动生成功能,配置状态持久化保存;开启后系统按预设时间节点自动采集业务表数据生成对应周期报表;
- 六时间尺度自动生成:系统按日、周、月、季、半年、年固定周期自动生成报表,台账自动新增对应行;台账固定展示报表 ID、类型、时间尺度、统计周期、生成时间、状态等核心字段;
- 手动触发生成:可手动触发生成当前周期报表,补齐定时任务遗漏;
- 自定义报表配置:支持按点位、时间、指标、区域等全字段多维度手动筛选,灵活组合查询条件,生成后新增列表行,留存生成条件与操作人溯源信息。
(二)分级报表维度
- 日报:展示当日全域水质达标率、采样完成率、检测及时率等基础运行数据,快速掌握当日水质底数;
- 周报:补充周度各区域采样完成率对比、指标周度变化;
- 月报、季报、半年报:新增同比、环比分析,展示核心指标周期趋势,对比各区域水质等级与指标差异;
- 年报:汇总全年业务全貌,支撑年度水质管控规划与资源投入决策;
- 自定义报表:应对专项分析(如某流域上半年水质变化),灵活组合点位、时间、指标、区域。

(三)报表查看、导出与编辑删除
- 报表查看与钻取:在页面内查看报表详情、分析同比环比数据;配套可视化看板包含全域水质达标率 / 采样完成率 / 检测及时率卡片、水质等级分布、各区域指标对比柱状图、核心指标周期趋势折线图、水质等级占比饼图,指标支持钻取筛选;
- 报表导出:支持导出 Excel/PDF 格式报表,按报表类型与周期自动命名;
- 编辑与删除:自定义报表生成后支持编辑筛选条件、删除冗余报表;所有操作均在页面内完成,无跨页面跳转。
(四)数据底座与松耦合
- 无独立报表库:报表基于 sample_task、test_data、test_report、device_info 等业务表 SQL 统计生成,不另建报表数据库;
- 数据实时同步:报表数据随业务数据实时更新,避免数出多门;
- 松耦合关联:报表模块独立配置管理,与采样、检测、报告模块解耦,上游数据变化自动反映到报表。
三、手机端(移动查看层)
- 领导移动端:日报核心指标速览、关键周期报表查阅、异常指标提醒;
- 管理专员移动端:报表查看、导出任务跟踪、自定义筛选发起。
四、外部系统对接(数据底座)
直接读取采样任务表、检测数据表、检测报告表、设备信息表实时统计;报表生成失败自动重试与告警;导出文件自动命名归档。
五、水质决策报表层,值得产品和开发思考的几个问题
- 大报表查询性能:六时间尺度 × 多区域 × 多指标的实时 SQL 聚合,如何通过预聚合、物化视图、定时快照保证生成时效?
- 口径统一:达标率、采样完成率、检测及时率的统计口径如何在四张业务表间对齐,避免指标含义漂移?
- 定时任务编排:日报、周报、月报等定时生成任务如何错峰执行、失败重试、漏报补生成?
- 自定义报表安全:全字段自由筛选如何控制权限边界、防止慢查询拖垮业务库?
- 报表留存策略:自动生成报表与自定义报表的留存周期、冗余清理(如年底删除无用自定义报表)如何设计?
- 钻取深度:看板指标下钻到业务明细的层级与性能如何平衡,避免层层穿透造成查询过载?