康世英,馬 軍
(咸陽師范學院 計算機學院,陜西 咸陽 712000)
我國是一個災害頻發(fā)的國家,如近年河南的特大暴雨,四川、甘肅等地的地震等重大自然災害,給人們的生產(chǎn)生活帶來了巨大影響。災害發(fā)生后,如何高效合理地調配救援物資,讓這些物資發(fā)揮最大的作用,把損失降低到最小,已成為各個學科研究的熱點。各級政府及社區(qū)救援物資管理平臺的建設是應急管理體系工作能否順利開展的重要因素之一[1]。
救援物資管理平臺的3個主要功能模塊分別為疫情數(shù)據(jù)管理、救援物資管理和用戶管理[2]。本平臺的操作人員主要是管理員,疫情數(shù)據(jù)管理模塊主要包括:抓取數(shù)據(jù)、更新數(shù)據(jù)和展示數(shù)據(jù)。救援物資管理模塊主要是對救援物資的添加、刪除、修改、查詢及領取操作。用戶管理主要是指管理員對物資領取人的管理,包括對領取人的添加、刪除、修改、查詢操作。系統(tǒng)總體功能模塊如圖1所示。
圖1 系統(tǒng)功能模塊
本平臺基于B/S架構設計,使用Java語言在IDEA 64位的環(huán)境下進行集成開發(fā),采用MySQL數(shù)據(jù)庫存儲救援物資數(shù)據(jù),對于抓取到的體量較大的疫情數(shù)據(jù),采用基于內存設計的、讀寫速度較快的Redis數(shù)據(jù)庫進行存放,前端頁面數(shù)據(jù)展示使用Thymeleaf模板引擎顯示靜態(tài)和動態(tài)數(shù)據(jù)[3]。
疫情數(shù)據(jù)管理包括抓取數(shù)據(jù)、更新數(shù)據(jù)和展示數(shù)據(jù)的功能,實現(xiàn)了從大量疫情新聞數(shù)據(jù)中提取實時疫情信息的作用。
2.1.1 抓取數(shù)據(jù)
整個平臺的首頁有數(shù)據(jù)中心區(qū)域和全國各省份的疫情數(shù)據(jù)展示區(qū)域,數(shù)據(jù)中心區(qū)域主要展示全國自疫情以來累計的一些數(shù)據(jù),這些數(shù)據(jù)是通過從騰訊疫情數(shù)據(jù)接口上抓取得到的。實現(xiàn)時分別通過CityDetail類、DetailData類和Riskarea類中的catchData()方法抓獲取到全國各省市區(qū)數(shù)據(jù)、全國累計數(shù)據(jù)、當日數(shù)據(jù)、各省份詳細數(shù)據(jù)和全國中高風險地區(qū)數(shù)據(jù),再把抓取到的數(shù)據(jù)進行數(shù)據(jù)解析之后存入Redis數(shù)據(jù)庫[4]。
2.1.2 更新數(shù)據(jù)
疫情數(shù)據(jù)每天都在發(fā)生變化,因此系統(tǒng)需要具備數(shù)據(jù)更新功能。在每天數(shù)據(jù)接口更新時,系統(tǒng)能夠及時抓取到新數(shù)據(jù),實現(xiàn)數(shù)據(jù)更新,此功能核心是SystemTask類中的Job()方法,通過Spring框架中的@Scheduled注解來實現(xiàn)的,設置系統(tǒng)每天在早上10:30和下午7:30進行數(shù)據(jù)抓取,以此實現(xiàn)定時更新疫情數(shù)據(jù)。
2.1.3 展示數(shù)據(jù)
在首頁中的數(shù)據(jù)中心區(qū)域顯示某個疫情數(shù)據(jù)的總和,這些數(shù)據(jù)是在DetailData類中,每一項數(shù)據(jù)都有一個最近60天的數(shù)據(jù),當單擊查看詳情之后會跳轉到list.html數(shù)據(jù)詳情頁面,通過調用IndexController類中excuteDetail()方法,通過IDataService接口中getAllChinaDayList()方法從Redis數(shù)據(jù)庫中得到對應的數(shù)據(jù)并展示到頁面中。其余各省份的疫情數(shù)據(jù)是通過調用handlerList()方法,通過IDataService接口中getStatisGradeCityDetail()方法從數(shù)據(jù)庫中抓取各個省市區(qū)的現(xiàn)有確診人數(shù)和該地區(qū)所屬省份的數(shù)據(jù)并展示到頁面中。此外,還可以通過調用excuteRiskarea()方法抓取全國目前中高風險地區(qū)的數(shù)據(jù)。
救援物資管理包括對救援物資的增、刪、改、查和救援物資領取的功能,實現(xiàn)了對救援物資來源的記錄和對救援物資去向的追溯。
2.2.1 救援物資管理
首先設計一個救援物資的實體類Material,管理員成功登錄后在進入救援物資管理頁面時會調用MaterialController類中的handlerMaterialList()方法,通過IMaterialService接口中的getMaterialList()方法從數(shù)據(jù)庫中查詢material_info表中的所有數(shù)據(jù)并顯示到頁面中。當單擊添加救援物資按鈕跳轉至相關頁面,就可完成救援物資入庫的基本信息。
救援物資基本信息最終是以form表單的形式用post方式提交,此時將會調用MaterialController類中的handlerMaterial()方法,通過IMaterialService接口中的addNewMaterial()方法將物資信息插入數(shù)據(jù)庫material_info表,執(zhí)行成功之后會跳轉到救援物資管理頁面并顯示添加的救援物資信息。
2.2.2 救援物資領取
在救援物資管理頁面中,當需要領取救援物資時,只需要單擊該救援物資所對應的領取按鈕,觸發(fā)單擊事件,跳轉到物資領取界面record_add.html,把領取物資記錄信息填寫完成之后,單擊領取按鈕通過調用RecordController類中的handlerAddNewRecordList()方法,把救援物資領取記錄插入相關數(shù)據(jù)表,同時物資的庫存數(shù)量也會進行修改。
用戶管理主要是對領取人的管理。系統(tǒng)設計了一個領取人的實體類User來做統(tǒng)一管理,管理員登錄成功進入首頁,單擊導航欄的領取人管理就會進入領取人信息列表頁面。在進入頁面時會調用UserController類中的handleruserList()方法,通過IUserService接口中的getAllUserlList()方法從數(shù)據(jù)庫中查詢出user_info表中的所有數(shù)據(jù),同時再顯示到頁面中。當需要添加領取人時,需要單擊添加領取人按鈕跳轉user_add.html頁面,在此頁面中管理員只需要填寫新領取人的基本信息即可。
救援物資管理平臺在軟件測試時主要考慮在基本救援物資入庫、出庫時要保持庫存數(shù)量的一致,在領取救援物資時,要求輸入和修改的信息遵循數(shù)據(jù)庫設計時對字段的合理性要求,同時也需要規(guī)范數(shù)據(jù)類型。功能測試用例要符合軟件測試的基本要求,以便達到預期測試效果。
在救援物資管理平臺的測試中,對救援物資管理平臺中各功能模塊代碼進行了檢查和分析,優(yōu)化了部分代碼,降低了平臺代碼的冗余度,然后對救援物資管理平臺進行了運行測試,按照測試用例的要求,填寫相關數(shù)據(jù)并運行分析測試效果[5],系統(tǒng)功能測試如圖2—3所示。經(jīng)過測試,平臺可以對物資名稱、入庫數(shù)量、物資型號、物資批次等救援物資信息進行錄入、修改,還可以檢索救援物資的領取記錄,各個功能模塊運行正常,整個平臺運行流暢,測試結果符合最初設計的預期。
圖2 錄入救援物資信息頁面
圖3 領取救援物資頁面
本文利用提取到的災害信息數(shù)據(jù),以網(wǎng)絡技術、多種數(shù)據(jù)庫技術、各種框架技術為背景,對救援物資管理平臺的具體實現(xiàn)技術和方法進行了分析和研究,實現(xiàn)了疫情數(shù)據(jù)管理、救援物資管理、用戶管理等功能。平臺界面美觀,可操作性較強,在一定程度上為救援物資的管理提供便利。