高洪波
(應(yīng)急管理部信息研究院,北京 100029)
近年來,國家對安全生產(chǎn)工作高度重視,在《中共中央國務(wù)院關(guān)于推進(jìn)安全生產(chǎn)領(lǐng)域改革發(fā)展的意見》中要求構(gòu)建國家、省、市、縣四級重大危險源信息管理體系,對重點行業(yè)、重點區(qū)域、重點企業(yè)實行風(fēng)險預(yù)警控制,有效防范重特大生產(chǎn)安全事故。2019年兩會提出,改革和加強(qiáng)應(yīng)急管理,實現(xiàn)生產(chǎn)安全事故總量和重特大事故數(shù)量持續(xù)下降。煤礦領(lǐng)域是防范遏制重特大事故的重點領(lǐng)域,更是各級安全監(jiān)管監(jiān)察部門推動安全生產(chǎn)依法治理的關(guān)鍵行業(yè),遵照黨中央指示要求,需要大力推進(jìn)煤礦安全生產(chǎn)信息化項目建設(shè),實現(xiàn)煤礦安全生產(chǎn)風(fēng)險監(jiān)測預(yù)警。
隨著全國煤礦安全信息化建設(shè)的推進(jìn),各級煤礦安全生產(chǎn)監(jiān)管監(jiān)察部門陸續(xù)通過建設(shè)煤礦安全風(fēng)險監(jiān)測預(yù)警系統(tǒng),全面掌握管轄范圍內(nèi)的煤礦安全生產(chǎn)重大風(fēng)險情況。為了提高監(jiān)測預(yù)警系統(tǒng)的使用效能,充分發(fā)揮移動互聯(lián)網(wǎng)技術(shù)的優(yōu)勢,本文基于Android 平臺研發(fā)了煤礦風(fēng)險監(jiān)測預(yù)警移動端App,幫助監(jiān)察人員更有效地進(jìn)行日常監(jiān)管、遠(yuǎn)程監(jiān)察、數(shù)據(jù)分析、風(fēng)險評估、執(zhí)法監(jiān)察等工作,真正實現(xiàn)隨時隨地的手機(jī)移動監(jiān)察、移動執(zhí)法,本文將詳細(xì)介紹煤礦風(fēng)險監(jiān)測預(yù)警App 的設(shè)計和實現(xiàn)。
目前在移動端設(shè)備采用最廣泛的移動操作系統(tǒng)應(yīng)當(dāng)是Android平臺,因此本系統(tǒng)基于Android進(jìn)行設(shè)計開發(fā)。Android是一款采用Linux 內(nèi)核的開源操作系統(tǒng)[1-2],由美國Google 公司與84家硬件制造商、軟件開發(fā)商及電信運(yùn)營商組建開放手機(jī)聯(lián)盟共同研發(fā),目前已發(fā)布到版本13,筆者曾參與第一代Android系統(tǒng)的研發(fā)工作。
本系統(tǒng)主要由基于Android 的移動端App、后臺管理系統(tǒng)、Web服務(wù)器和數(shù)據(jù)庫服務(wù)器組成,整體架構(gòu)如圖1所示。

