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  }