// Copyright 2019 autocareai.com. All rights reserved. // Use of this source code is governed by autocareai.com. package task import ( "gadm-dws/apis" "gadm-dws/consts" "gadm-dws/model" "encoding/json" "gorm.io/gorm" "strings" ) func supplementDws6(old, new *model.Dws6) (bool,string) { isSupple := false dwsMsgStr := "" if old.InsuranceFirstDate == "" && new.InsuranceFirstDate != "" { isSupple = true old.InsuranceFirstDate = new.InsuranceFirstDate }else if old.InsuranceFirstDate != "" && new.InsuranceFirstDate != "" { if new.InsuranceFirstDate < old.InsuranceFirstDate{ msg := map[string]string{"initial_registration_date":old.InsuranceFirstDate,"vin":old.Vin} msgByte, _ := json.Marshal(msg) dwsMsgStr = string(msgByte) isSupple = true old.InsuranceFirstDate = new.InsuranceFirstDate }else if new.InsuranceFirstDate > old.InsuranceFirstDate{ msg := map[string]string{"initial_registration_date":new.InsuranceFirstDate,"vin":old.Vin} msgByte, _ := json.Marshal(msg) dwsMsgStr = string(msgByte) } } if old.Province == "" && new.Province != "" { isSupple = true old.Province = new.Province } if old.City == "" && new.City != "" { isSupple = true old.City = new.City } if old.District == "" && new.District != "" { isSupple = true old.District = new.District } if old.UsePropertyDetail == "" && new.UsePropertyDetail != "" { isSupple = true old.UsePropertyDetail = new.UsePropertyDetail } return isSupple,dwsMsgStr } // 交强险首保日期 func Dws6Task(db *gorm.DB,dwsMessage *apis.DwsMessage, outputSourceCode string) (adsMsgList []*apis.AdsMessage, dwsMsgList []*apis.DwsMessage, err error) { dws6 := &model.Dws6{} err = json.Unmarshal([]byte(dwsMessage.Content), dws6) if err != nil { return nil, nil, nil } if (dws6.Vin == "") || (dws6.InsuranceFirstDate == "" && dws6.UsePropertyDetail == ""){ return nil, nil, nil } if dws6.InsuranceFirstDate != ""{ dws6.InsuranceFirstDate = strings.Split(dws6.InsuranceFirstDate," ")[0] } oldDws6 := &model.Dws6{} err = oldDws6.Query(db, map[string]interface{}{"vin": dws6.Vin}) if err == nil { // 有数据 isSupple,dwsMsgStr := supplementDws6(oldDws6,dws6) if dwsMsgStr != ""{ dwsMsg := NewDwsMessage(dwsMessage, outputSourceCode) dwsMsg.Content = dwsMsgStr dwsMsgList = append(dwsMsgList,dwsMsg) } if isSupple { err = oldDws6.Update(db) if err != nil{ return nil,nil,err } }else{ return nil,dwsMsgList,nil } } else { if err == gorm.ErrRecordNotFound { // 没有数据 err = dws6.Insert(db) if err != nil { if !strings.Contains(err.Error(), "Duplicate") { return nil,nil, err } } oldDws6 = dws6 } else { // 数据库错误 return nil, nil, err } } adsMsg := NewAdsMessage(dwsMessage, outputSourceCode, consts.ACTIONINSERT) msgByte, _ := json.Marshal(*oldDws6) adsMsg.Content = string(msgByte) adsMsgList = append(adsMsgList,adsMsg) return adsMsgList, dwsMsgList, nil }