應(yīng)急包物資數(shù)字化管理系統(tǒng)研制
1研發(fā)背景
目前公司部分應(yīng)急包倉(cāng)庫(kù)存在物資數(shù)量大、周轉(zhuǎn)快的特點(diǎn),現(xiàn)有應(yīng)急包管理不完善、效率低,主要有如下問(wèn)題:
(1)資產(chǎn)管理系統(tǒng)中,從申請(qǐng)、審核到出倉(cāng)均有完善的閉環(huán)流程,但調(diào)查發(fā)現(xiàn),在現(xiàn)場(chǎng)領(lǐng)料時(shí)由于人為操作因素會(huì)出現(xiàn)賬、卡、物不一致的情況。
(2)現(xiàn)場(chǎng)物資領(lǐng)入/領(lǐng)出管理仍為傳統(tǒng)的"紙質(zhì)化管理",導(dǎo)致上級(jí)檢查現(xiàn)場(chǎng)物資出入記錄時(shí)數(shù)據(jù)不直觀、效率低。
(3)應(yīng)急包物資轉(zhuǎn)變?yōu)槌鰩?kù)物資管理后,應(yīng)急包物資臺(tái)賬與出入庫(kù)記錄缺乏系統(tǒng)管理,應(yīng)急物資管理工作量大、效率低且缺乏大數(shù)據(jù)分析功能。
傳統(tǒng)的應(yīng)急包"紙質(zhì)化管理"顯然出現(xiàn)了"小馬拉大車"的情況,亟需進(jìn)行應(yīng)急包管理數(shù)字化轉(zhuǎn)型。
2研發(fā)內(nèi)容與實(shí)現(xiàn)
2.1研發(fā)內(nèi)容
建設(shè)應(yīng)急包物資數(shù)字化管理系統(tǒng),包含倉(cāng)儲(chǔ)物資臺(tái)賬同步、掃碼出入庫(kù)管理、領(lǐng)用申請(qǐng)與資產(chǎn)系統(tǒng)出庫(kù)記錄關(guān)聯(lián)、定期自動(dòng)盤點(diǎn)、下限補(bǔ)充告警、數(shù)據(jù)分析等功能,實(shí)現(xiàn)應(yīng)急物資流轉(zhuǎn)管理及品類逐步優(yōu)化功能,減少紙質(zhì)登記的手填錯(cuò)誤,提高應(yīng)急包物資出入庫(kù)效率。2.2實(shí)施過(guò)程
(1)角色設(shè)計(jì)。本系統(tǒng)中涉及的業(yè)務(wù)角色有五種:開發(fā)者、超級(jí)管理員、單位管理員、部門管理員、普通員工,具體如表1所示。
(2)部署結(jié)構(gòu)如圖1所示。
(3)服務(wù)器資源配置要求如表2所示。
(4)系統(tǒng)業(yè)務(wù)功能結(jié)構(gòu)如圖2所示。
(5)應(yīng)急包物資管理系統(tǒng)后臺(tái)功能代碼實(shí)現(xiàn)。系統(tǒng)后臺(tái)采用Java編寫,Java和C++類似,都是面向?qū)ο蟮木幊陶Z(yǔ)言,但Ⅰava不僅具有C++語(yǔ)言優(yōu)點(diǎn),還摒棄了C++語(yǔ)言里許多難以理解的概念,比如多繼承、指針等。因此,Ⅰava語(yǔ)言對(duì)于開發(fā)者來(lái)說(shuō)不僅功能強(qiáng)大,而且簡(jiǎn)單易用。Ⅰava作為一門優(yōu)秀的面向?qū)ο蟮木幊陶Z(yǔ)言,允許程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜地編程,極好地實(shí)現(xiàn)了面向?qū)ο罄碚揫l]。Ⅰava介于編譯型語(yǔ)言和解釋型語(yǔ)言之間,不同于C、C++等編譯型語(yǔ)言,代碼通過(guò)直接編譯生成機(jī)器碼執(zhí)行,但對(duì)于不同的平臺(tái)(如x86、ARM等),處理器的指令集存在不同,因此需要對(duì)每一種平臺(tái)編譯出與之相應(yīng)的機(jī)器碼。解釋型語(yǔ)言如Python、Ruby由于是解釋器直接加載源代碼運(yùn)行,不存在這種問(wèn)題,但其效率太低。而Ⅰava是將代碼編譯成一種"字節(jié)碼",它類似于抽象的CPU指令,然后針對(duì)不同平臺(tái)編寫虛擬機(jī),不同平臺(tái)的虛擬機(jī)負(fù)責(zé)加載字節(jié)碼并執(zhí)行,對(duì)于Ⅰava開發(fā)者而言,就可以實(shí)現(xiàn)"一次編寫,到處運(yùn)行"的效果。但對(duì)于Ⅰava虛擬機(jī),需為每個(gè)平臺(tái)分別開發(fā)。從實(shí)踐的角度看,Ⅰava虛擬機(jī)的兼容性做得非常好,低版本的Ⅰava字節(jié)碼完全可以正常運(yùn)行在高版本的Ⅰava虛擬機(jī)上。
后臺(tái)系統(tǒng)包含了應(yīng)急包物資的"增""刪""改""查"等基礎(chǔ)物資操作功能的實(shí)現(xiàn),其中獲取物資信息功能的主要代碼如下:
/***Project列表數(shù)據(jù)*/@RequiresPermissions("list")@GetMapping("list")
publicAjaxⅠsonlist(Projectproject,HttpServletRequestrequest,HttpServletResponseresponse){
Page<Project>page=projectService.findPage(newPage<Project>(request,response),project):
returnAjaxⅠson.success().put("page",page)
*根據(jù)ID獲取Project數(shù)據(jù)*/
@RequiresPermissions(value={"view","it:project:project:add","edit"},logical=Logical.oR)
@GetMapping("queryById")publicAjaxⅠsonqueryById(Projectproject){
returnAjaxⅠson.success().put("project",project):*后臺(tái)hibernate-validation插件校驗(yàn)*/
StringerrMsg=beanValidator(project):if(StringUtils.isNotBlank(errMsg)){returnAjaxⅠson.
error(errMsg):}//新增或編輯表單保存
projectService.save(project)://保存
returnAjaxⅠson.success("保存Project成功"):}
(6)web展示代碼實(shí)現(xiàn)。web展示采用Vue+elementUi方式實(shí)現(xiàn),Vue是一套用于構(gòu)建用戶界面的漸進(jìn)式框架。漸進(jìn)式指的是階梯式向前,Vue的漸進(jìn)式表現(xiàn)為:聲明式渲染二組件系統(tǒng)二客戶端路由二大數(shù)據(jù)狀態(tài)管理二構(gòu)建工具。與其他大型框架不同的是,Vue被設(shè)計(jì)為可以自底向上逐層應(yīng)用。Vue是輕量級(jí)的,它有很多獨(dú)立的功能或庫(kù),進(jìn)行web開發(fā)時(shí)開發(fā)者可以根據(jù)自己的項(xiàng)目特點(diǎn)來(lái)選用Vue的一些功能。比如,項(xiàng)目只用到Vue的聲明式渲染,那就只用Vue的聲明渲染,而要用其他的組件系統(tǒng),直接進(jìn)行引用就行了。Vue的核心庫(kù)只關(guān)注視圖層,不僅易于上手,還便于與第三方庫(kù)或既有項(xiàng)目整合。另一方面,當(dāng)與現(xiàn)代化的工具鏈以及各種支持類庫(kù)結(jié)合使用時(shí),Vue也完全能夠?yàn)閺?fù)雜的單頁(yè)應(yīng)用提供驅(qū)動(dòng)。
web展示包括商品檔案、入庫(kù)單、出庫(kù)單、物資盤點(diǎn)、庫(kù)存統(tǒng)計(jì)等業(yè)務(wù)功能頁(yè)面,此外還包括用戶管理、參數(shù)配置、權(quán)限和角色管理等系統(tǒng)管理功能頁(yè)面。
2.3關(guān)鍵技術(shù)
整體框架技術(shù):Springboot2.0、MyBatis、redis、Vue、elementUI、es6、webpack。
本軟件產(chǎn)品基于B/S模式進(jìn)行開發(fā)實(shí)現(xiàn),技術(shù)路線方面主要采用三層架構(gòu),即UI表現(xiàn)層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問(wèn)層。
2.3.lUI表現(xiàn)層
移動(dòng)端采用react-native框架實(shí)現(xiàn)數(shù)據(jù)展示,具有友好性強(qiáng)的特點(diǎn):后臺(tái)管理采用Vue+elementUI前端框架,使用它強(qiáng)大的組件功能,可以減輕開發(fā)工作量,提高開發(fā)效率。
2.3.2業(yè)務(wù)邏輯層
業(yè)務(wù)邏輯層主要實(shí)現(xiàn)系統(tǒng)業(yè)務(wù)邏輯的處理,通過(guò)與前臺(tái)UI界面進(jìn)行數(shù)據(jù)交互,將業(yè)務(wù)數(shù)據(jù)傳送到前臺(tái)UI頁(yè)面展示,并在系統(tǒng)后臺(tái)自動(dòng)處理復(fù)雜的業(yè)務(wù)操作邏輯。本項(xiàng)目采用基于Java的最新Spring框架實(shí)現(xiàn)系統(tǒng)功能。
Spring是一個(gè)基于Java的比較輕量的開源框架,分層架構(gòu)是該框架的主要優(yōu)勢(shì)之一,分層架構(gòu)允許開發(fā)人員自主選擇使用哪些組件,同時(shí)也為J2EE應(yīng)用程序開發(fā)提供集成方案。Spring使用JavaBean技術(shù)規(guī)范來(lái)完成以前只可能由EJB完成的事情,它是為了簡(jiǎn)化企業(yè)應(yīng)用開發(fā)復(fù)雜性而創(chuàng)建的。當(dāng)然,Spring遠(yuǎn)遠(yuǎn)不僅局限于服務(wù)器端的開發(fā),從開發(fā)簡(jiǎn)單性、代碼可測(cè)試性和功能松耦合方面來(lái)說(shuō),任何Java應(yīng)用都可以從Spring結(jié)構(gòu)中受益??偟膩?lái)說(shuō),Spring是一個(gè)輕量級(jí)的面向切面(AoP)和控制反轉(zhuǎn)(IoC)的容器框架。
2.3.3數(shù)據(jù)訪問(wèn)層
數(shù)據(jù)訪問(wèn)層采用MyBatis技術(shù)實(shí)現(xiàn),MyBatis是一個(gè)基于Java的優(yōu)秀的持久層框架,該框架目前應(yīng)用非常廣泛且成熟、穩(wěn)定,業(yè)務(wù)邏輯層通過(guò)調(diào)用MyBatis提供的API,實(shí)現(xiàn)底層數(shù)據(jù)訪問(wèn)與交互,靈活地進(jìn)行業(yè)務(wù)系統(tǒng)數(shù)據(jù)的增、刪、改、查操作。
MyBatis持久層框架包括兩大方面:SQLMaps、DataAccessobjects(DAo),同時(shí)還提供一個(gè)基于該框架開發(fā)的JPetStore實(shí)例。相對(duì)于Hibernate和ApacheoJB等"一站式"oRM解決方案而言,MyBatis是一種"半自動(dòng)化"的oRM實(shí)現(xiàn)。
安全考慮:嚴(yán)格遵循了web安全的規(guī)范,設(shè)計(jì)上采用前后臺(tái)雙重驗(yàn)證,參數(shù)編碼傳輸,密碼md5加密存儲(chǔ),shiro權(quán)限驗(yàn)證,針對(duì)常見的網(wǎng)絡(luò)安全漏洞做嚴(yán)格的安全防護(hù),從根本上避免外部SQL注入、跨站腳本攻擊、CSRF攻擊等常見的web攻擊。
3系統(tǒng)測(cè)試
根據(jù)軟件測(cè)試方案及應(yīng)急包物資數(shù)字化管理系統(tǒng)用戶手冊(cè),對(duì)軟件各項(xiàng)功能逐一進(jìn)行測(cè)試。主要從以下兩方面著手:
(1)根據(jù)測(cè)試場(chǎng)景及案例,輸入?yún)?shù),然后判斷是否有輸出反饋,獲得的反饋是否與預(yù)期測(cè)試結(jié)果一致:
(2)輸入不滿足輸入要求的數(shù)據(jù),比如超出邊界的數(shù)據(jù)等,判斷軟件是否識(shí)別錯(cuò)誤,是否出錯(cuò),是否能提醒用戶錯(cuò)誤事項(xiàng)并提示重新輸入。
對(duì)于軟件測(cè)試中發(fā)現(xiàn)的錯(cuò)誤及改進(jìn)建議,根據(jù)重要程度分以下4個(gè)等級(jí)進(jìn)行記錄統(tǒng)計(jì):
A級(jí):軟件功能不能實(shí)現(xiàn)或結(jié)果錯(cuò)誤:
B級(jí):軟件功能可以實(shí)現(xiàn),但輸入不匹配的錯(cuò)誤參數(shù)后不能識(shí)別,輸出錯(cuò)誤或報(bào)錯(cuò)的輸出結(jié)果:
C級(jí):軟件界面外觀問(wèn)題,如字體、顏色、對(duì)齊等:
D級(jí):其他改進(jìn)建議。
測(cè)試用例與缺陷情況如表3所示。
4結(jié)語(yǔ)
該系統(tǒng)的設(shè)計(jì)完成,實(shí)現(xiàn)了應(yīng)急包物資臺(tái)賬同步、掃碼出入庫(kù)管理、領(lǐng)用申請(qǐng)與資產(chǎn)系統(tǒng)出庫(kù)記錄關(guān)聯(lián)、定期自動(dòng)盤點(diǎn)、下限補(bǔ)充告警、數(shù)據(jù)分析等功能,解決了現(xiàn)有應(yīng)急包管理不完善、無(wú)系統(tǒng)支撐、效率低等問(wèn)題,使公司應(yīng)急包管理更加合理規(guī)范,提高了應(yīng)急包物資出入流轉(zhuǎn)的效率,對(duì)于公司應(yīng)急包物資管理數(shù)字化轉(zhuǎn)型起到了一定的促進(jìn)作用。