圖1 系統(tǒng)整體架構(gòu)
移動端App負(fù)責(zé)系統(tǒng)的應(yīng)用層實現(xiàn),用戶可以通過App對煤礦安全監(jiān)控、人員定位、工業(yè)視頻等感知數(shù)據(jù)、報警信息以及研判報告等進(jìn)行實時調(diào)閱查看;Web服務(wù)器負(fù)責(zé)對App 傳來的各類請求進(jìn)行封裝處理,并與數(shù)據(jù)庫服務(wù)器進(jìn)行交互實現(xiàn)數(shù)據(jù)的讀寫操作;數(shù)據(jù)庫服務(wù)器主要存儲從煤礦安全風(fēng)險監(jiān)測預(yù)警系統(tǒng)獲取的全量感知數(shù)據(jù),主要包括煤礦安全監(jiān)控、井下作業(yè)人員管理系統(tǒng)、沖擊地壓監(jiān)測系統(tǒng)、水文地質(zhì)監(jiān)測系統(tǒng)和礦用重大設(shè)備監(jiān)控數(shù)據(jù)等;后臺管理系統(tǒng)負(fù)責(zé)后臺的管理操作,系統(tǒng)管理員可以對賬號信息、權(quán)限信息、版本信息等進(jìn)行控制維護(hù)。
本文基于輕量級的前端框架Vue進(jìn)行移動端應(yīng)用的構(gòu)建,開發(fā)模式采用MVVM 模式(Model-View-ViewModel),MVVM 模式將移動端應(yīng)用按三層構(gòu)建,即模型→視圖→視圖模型,對應(yīng)各層分別賦予不同職責(zé)[3-4]。
Model層即數(shù)據(jù)層,主要負(fù)責(zé)提供數(shù)據(jù),支持提供從本地數(shù)據(jù)庫獲取的數(shù)據(jù),提供業(yè)務(wù)邏輯的實體類等數(shù)據(jù)結(jié)構(gòu),也提供數(shù)據(jù)的存儲。本文使用axios 實現(xiàn)數(shù)據(jù)的請求處理,axios 是通過promise 實現(xiàn)的對ajax 技術(shù)的一種封裝,功能非常強(qiáng)大,包括取消請求、超時處理、進(jìn)度處理等,它對各種瀏覽器的支持非常友好,也可以解決回調(diào)地獄問題。
View 層即視圖層,主要負(fù)責(zé)顯示界面,它不涉及業(yè)務(wù)邏輯處理,當(dāng)需要進(jìn)行業(yè)務(wù)邏輯處理時通知ViewModel 層。在View層主要利用Vue 框架的組件化特性,將應(yīng)用頁面拆分成小型、獨(dú)立、可復(fù)用的一個個組件,每個組件完成屬于自己的獨(dú)立功能,通過組件化可大幅度提高應(yīng)用開發(fā)的效率和可復(fù)用性。組件的渲染是通過前端路由vue-router實現(xiàn)的,通過不同的url來選擇性地渲染不同的組件。在router對象中,所有的url路徑和組件被建立為映射關(guān)系,當(dāng)需要對組件進(jìn)行渲染時,router會根據(jù)當(dāng)前url 中hash 指定的路徑匹配到對應(yīng)的組件上,并將這個組件用于展示。
ViewModel層即視圖數(shù)據(jù)層,主要負(fù)責(zé)業(yè)務(wù)邏輯的處理,它不涉及任何的視圖操作,可通過Data Binding 庫實現(xiàn)綁定View層和ViewModel 層中的數(shù)據(jù),通過使用observer 觀察者模式對數(shù)據(jù)變化進(jìn)行監(jiān)聽,并自動通知View 層將對應(yīng)的視圖進(jìn)行更新,而當(dāng)用戶操作視圖,ViewModel 也能監(jiān)聽到視圖的變化,然后通知數(shù)據(jù)做相應(yīng)改動。

圖2 移動端MVVM框架
通過MVVM 模式,實現(xiàn)了數(shù)據(jù)的雙向綁定,有效降低UI、交互邏輯、業(yè)務(wù)邏輯和數(shù)據(jù)間的耦合,并節(jié)省了大量的樣板代碼編寫工作。
服務(wù)端通過API 接口為移動端提供各類數(shù)據(jù)交換和共享服務(wù),所有接口均采用HTTP協(xié)議,按照RESTful的標(biāo)準(zhǔn)進(jìn)行實現(xiàn)。為保證接口的安全,采用了DES加密算法對接口數(shù)據(jù)進(jìn)行加密,加密解密速度較快,適用于大數(shù)據(jù)量的場景,可有效防止數(shù)據(jù)傳輸過程中被篡改或者丟失。

圖3 服務(wù)端SSM框架
服務(wù)端架構(gòu)采用SSM 框架(Spring+SpringMVC+MyBatis)進(jìn)行搭建,SSM是目前主流的Java EE企業(yè)級框架[5-6],適用于搭建各類大型應(yīng)用系統(tǒng)的服務(wù)端,有利于簡化開發(fā)過程。SSM框架由Spring、SpringMVC、MyBatis三個開源框架整合而成,Spring維護(hù)所有對象的創(chuàng)建和依賴關(guān)系,降低了組件之間的耦合性;SpringMVC是使用了MVC設(shè)計思想的輕量級Web框架,負(fù)責(zé)請求的轉(zhuǎn)發(fā)和視圖管理,支持靈活的數(shù)據(jù)驗證、格式化和數(shù)據(jù)綁定機(jī)制;MyBatis作為數(shù)據(jù)對象的持久化引擎,對數(shù)據(jù)庫的操作采用xml文件配置,將SQL和代碼及逆行解耦,支持動態(tài)的SQL。
本系統(tǒng)在數(shù)據(jù)庫服務(wù)器端基于MySQL 搭建數(shù)據(jù)庫集群對煤礦全量感知數(shù)據(jù)、基礎(chǔ)數(shù)據(jù)以及生產(chǎn)管理數(shù)據(jù)進(jìn)行統(tǒng)一存儲和應(yīng)用。移動端需要對海量數(shù)據(jù)進(jìn)行條件查詢操作,如果單純依靠請求服務(wù)器端數(shù)據(jù)庫進(jìn)行查詢的方式,查詢速度會受到網(wǎng)絡(luò)延遲和并發(fā)請求的影響,導(dǎo)致用戶體驗不佳。因此,在移動端使用SQLite數(shù)據(jù)庫作為數(shù)據(jù)緩存,臨時存取報警信息等查詢頻度高的臨時數(shù)據(jù)集。SQLite是一款輕量級數(shù)據(jù)庫[7-8],存取速度快,穩(wěn)定性高。移動端啟動時,從服務(wù)器端數(shù)據(jù)庫加載數(shù)據(jù)塊,生成數(shù)據(jù)結(jié)構(gòu)一致的SQLite 數(shù)據(jù)文件;每次進(jìn)行數(shù)據(jù)查詢操作時,首先從SQLite進(jìn)行查詢,如果沒有命中,則請求發(fā)送至MySQL進(jìn)行查詢,并更新緩存數(shù)據(jù);當(dāng)進(jìn)行數(shù)據(jù)更新操作時,同時對MySQL 和SQLite 進(jìn)行更新,保證數(shù)據(jù)一致性,由于移動端應(yīng)用主要功能是數(shù)據(jù)的查閱,因此使用SQLite緩存機(jī)制可以大幅度提高用戶使用體驗。數(shù)據(jù)庫架構(gòu)設(shè)計如圖4所示。

