基于算法库的自定义水情报表功能设计与实现

2022-01-12 08:56崔彦萍牛智星司存友
水利信息化 2021年6期
关键词:水情报表表格

崔彦萍 ,牛智星 ,司存友

(1. 江苏省水文水资源勘测局,江苏 南京 210029;2. 江苏南水科技有限公司,江苏 南京 210012)

0 引言

报表一直是水文分析最直观快速的服务产品[1],分为固定和自定义 2 种报表[2]:固定报表开发好后一般不易更改;自定义报表是一种动态形式的报表,可以根据需要定制报表格式并实时完成,在现今的管理信息系统中,应用需求越来越多[3]。报表工具的实现技术也不断创新和完善,由于互联网和 Web 技术的飞速发展,Web 的报表工具的研究与应用[4-5]越来越多,目前 Web 报表工具的实现技术也较多,如 COM 组件[6-7]、ActiveX 插件[8]、XML 的无插件[9]等技术。水文报表数据之间比较独立,统计分析方式各不相同,整个报表数据复杂,不仅要考虑实现技术,更要考虑数据的获取和统计分析。

因此,在现有江苏省实时雨水情分析评价系统平台上设计一套自定义报表系统,在浏览器界面可以设计任意格式报表或文档模板,通过调用算法库[10]中的函数获取各类统计分析雨水情数据,快速配置实现各类雨水情分析统计,一键生成分析成果,提升雨水情分析效能,摆脱手工作业的落后局面。

1 自定义报表功能设计要求

基于实时雨水情数据库[11]、特征库[12],进行自定义报表系统设计。主要设计要求如下:

1)参数设置,包括日期、时间(精确到 h)、站点等的设置。

2)查询页面设计,配置好的报表可以任意选取时间查询。

3) 将界面设计成一个符合 Word 样式的配置界面和操作风格,且保有常用工具,表格能导出 Excel 格式,文档能导出 Word 或 PDF 格式。

4)报表数据的获取,要提供友好的交互界面,方便用户配置各种分析数据。

5)构建算法库及其配置系统,根据日常工作需求,建立雨水情分析算法库。使用过程中用户也可以在此系统中创建新的函数,供其他用户在自定义报表中使用。

自定义报表是面向不可预见专题分析需求而随时配置的报表,支持 Oracle 函数、Java 和 SQL 语言,表格配置应可视化,所见即所得,支持简单时间条件相关函数,方便配置。配置好的报表可以任意修改,满足一个专题不断变化的需求。

2 自定义报表技术实现方法

江苏省实时雨水情分析评价系统是基于WebGIS,以 B/S 为主,C/S 为辅的网络结构模式,且是把 B/S 和 C/S 2 种方式的优势互补,将地图空间信息和属性信息有机结合起来的网络化地理信息系统。自定义报表系统是江苏省实时雨水情分析评价系统的子系统,采用 B/S 设计,通过连接实时水情库、特征库和应用方法库,自动扩充用户报表,配置出复杂个性的图文并茂的报告。

自定义报表系统前台界面使用专业的 MiniUI 网页界面集成框架,提供高度的稳定性、强大的扩展能力。网页界面集成框架采用 HTML,CSS(样式格式描述语言)和 JavaScript 技术,加入 JSP 动态网页技术。Web 客户端通过 Struts 2 框架实现与服务器互动信息返回,Web 服务器以 Tomcat 为基础,采用 Java 技术构建服务器应用程序,通过 Spring 框架程序中的 Hiberbate 实现与数据库的通信,并最终返回客户端浏览器的请求。同时自定义报表系统还扩展一个开源的 Web 编辑器 CKEditor,CKEditor 有很好的扩展性及比较稳定的性能、全面的 API 文档,可以方便地进行插件的开发、调用,因此在 CKEditor 基础上实现算法模板、方法属性、参数设置、站群管理等插件的开发,最终呈现一个具有水文特色的实时雨水情报告模板设计器。自定义报表体系结构图如图1 所示。

图1 自定义报表体系结构图

自定义报表工具采用开发的动态自定义报表引擎,界面使用 HTML、JSP 动态网页技术、FreeMarker 模板及 ftl(模板文件存储格式),利用 CKEditor 作为集成编辑环境,开源的 EChart 作为插图组件,绘制折线图、柱状图、散点图、饼图、地图、仪表盘及漏斗图,同时支持任意维度的堆积和多图表混合展现等功能,这样设计的自定义报表系统可以配置插入各种形式的图表。自定义报表工具以 CKEditor 作为基础进行二次开发,可以通过在浏览器中自由编辑设计内容,达到用户对自定义的需求。而且在 CKEditor 的基础上增加单点、表格、自定义表格、chart(Echart)等插件的开发,可以满足用户绝大多数的报表需求。

