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