范建鵬,姚珂,譚浩,董利娜
(陜西重型汽車有限公司,陜西 西安 710200)
車輛識別號碼(Vehicle Identification Number),簡稱VIN碼,是由一組十七位字母或數字組成,在世界范圍內用以識別汽車的獨一無二的號碼,可以識別汽車的生產商、引擎、底盤序號及其他性能等資料[1]。
系統采用BS 架構,后端使用基于php 的thinkphp MVC框架,前端使用easyui 框架。基于用戶、菜單、操作的權限管理方式,保證了VIN 碼在編制、使用、高新過程中的安全性。
如圖1 所示,系統主要分為三個模塊,功能如下:

圖1 系統模塊規劃
(1)系統權限管理:不同用戶權限管理,保證數據安全;
(2)VIN 碼編制模塊:系統主模塊,實現VIN 碼批量計算、與車輛數據交互進行校驗、后期數據更新等;
(3)VIN 碼使用模塊:包含查詢列表頁面和條碼打印頁面。
主計算界面由三部分構成:
(1)用戶權限管理:使用權限管理,編制、校對、使用者權限分開,防止VIN 碼修改過程中產生錯誤;
(2)VIN 碼計算器:導入車型、VIN 碼前8 位、流水號區間和車輛附屬信息,點擊“計算”按鈕計算,點擊不同的“導出”按鈕導出不同樣式的VIN 碼excel 文件計算結果;
(3)多種樣式計算結果預覽:根據不同使用者的需求,點擊選項卡,可實現不同樣式的計算結果預覽。

圖2 主界面設計
(注:程序設計只包含主要功能的部分源碼。本系統源碼已經在gitee 開源,地址:https://gitee.com/fjp203/VINERS )
(1)VIN 碼計算原理:VIN 碼由17 位構成,前8 位可以在工信部汽車公告系統中按車型配置進行查詢,后8 位為該車生產的順序號,即流水號。中間位也叫檢驗位。VIN 碼的計算,其實就是計算檢驗位,檢驗位的計算原理為:前8位與后8 位每一位的加權系數與每一位數字或字母字母對應的值相乘,所得的16 個乘積相加,和再對11 取余數,此余數就是檢驗位的值。如果余數是10,則用X 代替。如下表所示:

表1 數字的對應值

表2 字母的對應值

表3 加權系數
(2)VIN 碼計算代碼:為減輕服務器壓力,減少前后端交互,計算功能用JavaScript 在前端實現。具體代碼如下:

根據VIN 碼各位的編碼規則,編制了以下幾條校驗規則:
(1)前三位校驗:同一車企生產的車輛VIN 碼前3 位是固定不變的,校驗是否相等,不相等,提示錯誤;
(2)位數校驗:前8 位長度是否為8,如果不為8,提示錯誤;
(3)驅動位校驗:VIN 碼第8 位表示驅動,可根據車輛信息,校驗此為是否正確,不正確,提示錯誤;

表4 車輛的驅動型式代碼
(4)附件信息校驗:利用車輛附件信息,查詢車輛其他信息進行校驗。例如查詢車輛流水號區間是否正確。
校驗程序代碼如下:


導出功能使用phpexcel 分樣式進行導出,更新功能借助權限管理,只有編制者才能更新。并且一旦更新,需發送郵件給各流程使用者進行提醒。
3.4.1 查詢
將計算好的VIN 碼及車型信息以easyui datagird 表格插件進行前端列表顯示,設計按多種規則進行查詢。

圖3 VIN 碼查詢
3.4.2 VIN 碼條碼顯示及打印
VIN 碼在使用過程中,由于難以記憶,通常使用條碼打印,掃描錄入的方式,以避免人工識別產生錯誤。利用jquery-barcode.js 插件,將18 位VIN 碼轉換為條碼進行打印。如圖4(涉密要求,圖片已經模糊處理)。

圖4 VIN 碼條碼打印
代碼如下:


通過簡潔高效的api 接口,系統對整車生命周期中獲得授權的其他系統開放api,其他系統使用api 可以實現VIN 碼的快速查詢調用。實現方法如下:使用restful 風格的api 接口,通過auth2 權限認證,調用參數,實現VIN 碼的查詢。
(1)接口說明:
接口地址:http://系統網站地址/api
返回格式:json
請求方式:http get/post
請求示例:http://系統網站地址/api/?Serialnumber=? Seria-lnumberlist=?Cartype=
(2)請求參數說明,見表5。

表5 請求參數說明
(3)返回參數說明,見表6。

表6 返回參數說明
(4)JSON 返回示例:

VIN 碼管理系統可以在車企廣泛使用,借助系統,可以準確、高效、便捷地解決VIN 碼在車輛生產、檢驗、銷售、使用過程中的查詢和應用,為車企、國家車輛監管部門和車輛使用者提供信息化支持。