通过模板 + Excel Web 标准接口技术,以配置模板的方式,可导出出版级别的报表。

3 自定义报表核心内容构建

江苏水文自定义报表系统的开发与实现,最核心的内容就是水情算法库的建立,支撑整个报表各种统计分析数据的实现。水情算法库基于江苏省实时雨水情数据库和特征库,实现各种雨水情数据的复杂统计分析,创建的函数可以调用 Oracle 数据库中的内置函数,也可以调用创建的函数。创建的函数存贮在 Oracle 数据库中,大大提高了计算速度。配置自定义报表时直接调用相应的函数,只需输入参数即可,一般制表人员易操作配置。水情算法库包含 18 类函数,目前有上百种函数(使用过程中根据新的需求还可以继续扩充),基本涵盖了水情日常工作使用需求,包括极值、时段累计、同期、期初期末、特征值、排位等函数。

报表模板设计好后,静态文字或数字可以直接编辑,动态数据可以通过调用函数获取。例如多站时段累计函数,此函数针对泵站,调用时输入站码和起始时间,就可以计算水量。相关函数如下:函数名(参数列表)为 JSSTOTALLSL(STCDS IN VARCHAR2,BGTM IN VARCHAR2,EDTM IN VARCHAR2),调用例子为工作 Call JSSTOTALLSL(‘51005652,51005653,51005654,51005655’,‘2021-02-16 08:00:00’,‘2021-03-16 08:00:00’),返回结果为 45.5。

4 自定义报表系统实现与结果展示

以南水北调报表为例,每天监测江苏省南水北调水量并进行统计,报表涉及主要湖泊水位、沿线重要节点水量和泵站水情等内容。根据需求设计模板,报表模板及相应数据配置好后,每天 8 时直接点击查询按钮相应数据就自动更新,然后导出 Excel,Word 或 PDF 模板分发给相关单位或部门,以便对水位、流量及水量数据进行实时检测,查验调度方案与实际运行效果进行对比分析。

配置自定义报表关键流程节点如下:首先新建报表界面;其次设置参数(时间、站点参数);然后根据报表需求设计报表模板,静态的文字和数据可以直接编辑,动态数据可以插入数据、表格、自定义表格。具体报表实现时先点击自定义报表按钮插入自定义表格,编辑输入静态文字数据,单元格动态数据设置动态值后输入脚本,脚本可以是构建的函数也可以是 SQL 语句;然后点击“预览”按钮,在预览表格中生成数据;再点击“确定”按钮即可生成报表。自定义表格配置界面如图2 所示,此时界面单元格显示 SQL,配置完点击“确定”按钮显示完整的数据表格。南水北调水量统计呈现成果示例如图3 所示,文本中黄色区域和表格中的数据都是动态的,每天只要点击查询按钮,动态数据就可根据日期更新,调水期间每天一键导出,呈报相关部门,监控沿线水位、翻水量及调水计划完成率,方便快捷。

图2 自定义报表-插入自定义表格及动态数据配置

图3 自定义报表成果示例

水文上,经常有阶段性汛情、旱情、台风、水资源配置等,而且各种水情形势是变化的,自定义报表工具就是根据这种复杂多变的雨水情形势而产生的。一旦有洪涝、旱情、台风等发生,就根据相关需求设计自定义报表模板并进行配置,配置好的报表可以一键生成导出,相应的动态数据根据查询参数是实时更新变化的,成果提供给所需部门和领导,而且中间一旦有水情变化,用户可以随时根据需求对自定义报表模板进行修改。

5 结语

自定义报表系统搭建在江苏省实时雨水情分析评价系统中,采用 B/S 模式,利用开源的 CKEditor 进行二次开发作为集成编辑环境,可以实现集文字、表格和图为一体的自定义报表。基于水文行业数据库和用户特点,构建算法库支撑报表或文档中雨水情数据获取和统计分析,还可根据需求随时构建新的函数,供所有用户使用,解决大部分用户计算机水平不强的现状。基于算法库的自定义报表配置简单易操作,呈现的形式灵活且可修改,以往1 张报表至少需要半小时,现在一键可以生成,大大提高了工作效率,投入使用以来有力支撑了江苏 2020 年梅汛、202106“烟花”台风、南水北调、望虞河调水等专题材料分析。基于雨水情实时库、特征库构建算法库是水情自定义报表系统数据获取的强有力支柱,但也是一项耗时耗力的工作,目前水情算法库中函数过多且通用性不强,下一步需要优化精简函数,增强其通用性。

猜你喜欢
水情报表表格
《现代临床医学》来稿表格要求
曹新刚
统计表格的要求
基于单片机的简易水情检测系统装置
履历表格这样填
甜水情
表格图的妙用
镇长看报表
千载空灵岸 悠悠湘水情
月度报表