崔彥萍 ,牛智星 ,司存友
(1. 江蘇省水文水資源勘測局,江蘇 南京 210029;2. 江蘇南水科技有限公司,江蘇 南京 210012)
報表一直是水文分析最直觀快速的服務產品[1],分為固定和自定義 2 種報表[2]:固定報表開發(fā)好后一般不易更改;自定義報表是一種動態(tài)形式的報表,可以根據(jù)需要定制報表格式并實時完成,在現(xiàn)今的管理信息系統(tǒng)中,應用需求越來越多[3]。報表工具的實現(xiàn)技術也不斷創(chuàng)新和完善,由于互聯(lián)網(wǎng)和 Web 技術的飛速發(fā)展,Web 的報表工具的研究與應用[4-5]越來越多,目前 Web 報表工具的實現(xiàn)技術也較多,如 COM 組件[6-7]、ActiveX 插件[8]、XML 的無插件[9]等技術。水文報表數(shù)據(jù)之間比較獨立,統(tǒng)計分析方式各不相同,整個報表數(shù)據(jù)復雜,不僅要考慮實現(xiàn)技術,更要考慮數(shù)據(jù)的獲取和統(tǒng)計分析。
因此,在現(xiàn)有江蘇省實時雨水情分析評價系統(tǒng)平臺上設計一套自定義報表系統(tǒng),在瀏覽器界面可以設計任意格式報表或文檔模板,通過調用算法庫[10]中的函數(shù)獲取各類統(tǒng)計分析雨水情數(shù)據(jù),快速配置實現(xiàn)各類雨水情分析統(tǒng)計,一鍵生成分析成果,提升雨水情分析效能,擺脫手工作業(yè)的落后局面。
基于實時雨水情數(shù)據(jù)庫[11]、特征庫[12],進行自定義報表系統(tǒng)設計。主要設計要求如下:
1)參數(shù)設置,包括日期、時間(精確到 h)、站點等的設置。
2)查詢頁面設計,配置好的報表可以任意選取時間查詢。
3) 將界面設計成一個符合 Word 樣式的配置界面和操作風格,且保有常用工具,表格能導出 Excel 格式,文檔能導出 Word 或 PDF 格式。
4)報表數(shù)據(jù)的獲取,要提供友好的交互界面,方便用戶配置各種分析數(shù)據(jù)。
5)構建算法庫及其配置系統(tǒng),根據(jù)日常工作需求,建立雨水情分析算法庫。使用過程中用戶也可以在此系統(tǒng)中創(chuàng)建新的函數(shù),供其他用戶在自定義報表中使用。
自定義報表是面向不可預見專題分析需求而隨時配置的報表,支持 Oracle 函數(shù)、Java 和 SQL 語言,表格配置應可視化,所見即所得,支持簡單時間條件相關函數(shù),方便配置。配置好的報表可以任意修改,滿足一個專題不斷變化的需求。
江蘇省實時雨水情分析評價系統(tǒng)是基于WebGIS,以 B/S 為主,C/S 為輔的網(wǎng)絡結構模式,且是把 B/S 和 C/S 2 種方式的優(yōu)勢互補,將地圖空間信息和屬性信息有機結合起來的網(wǎng)絡化地理信息系統(tǒng)。自定義報表系統(tǒng)是江蘇省實時雨水情分析評價系統(tǒng)的子系統(tǒng),采用 B/S 設計,通過連接實時水情庫、特征庫和應用方法庫,自動擴充用戶報表,配置出復雜個性的圖文并茂的報告。
自定義報表系統(tǒng)前臺界面使用專業(yè)的 MiniUI 網(wǎng)頁界面集成框架,提供高度的穩(wěn)定性、強大的擴展能力。網(wǎng)頁界面集成框架采用 HTML,CSS(樣式格式描述語言)和 JavaScript 技術,加入 JSP 動態(tài)網(wǎng)頁技術。Web 客戶端通過 Struts 2 框架實現(xiàn)與服務器互動信息返回,Web 服務器以 Tomcat 為基礎,采用 Java 技術構建服務器應用程序,通過 Spring 框架程序中的 Hiberbate 實現(xiàn)與數(shù)據(jù)庫的通信,并最終返回客戶端瀏覽器的請求。同時自定義報表系統(tǒng)還擴展一個開源的 Web 編輯器 CKEditor,CKEditor 有很好的擴展性及比較穩(wěn)定的性能、全面的 API 文檔,可以方便地進行插件的開發(fā)、調用,因此在 CKEditor 基礎上實現(xiàn)算法模板、方法屬性、參數(shù)設置、站群管理等插件的開發(fā),最終呈現(xiàn)一個具有水文特色的實時雨水情報告模板設計器。自定義報表體系結構圖如圖1 所示。
圖1 自定義報表體系結構圖
自定義報表工具采用開發(fā)的動態(tài)自定義報表引擎,界面使用 HTML、JSP 動態(tài)網(wǎng)頁技術、FreeMarker 模板及 ftl(模板文件存儲格式),利用 CKEditor 作為集成編輯環(huán)境,開源的 EChart 作為插圖組件,繪制折線圖、柱狀圖、散點圖、餅圖、地圖、儀表盤及漏斗圖,同時支持任意維度的堆積和多圖表混合展現(xiàn)等功能,這樣設計的自定義報表系統(tǒng)可以配置插入各種形式的圖表。自定義報表工具以 CKEditor 作為基礎進行二次開發(fā),可以通過在瀏覽器中自由編輯設計內容,達到用戶對自定義的需求。而且在 CKEditor 的基礎上增加單點、表格、自定義表格、chart(Echart)等插件的開發(fā),可以滿足用戶絕大多數(shù)的報表需求。
通過模板 + Excel Web 標準接口技術,以配置模板的方式,可導出出版級別的報表。
江蘇水文自定義報表系統(tǒng)的開發(fā)與實現(xiàn),最核心的內容就是水情算法庫的建立,支撐整個報表各種統(tǒng)計分析數(shù)據(jù)的實現(xiàn)。水情算法庫基于江蘇省實時雨水情數(shù)據(jù)庫和特征庫,實現(xiàn)各種雨水情數(shù)據(jù)的復雜統(tǒng)計分析,創(chuàng)建的函數(shù)可以調用 Oracle 數(shù)據(jù)庫中的內置函數(shù),也可以調用創(chuàng)建的函數(shù)。創(chuàng)建的函數(shù)存貯在 Oracle 數(shù)據(jù)庫中,大大提高了計算速度。配置自定義報表時直接調用相應的函數(shù),只需輸入?yún)?shù)即可,一般制表人員易操作配置。水情算法庫包含 18 類函數(shù),目前有上百種函數(shù)(使用過程中根據(jù)新的需求還可以繼續(xù)擴充),基本涵蓋了水情日常工作使用需求,包括極值、時段累計、同期、期初期末、特征值、排位等函數(shù)。
報表模板設計好后,靜態(tài)文字或數(shù)字可以直接編輯,動態(tài)數(shù)據(jù)可以通過調用函數(shù)獲取。例如多站時段累計函數(shù),此函數(shù)針對泵站,調用時輸入站碼和起始時間,就可以計算水量。相關函數(shù)如下:函數(shù)名(參數(shù)列表)為 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。
以南水北調報表為例,每天監(jiān)測江蘇省南水北調水量并進行統(tǒng)計,報表涉及主要湖泊水位、沿線重要節(jié)點水量和泵站水情等內容。根據(jù)需求設計模板,報表模板及相應數(shù)據(jù)配置好后,每天 8 時直接點擊查詢按鈕相應數(shù)據(jù)就自動更新,然后導出 Excel,Word 或 PDF 模板分發(fā)給相關單位或部門,以便對水位、流量及水量數(shù)據(jù)進行實時檢測,查驗調度方案與實際運行效果進行對比分析。
配置自定義報表關鍵流程節(jié)點如下:首先新建報表界面;其次設置參數(shù)(時間、站點參數(shù));然后根據(jù)報表需求設計報表模板,靜態(tài)的文字和數(shù)據(jù)可以直接編輯,動態(tài)數(shù)據(jù)可以插入數(shù)據(jù)、表格、自定義表格。具體報表實現(xiàn)時先點擊自定義報表按鈕插入自定義表格,編輯輸入靜態(tài)文字數(shù)據(jù),單元格動態(tài)數(shù)據(jù)設置動態(tài)值后輸入腳本,腳本可以是構建的函數(shù)也可以是 SQL 語句;然后點擊“預覽”按鈕,在預覽表格中生成數(shù)據(jù);再點擊“確定”按鈕即可生成報表。自定義表格配置界面如圖2 所示,此時界面單元格顯示 SQL,配置完點擊“確定”按鈕顯示完整的數(shù)據(jù)表格。南水北調水量統(tǒng)計呈現(xiàn)成果示例如圖3 所示,文本中黃色區(qū)域和表格中的數(shù)據(jù)都是動態(tài)的,每天只要點擊查詢按鈕,動態(tài)數(shù)據(jù)就可根據(jù)日期更新,調水期間每天一鍵導出,呈報相關部門,監(jiān)控沿線水位、翻水量及調水計劃完成率,方便快捷。
圖2 自定義報表-插入自定義表格及動態(tài)數(shù)據(jù)配置
圖3 自定義報表成果示例
水文上,經(jīng)常有階段性汛情、旱情、臺風、水資源配置等,而且各種水情形勢是變化的,自定義報表工具就是根據(jù)這種復雜多變的雨水情形勢而產生的。一旦有洪澇、旱情、臺風等發(fā)生,就根據(jù)相關需求設計自定義報表模板并進行配置,配置好的報表可以一鍵生成導出,相應的動態(tài)數(shù)據(jù)根據(jù)查詢參數(shù)是實時更新變化的,成果提供給所需部門和領導,而且中間一旦有水情變化,用戶可以隨時根據(jù)需求對自定義報表模板進行修改。
自定義報表系統(tǒng)搭建在江蘇省實時雨水情分析評價系統(tǒng)中,采用 B/S 模式,利用開源的 CKEditor 進行二次開發(fā)作為集成編輯環(huán)境,可以實現(xiàn)集文字、表格和圖為一體的自定義報表?;谒男袠I(yè)數(shù)據(jù)庫和用戶特點,構建算法庫支撐報表或文檔中雨水情數(shù)據(jù)獲取和統(tǒng)計分析,還可根據(jù)需求隨時構建新的函數(shù),供所有用戶使用,解決大部分用戶計算機水平不強的現(xiàn)狀?;谒惴◣斓淖远x報表配置簡單易操作,呈現(xiàn)的形式靈活且可修改,以往1 張報表至少需要半小時,現(xiàn)在一鍵可以生成,大大提高了工作效率,投入使用以來有力支撐了江蘇 2020 年梅汛、202106“煙花”臺風、南水北調、望虞河調水等專題材料分析?;谟晁閷崟r庫、特征庫構建算法庫是水情自定義報表系統(tǒng)數(shù)據(jù)獲取的強有力支柱,但也是一項耗時耗力的工作,目前水情算法庫中函數(shù)過多且通用性不強,下一步需要優(yōu)化精簡函數(shù),增強其通用性。