圖4 數(shù)據(jù)庫架構(gòu)
1)原生和H5混合開發(fā)技術(shù)
傳統(tǒng)的Android 移動端開發(fā)采用原生開發(fā)方式,開發(fā)者使用Android 官方平臺提供的開發(fā)語言、SDK 以及Android studio等開發(fā)工具進(jìn)行開發(fā),原生開發(fā)的優(yōu)點是運(yùn)行速度快,可以調(diào)用底層類庫訪問移動端的設(shè)備硬件,諸如攝像頭、GPS等功能,但是原生開發(fā)方式的周期較長,開發(fā)成本較高,可維護(hù)性和移植性不強(qiáng)。隨著移動互聯(lián)網(wǎng)技術(shù)的成熟,基于H5 的WebAPP開發(fā)方式日益普及,開發(fā)者可以使用Html5、JavaScipt等Web前端通用技術(shù),基于瀏覽器支持進(jìn)行界面展示和交互,具有開發(fā)周期短、成本低的特點,但是由于Web 技術(shù)本身的限制,H5 移動應(yīng)用不能直接訪問設(shè)備硬件,在用戶體驗上存在一定局限性。
本系統(tǒng)由于需要訪問GPS、攝像頭等設(shè)備硬件實現(xiàn)煤礦地圖定位以及現(xiàn)場監(jiān)察執(zhí)法拍照等功能,因此本文采用了原生Android 和H5 混合開發(fā)方式。混合開發(fā)是一種取長補(bǔ)短的開發(fā)模式,除了地圖和拍照等功能使用原生Android實現(xiàn)外,主要的業(yè)務(wù)界面均使用基于H5的Web開發(fā)技術(shù)進(jìn)行實現(xiàn)。采用混合開發(fā)技術(shù),不但提高了開發(fā)效率,并且版本更新部署更加方便,每次升級版本只需在服務(wù)器端升級即可。
2)跨域訪問技術(shù)
本系統(tǒng)是基于前后端分離的架構(gòu)實現(xiàn)的,跨域訪問技術(shù)是實現(xiàn)前端(移動端)與后端(服務(wù)端)交互的基礎(chǔ)。跨域是因為瀏覽器的同源策略所導(dǎo)致,同源是指域名、協(xié)議、端口相同,同源策略是瀏覽器最核心也最基本的安全功能,解決跨域問題常用的方法有CORS、JSONP、Proxy 等方式。本系統(tǒng)主要采用CORS方式進(jìn)行跨域訪問,首先從前端瀏覽器發(fā)出CORS 預(yù)檢請求(preflight request),在請求的header中加上Origin字段,設(shè)定請求源(請求協(xié)議+域名+端口),服務(wù)器端收到請求后,將對比這個字段,如果請求源在服務(wù)器端的許可范圍內(nèi),服務(wù)器端會返回與CORS 相關(guān)的響應(yīng)頭。通過CORS 跨域預(yù)檢請求后,瀏覽器發(fā)出正式的數(shù)據(jù)請求,從服務(wù)器端返回數(shù)據(jù)。作為規(guī)范化的跨域解決方式,雖然CORS需要進(jìn)行兩次請求,因為預(yù)檢機(jī)制通過檢查請求來源能在一定程度上防范CSRF 攻擊,所以在安全性上更加可靠。
煤礦風(fēng)險監(jiān)測預(yù)警App 主要提供給煤礦安全生產(chǎn)監(jiān)察執(zhí)法人員使用,幫助用戶全面掌握轄區(qū)內(nèi)煤礦的安全感知數(shù)據(jù)、報警及處置情況、風(fēng)險分布及變化趨勢以及監(jiān)控系統(tǒng)聯(lián)網(wǎng)運(yùn)行情況。用戶運(yùn)用這個系統(tǒng)作為監(jiān)管抓手,對報警多、風(fēng)險高、處置慢的煤礦企業(yè)進(jìn)行重點關(guān)注,以此敦促轄區(qū)內(nèi)煤礦安全生產(chǎn)水平整體改善,降低事故發(fā)生率。
系統(tǒng)的主要功能模塊如圖5 所示,包括重點關(guān)注信息、風(fēng)險分級報警、報警統(tǒng)計分析、報警處置查看、監(jiān)測數(shù)據(jù)查詢及分析研判報告等功能。

