閔 楠,葛慕瀅,潘傲瀾
(1.武漢科技大學計算機科學與技術學院,武漢 430065;2.武漢科技大學資源與環(huán)境工程學院,武漢 430065)
隨著危險品運輸需求的快速增長,危險品運輸企業(yè)數量逐年增多,企業(yè)規(guī)模逐步擴大,中國物流與采購聯(lián)合會?;肺锪鞣謺Y料顯示:2019 年全國危化品物流行業(yè)市場規(guī)模已經達到1.87 萬億元,同比增長13.4%;2020 年?;肺锪魇袌鲆?guī)模超過2 萬億元;2021 年市場規(guī)模將達到2.24萬億元。
然而目前市面上很少有軟件可以對危化品運輸風險進行量化分析,導致我們只能憑借經驗判斷某次?;愤\輸的風險,這不利于危化品運輸的評估和管控。
本平臺的開發(fā)旨在做到運輸過程可視化,安全風險定量化,以實現安全、利益最大化。公司管理人員通過該網站不僅可以管理駕駛人員信息、車輛信息、物流信息,還可將危險品道路運輸物流信息可視化以及對運輸貨物進行風險測試。
軟件功能結構如圖1所示。該平臺主要包括五個部分:地圖可視化、風險測評、車輛管理、人員管理、運輸管理。本項目基于SpringBoot 框架應用開發(fā)技術,前端采用Thymeleaf 模板引擎,項目采用MVC 設計模式,使用MySQL 數據庫對數據進行存儲,可以對數據庫進行管理、檢查、優(yōu)化等操作。項目基于高德地圖API 開發(fā),滿足各種需求,支持多種路線規(guī)劃。
圖1 軟件功能流程圖
以下僅介紹核心功能。
(1)地圖可視化。管理員登錄網站后可以查看危險品道路運輸物流信息,查看貨車實時位置。
(2)風險測評。管理員登錄網站后可以對未來的危險品道路運輸進行風險測評。
(3)車輛管理。管理員登錄網站后可以管理運輸車輛,進行增刪改查操作。
(4)人員管理。管理員登錄網站后可以管理駕駛人員,進行增刪改查操作。
(5)運輸管理。管理員登錄網站后可以管理危險品道路運輸物流信息,進行增刪改查操作。
1.3.1 數據庫建模
軟件數據庫有如下表:公司表、管理員表、駕駛人員表、駕駛人員問卷表、車輛表、車輛問卷表、車輛危化品對應關系表等。
1.3.2 數據庫結構說明
由于軟件涉及數據庫表較多,下面僅選幾個比較重要的進行解釋說明。
(1)駕駛人員表(driver)。包含駕駛人員編號、姓名、性別、出生年份、身份證號、詳情和司機所在公司id賬號,如表1所示。
表1 駕駛人員表結構
(2)車輛表(car)。包含車輛編號、車牌號、車的類型、車所在公司id、車輛軸數、車輛自重、車輛寬度和車輛高度、車輛大小,如表2所示。
表2 車輛表結構
(3)物流表(transportation)。包含車物流單號、公司id、駕駛人員id、車輛id、貨物類型、貨物重量、出發(fā)點、出發(fā)經緯度、目的地、目的地經緯度、當前位置、當前位置經緯度、途徑點、途徑點經緯度、出發(fā)時間和預計抵達時間,如表3所示。
表3 物流表結構
續(xù)表3
(4)?;穼恚╣oods)。包含?;穒d、危化品名稱和分值如表4所示。危險品的具體種類參考了化學品統(tǒng)計文獻,采用灰色關聯(lián)分析法與層次分析法確定了各個?;返木唧w賦分,其中分值越低危險程度越大。
表4 ?;贩种当斫Y構
本項目使用Web 端的高德地圖API 技術。首先,需要注冊開發(fā)者賬號,成為高德開發(fā)平臺開發(fā)者。其次,為軟件添加Key,“服務平臺”一項選擇“ Web 端(JSAPI)”就可以獲取到key 值和安全密鑰jscode。最后在html 頁面中加入下述代碼即可使用高德地圖API接口。
<script type="text/javascript">
window._AMapSecurityConfig={
serviceHost:′您的代理服務器域名或地址/_AMapService′,
// 例 如 : serviceHost: ′http://1.1.1.1: 80/_AMapService′,
}
</script>
<script type="text/javascript"src="https://webapi.amap.com/maps?v=2.0&key=您申請的key值"></script>
通過查閱危險品道路運輸安全評價方面文獻資料,統(tǒng)計出現頻率較高的指標,得到了4個一級指標和14個分指標,如圖2所示。
圖2 風險評測模型指標
平臺通過問卷形式對4 個一級指標進行打分。例如:駕駛人員會填寫駕駛員資質評測問卷Driver_Question,該問卷會對駕駛人員經歷、能力、行為和心理進行打分,最后平臺會將作答情況和分數保存在數據庫中。其中,Driver_Question 表以driver_id 作為外鍵。之后,管理員在風險測評中選擇駕駛員時,平臺會在數據庫的Driver_Question 表中通過driver_id 查詢相應記錄,獲取該駕駛員的得分,也就得到了從業(yè)人員資質B1的分數。
圖3 平臺首頁(登錄狀態(tài)下)
以下僅介紹平臺的地圖可視化和風險測評的實現。
地圖可視化頁面主要涉及到的功能有?;愤\輸物流的跟蹤查看,主要包括物流信息的列表預覽和查看詳情操作,主要涉及對象為Transportation、 TransportationController、 Map、MapController 以 及 方 法mapManage 和more。具體說明方法如下:
3.1.1 物流信息列表預覽功能
(1)方法名:mapManage;
(2)參數說明:int 類型的pageOffset,pageSize和HttpSession類型的session;
(3)函數調用說明:檢查參數,獲取session的屬性user 并強轉為User 對象,若對象為空,則用戶沒有登錄,跳轉登錄頁面;若不為空,則獲取User 的company_id 并且在Transportation表中查找該company_id 對應的所有記錄,存儲在 類 型 為List<Transportation>的transportations中。pageOffset 默認為1,表示當前在第一頁。pageSize 默認為15,表示一頁展示15 條記錄。創(chuàng)建PageInfo 類型的info 對象,輸入參數有兩個,分別為transportations 和pageSize*pageOffset。
存儲對象,在session中存儲info。
跳轉頁面,跳轉地圖可視化頁面。
3.1.2 查看詳情功能
(1)方法名:more;
(2)參數說明:無需輸入參數;
(3)函數調用說明:獲取對象,點擊事件發(fā)生后,前端通過onclick 方法結合Thymeleaf 通過${…}直接獲取變量值,并彈出對象詳細信息在前端對話框中進行顯示。
展示地圖,對origin_location、destination_location、now_location、waypoints_location 用split方法以‘,’為分割點進行分割處理,將它們分別存儲在數組ori,des,now_loc 和way。然后利用高德地圖API初始化map,創(chuàng)建起始地點、目的地點、當前位置地點、途徑地點,最后構建路線導航顯示在地圖上。
地圖可視化頁面如圖4所示。管理員可在本頁面查看危險品道路運輸物流信息,查看貨車實時位置。管理員點擊詳情查看危險品道路運輸物流信息。隨后地圖切換到當前危險品道路運輸物流信息的實時路徑信息,如圖5所示。
圖4 地圖可視化頁面
圖5 實時路徑信息
風險測評頁面主要涉及到的功能有?;愤\輸的量化風險測評,主要操作的涉及對象為Car、Driver、User、CarService、DriverService、RiskAssessmentController 以及方法riskAssessment、 riskAssessment_chemicals、 riskAssessment_ cars、riskAssessment_drivers 和riskAssessment_result。具體說明方法如下:
3.2.1 風險測評頁面
(1)方法名:riskAssessment;
(2)參數說明:HttpSession類型的session;
(3)函數調用說明:檢查參數,獲取session的屬性user 并強轉為User 對象,若對象為空,則用戶沒有登錄,跳轉登錄頁面;若不為空,則進行下一步。
跳轉頁面,跳轉填寫?;沸畔㈨撁?。
3.2.2 填寫?;沸畔?/p>
(1)方法名:riskAssessment_chemicals;
(2)參數說明:HttpSession 類型的session,String類型的goods和double類型的weight;
(3)函數調用說明:檢查參數,獲取session的屬性user 并強轉為User 對象,若對象為空,則用戶沒有登錄,跳轉登錄頁面;若不為空,則判斷輸入參數是否為空或者不合法。若參數為空或者不合法則輸入錯誤信息,后臺向前端返回相應的錯誤編號,如:‘0’代表?;窞榭眨藭r前端就會提示“?;凡荒転榭铡?;若參數不為空且合法則輸入正確信息,在session中存儲goods和weight。
跳轉頁面,驗證通過后并跳轉選擇?;愤\輸車輛頁面。
3.2.3 選擇?;愤\輸車輛
(1)方法名:riskAssessment_cars;
(2)參數說明:HttpSession 類型的session,int類型的car_id;
(3)函數調用說明:檢查參數,獲取session的屬性user 并強轉為User 對象,若對象為空,則用戶沒有登錄,跳轉登錄頁面;若不為空,則進行下一步。
查詢對象,在Car 表內查詢car_id 是否已經存在,若不存在則輸入錯誤信息,后臺向前端返回相應的錯誤編號,前端顯示相應錯誤提示;若存在則輸入正確信息,在session 中存儲car_id。
跳轉頁面,驗證通過并跳轉選擇駕駛人員頁面。
3.2.4 選擇駕駛人員
(1)方法名:riskAssessment_drivers;
(2)參數說明:HttpSession 類型的session,int類型的driver_id;
(3)函數調用說明:檢查參數,獲取session的屬性user 并強轉為User 對象,若對象為空,則用戶沒有登錄,跳轉登錄頁面;若不為空,則進行下一步。
查詢對象,在Driver 表內查詢driver_id 是否已經存在,若不存在則輸入錯誤信息,后臺向前端返回相應的錯誤編號,前端顯示相應錯誤提示;若存在則輸入正確信息,在session 中存儲driver_id。
跳轉頁面,驗證通過后并跳轉填寫運輸信息頁面。
3.2.5 填寫運輸信息
(1)方法名:riskAssessment_route;
(2)參數說明:HttpSession 類型的session,Srting 類型的origin、origin_location、destination、destination_location、 waypoints、 waypoints_location、departure_time、arrive_time和weather;
(3)函數調用說明:檢查參數,獲取session的屬性user 并強轉為User 對象,若對象為空,則用戶沒有登錄,跳轉登錄頁面;若不為空,則判斷輸入的參數是否為空或者不合法。若參數為空或者不合法則輸入錯誤信息,后臺向前端返回相應的錯誤編號,如:‘0’代表出發(fā)點origin 為空,此時前端就會提示“出發(fā)點不能為空”;若參數不為空且合法則輸入正確信息,在session 中 存 儲origin、origin_location、destination、 destination_location、 waypoints、 waypoints_location、 departure_time、 arrive_time 和weather。
跳轉頁面,驗證通過后調用riskAssessment_result方法進行風險測評。
3.2.6 風險測評
(1)方法名:riskAssessment_result;
(2)參數說明:HttpSession類型的session;
(3)函數調用說明:檢查參數,獲取session的屬性user 并強轉為User 對象,若對象為空,則用戶沒有登錄,跳轉登錄頁面;若不為空,則對session中存儲的信息進行評測打分。
風險打分,根據session 中存儲的信息,從數據庫中獲取對應的四個一級指標各自的分數,通過層次分析法對它們進行加權運算得出風險評測總得分,并保存分數B1、B2、B3 和B4 到session中。
跳轉頁面,跳轉風險測評結果頁面。
風險測評結果頁面如圖6所示。管理員可在本頁面查看危險品道路運輸最終評測結果以及推薦運輸路線。管理員可以將鼠標停留在柱狀圖上查看對應因素具體得分。
圖6 風險測評結果頁面
危化品運輸安全評估管控平臺可以綜合得出某次?;愤\輸的安全風險程度,并量化為安全風險值。結果較準確地反映了危險品物流的實際狀況??蔀槲kU品監(jiān)管部門以及危險品道路運輸企業(yè)提供理論技術支持,同時對鐵路、水路、航空危險品運輸安全研究工作也有一定的理論指導作用。