0 引言
隨著信息技術(shù)的飛速發(fā)展,報(bào)表系統(tǒng)在工業(yè)監(jiān)控中扮演著不可或缺的角色。它不僅能夠?qū)ο到y(tǒng)運(yùn)行過程中產(chǎn)生的實(shí)時(shí)與歷史數(shù)據(jù)進(jìn)行高效的查詢、計(jì)算和統(tǒng)計(jì),還能根據(jù)用戶指定的形式展示和輸出結(jié)果,為系統(tǒng)監(jiān)控與決策提供有力支持。然而,傳統(tǒng)工業(yè)監(jiān)控報(bào)表在實(shí)際應(yīng)用中暴露出了諸多局限性,難以滿足現(xiàn)代工業(yè)對(duì)跨平臺(tái)、高效率、強(qiáng)擴(kuò)展性和個(gè)性化的需求。其主要問題包括:1)安裝與更新煩瑣:傳統(tǒng)報(bào)表系統(tǒng)通常需要復(fù)雜的部署過程,且版本更新耗時(shí)費(fèi)力;2)功能擴(kuò)展性不足:基于特定工具或平臺(tái)開發(fā)的報(bào)表,難以適配不同用戶的個(gè)性化需求[1];3)信息展示不直觀:固定的格式和缺乏交互性的設(shè)計(jì),使報(bào)表難以直觀展現(xiàn)復(fù)雜的信息。
這些問題使傳統(tǒng)報(bào)表在面對(duì)跨平臺(tái)使用、靈活性定制化需求等方面顯得力不從心。未來的工業(yè)監(jiān)控報(bào)表需要更加注重高效性、通用性和智能化,才能真正滿足不同用戶和應(yīng)用場景的多樣化需求。
1 系統(tǒng)構(gòu)架
為了解決以上問題,設(shè)計(jì)一套面向工業(yè)監(jiān)控的通用報(bào)表系統(tǒng),整體架構(gòu)如圖1所示,分為數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層和Web前端。
1.1 數(shù)據(jù)訪問層
針對(duì)多源異構(gòu)數(shù)據(jù),提供典型數(shù)據(jù)源適配器,支持從時(shí)序數(shù)據(jù)庫、關(guān)系數(shù)據(jù)庫、結(jié)構(gòu)化文本中抽取數(shù)據(jù);提供標(biāo)準(zhǔn)化的WebService接口以支持第三方系統(tǒng)數(shù)據(jù)接入,保證多類數(shù)據(jù)源的兼容性和擴(kuò)展性。
1.2 業(yè)務(wù)邏輯層
負(fù)責(zé)對(duì)原始數(shù)據(jù)的處理與分析、報(bào)表生成與輸出以及用戶權(quán)限管理等。通過高效的數(shù)據(jù)處理和靈活的報(bào)表定制功能,業(yè)務(wù)邏輯層能夠?yàn)閃eb前端層提供準(zhǔn)確、符合需求的報(bào)表數(shù)據(jù)和功能支持。
1.3 Web前端
與業(yè)務(wù)邏輯層通過RESTfulAPI進(jìn)行數(shù)據(jù)交互,提供基于HTML5技術(shù)的報(bào)表設(shè)計(jì)器,提供類Excel操作的圖形化交互界面,支持可視化的報(bào)表設(shè)計(jì),報(bào)表設(shè)計(jì)器生成報(bào)表語義文件,作為系統(tǒng)的核心數(shù)據(jù)定義文件2。同時(shí),對(duì)應(yīng)業(yè)務(wù)邏輯層的報(bào)表管理、報(bào)表瀏覽、系統(tǒng)管理等模塊,提供用戶友好的UI界面和人機(jī)交互體驗(yàn)。
2 主要功能研究
2.1典型數(shù)據(jù)源適配器
為滿足報(bào)表系統(tǒng)數(shù)據(jù)獲取與統(tǒng)計(jì)需求,設(shè)計(jì)典型數(shù)據(jù)源適配器,包括:
1)統(tǒng)一接口設(shè)計(jì):標(biāo)準(zhǔn)化數(shù)據(jù)抽取接口,屏蔽數(shù)據(jù)源差異,確保調(diào)用一致性。
2)典型數(shù)據(jù)源支持:開發(fā)適配器支持關(guān)系型數(shù)據(jù)庫、時(shí)序數(shù)據(jù)庫和文件數(shù)據(jù)等常見類型,提升適用性。
3)第三方數(shù)據(jù)接入:通過WebService實(shí)現(xiàn)第三方系統(tǒng)數(shù)據(jù)的動(dòng)態(tài)接入,增強(qiáng)兼容性和靈活性。適配器覆蓋實(shí)時(shí)、關(guān)系、時(shí)序和統(tǒng)計(jì)數(shù)據(jù),滿足多樣化場景需求,為報(bào)表系統(tǒng)的數(shù)據(jù)采集與分析提供可靠支持[3]。
2.2報(bào)表模板語義描述定義
定義一套標(biāo)準(zhǔn)化報(bào)表模板語義4,用于報(bào)表模板設(shè)計(jì)、報(bào)表生成與呈現(xiàn)的全過程,涵蓋以下關(guān)鍵信息。
2.2.1 報(bào)表展示信息(SheetOptions)
報(bào)表展示信息(SheetOptions)定義了報(bào)表的布局、樣式和視覺效果,以確保數(shù)據(jù)準(zhǔn)確且具備良好的可讀性和用戶體驗(yàn)。主要內(nèi)容包括:
1)表頭表尾信息:通過xlsx模板導(dǎo)入標(biāo)題、頁眉、頁腳等全局信息,支持上傳現(xiàn)有模板快速配置。
2)行列信息:定義報(bào)表結(jié)構(gòu),如行高/列寬、單元格合并與分隔、行列隱藏規(guī)則。
3單元格信息:設(shè)置單元格內(nèi)容的格式、邊框、字體等屬性。
4對(duì)齊方式與布局:設(shè)置數(shù)據(jù)在單元格中的位置、頁面風(fēng)格及打印效果。
2.2.2 報(bào)表數(shù)據(jù)綁定信息(Rules)
報(bào)表數(shù)據(jù)綁定信息(Rules)是生成報(bào)表的關(guān)鍵環(huán)節(jié),能夠確保數(shù)據(jù)準(zhǔn)確填充到對(duì)應(yīng)位置。其主要內(nèi)容包括:
1單元格位置:定義數(shù)據(jù)項(xiàng)在報(bào)表中的具體位置,通過行、列索引或標(biāo)識(shí)符實(shí)現(xiàn)數(shù)據(jù)映射。
②行列擴(kuò)展:支持動(dòng)態(tài)調(diào)整報(bào)表的行數(shù)或列數(shù),適應(yīng)數(shù)據(jù)量變化并保持結(jié)構(gòu)完整。
3數(shù)據(jù)源:明確數(shù)據(jù)來源及獲取方式。
4時(shí)間格式:統(tǒng)一報(bào)表中時(shí)間數(shù)據(jù)的顯示形式,如\"yyyy-MM-dd HH: mm: ss”。
5起始時(shí)間類型:設(shè)定時(shí)間范圍的起始時(shí)間,可選系統(tǒng)當(dāng)前時(shí)間、用戶指定時(shí)間等。
6時(shí)間間隔:定義時(shí)間序列數(shù)據(jù)的采樣周期,如分鐘、小時(shí)、天等,確保數(shù)據(jù)精度符合業(yè)務(wù)需求。
2.2.3 報(bào)表類型(ReportType)
報(bào)表類型(ReportType)定義了報(bào)表生成的頻率、時(shí)間跨度及數(shù)據(jù)匯總的方式。報(bào)表生成頻率決定報(bào)表生成的時(shí)間間隔,時(shí)間跨度決定報(bào)表中數(shù)據(jù)覆蓋的時(shí)間范圍,數(shù)據(jù)匯總方式?jīng)Q定對(duì)原始數(shù)據(jù)的匯總方式。如報(bào)表類型為日?qǐng)?bào),則每天生成一次,時(shí)間跨度為前一日0點(diǎn)至當(dāng)日0點(diǎn),原始數(shù)據(jù)匯總方式為整點(diǎn)取樣。
2.2.4 報(bào)表展開方向(TmposType)
報(bào)表展開方向(TmposType)是指在報(bào)表設(shè)計(jì)和生成過程中,如何組織和展示數(shù)據(jù),報(bào)表的展開方向包括橫向展開、縱向展開。
2.3 報(bào)表設(shè)計(jì)器
基于HTML5設(shè)計(jì)報(bào)表設(shè)計(jì)器,支持報(bào)表模板設(shè)計(jì)與預(yù)覽、表格操作及圖表配置功能,提供Web瀏覽器高效、直觀的交互體驗(yàn)。
其中,表格渲染采用HTML5Canvas技術(shù)實(shí)現(xiàn)。Canvas技術(shù)支持高效的2D圖形繪制,能夠精確控制單元格樣式,如可以精確控制每個(gè)單元格的大小、位置、顏色和邊框等,從而呈現(xiàn)出高質(zhì)量的表格界面。
表格的交互使用Javascript事件監(jiān)聽機(jī)制實(shí)現(xiàn)。通過事件監(jiān)聽,報(bào)表設(shè)計(jì)器能夠捕捉用戶的鼠標(biāo)點(diǎn)擊、拖拽、快捷鍵等交互行為,實(shí)現(xiàn)動(dòng)態(tài)交互操作。例如,用戶在點(diǎn)擊單元格時(shí),可能會(huì)彈出編輯框進(jìn)行數(shù)據(jù)輸入或格式修改;在拖拽時(shí),表格結(jié)構(gòu)會(huì)即時(shí)響應(yīng)并顯示調(diào)整結(jié)果。報(bào)表設(shè)計(jì)器集成了開源圖表庫Echarts,將常用的餅圖、柱狀圖、折線圖等封裝為基礎(chǔ)組件庫,設(shè)計(jì)器實(shí)現(xiàn)了圖表和表格之間的數(shù)據(jù)互通。圖表數(shù)據(jù)可源自表格數(shù)值,用戶通過配置數(shù)據(jù)源綁定功能,將表格中的某一列設(shè)為圖表輸入。此外,當(dāng)表格數(shù)據(jù)變化時(shí),圖表自動(dòng)更新,保持?jǐn)?shù)據(jù)一致性。
2.4 模板文件生成與解析
在模板設(shè)計(jì)階段,將用戶在報(bào)表設(shè)計(jì)器中配置的報(bào)表結(jié)構(gòu)及格式轉(zhuǎn)化為語義描述,進(jìn)而將生成的語義描述轉(zhuǎn)換為Json格式文件,并存儲(chǔ)在服務(wù)端,用于后續(xù)交互。在報(bào)表生成階段,當(dāng)用戶請(qǐng)求查看或?qū)С鰣?bào)表時(shí),需要在服務(wù)端解析語義描述文件,從而實(shí)現(xiàn)后續(xù)報(bào)表生成邏輯,主要使用Java解析Json文件,提取語義信息,并轉(zhuǎn)換為Excel模板文件,用于后續(xù)報(bào)表數(shù)據(jù)填充。
2.5 統(tǒng)計(jì)函數(shù)注冊(cè)調(diào)用框架
由于在不同工業(yè)監(jiān)控場景下,數(shù)據(jù)取值、計(jì)算、統(tǒng)計(jì)的邏輯不盡相同,通用報(bào)表系統(tǒng)提供一個(gè)可在線擴(kuò)展的統(tǒng)計(jì)函數(shù)調(diào)用框架,支持不同邏輯統(tǒng)計(jì)函數(shù)的自定義與調(diào)用??蚣芙Y(jié)構(gòu)如圖2所示。
2.5.1 統(tǒng)計(jì)函數(shù)接口
定義統(tǒng)一的統(tǒng)計(jì)函數(shù)接口,供所有計(jì)算邏輯實(shí)現(xiàn),每個(gè)計(jì)算邏輯類需實(shí)現(xiàn)此接口,并通過關(guān)鍵字唯一標(biāo)識(shí)其功能。
接口定義如下:
public interfaceReportFunction{//獲取單個(gè)時(shí)間點(diǎn)計(jì)算結(jié)果 public CalResult cal(QueryParams params);//獲取多個(gè)時(shí)間點(diǎn)計(jì)算結(jié)果 public List batchCal(QueryParams params);//獲取統(tǒng)計(jì)函數(shù)關(guān)鍵字 public String getKeyWord(; }
2.5.2動(dòng)態(tài)類加載器與統(tǒng)計(jì)函數(shù)注冊(cè)中心
實(shí)時(shí)掃描指定路徑的JAR包資源中動(dòng)態(tài)加載統(tǒng)計(jì)函數(shù)類,將動(dòng)態(tài)加載的類隔離,避免相互沖突,并將所有可調(diào)用的統(tǒng)計(jì)函數(shù)類注冊(cè)到框架中統(tǒng)一管理。
2.5.3 統(tǒng)計(jì)函數(shù)調(diào)用
使用Java反射機(jī)制,根據(jù)報(bào)表模板中定義的方法關(guān)鍵字及參數(shù),調(diào)用對(duì)應(yīng)統(tǒng)計(jì)函數(shù),并返回結(jié)果。
2.6 報(bào)表生成
根據(jù)報(bào)表模板文件,獲取每個(gè)單元格、圖表的綁定數(shù)據(jù)源及字段信息。解析報(bào)表中涉及的統(tǒng)計(jì)函數(shù)(如瞬時(shí)值、最大值、平均值等),調(diào)用對(duì)應(yīng)的適配器獲取數(shù)據(jù)源中的原始數(shù)據(jù),并通過統(tǒng)計(jì)函數(shù)調(diào)用框架調(diào)用對(duì)應(yīng)的統(tǒng)計(jì)函數(shù)類,得出運(yùn)算結(jié)果[5。獲取報(bào)表模板中設(shè)置的樣式和布局信息,將運(yùn)算結(jié)果填入Excel模板文件對(duì)應(yīng)單元格位置,實(shí)時(shí)生成最終的報(bào)表或圖表。
3 系統(tǒng)應(yīng)用
通用報(bào)表系統(tǒng)已成功應(yīng)用于發(fā)電廠的分布式控制系統(tǒng)(DCS)中,為監(jiān)控與數(shù)據(jù)分析提供了強(qiáng)有力的支持。在此監(jiān)控場景中,測(cè)點(diǎn)數(shù)據(jù)通過KKS編碼進(jìn)行標(biāo)識(shí),所有的歷史數(shù)據(jù)均存儲(chǔ)在InfluxDB時(shí)序數(shù)據(jù)庫。報(bào)表系統(tǒng)通過典型數(shù)據(jù)源適配器,成功實(shí)現(xiàn)了與InfluxDB的無縫集成。數(shù)據(jù)適配器能夠從InfluxDB中提取歷史的測(cè)點(diǎn)數(shù)據(jù),保證了數(shù)據(jù)的準(zhǔn)確性與時(shí)效性。報(bào)表系統(tǒng)使用統(tǒng)計(jì)函數(shù)注冊(cè)調(diào)用框架自定義了瞬時(shí)值、最大值、最小值、均值、開關(guān)量翻轉(zhuǎn)次數(shù)等11種統(tǒng)計(jì)函數(shù)。通過這些統(tǒng)計(jì)函數(shù),工程人員可以根據(jù)不同的需求,靈活定義報(bào)表中所需的數(shù)據(jù)處理邏輯。工程人員可在Web瀏覽器使用報(bào)表系統(tǒng)選擇不同的時(shí)間范圍、測(cè)點(diǎn)、統(tǒng)計(jì)函數(shù)等,配置符合實(shí)際需求的分析報(bào)表,如各專業(yè)運(yùn)行日志、單耗分析等報(bào)表模板(圖3),并可即時(shí)查詢到報(bào)表結(jié)果,顯著提高了工作效率。
4結(jié)束語
通用報(bào)表系統(tǒng)為滿足工業(yè)監(jiān)控領(lǐng)域的報(bào)表需求提供了高效、靈活的解決方案。通過標(biāo)準(zhǔn)化的數(shù)據(jù)適配接口、動(dòng)態(tài)擴(kuò)展的統(tǒng)計(jì)函數(shù)框架和可視化報(bào)表設(shè)計(jì)工具,系統(tǒng)在實(shí)際應(yīng)用中展現(xiàn)了較高的實(shí)用性和擴(kuò)展能力。未來將繼續(xù)優(yōu)化架構(gòu)性能,擴(kuò)展更多行業(yè)場景支持,并探索智能化報(bào)表生成和大數(shù)據(jù)分析技術(shù)的融合,以進(jìn)一步滿足多樣化的應(yīng)用需求。
[參考文獻(xiàn)]
[1]王力平,郭潔,田春思,等.iP9000平臺(tái)智能化報(bào)表的設(shè)計(jì)與實(shí)現(xiàn)[J].水電站機(jī)電技術(shù),2023,46(12):83-85.
[2]張碩,高武斌,謝宇坤,等.基于模板的高性能Web報(bào)表系統(tǒng)[J].指揮信息系統(tǒng)與技術(shù),2024,15(4):88-94.
[3]楊絲雨,孫連山.基于RESTfulWebServices的智能報(bào)表系統(tǒng)設(shè)計(jì)[J].軟件導(dǎo)刊,2017,16(3):77-79.
[4]王志心,顏儒彬,褚紅健,等.一種監(jiān)控軟件平臺(tái)中web報(bào)表系統(tǒng)實(shí)現(xiàn)方法[J].江蘇科技信息,2018,35(20):59-62.
[5]趙楊.報(bào)表管理系統(tǒng)中服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[D].沈陽:中國科學(xué)院大學(xué)(中國科學(xué)院沈陽計(jì)算技術(shù)研究所),2017.
收稿日期:2025-02-12作者簡介:高翔 (1985-) ,男,江蘇徐州人,碩士,工程師,研究方向:電力系統(tǒng)自動(dòng)化。