邱 源,劉江南,邱勝海,李光榮
(1.上海科技大學 信息科學與技術學院,上海 201210;2.南京工程學院 機械工程學院,江蘇 南京 211167)
隨著政府對農業農機具購置補貼政策的扶持以及中央財政補助資金規模逐年擴大,近年來已經達到數百億之多,國家處于農業機械化全面轉型升級的黃金發展階段,而快速發展存在農機具維修難、配套難及管理落后等一系列問題,如農機具制造商和經銷商在政府的扶持政策下更傾向于整機的銷售,對于配件的維修服務的管理方面存在諸多不足。例如國內蘇北地區,對農機維修網點現實狀況進行分析,此地區的農機具分布比較分散,使用情況不集中,常常會出現有關維修人員無法在第一時間趕往現場,如果出現問題的農機具已經過了三包期限,將無法保修,需要支付額外的維修費用,部分不了解情況的用戶難以接受。經過調研與分析后,農機維修市場主要存在的問題包括:農機維修網點規模小,維修能力較為有限;專業維修技術人員較少,維修技術水平較低;很多的維修站點的技術人員并沒有專業的手段,操作不規范、維修條件差、維修設備不足等都會在維修的過程中出現,容易導致安全隱患,導致農機具無法正常運行。目前農戶往往根據農機自行配套農機具,也造成農機與機具配套不合理、故障頻發的現象,存在很大的安全隱患。隨著信息技術迅速發展,云計算、互聯網、物聯網以及大數據等的建設應用催生了社會產業結構的變革,使社會經濟發展態勢發生了重大改變。在“互聯網+”時代,逐漸呈現“新業態,深融合”態勢,產業結構不斷變革,產業鏈不斷細化,商業模式不斷創新[1-3]?!盎ヂ摼W+”農業經濟逐漸成為新農村建設的重要樞紐,是解決“三農”問題的主要支撐技術,必將成為農民從事農業生產和管理的新興工具,是實現農業現代化的關鍵[4]。如果將互聯網技術運用在農機供應中,將會有效解決農機與農機具不配套的問題,如農民在采購農機時可以通過互聯網了解農機廠家信譽、生產機型、配置參數、與之配套的農機具產品及信譽情況,有益于農機產品的選購,因此引入“互聯網+”將成為農機供應新的發展模式[5]。開啟“互聯網+”模式,還可以將農機具安全宣傳、操作培訓、隱患排查、人員管理等內容納入電子信息平臺管理,是貫徹“科技興安”戰略、提高政府農機安全監管和農民機手安全保障能力的重要途徑[6]。
基于互聯網的農機具維修及配套管理信息系統(repair and support system of agricultural machinery and tool,RSSAMT)可以提高農機具管理效率,降低農機配件的管理成本,從而達到提高服務質量、節省服務成本的目的?;贘AVA EE體系架構、Shiro安全框架以及微信小程序等技術來構建農機具維修及配套管理網絡系統,JAVA EE體系架構能保證該管理平臺具有可擴展、安全可靠、跨平臺、面向對象等優點[7];Shiro安全框架可實現用戶認證、用戶授權等功能,使得系統具有較好的安全性[8-9]。微信小程序客戶端架構在微信公共平臺之上,具有無需安裝、無需卸載等優點,給用戶提供了更好的網絡體驗[10]。
根據對N市、JN縣(區)、S鎮和農機具的四級用戶以及農機供應商、農具配套商等企業進行調研,對收集的各類單據及報表等信息進行分析,將RSSAMT系統功能劃分為七個子系統,其功能分別描述如下:
系統管理:用于管理用戶、角色及其權限模塊,其功能為管理用戶(四級用戶)登錄信息、個人詳細信息,各類經銷商等信息、角色信息、用戶權限分配等。
配件管理:用于管理農機具的配件信息,配件信息包括配件名稱,配件編碼、頁碼、價格、數量、圖片等。
整機管理:用于管理農機整機信息,在此模塊,大小經銷商可以錄入整機的信息,并且進行簡單的查詢。列表中對整機的操作有三種,解析pdf、編輯、刪除,方便用戶對于整機整體的了解。
維修管理:用于管理用戶提交的維修單信息。用戶可以在本系統中選擇配件維修申請,在維修單中需要填寫設備的使用時長、不良狀況、故障日期等信息,并選擇對應的經銷商,確定該經銷商代理的需要維修的農機具配件,系統會自動顯示不良零件所對應的農機具的機型、發動機編號等信息,在填寫不良情況內容后,便可提交維修單。提交后的維修單即可在微信平臺“我的維修單”界面中查詢到;經銷商可以對用戶提交的維修單進行部分信息的修正,并且對維修單進行審核,同時指定對應的服務商來為用戶提供維修服務。在經銷商指定了對應的服務商之后,服務商可在維修單選擇“維修服務提供”,能夠查詢到經銷商審核通過的維修單信息,并且對維修單進行剩余信息的完善,包括維修人員推定的零件故障的原因、維修日期、修理者、修理人員聯系方式等,維修單分為維修中和維修完成兩個狀態。
訂單管理:用于管理需要維修采購的訂單及訂單明細信息,在訂單管理模塊中有訂單信息列表,列表操作包括訂單明細查看、訂單刪除,需求表導出、訂購單導出等功能,便于用戶及經銷商對自己的訂購信息進行記錄與管理,用戶可根據訂單號、訂單審核狀態、訂單創建時間段來查詢自己的訂單詳細信息。
實時消息管理:用于各農機站內的消息通信,方便用戶之間的溝通。
綜合查詢:用于農機整機及各類配件信息的綜合查詢,支持多個條件下的精確和模糊查詢。
微信小程序:用戶能夠通過微信小程序APP來注冊登錄系統,通過掃碼或輸入關鍵字來查詢配件信息,提交訂單、配件維修單及訂單的狀態。
RSSAMT系統功能結構如圖1中表示層所示。

