張敏 郭衛江 唐奇 李明星 賀斯慧

【摘 要】目前,第三方物流平臺的建設規劃尤其是自動化系統軟件較缺乏,無法滿足企業在信息化時代的發展要求。文章在分析第三方物流管理系統的各個基礎功能模塊需求后,提出了一種基于MVC框架的第三方物流管理系統,并介紹了系統的設計原理與實現方法。
【關鍵詞】第三方物流;物流管理;B/S;AJAX
【中圖分類號】TP311.52 【文獻標識碼】A 【文章編號】1674-0688(2019)09-0093-03
0 引言
當前,移動互聯網的快速發展和智能手機等移動終端的普及改變了人們傳統的購物方式。天貓、京東、蘇寧易購等電子商務平臺已經成為人們購物的主要渠道,并且伴隨著O2O商業模式的不斷推廣,第三方物流平臺也展現出蓬勃發展的態勢。但是,由于現階段第三方物流平臺的建設規劃尤其是自動化系統軟件的缺乏,大部分平臺還停留在傳統“進銷存”管理模式,已經無法滿足日益增長的客戶定制化需求,導致第三方物流平臺面臨巨大的挑戰。為此,筆者設計并實現了基于B/S的第三方物流管理系統,該系統為第三方物流平臺搭建一個暢通渠道,減少物流管理中繁雜的業務流程、提高管理的時效性,依托互聯網提供企業自身服務能力與管理效率。
1 系統開發模式與技術
1.1 采用的開發模式及其特點
目前,主流的開發模式有C/S(Client/Server)與B/S(Browser/Server)兩種,前者由客戶端和服務端組成,后者嚴格意義上是前者的一個特殊實現,以瀏覽器代替客戶端,從而實現“零客戶端”的模式。為了滿足不同設備(PC、智能手機、平板電腦)均能訪問,系統采用B/S模式。
1.2 MVC框架結構
為了將數據與業務隔離,系統設計時嚴格參照MVC(Model-View-Controller)框架結構,將系統分為模型、控制、視圖3層。其中,由Struts2作為核心控制層,響應用戶請求,并且根據用戶請求調用響應的模型層,最終將結果反饋給Jsp扮演的視圖層進行解析展示。
1.2.1 AJAX
AJAX(Asynchronous JavaScript And XML)是一種異步刷新的輕量級js框架,解決傳統Web應用無法局部刷新的缺點,通過瀏覽器內置對象完成服務器數據的獲取和刷新。
1.2.2 數據連接池
隨著電商文化的推廣,電商平臺時常推出諸如“雙十一”“六·一八”等大型購物節,此類購物節往往會吸引億萬群眾參與,訂單數據也會呈現井噴式增長。第三方物流平臺訂單數據也會隨之增加,會出現數據訪問高峰,為此需要系統具有較高的并發性。由于傳統的數據請求方式需要每次請求都進行身份驗證,導致耗費大量的時間成本與空間成本,無法保證系統的并發性。C3P0是一款實現了數據源和JNDI綁定的開源數據連接池,其原理是在數據初始化時,通過解析config.xml文件,獲取最大連接對象、空閑檢查等參數,然后根據參數創建連接池。當客戶端發送數據請求時,系統根據空閑算法在連接池中遍歷出空閑的連接對象,并將其反饋給客戶端,建立數據連接。當客戶端斷開數據連接時,系統不是將連接對象銷毀,而是將其修改為空閑狀態,等待新的請求,進而實現系統的高并發數據訪問。
2 系統設計
2.1 功能模塊設計
系統功能包含了物流管理的所有流程,從業務屬性分為用戶管理模塊、訂單管理模塊、倉儲模塊、運輸管理模塊、權限管理、數據分析、系統管理等功能。用戶管理模塊主要是完成用戶注冊、登錄、基本信息維護等功能;訂單管理模塊主要是包含訂單創建、訂單狀態管理、訂單關閉等功能;倉儲模塊主要包含倉儲容量查詢、入庫、出庫、倉儲預警等功能;運輸管理模塊主要包含運輸任務分配、車輛調度管理、狀態管理等功能;權限管理主要是對系統角色進行分配管理,不同角色擁有不同的職能權限;數據分析則主要是完成數據匯總分析,形成日報表、周報表、月報表等報表,后期還可加入數據挖掘,為決策預警提供數據決策支撐;系統管理則主要是完成系統基礎信息維護、功能模塊管理等。系統進行功能模塊設計如圖1所示。
2.2 核心流程設計
在整個物流管理系統中,整個系統從用戶提交訂單到用戶接受到貨物關閉訂單為一個流程。當用戶通過客戶端提出需求,填寫相應信息創建訂單,確定信息無誤后提交訂單,系統對訂單進行審核,審核通過后,將訂單信息傳遞給倉儲管理,為訂單分配臨時存儲計劃,同時通知運輸管理模塊開始工作,其從訂單管理模塊中導入訂單數據,并且根據出發地與目的地為關鍵字,進行路線規劃,規劃好路線后將路線計劃上報,管理員進行審核,審核通過后,根據目的地、物品大小、物品類型、物品重量安排運輸車輛,生成車輛裝載信息,完成裝車后,調用車輛GPS管理模塊監控追蹤車輛狀況,到達目的后,生成取貨報表,通知用戶取件,用戶完成取件后,將結果反饋回訂單管理模塊,結束訂單。
2.3 數據庫設計
經過對第三方物流管理系統數據流分析之后,按照三范式規范設計了系統中的數據表,包括存儲用戶個人信息的user表(主要包括用戶ID、用戶名、地址、聯系電話等),存儲訂單實體的order表(訂單編號、創建時間、訂單內容、狀態等),存儲記錄倉儲入庫、出庫、庫存等信息的depository表(編號、庫存量、庫容量、倉儲狀態等),存儲車輛信息與車輛行程的car表(編號、車輛ID、司機ID、行程ID、狀態等),三級權限管理authority表(編號、權限級別、啟用狀態、可執行操作列表等),部門管理department表(編號、名稱、領導ID等),系統管理功能定制function_role表(編號、功能名稱、功能權限級別、功能模塊ID等)。由于每張數據表都有一個entity與之對應,所以表中的字段類型、取值范圍、外鍵等都由實體對象具體的屬性和關系確定。
3 系統主要模塊實現
3.1 用戶管理
用戶管理主要是完成用戶的注冊、登錄及基礎信息維護。用戶在注冊頁面進行注冊,注冊一共分為3個步驟填寫基本信息、賬號激活、完成注冊。第一步,完成用戶的基本信息的填寫與校驗,生成未激活賬號并根據注冊郵箱發送激活驗證碼。第二步,根據郵箱收到的郵箱驗證碼進行用戶激活驗證。如果前兩步都成功則注冊成功。已注冊用戶可以在登錄界面進行登錄驗證,成功登錄系統可以進行物流配送活動,以及對個人信息進行維護等操作。以用戶登錄為例說明實現過程。
用戶注冊分為三步:第一步填寫基本信息,在填寫信息的時候,每填一項都利用AJAX進行數據驗證。第二步主要是用戶根據短信驗證碼進行賬號激活。第三步用戶注冊成功,提供返回系統主頁、物流配送與個人信息維護等快捷入口。用戶注冊主要依靠AJAX、JS與Struts實現,在用戶填寫基本信息時通過AJAX與JS實現基本信息的驗證,為了防止機器人的惡意攻擊,系統提供動態驗證碼。驗證碼的實現主要是regist_form.jsp通過AJAX向服務器端發送請求。服務器端首先調用ValidateCode類生成驗證碼圖片并將圖片轉換為IO流存放在session對象中,然后是ValidateCodeAction類將驗證碼以Json的方式返回給AJAX,然后JSP解析Json數據,完成驗證碼顯示,驗證碼的驗證則是驗證碼顯示的逆過程。
3.2 訂單管理
訂單管理分為訂單創建、訂單查詢、訂單維護3個部分;以訂單創建為例,用戶通過填寫物流訂單相關信息并提交,首先通過JavaScript對用戶填寫的基礎信息進行校驗,校驗成功后將數據通過AJAX異步提交給服務器,服務器會對訂單進行基礎審核(諸如目的地是否可達、是否存在違禁物品),然后將審核結果以json的形式反饋給瀏覽器解析給用戶,用戶在核定基本信息后確認訂單,完成訂單創建。
3.3 運輸管理
運輸管理是根據訂單管理中的訂單進行物流配送管理的一個模塊,是整個系統中核心的管理模塊。主要由最新訂單、通知公告、車輛監控、司機管理、訂單實時追蹤等模塊組成。以訂單實時追蹤為例,當用戶通過瀏覽器向服務器發送Http請求后,系統調用filter對請求進行分析轉發給對應的Action類,在Action類中再調用相應的Service方法,Service方法調用實現了數據庫操作的DAO方法完成數據操作,并將結果封裝到json中返回給瀏覽器解析展示。關鍵代碼如圖2所示。
3.4 路線規劃與審核
路線規劃與審核是運輸模塊中的核心功能,運輸工作人員首先點擊路線管理中的路線規劃按鈕,通過百度地圖JavaScript API中的new BMap.Map("allmap")方法獲得百度地圖實例,接著調用map.centerAndZoom(new BMap.Point(當前經度,當前緯度),縮放比例)方法初始化地圖,并根據當前經緯度為中心,展示地圖,操作員然后通過鼠標選擇目的地時調用setCurrentCity()方法完成目的地的選定,然后通過map.addControl(new BMap.MapTypeControl())方法編輯沿線停靠點,完成編輯后,點擊上傳按鈕,將數據上傳至服務器,系統首先調用NewRoadBaseAction中的saveRoads方法,完成數據寫入數據庫,接著調用sendCheck方法,將路線送審到科室主任等待審核。科室主任登錄后點擊待審調用loadOneCheckDataList方法查看所有待審的路線列表,點擊查看調用loadNewsCheckData方法加載待審路線內容,然后根據情況調用sendBack、executeOneCheck、SendToSecendCheck 3個方法分別完成退回、通過、報審3個操作。
3.5 數據分析
數據分析主要是通過對系統中數據進行分類統計,然后根據用戶選擇需求將數據通過圖表的方式展現出來,有助于企業管理者對企業進行管理,為決策提供數據支撐。系統的數據分析主要包含月視圖、周視圖、日視圖等。用戶單擊月視圖時,通過ajax向服務器發送getMonthData請求,服務器接收到請求后調用getMonthDataAction方法,從數據庫中拉取數據,然后將數據封裝到json中,并反饋給瀏覽器,瀏覽器接收到數據后,調用Init()方法創建Echarts圖表格式化插件實例echart,接著調用echart.init(document.getElementById('showMonthData'))方法初始化圖表,最后調用parseData()方法將json中的數據逐一加載到echart中,完成圖表的顯示。
3.6 權限管理
權限管理是物流管理系統中不同角色分級制度的底層保障機制,在User表中新建prosstion字段用于標定用戶角色,prosstion作為User實體的關鍵信息持久化保存在Session中,在對業務操作時先要判斷prosstion的值,只有滿足條件時才能夠執行。
4 結語
本文提出了一種基于B/S結構的第三方物流管理系統。系統將傳統的物流管理流程自動化,主要由用戶管理、訂單管理、運輸管理、倉儲管理、數據分析等模塊組成。對于運輸管理中的路徑規劃加入多級審核機制,從程序流程上規范路線、規劃審核機制,增加路徑規劃的科學性,規避因路線規劃不合理造成的成本浪費。目前,數據分析功能僅僅體現在數據統計展示階段,未來隨著數據當量的提升,可在數據分析中構建數據挖掘功能,為企業發展決策提供有力的科學支撐。該系統的上線為第三方物流公司現代化管理提供了一個廣闊的平臺,對第三方物流公司信息化改革有一定的促進作用。
參 考 文 獻
[1]鄭定杰.基于電子商務的第三方物流配送管理系統設計實現[J].商場現代化,2015(24):75-77.
[2]張利強.基于B/S的高校二手圖書交易平臺設計與實現[J].內江師范學院學報,2017,32(10):55-59.
[3]鄧健.基于B/S模式的物流管理系統設計與實現[J].物流技術,2013,32(9):423-425.
[4]尹新富,武鳳翔,李晉,等.B/S模式下物流倉儲管理系統設計與實現[J].物流技術,2014(17):451-452.