|
@@ -3,9 +3,11 @@ package query
|
|
|
import (
|
|
|
"context"
|
|
|
"encoding/json"
|
|
|
+ "fmt"
|
|
|
"gd_adm_data/apis"
|
|
|
"gd_adm_data/errors"
|
|
|
"gd_adm_data/utils"
|
|
|
+ "strconv"
|
|
|
"strings"
|
|
|
"time"
|
|
|
|
|
@@ -67,6 +69,395 @@ func calcLatestInsuredate(reqMap map[string]interface{}) {
|
|
|
reqMap["latest_nsurance_date_start"] = latestInsuranceDateStart
|
|
|
}
|
|
|
|
|
|
+func FormatNormal(in string) string {
|
|
|
+ in = strings.TrimSpace(in)
|
|
|
+ in = strings.TrimLeft(in, "-")
|
|
|
+ in = strings.TrimLeft(in, ".")
|
|
|
+ in = strings.TrimLeft(in, "/")
|
|
|
+ in = strings.TrimLeft(in, "&")
|
|
|
+ in = strings.TrimLeft(in, ",")
|
|
|
+ in = strings.Replace(in, `"`, "", -1)
|
|
|
+ if strings.Contains(in, "月") {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+ switch in {
|
|
|
+ case "―":
|
|
|
+ return ""
|
|
|
+ /*case "99999":
|
|
|
+ return ""
|
|
|
+ case "999999":
|
|
|
+ return ""
|
|
|
+ case "9999999":
|
|
|
+ return ""
|
|
|
+ case "99999999":
|
|
|
+ return ""*/
|
|
|
+ case "00976867":
|
|
|
+ return ""
|
|
|
+ case "02":
|
|
|
+ return "2"
|
|
|
+ case "04":
|
|
|
+ return "4"
|
|
|
+ case "06":
|
|
|
+ return "6"
|
|
|
+ case "07":
|
|
|
+ return "7"
|
|
|
+ case "08":
|
|
|
+ return "8"
|
|
|
+ case "09":
|
|
|
+ return "9"
|
|
|
+ case "未":
|
|
|
+ return ""
|
|
|
+ case "无":
|
|
|
+ return ""
|
|
|
+ case "未知":
|
|
|
+ return ""
|
|
|
+ case "N/A":
|
|
|
+ return ""
|
|
|
+ case "*ANQ":
|
|
|
+ return "ANQ"
|
|
|
+ case "/AYJ":
|
|
|
+ return "AYJ"
|
|
|
+ case "----":
|
|
|
+ return ""
|
|
|
+ case "---":
|
|
|
+ return ""
|
|
|
+ case "######":
|
|
|
+ return ""
|
|
|
+ case "***":
|
|
|
+ return ""
|
|
|
+ case "****":
|
|
|
+ return ""
|
|
|
+ case "**/":
|
|
|
+ return ""
|
|
|
+ case "....":
|
|
|
+ return ""
|
|
|
+ case ".00":
|
|
|
+ return ""
|
|
|
+ case "0.1*":
|
|
|
+ return ""
|
|
|
+ case "00":
|
|
|
+ return ""
|
|
|
+ case "000":
|
|
|
+ return ""
|
|
|
+ case "0000":
|
|
|
+ return ""
|
|
|
+ case "00000":
|
|
|
+ return ""
|
|
|
+ case "000000":
|
|
|
+ return ""
|
|
|
+ case "0000000":
|
|
|
+ return ""
|
|
|
+ case "+":
|
|
|
+ return ""
|
|
|
+ case "+G4E":
|
|
|
+ return "G4E"
|
|
|
+ case "0.0":
|
|
|
+ return ""
|
|
|
+ case "0":
|
|
|
+ return ""
|
|
|
+ case "-1":
|
|
|
+ return ""
|
|
|
+ case "?":
|
|
|
+ return ""
|
|
|
+ case "-":
|
|
|
+ return ""
|
|
|
+ case "--":
|
|
|
+ return ""
|
|
|
+ case ".":
|
|
|
+ return ""
|
|
|
+ case "..":
|
|
|
+ return ""
|
|
|
+ case "...":
|
|
|
+ return ""
|
|
|
+ case "/":
|
|
|
+ return ""
|
|
|
+ case "#":
|
|
|
+ return ""
|
|
|
+ case "##":
|
|
|
+ return ""
|
|
|
+ case "*":
|
|
|
+ return ""
|
|
|
+ case "**":
|
|
|
+ return ""
|
|
|
+ case "__":
|
|
|
+ return ""
|
|
|
+ case "null":
|
|
|
+ return ""
|
|
|
+ case "/8":
|
|
|
+ return "8"
|
|
|
+ case "#NAME?":
|
|
|
+ return ""
|
|
|
+ case "1.4/44KW 5G":
|
|
|
+ return ""
|
|
|
+ case "1.6":
|
|
|
+ return ""
|
|
|
+ case "1.6AT":
|
|
|
+ return ""
|
|
|
+ case "1.8":
|
|
|
+ return ""
|
|
|
+ case "1.8AT":
|
|
|
+ return ""
|
|
|
+ case "1.8T":
|
|
|
+ return ""
|
|
|
+ case "1.8TAT":
|
|
|
+ return ""
|
|
|
+ case "100":
|
|
|
+ return ""
|
|
|
+ case "100-2.2E":
|
|
|
+ return ""
|
|
|
+ case "100-2.6E":
|
|
|
+ return ""
|
|
|
+ case "1598CC":
|
|
|
+ return ""
|
|
|
+ case "1984CC":
|
|
|
+ return ""
|
|
|
+ case "1984CC小轿车":
|
|
|
+ return ""
|
|
|
+ case "1997CC":
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+ in = strings.Replace(in, ` `, "", -1)
|
|
|
+
|
|
|
+ return in
|
|
|
+}
|
|
|
+
|
|
|
+// 发动机型号
|
|
|
+func FormatEngineType(in string) string {
|
|
|
+ if in == "" {
|
|
|
+ return in
|
|
|
+ }
|
|
|
+ in = strings.TrimSpace(in)
|
|
|
+ in = strings.Replace(in, `,`, "", -1)
|
|
|
+ in = strings.Replace(in, `+`, "", -1)
|
|
|
+ in = strings.Replace(in, `*`, "", -1)
|
|
|
+ //in = strings.Replace(in,`.`,"",-1)
|
|
|
+ //in = strings.TrimLeft(in,"-")
|
|
|
+ //in = strings.TrimLeft(in,"-")
|
|
|
+ //in = strings.TrimLeft(in,"/")
|
|
|
+
|
|
|
+ return FormatNormal(in)
|
|
|
+}
|
|
|
+
|
|
|
+// 轴荷
|
|
|
+func FormatAxleWeight(in string) string {
|
|
|
+ if in == "" {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+ in = strings.Replace(in, `"`, "", -1)
|
|
|
+ in = strings.Replace(in, `-/`, "", -1)
|
|
|
+ return FormatNormal(in)
|
|
|
+}
|
|
|
+
|
|
|
+//轮胎数
|
|
|
+func FormatTyreNum(tyreNum string) string {
|
|
|
+ if tyreNum == "" {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+ if strings.Contains(tyreNum, "AM") || strings.Contains(tyreNum, "月") || strings.Contains(tyreNum, "R") {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+
|
|
|
+ tyreNum = strings.Replace(tyreNum, "]", "", -1)
|
|
|
+
|
|
|
+ return FormatNormal(tyreNum)
|
|
|
+}
|
|
|
+
|
|
|
+// 轴数
|
|
|
+func FormatAxleNumber(axleNumber string) string {
|
|
|
+ if axleNumber == "" {
|
|
|
+ return axleNumber
|
|
|
+ }
|
|
|
+
|
|
|
+ switch axleNumber {
|
|
|
+ case "2月4日":
|
|
|
+ return "2线4轴"
|
|
|
+ case "2轴":
|
|
|
+ return "2"
|
|
|
+ case "3轴":
|
|
|
+ return "3"
|
|
|
+ case "4轴":
|
|
|
+ return "4"
|
|
|
+ case "5轴":
|
|
|
+ return "5"
|
|
|
+ case "三线六轴":
|
|
|
+ return "3线6轴"
|
|
|
+ case "三轴":
|
|
|
+ return "3"
|
|
|
+ case "两线四轴":
|
|
|
+ return "2线4轴"
|
|
|
+ case "二线四轴":
|
|
|
+ return "2线4轴"
|
|
|
+ case "-":
|
|
|
+ return ""
|
|
|
+ case "-1":
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+
|
|
|
+ axleNumber = strings.Replace(axleNumber, `"`, "", -1)
|
|
|
+ axleNumber = strings.Replace(axleNumber, `,`, "", -1)
|
|
|
+
|
|
|
+ return axleNumber
|
|
|
+}
|
|
|
+
|
|
|
+// 轮胎规格
|
|
|
+func FormatTyreSize(tyreSize string) string {
|
|
|
+ if tyreSize == "" {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+
|
|
|
+ tyreSize = strings.Replace(tyreSize, `"`, "", -1)
|
|
|
+ tyreSize = strings.Replace(tyreSize, `第1轴:`, "第1轴", -1)
|
|
|
+ tyreSize = strings.Replace(tyreSize, `第2轴:`, "第2轴", -1)
|
|
|
+ tyreSize = strings.Replace(tyreSize, `;第2轴`, "第2轴", -1)
|
|
|
+ tyreSize = strings.Replace(tyreSize, `第一轴`, "第1轴", -1)
|
|
|
+ tyreSize = strings.Replace(tyreSize, `第二轴`, "第2轴", -1)
|
|
|
+ tyreSize = strings.Replace(tyreSize, `前`, "第1轴", -1)
|
|
|
+ tyreSize = strings.Replace(tyreSize, `后`, "第2轴", -1)
|
|
|
+ tyreSize = strings.Replace(tyreSize, ` `, "", -1)
|
|
|
+ return tyreSize
|
|
|
+}
|
|
|
+func FormatOilWear(oilWear string) string {
|
|
|
+ if oilWear == "" {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+ // 截断
|
|
|
+ oilWear = strings.Split(oilWear, "L")[0]
|
|
|
+ oilWear = strings.Split(oilWear, "(")[0]
|
|
|
+ oilWear = strings.Split(oilWear, "&")[0]
|
|
|
+ oilWear = strings.Split(oilWear, "R")[0]
|
|
|
+ oilWear = strings.Split(oilWear, "(")[0]
|
|
|
+
|
|
|
+ // 去掉空格
|
|
|
+ oilWear = strings.Replace(oilWear, "小于等于", "", -1)
|
|
|
+ oilWear = strings.Replace(oilWear, " ", "", -1)
|
|
|
+
|
|
|
+ if oilWear == "" {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+
|
|
|
+ num, err := strconv.ParseFloat(oilWear, 10)
|
|
|
+ if err != nil {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+
|
|
|
+ if num == 0 {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+
|
|
|
+ if num > 200 {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+
|
|
|
+ return fmt.Sprintf("%.2f", num)
|
|
|
+}
|
|
|
+func FormatRatedPower(in string) string {
|
|
|
+ num, err := strconv.ParseFloat(in, 10)
|
|
|
+ if err != nil {
|
|
|
+ return in
|
|
|
+ }
|
|
|
+
|
|
|
+ if num == 0 {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+
|
|
|
+ return fmt.Sprintf("%.1f", num)
|
|
|
+}
|
|
|
+func FormatLongWideHigh(in string) string {
|
|
|
+ if in == "" {
|
|
|
+ return in
|
|
|
+ }
|
|
|
+ inList := strings.Split(in, ",")
|
|
|
+ for _, v := range inList {
|
|
|
+ if v == "0" {
|
|
|
+ continue
|
|
|
+ } else {
|
|
|
+ return v
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return in
|
|
|
+}
|
|
|
+func FormatField(reqMap map[string]interface{}, key string) {
|
|
|
+ if v, ok := reqMap[key]; ok {
|
|
|
+ if _, ok = v.(string); ok && v.(string) != "" {
|
|
|
+ switch key {
|
|
|
+ case "engine_type":
|
|
|
+ reqMap[key] = FormatEngineType(v.(string))
|
|
|
+ case "axle_weight":
|
|
|
+ reqMap[key] = FormatAxleWeight(v.(string))
|
|
|
+ case "tyre_number":
|
|
|
+ reqMap[key] = FormatTyreNum(v.(string))
|
|
|
+ case "axle_number":
|
|
|
+ reqMap[key] = FormatAxleNumber(v.(string))
|
|
|
+ case "tyre_size":
|
|
|
+ reqMap[key] = FormatTyreSize(v.(string))
|
|
|
+ case "oil_wear":
|
|
|
+ reqMap[key] = FormatOilWear(v.(string))
|
|
|
+ case "rated_power":
|
|
|
+ reqMap[key] = FormatRatedPower(v.(string))
|
|
|
+ case "traction_mass":
|
|
|
+ tmp := FormatNormal(v.(string))
|
|
|
+ reqMap[key] = FormatLongWideHigh(tmp)
|
|
|
+ case "front_wheel_distance":
|
|
|
+ tmp := FormatNormal(v.(string))
|
|
|
+ reqMap[key] = FormatLongWideHigh(tmp)
|
|
|
+ case "back_wheel_distance":
|
|
|
+ tmp := FormatNormal(v.(string))
|
|
|
+ reqMap[key] = FormatLongWideHigh(tmp)
|
|
|
+ case "gross_mass":
|
|
|
+ tmp := FormatNormal(v.(string))
|
|
|
+ reqMap[key] = FormatLongWideHigh(tmp)
|
|
|
+ case "unladen_mass":
|
|
|
+ tmp := FormatNormal(v.(string))
|
|
|
+ reqMap[key] = FormatLongWideHigh(tmp)
|
|
|
+ case "approved_load":
|
|
|
+ tmp := FormatNormal(v.(string))
|
|
|
+ reqMap[key] = FormatLongWideHigh(tmp)
|
|
|
+ case "wheel_base":
|
|
|
+ wheelBase := FormatNormal(v.(string))
|
|
|
+ reqMap[key] = FormatLongWideHigh(wheelBase)
|
|
|
+ case "long":
|
|
|
+ reqMap[key] = FormatLongWideHigh(v.(string))
|
|
|
+ case "wide":
|
|
|
+ reqMap[key] = FormatLongWideHigh(v.(string))
|
|
|
+ case "high":
|
|
|
+ reqMap[key] = FormatLongWideHigh(v.(string))
|
|
|
+ case "approved_number":
|
|
|
+ reqMap[key] = FormatNormal(v.(string))
|
|
|
+ case "displacement":
|
|
|
+ reqMap[key] = FormatNormal(v.(string))
|
|
|
+ case "displacement_l":
|
|
|
+ reqMap[key] = FormatNormal(v.(string))
|
|
|
+ case "engine_no":
|
|
|
+ reqMap[key] = FormatNormal(v.(string))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func DisplacementTol(displacementml string) string {
|
|
|
+ tmp, err := strconv.Atoi(displacementml)
|
|
|
+ if err != nil {
|
|
|
+ return displacementml
|
|
|
+ }
|
|
|
+
|
|
|
+ if tmp == 0 {
|
|
|
+ return displacementml
|
|
|
+ }
|
|
|
+
|
|
|
+ left := tmp % 100
|
|
|
+
|
|
|
+ if left >= 50 {
|
|
|
+ tmp = tmp / 100
|
|
|
+ tmp = tmp * 100
|
|
|
+ tmp = tmp + 100
|
|
|
+ } else {
|
|
|
+ tmp = tmp / 100
|
|
|
+ tmp = tmp * 100
|
|
|
+ }
|
|
|
+ r := float64(tmp) / float64(1000)
|
|
|
+ return fmt.Sprintf("%.1f", r)
|
|
|
+}
|
|
|
+
|
|
|
// 格式化数据
|
|
|
func F01(ctx context.Context, params string) (reply *apis.QueryResponse, err error) {
|
|
|
reply = &apis.QueryResponse{}
|