github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/vin-code/volvo.go (about) 1 package vincode 2 3 import ( 4 "github.com/artisanhe/tools/vin-code/mfrs/volvo" 5 "github.com/artisanhe/tools/vin-code/misc" 6 ) 7 8 /********************************************************** 9 ** 沃尔沃 风险: 10 ** 1.国标第9位为校验位而沃尔沃第9位可能是变速箱代码 11 ***********************************************************/ 12 13 // 沃尔沃 14 type VOLVOVINCode string 15 16 func (str VOLVOVINCode) ParseWMI() (WMIData, error) { 17 re := volvo.GetWMIRune(string(str)) 18 wmi := WMIData{} 19 wmi.Continent = misc.GetVINContinent(string(str)) 20 wmi.Country = misc.GetVINCountry(string(str)) 21 wmi.Manufacturer = misc.GetVINManuf(string(str)) 22 23 tv, ok := volvo.VehicleType[re.VehicleTypeStr] 24 if !ok { 25 return wmi, VINCodeParseVehicleTypeError 26 } 27 wmi.VehicleType = tv 28 29 return wmi, nil 30 } 31 32 func (str VOLVOVINCode) ParseVDS() (VDSData, error) { 33 re := volvo.GetVDSRune(string(str)) 34 vds := VDSData{} 35 36 rt, ok := volvo.RestraintSys[re.RestraintSysRune] 37 if !ok { 38 return vds, VINCodeParseRestriantError 39 } 40 vds.RestraintSystem = rt 41 42 cs, ok := volvo.CarSeries[re.CarSeriesRune] 43 if !ok { 44 return vds, VINCodeParseCarSeriesError 45 } 46 vds.CarSeries = cs 47 48 ei, ok := volvo.EmissisonCode[re.EmissisonRune] 49 if !ok { 50 // oops, emission data not enough 51 //return vds, VINCodeParseEmissionError 52 } 53 vds.Emissison = ei 54 55 eg, ok := volvo.Engine[re.EngineStr] 56 if !ok { 57 return vds, VINCodeParseEngineError 58 } 59 vds.Engine = eg 60 61 return vds, nil 62 } 63 64 func (str VOLVOVINCode) ParseVIS() (VISData, error) { 65 re := volvo.GetVISRune(string(str)) 66 vis := VISData{} 67 vis.SequenceNO = re.SequenceNO 68 ap, ok := volvo.AssemblyPlant[re.AssemblyRune] 69 if !ok { 70 return vis, VINCodeParseAssemblyError 71 } 72 vis.AssemblyPlant = ap 73 vis.ModelYear = misc.GetModelYearStr(re.YearRune) 74 if vis.ModelYear == "0" { 75 return vis, VINCodeParseYearError 76 } 77 78 return vis, nil 79 }