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