圖5 系統(tǒng)功能架構(gòu)
重點關(guān)注信息功能展示當(dāng)日轄區(qū)內(nèi)煤礦實時監(jiān)測數(shù)據(jù)、風(fēng)險研判數(shù)據(jù)、監(jiān)測統(tǒng)計數(shù)據(jù)、聯(lián)網(wǎng)情況等指標(biāo),使用人員可以直觀查看各類重點關(guān)注的指標(biāo)數(shù)據(jù),及時掌握當(dāng)日煤礦安全生產(chǎn)態(tài)勢。重點關(guān)注信息中展示的內(nèi)容可以根據(jù)用戶的角色、職級、管轄范圍進(jìn)行自動匹配定制,也支持由用戶自行設(shè)置。
風(fēng)險分級報警功能對轄區(qū)內(nèi)煤礦的瓦斯、一氧化碳超限等達(dá)風(fēng)險級別的報警提供實時推送告知,并按風(fēng)險級別(紅、橙、黃、藍(lán))重點展示。
報警統(tǒng)計分析功能對煤礦安全監(jiān)控系統(tǒng)的瓦斯、一氧化碳超限、局扇的開停情況、報警類型占比等進(jìn)行日、周、月趨勢分析,報警按區(qū)劃、時間進(jìn)行統(tǒng)計,按圖表形式進(jìn)行展示,并對重大風(fēng)險、風(fēng)險等級情況集中匯總。
報警處置查看功能提供轄區(qū)內(nèi)煤礦的甲烷、一氧化碳的超限處置信息,用戶可具體了解超限已處置與未處置的風(fēng)險區(qū)域分布及詳情。
監(jiān)測數(shù)據(jù)查詢功能支持從手機(jī)端對井工煤礦安全監(jiān)控數(shù)據(jù)、井下人員定位數(shù)據(jù)、水文監(jiān)測數(shù)據(jù)、沖擊地壓監(jiān)測數(shù)據(jù)及礦井基本信息進(jìn)行便捷查詢。監(jiān)察執(zhí)法人員在現(xiàn)場監(jiān)察執(zhí)法時,可通過移動端調(diào)閱所有歷史數(shù)據(jù),并與煤礦企業(yè)的安全監(jiān)控、人員定位等系統(tǒng)中的數(shù)據(jù)進(jìn)行比對確認(rèn)。
分析研判報告功能提供分析研判周報、月報、風(fēng)險研判報告,在報告中通過圖表方式展示轄區(qū)內(nèi)煤礦數(shù)量、煤礦分類、各系統(tǒng)聯(lián)網(wǎng)情況,安全監(jiān)控系統(tǒng)、井下人員位置系統(tǒng)、視頻監(jiān)控系統(tǒng)、礦井水文地質(zhì)監(jiān)測系統(tǒng)、煤礦沖擊地壓監(jiān)測系統(tǒng)及礦用重大設(shè)備監(jiān)測系統(tǒng)所采集到的關(guān)鍵匯總指標(biāo)數(shù)據(jù)及研判分析建議,可進(jìn)行便捷瀏覽和查閱。

圖6 App功能界面
本研究針對移動互聯(lián)網(wǎng)時代煤礦安全生產(chǎn)遠(yuǎn)程監(jiān)察的新需求,研發(fā)煤礦風(fēng)險監(jiān)測預(yù)警App,使煤礦安全監(jiān)察人員能夠隨時隨地通過移動終端對煤礦安全監(jiān)控、人員定位、工業(yè)視頻、沖擊地壓監(jiān)測、水文地質(zhì)監(jiān)測、礦用重大設(shè)備監(jiān)控等進(jìn)行遠(yuǎn)程巡查,查閱煤礦瓦斯長時間報警未處理、井下超員、無井下帶班領(lǐng)導(dǎo)、煤礦沖擊地壓異常、涌水量、排水量異常等現(xiàn)象,實現(xiàn)遠(yuǎn)程監(jiān)察執(zhí)法的目的,確實有效提高煤礦安全監(jiān)管監(jiān)察效能。