圖1 RSSAMT系統的總體架構
根據RSSAMT系統的功能描述及數據收集情況,分析得到系統的主要實體有:農機經銷商、整機信息、配件信息、部門、訂單、維修單、角色與權限等。其中農機經銷商與整機信息、農機經銷商與配件信息、訂單與配件信息、維修單與配件信息、用戶與角色、用戶角色與功能屬于多對多的聯系、其他如部門與用戶、用戶與訂單、用戶與維修單等是一對多聯系,設計RSSAMT概念模型(E-R圖),如圖2所示。

圖2 RSSAMT系統的數據庫概念模型
根據數據庫規范化理論及數據庫性能要求,對圖2進行邏輯設計,使之達到3NF,邏輯設計模型如下所示(邏輯模型包含了實體的主要屬性,其中帶下劃線的為主屬性,波浪線的為外屬性)。
經銷商(經銷商ID,名稱,法人,地址等)、整機(整機ID,型號,生產廠商,經銷商等)、配件(配件ID,配件名稱,頁碼,經銷商,數量,價格等)、用戶權限(用戶ID,角色ID,功能ID,有效標志等)、訂單(訂單編號,用戶ID,日期,狀態等)、訂單明細(序號,訂單編號,配件ID,數量,折扣價等)、維修單(維修單編號,用戶ID,日期,故障原因等)、維修單明細(序號,維修單編號,使用配件ID,需要數量等)。
RSSAMT系統采用J2EE分布式多層次架構軟件體系(BSSM框架集,由Bootstrap、Spring、SpringMVC 和MyBatis構成)設計[11-16],自底向上分別為數據庫層、數據訪問層、業務層、控制層、表示層和客戶端,該架構分離了控制器、模型對象以及分派器的角色,使各個部分松散耦合,簡化系統的復雜度。每層的功能描述如下:
數據庫層采用功能強大的MySQL關系型數據庫及Redis緩存數據庫;模型層負責存放封裝數據表信息、查詢條件信息以及請求信息的實體類;數據訪問層DAO集成MyBatis持久層對象映射開源框架,可以減輕DAO層的開發工作量,大幅提高持久層的開發效率;業務層負責定義若干業務接口類及對應的實現類,在實現類中引用DAO接口,通過注解注入DAO接口,獲得數據訪問功能??刂茖迂撠煷娣鸥鞣N處理前端請求數據、返回視圖View或JSON數據給控制器。
表示層采用Bootstrap前端開源框架,融合HTML、CSS、JavaScript等技術,具有富客戶端界面、動態響應速度快及客戶體驗好等特點。表示層負責存放靜態資源,系統默認可以訪問靜態資源文件,包括引入的JavaScript庫文件、CSS樣式表以及Thymeleaf的視圖解析模板文件等,采用該框架的表示層能夠減少開發工作量、提升開發效率。客戶端采用瀏覽器及移動手機微信端小程序為主[8-9],要求能連接互聯網,RSSAMT系統的總體架構如圖1所示。
RSSAMT系統采用的技術包括MyBatis技術、Bootstrap技術、Shiro技術、云服務器技術及Redis緩存數據庫技術,分述如下:
(1)持久層框架技術。RSSAMT系統持久層采用的是MyBatis框架,能夠定制SQL語句以及存儲過程等,使用XML文件或者簡單的注解來映射SQL語句到對應Mapper接口的方法上,實現動態SQL語句的查詢,MyBatis支持多種數據類型的映射,具有簡單、高效的優點。
(2)模板引擎與前端框架技術。RSSAMT系統界面使用的是Thymeleaf模板引擎,用于JAVA渲染數據返回前端頁面,目前支持HTML、JS、CSS等文件的處理,能夠實現前后端分離,Thymeleaf使用的是HTML后綴的文件,并且能根據Web應用啟動情況動態地解析與顯示,與普通的JSP頁面相比,前者的容錯率與適配性更好,編程效率更高效。目前常用的前端框架較多,例如Bootstrap、Vue.js及EasyUI等,具有簡單、易用的優點。其中Bootstrap基于HTML、CSS、JS開發,是一款界面簡潔、直觀、優美,封裝性良好的代碼使得前端頁面的設計與數據交互更加快捷高效的前端開發框架,讓Web開發更迅速。
(3)安全框架技術。RSSAMT系統采用基于角色的訪問控制策略,采用Shiro開源安全框架能夠對登錄的用戶進行身份驗證、對密碼進行自定義加密、對用戶進行授權以及會話管理,從而實現對前端頁面以及后臺數據的權限控制,權限的控制范圍能達到方法級別的粒度,具有較好的實用性。系統使用HTTPS安全協議,在申請了SSL證書之后,對SSL證書進行相關的配置,內容包括SSL密鑰的存儲路徑、密碼、存儲類型、監聽端口、跳轉端口、請求協議等信息設置,網站對數據傳輸自動進行加密,可以有效防止信息的泄露與被竊取,保證了前端頁面數據傳輸的安全性。云平臺還用于記錄用戶SessionID,創建時間及最后訪問時間,記錄訪問地址,用戶請求的總次數和總時長,可有效管理用戶登錄狀況。
(4)云服務器平臺技術。云服務器平臺是一種計算服務,彈性可伸縮,將系統架構在云服務器上可以使用其提供的中間件、存儲空間以及數據庫服務,并使用監控控制臺進行監控運維,能夠提升運維的效率,降低部署及硬件購買的成本。系統部署使用的是阿里云服務器,操作系統選擇相對安全的CentOS系統,測試環境配置參數為:2核CPU,1 G內存,10 Mbps公網帶寬以及80 G高效云盤。管理員登錄阿里云服務器ECS控制臺,對云服務器的安全漏洞、異常登錄、系統事件日志、CUP消耗、網絡等進行監控,并對服務器進行安全組的規則配置、潛在危險的安全組檢測,及時對突發狀況進行處理。
(5)Redis緩存數據庫技術。RSSAMT系統采用MySQL關系型數據庫,其中整機及配件表存放了大量的數據記錄,由于系統使用的用戶數量較多,頻繁訪問數據庫將給系統的性能帶來較大的影響,因此采用Redis緩存框架來減少對數據庫表的訪問,減輕數據庫壓力,同時緩存用戶的登錄信息,以實現用戶單點登錄及快速訪問配件表的目的。
以RSSAMT系統維修子系統為例,普通用戶可以在維修單管理功能中選擇配件維修申請,詳細操作如下:
(1)選擇登錄后的系統功能“維修單管理”下級“配件維修申請”功能,進入填寫頁面,如圖3所示。選擇對應的經銷商及不良零件信息、需要上傳的圖片等信息,點擊提交。

