邱 源,劉江南,邱勝海,李光榮
(1.上??萍即髮W(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 201210;2.南京工程學(xué)院 機(jī)械工程學(xué)院,江蘇 南京 211167)
隨著政府對農(nóng)業(yè)農(nóng)機(jī)具購置補(bǔ)貼政策的扶持以及中央財(cái)政補(bǔ)助資金規(guī)模逐年擴(kuò)大,近年來已經(jīng)達(dá)到數(shù)百億之多,國家處于農(nóng)業(yè)機(jī)械化全面轉(zhuǎn)型升級的黃金發(fā)展階段,而快速發(fā)展存在農(nóng)機(jī)具維修難、配套難及管理落后等一系列問題,如農(nóng)機(jī)具制造商和經(jīng)銷商在政府的扶持政策下更傾向于整機(jī)的銷售,對于配件的維修服務(wù)的管理方面存在諸多不足。例如國內(nèi)蘇北地區(qū),對農(nóng)機(jī)維修網(wǎng)點(diǎn)現(xiàn)實(shí)狀況進(jìn)行分析,此地區(qū)的農(nóng)機(jī)具分布比較分散,使用情況不集中,常常會出現(xiàn)有關(guān)維修人員無法在第一時(shí)間趕往現(xiàn)場,如果出現(xiàn)問題的農(nóng)機(jī)具已經(jīng)過了三包期限,將無法保修,需要支付額外的維修費(fèi)用,部分不了解情況的用戶難以接受。經(jīng)過調(diào)研與分析后,農(nóng)機(jī)維修市場主要存在的問題包括:農(nóng)機(jī)維修網(wǎng)點(diǎn)規(guī)模小,維修能力較為有限;專業(yè)維修技術(shù)人員較少,維修技術(shù)水平較低;很多的維修站點(diǎn)的技術(shù)人員并沒有專業(yè)的手段,操作不規(guī)范、維修條件差、維修設(shè)備不足等都會在維修的過程中出現(xiàn),容易導(dǎo)致安全隱患,導(dǎo)致農(nóng)機(jī)具無法正常運(yùn)行。目前農(nóng)戶往往根據(jù)農(nóng)機(jī)自行配套農(nóng)機(jī)具,也造成農(nóng)機(jī)與機(jī)具配套不合理、故障頻發(fā)的現(xiàn)象,存在很大的安全隱患。隨著信息技術(shù)迅速發(fā)展,云計(jì)算、互聯(lián)網(wǎng)、物聯(lián)網(wǎng)以及大數(shù)據(jù)等的建設(shè)應(yīng)用催生了社會產(chǎn)業(yè)結(jié)構(gòu)的變革,使社會經(jīng)濟(jì)發(fā)展態(tài)勢發(fā)生了重大改變。在“互聯(lián)網(wǎng)+”時(shí)代,逐漸呈現(xiàn)“新業(yè)態(tài),深融合”態(tài)勢,產(chǎn)業(yè)結(jié)構(gòu)不斷變革,產(chǎn)業(yè)鏈不斷細(xì)化,商業(yè)模式不斷創(chuàng)新[1-3]?!盎ヂ?lián)網(wǎng)+”農(nóng)業(yè)經(jīng)濟(jì)逐漸成為新農(nóng)村建設(shè)的重要樞紐,是解決“三農(nóng)”問題的主要支撐技術(shù),必將成為農(nóng)民從事農(nóng)業(yè)生產(chǎn)和管理的新興工具,是實(shí)現(xiàn)農(nóng)業(yè)現(xiàn)代化的關(guān)鍵[4]。如果將互聯(lián)網(wǎng)技術(shù)運(yùn)用在農(nóng)機(jī)供應(yīng)中,將會有效解決農(nóng)機(jī)與農(nóng)機(jī)具不配套的問題,如農(nóng)民在采購農(nóng)機(jī)時(shí)可以通過互聯(lián)網(wǎng)了解農(nóng)機(jī)廠家信譽(yù)、生產(chǎn)機(jī)型、配置參數(shù)、與之配套的農(nóng)機(jī)具產(chǎn)品及信譽(yù)情況,有益于農(nóng)機(jī)產(chǎn)品的選購,因此引入“互聯(lián)網(wǎng)+”將成為農(nóng)機(jī)供應(yīng)新的發(fā)展模式[5]。開啟“互聯(lián)網(wǎng)+”模式,還可以將農(nóng)機(jī)具安全宣傳、操作培訓(xùn)、隱患排查、人員管理等內(nèi)容納入電子信息平臺管理,是貫徹“科技興安”戰(zhàn)略、提高政府農(nóng)機(jī)安全監(jiān)管和農(nóng)民機(jī)手安全保障能力的重要途徑[6]。
基于互聯(lián)網(wǎng)的農(nóng)機(jī)具維修及配套管理信息系統(tǒng)(repair and support system of agricultural machinery and tool,RSSAMT)可以提高農(nóng)機(jī)具管理效率,降低農(nóng)機(jī)配件的管理成本,從而達(dá)到提高服務(wù)質(zhì)量、節(jié)省服務(wù)成本的目的?;贘AVA EE體系架構(gòu)、Shiro安全框架以及微信小程序等技術(shù)來構(gòu)建農(nóng)機(jī)具維修及配套管理網(wǎng)絡(luò)系統(tǒng),JAVA EE體系架構(gòu)能保證該管理平臺具有可擴(kuò)展、安全可靠、跨平臺、面向?qū)ο蟮葍?yōu)點(diǎn)[7];Shiro安全框架可實(shí)現(xiàn)用戶認(rèn)證、用戶授權(quán)等功能,使得系統(tǒng)具有較好的安全性[8-9]。微信小程序客戶端架構(gòu)在微信公共平臺之上,具有無需安裝、無需卸載等優(yōu)點(diǎn),給用戶提供了更好的網(wǎng)絡(luò)體驗(yàn)[10]。
根據(jù)對N市、JN縣(區(qū))、S鎮(zhèn)和農(nóng)機(jī)具的四級用戶以及農(nóng)機(jī)供應(yīng)商、農(nóng)具配套商等企業(yè)進(jìn)行調(diào)研,對收集的各類單據(jù)及報(bào)表等信息進(jìn)行分析,將RSSAMT系統(tǒng)功能劃分為七個子系統(tǒng),其功能分別描述如下:
系統(tǒng)管理:用于管理用戶、角色及其權(quán)限模塊,其功能為管理用戶(四級用戶)登錄信息、個人詳細(xì)信息,各類經(jīng)銷商等信息、角色信息、用戶權(quán)限分配等。
配件管理:用于管理農(nóng)機(jī)具的配件信息,配件信息包括配件名稱,配件編碼、頁碼、價(jià)格、數(shù)量、圖片等。
整機(jī)管理:用于管理農(nóng)機(jī)整機(jī)信息,在此模塊,大小經(jīng)銷商可以錄入整機(jī)的信息,并且進(jìn)行簡單的查詢。列表中對整機(jī)的操作有三種,解析pdf、編輯、刪除,方便用戶對于整機(jī)整體的了解。
維修管理:用于管理用戶提交的維修單信息。用戶可以在本系統(tǒng)中選擇配件維修申請,在維修單中需要填寫設(shè)備的使用時(shí)長、不良狀況、故障日期等信息,并選擇對應(yīng)的經(jīng)銷商,確定該經(jīng)銷商代理的需要維修的農(nóng)機(jī)具配件,系統(tǒng)會自動顯示不良零件所對應(yīng)的農(nóng)機(jī)具的機(jī)型、發(fā)動機(jī)編號等信息,在填寫不良情況內(nèi)容后,便可提交維修單。提交后的維修單即可在微信平臺“我的維修單”界面中查詢到;經(jīng)銷商可以對用戶提交的維修單進(jìn)行部分信息的修正,并且對維修單進(jìn)行審核,同時(shí)指定對應(yīng)的服務(wù)商來為用戶提供維修服務(wù)。在經(jīng)銷商指定了對應(yīng)的服務(wù)商之后,服務(wù)商可在維修單選擇“維修服務(wù)提供”,能夠查詢到經(jīng)銷商審核通過的維修單信息,并且對維修單進(jìn)行剩余信息的完善,包括維修人員推定的零件故障的原因、維修日期、修理者、修理人員聯(lián)系方式等,維修單分為維修中和維修完成兩個狀態(tài)。
訂單管理:用于管理需要維修采購的訂單及訂單明細(xì)信息,在訂單管理模塊中有訂單信息列表,列表操作包括訂單明細(xì)查看、訂單刪除,需求表導(dǎo)出、訂購單導(dǎo)出等功能,便于用戶及經(jīng)銷商對自己的訂購信息進(jìn)行記錄與管理,用戶可根據(jù)訂單號、訂單審核狀態(tài)、訂單創(chuàng)建時(shí)間段來查詢自己的訂單詳細(xì)信息。
實(shí)時(shí)消息管理:用于各農(nóng)機(jī)站內(nèi)的消息通信,方便用戶之間的溝通。
綜合查詢:用于農(nóng)機(jī)整機(jī)及各類配件信息的綜合查詢,支持多個條件下的精確和模糊查詢。
微信小程序:用戶能夠通過微信小程序APP來注冊登錄系統(tǒng),通過掃碼或輸入關(guān)鍵字來查詢配件信息,提交訂單、配件維修單及訂單的狀態(tài)。
RSSAMT系統(tǒng)功能結(jié)構(gòu)如圖1中表示層所示。
圖1 RSSAMT系統(tǒng)的總體架構(gòu)
根據(jù)RSSAMT系統(tǒng)的功能描述及數(shù)據(jù)收集情況,分析得到系統(tǒng)的主要實(shí)體有:農(nóng)機(jī)經(jīng)銷商、整機(jī)信息、配件信息、部門、訂單、維修單、角色與權(quán)限等。其中農(nóng)機(jī)經(jīng)銷商與整機(jī)信息、農(nóng)機(jī)經(jīng)銷商與配件信息、訂單與配件信息、維修單與配件信息、用戶與角色、用戶角色與功能屬于多對多的聯(lián)系、其他如部門與用戶、用戶與訂單、用戶與維修單等是一對多聯(lián)系,設(shè)計(jì)RSSAMT概念模型(E-R圖),如圖2所示。
圖2 RSSAMT系統(tǒng)的數(shù)據(jù)庫概念模型
根據(jù)數(shù)據(jù)庫規(guī)范化理論及數(shù)據(jù)庫性能要求,對圖2進(jìn)行邏輯設(shè)計(jì),使之達(dá)到3NF,邏輯設(shè)計(jì)模型如下所示(邏輯模型包含了實(shí)體的主要屬性,其中帶下劃線的為主屬性,波浪線的為外屬性)。
經(jīng)銷商(經(jīng)銷商ID,名稱,法人,地址等)、整機(jī)(整機(jī)ID,型號,生產(chǎn)廠商,經(jīng)銷商等)、配件(配件ID,配件名稱,頁碼,經(jīng)銷商,數(shù)量,價(jià)格等)、用戶權(quán)限(用戶ID,角色I(xiàn)D,功能ID,有效標(biāo)志等)、訂單(訂單編號,用戶ID,日期,狀態(tài)等)、訂單明細(xì)(序號,訂單編號,配件ID,數(shù)量,折扣價(jià)等)、維修單(維修單編號,用戶ID,日期,故障原因等)、維修單明細(xì)(序號,維修單編號,使用配件ID,需要數(shù)量等)。
RSSAMT系統(tǒng)采用J2EE分布式多層次架構(gòu)軟件體系(BSSM框架集,由Bootstrap、Spring、SpringMVC 和MyBatis構(gòu)成)設(shè)計(jì)[11-16],自底向上分別為數(shù)據(jù)庫層、數(shù)據(jù)訪問層、業(yè)務(wù)層、控制層、表示層和客戶端,該架構(gòu)分離了控制器、模型對象以及分派器的角色,使各個部分松散耦合,簡化系統(tǒng)的復(fù)雜度。每層的功能描述如下:
數(shù)據(jù)庫層采用功能強(qiáng)大的MySQL關(guān)系型數(shù)據(jù)庫及Redis緩存數(shù)據(jù)庫;模型層負(fù)責(zé)存放封裝數(shù)據(jù)表信息、查詢條件信息以及請求信息的實(shí)體類;數(shù)據(jù)訪問層DAO集成MyBatis持久層對象映射開源框架,可以減輕DAO層的開發(fā)工作量,大幅提高持久層的開發(fā)效率;業(yè)務(wù)層負(fù)責(zé)定義若干業(yè)務(wù)接口類及對應(yīng)的實(shí)現(xiàn)類,在實(shí)現(xiàn)類中引用DAO接口,通過注解注入DAO接口,獲得數(shù)據(jù)訪問功能??刂茖迂?fù)責(zé)存放各種處理前端請求數(shù)據(jù)、返回視圖View或JSON數(shù)據(jù)給控制器。
表示層采用Bootstrap前端開源框架,融合HTML、CSS、JavaScript等技術(shù),具有富客戶端界面、動態(tài)響應(yīng)速度快及客戶體驗(yàn)好等特點(diǎn)。表示層負(fù)責(zé)存放靜態(tài)資源,系統(tǒng)默認(rèn)可以訪問靜態(tài)資源文件,包括引入的JavaScript庫文件、CSS樣式表以及Thymeleaf的視圖解析模板文件等,采用該框架的表示層能夠減少開發(fā)工作量、提升開發(fā)效率??蛻舳瞬捎脼g覽器及移動手機(jī)微信端小程序?yàn)橹鱗8-9],要求能連接互聯(lián)網(wǎng),RSSAMT系統(tǒng)的總體架構(gòu)如圖1所示。
RSSAMT系統(tǒng)采用的技術(shù)包括MyBatis技術(shù)、Bootstrap技術(shù)、Shiro技術(shù)、云服務(wù)器技術(shù)及Redis緩存數(shù)據(jù)庫技術(shù),分述如下:
(1)持久層框架技術(shù)。RSSAMT系統(tǒng)持久層采用的是MyBatis框架,能夠定制SQL語句以及存儲過程等,使用XML文件或者簡單的注解來映射SQL語句到對應(yīng)Mapper接口的方法上,實(shí)現(xiàn)動態(tài)SQL語句的查詢,MyBatis支持多種數(shù)據(jù)類型的映射,具有簡單、高效的優(yōu)點(diǎn)。
(2)模板引擎與前端框架技術(shù)。RSSAMT系統(tǒng)界面使用的是Thymeleaf模板引擎,用于JAVA渲染數(shù)據(jù)返回前端頁面,目前支持HTML、JS、CSS等文件的處理,能夠?qū)崿F(xiàn)前后端分離,Thymeleaf使用的是HTML后綴的文件,并且能根據(jù)Web應(yīng)用啟動情況動態(tài)地解析與顯示,與普通的JSP頁面相比,前者的容錯率與適配性更好,編程效率更高效。目前常用的前端框架較多,例如Bootstrap、Vue.js及EasyUI等,具有簡單、易用的優(yōu)點(diǎn)。其中Bootstrap基于HTML、CSS、JS開發(fā),是一款界面簡潔、直觀、優(yōu)美,封裝性良好的代碼使得前端頁面的設(shè)計(jì)與數(shù)據(jù)交互更加快捷高效的前端開發(fā)框架,讓W(xué)eb開發(fā)更迅速。
(3)安全框架技術(shù)。RSSAMT系統(tǒng)采用基于角色的訪問控制策略,采用Shiro開源安全框架能夠?qū)Φ卿浀挠脩暨M(jìn)行身份驗(yàn)證、對密碼進(jìn)行自定義加密、對用戶進(jìn)行授權(quán)以及會話管理,從而實(shí)現(xiàn)對前端頁面以及后臺數(shù)據(jù)的權(quán)限控制,權(quán)限的控制范圍能達(dá)到方法級別的粒度,具有較好的實(shí)用性。系統(tǒng)使用HTTPS安全協(xié)議,在申請了SSL證書之后,對SSL證書進(jìn)行相關(guān)的配置,內(nèi)容包括SSL密鑰的存儲路徑、密碼、存儲類型、監(jiān)聽端口、跳轉(zhuǎn)端口、請求協(xié)議等信息設(shè)置,網(wǎng)站對數(shù)據(jù)傳輸自動進(jìn)行加密,可以有效防止信息的泄露與被竊取,保證了前端頁面數(shù)據(jù)傳輸?shù)陌踩?。云平臺還用于記錄用戶SessionID,創(chuàng)建時(shí)間及最后訪問時(shí)間,記錄訪問地址,用戶請求的總次數(shù)和總時(shí)長,可有效管理用戶登錄狀況。
(4)云服務(wù)器平臺技術(shù)。云服務(wù)器平臺是一種計(jì)算服務(wù),彈性可伸縮,將系統(tǒng)架構(gòu)在云服務(wù)器上可以使用其提供的中間件、存儲空間以及數(shù)據(jù)庫服務(wù),并使用監(jiān)控控制臺進(jìn)行監(jiān)控運(yùn)維,能夠提升運(yùn)維的效率,降低部署及硬件購買的成本。系統(tǒng)部署使用的是阿里云服務(wù)器,操作系統(tǒng)選擇相對安全的CentOS系統(tǒng),測試環(huán)境配置參數(shù)為:2核CPU,1 G內(nèi)存,10 Mbps公網(wǎng)帶寬以及80 G高效云盤。管理員登錄阿里云服務(wù)器ECS控制臺,對云服務(wù)器的安全漏洞、異常登錄、系統(tǒng)事件日志、CUP消耗、網(wǎng)絡(luò)等進(jìn)行監(jiān)控,并對服務(wù)器進(jìn)行安全組的規(guī)則配置、潛在危險(xiǎn)的安全組檢測,及時(shí)對突發(fā)狀況進(jìn)行處理。
(5)Redis緩存數(shù)據(jù)庫技術(shù)。RSSAMT系統(tǒng)采用MySQL關(guān)系型數(shù)據(jù)庫,其中整機(jī)及配件表存放了大量的數(shù)據(jù)記錄,由于系統(tǒng)使用的用戶數(shù)量較多,頻繁訪問數(shù)據(jù)庫將給系統(tǒng)的性能帶來較大的影響,因此采用Redis緩存框架來減少對數(shù)據(jù)庫表的訪問,減輕數(shù)據(jù)庫壓力,同時(shí)緩存用戶的登錄信息,以實(shí)現(xiàn)用戶單點(diǎn)登錄及快速訪問配件表的目的。
以RSSAMT系統(tǒng)維修子系統(tǒng)為例,普通用戶可以在維修單管理功能中選擇配件維修申請,詳細(xì)操作如下:
(1)選擇登錄后的系統(tǒng)功能“維修單管理”下級“配件維修申請”功能,進(jìn)入填寫頁面,如圖3所示。選擇對應(yīng)的經(jīng)銷商及不良零件信息、需要上傳的圖片等信息,點(diǎn)擊提交。
圖3 維修單填寫界面
(2)通過“我的維修單”,進(jìn)入維修單查詢頁面,在條件查詢里選擇對應(yīng)提交的日期時(shí)間段,可以查詢到剛剛提交的維修單信息。維修單信息也可以在手機(jī)微信端小程序中進(jìn)行填寫與查詢,如圖4所示。
圖4 微信端維修單填寫
(3)普通用戶申請維修后,對應(yīng)的經(jīng)銷商可以在該模塊的維修單審核菜單查看維修單信息列表,點(diǎn)擊維修單明細(xì)后,便可對某個維修單進(jìn)行審核,經(jīng)銷商可以對普通用戶提交的維修單進(jìn)行部分信息的修改,并且對維修單進(jìn)行審核,同時(shí)指定對應(yīng)的服務(wù)商來為用戶提供維修服務(wù)。
(4)維修單若有錯誤,則修改維修單信息,再次審核;否則指定對應(yīng)的服務(wù)商進(jìn)行維修服務(wù)。
采用JavaEE開發(fā)技術(shù)實(shí)現(xiàn)的步驟如下:
(1)創(chuàng)建數(shù)據(jù)庫所有的表對象,其中Matin-TainInfo表、MatinTainDetails表分別為維修單和明細(xì)信息表;
(2)設(shè)計(jì)MatinTainInfo實(shí)體POJO類,該類的屬性mdetails類型為Set,存放維修單的所有明細(xì)對象;
(3)設(shè)計(jì)IMatinTDao接口及MyBatis持久層框架支持的MatinTMapper.xml映射文件;
(4)設(shè)計(jì)維修服務(wù)接口IMatinTService及實(shí)現(xiàn)類MatinTServiceImpl,后者通過Spring框架注入IMatinTDao接口,從而獲得IMatinTDao接口的所有方法;
(5)設(shè)計(jì)維修頁面matinTMgr.html,在該頁面上使用Thymeleaf模板文件設(shè)計(jì)合適的界面控件;
(6)設(shè)計(jì)維修控制類MatinTContrloler,該類將處理得到的維修單信息傳給對應(yīng)的matinTMgr.html文件,用來展現(xiàn)數(shù)據(jù)給用戶;
(7)設(shè)計(jì)配置文件spring-mvc.xml,該文件用來配置業(yè)務(wù)流轉(zhuǎn)分發(fā)控制;
(8)設(shè)計(jì)配置文件spring-mybatis.xml,該文件用于Spring與MyBatis的集成配置,使DAO層功能能夠有效地與控制層無縫整合。
RSSAMT系統(tǒng)融合Bootstrap技術(shù)、MySQL技術(shù)、MyBatis持久層技術(shù)、Spring及SpringMVC技術(shù)、現(xiàn)代軟件工程開發(fā)技術(shù)實(shí)現(xiàn)了基于互聯(lián)網(wǎng)的農(nóng)機(jī)具配件維修系統(tǒng)。使用Redis緩存技術(shù)來減少對數(shù)據(jù)庫的直接訪問,減輕數(shù)據(jù)庫壓力;針對農(nóng)機(jī)用戶需求,使用微信Web開發(fā)者工具開發(fā)小程序,通過掃碼呈現(xiàn)農(nóng)機(jī)具詳細(xì)參數(shù)信息;開發(fā)的RSSAMT具有界面美觀、操作簡便、高可擴(kuò)展性以及較好性能等特點(diǎn)。該系統(tǒng)所涉及的農(nóng)機(jī)具配件信息類別比較單一,目前只有調(diào)研提供的一至兩種機(jī)型,還需進(jìn)一步豐富。完成的系統(tǒng)還存在功能不夠完善、圖片文件同步上傳效率低、多源數(shù)據(jù)少等缺陷,有待完善。