范建鵬,姚珂,譚浩,董利娜
(陜西重型汽車有限公司,陜西 西安 710200)
車輛識(shí)別號(hào)碼(Vehicle Identification Number),簡(jiǎn)稱VIN碼,是由一組十七位字母或數(shù)字組成,在世界范圍內(nèi)用以識(shí)別汽車的獨(dú)一無二的號(hào)碼,可以識(shí)別汽車的生產(chǎn)商、引擎、底盤序號(hào)及其他性能等資料[1]。
系統(tǒng)采用BS 架構(gòu),后端使用基于php 的thinkphp MVC框架,前端使用easyui 框架。基于用戶、菜單、操作的權(quán)限管理方式,保證了VIN 碼在編制、使用、高新過程中的安全性。
如圖1 所示,系統(tǒng)主要分為三個(gè)模塊,功能如下:
圖1 系統(tǒng)模塊規(guī)劃
(1)系統(tǒng)權(quán)限管理:不同用戶權(quán)限管理,保證數(shù)據(jù)安全;
(2)VIN 碼編制模塊:系統(tǒng)主模塊,實(shí)現(xiàn)VIN 碼批量計(jì)算、與車輛數(shù)據(jù)交互進(jìn)行校驗(yàn)、后期數(shù)據(jù)更新等;
(3)VIN 碼使用模塊:包含查詢列表頁面和條碼打印頁面。
主計(jì)算界面由三部分構(gòu)成:
(1)用戶權(quán)限管理:使用權(quán)限管理,編制、校對(duì)、使用者權(quán)限分開,防止VIN 碼修改過程中產(chǎn)生錯(cuò)誤;
(2)VIN 碼計(jì)算器:導(dǎo)入車型、VIN 碼前8 位、流水號(hào)區(qū)間和車輛附屬信息,點(diǎn)擊“計(jì)算”按鈕計(jì)算,點(diǎn)擊不同的“導(dǎo)出”按鈕導(dǎo)出不同樣式的VIN 碼excel 文件計(jì)算結(jié)果;
(3)多種樣式計(jì)算結(jié)果預(yù)覽:根據(jù)不同使用者的需求,點(diǎn)擊選項(xiàng)卡,可實(shí)現(xiàn)不同樣式的計(jì)算結(jié)果預(yù)覽。
圖2 主界面設(shè)計(jì)
(注:程序設(shè)計(jì)只包含主要功能的部分源碼。本系統(tǒng)源碼已經(jīng)在gitee 開源,地址:https://gitee.com/fjp203/VINERS )
(1)VIN 碼計(jì)算原理:VIN 碼由17 位構(gòu)成,前8 位可以在工信部汽車公告系統(tǒng)中按車型配置進(jìn)行查詢,后8 位為該車生產(chǎn)的順序號(hào),即流水號(hào)。中間位也叫檢驗(yàn)位。VIN 碼的計(jì)算,其實(shí)就是計(jì)算檢驗(yàn)位,檢驗(yàn)位的計(jì)算原理為:前8位與后8 位每一位的加權(quán)系數(shù)與每一位數(shù)字或字母字母對(duì)應(yīng)的值相乘,所得的16 個(gè)乘積相加,和再對(duì)11 取余數(shù),此余數(shù)就是檢驗(yàn)位的值。如果余數(shù)是10,則用X 代替。如下表所示:
表1 數(shù)字的對(duì)應(yīng)值
表2 字母的對(duì)應(yīng)值
表3 加權(quán)系數(shù)
(2)VIN 碼計(jì)算代碼:為減輕服務(wù)器壓力,減少前后端交互,計(jì)算功能用JavaScript 在前端實(shí)現(xiàn)。具體代碼如下:
根據(jù)VIN 碼各位的編碼規(guī)則,編制了以下幾條校驗(yàn)規(guī)則:
(1)前三位校驗(yàn):同一車企生產(chǎn)的車輛VIN 碼前3 位是固定不變的,校驗(yàn)是否相等,不相等,提示錯(cuò)誤;
(2)位數(shù)校驗(yàn):前8 位長(zhǎng)度是否為8,如果不為8,提示錯(cuò)誤;
(3)驅(qū)動(dòng)位校驗(yàn):VIN 碼第8 位表示驅(qū)動(dòng),可根據(jù)車輛信息,校驗(yàn)此為是否正確,不正確,提示錯(cuò)誤;
表4 車輛的驅(qū)動(dòng)型式代碼
(4)附件信息校驗(yàn):利用車輛附件信息,查詢車輛其他信息進(jìn)行校驗(yàn)。例如查詢車輛流水號(hào)區(qū)間是否正確。
校驗(yàn)程序代碼如下:
導(dǎo)出功能使用phpexcel 分樣式進(jìn)行導(dǎo)出,更新功能借助權(quán)限管理,只有編制者才能更新。并且一旦更新,需發(fā)送郵件給各流程使用者進(jìn)行提醒。
3.4.1 查詢
將計(jì)算好的VIN 碼及車型信息以easyui datagird 表格插件進(jìn)行前端列表顯示,設(shè)計(jì)按多種規(guī)則進(jìn)行查詢。
圖3 VIN 碼查詢
3.4.2 VIN 碼條碼顯示及打印
VIN 碼在使用過程中,由于難以記憶,通常使用條碼打印,掃描錄入的方式,以避免人工識(shí)別產(chǎn)生錯(cuò)誤。利用jquery-barcode.js 插件,將18 位VIN 碼轉(zhuǎn)換為條碼進(jìn)行打印。如圖4(涉密要求,圖片已經(jīng)模糊處理)。
圖4 VIN 碼條碼打印
代碼如下:
通過簡(jiǎn)潔高效的api 接口,系統(tǒng)對(duì)整車生命周期中獲得授權(quán)的其他系統(tǒng)開放api,其他系統(tǒng)使用api 可以實(shí)現(xiàn)VIN 碼的快速查詢調(diào)用。實(shí)現(xiàn)方法如下:使用restful 風(fēng)格的api 接口,通過auth2 權(quán)限認(rèn)證,調(diào)用參數(shù),實(shí)現(xiàn)VIN 碼的查詢。
(1)接口說明:
接口地址:http://系統(tǒng)網(wǎng)站地址/api
返回格式:json
請(qǐng)求方式:http get/post
請(qǐng)求示例:http://系統(tǒng)網(wǎng)站地址/api/?Serialnumber=? Seria-lnumberlist=?Cartype=
(2)請(qǐng)求參數(shù)說明,見表5。
表5 請(qǐng)求參數(shù)說明
(3)返回參數(shù)說明,見表6。
表6 返回參數(shù)說明
(4)JSON 返回示例:
VIN 碼管理系統(tǒng)可以在車企廣泛使用,借助系統(tǒng),可以準(zhǔn)確、高效、便捷地解決VIN 碼在車輛生產(chǎn)、檢驗(yàn)、銷售、使用過程中的查詢和應(yīng)用,為車企、國家車輛監(jiān)管部門和車輛使用者提供信息化支持。