圖3 維修單填寫界面
(2)通過“我的維修單”,進入維修單查詢頁面,在條件查詢里選擇對應提交的日期時間段,可以查詢到剛剛提交的維修單信息。維修單信息也可以在手機微信端小程序中進行填寫與查詢,如圖4所示。

圖4 微信端維修單填寫
(3)普通用戶申請維修后,對應的經銷商可以在該模塊的維修單審核菜單查看維修單信息列表,點擊維修單明細后,便可對某個維修單進行審核,經銷商可以對普通用戶提交的維修單進行部分信息的修改,并且對維修單進行審核,同時指定對應的服務商來為用戶提供維修服務。
(4)維修單若有錯誤,則修改維修單信息,再次審核;否則指定對應的服務商進行維修服務。
采用JavaEE開發技術實現的步驟如下:
(1)創建數據庫所有的表對象,其中Matin-TainInfo表、MatinTainDetails表分別為維修單和明細信息表;
(2)設計MatinTainInfo實體POJO類,該類的屬性mdetails類型為Set,存放維修單的所有明細對象;
(3)設計IMatinTDao接口及MyBatis持久層框架支持的MatinTMapper.xml映射文件;
(4)設計維修服務接口IMatinTService及實現類MatinTServiceImpl,后者通過Spring框架注入IMatinTDao接口,從而獲得IMatinTDao接口的所有方法;
(5)設計維修頁面matinTMgr.html,在該頁面上使用Thymeleaf模板文件設計合適的界面控件;
(6)設計維修控制類MatinTContrloler,該類將處理得到的維修單信息傳給對應的matinTMgr.html文件,用來展現數據給用戶;
(7)設計配置文件spring-mvc.xml,該文件用來配置業務流轉分發控制;
(8)設計配置文件spring-mybatis.xml,該文件用于Spring與MyBatis的集成配置,使DAO層功能能夠有效地與控制層無縫整合。
RSSAMT系統融合Bootstrap技術、MySQL技術、MyBatis持久層技術、Spring及SpringMVC技術、現代軟件工程開發技術實現了基于互聯網的農機具配件維修系統。使用Redis緩存技術來減少對數據庫的直接訪問,減輕數據庫壓力;針對農機用戶需求,使用微信Web開發者工具開發小程序,通過掃碼呈現農機具詳細參數信息;開發的RSSAMT具有界面美觀、操作簡便、高可擴展性以及較好性能等特點。該系統所涉及的農機具配件信息類別比較單一,目前只有調研提供的一至兩種機型,還需進一步豐富。完成的系統還存在功能不夠完善、圖片文件同步上傳效率低、多源數據少等缺陷,有待完善。