liuxiaolong
2020-09-01 2b4f2df77c248b472e36a095b571e8d75f9fa30c
service/carService.go
@@ -7,6 +7,7 @@
   "encoding/json"
   "fmt"
   "github.com/astaxie/beego"
   "sort"
   "strconv"
   "strings"
)
@@ -175,6 +176,87 @@
   return nil
}
type SpaceUser struct {
   SpaceNo    string          `json:"spaceNo"`
   PlateNo    string          `json:"plateNo"`
   Username    string          `json:"username"`
   PhoneNum    string          `json:"phoneNum"`
   CarType    string          `json:"carType"`
}
type SpaceUserArr []SpaceUser
func (arr SpaceUserArr) Len()int {
   return len(arr)
}
func (arr SpaceUserArr) Swap(i,j int) {
   arr[i],arr[j] = arr[j],arr[i]
}
func (arr SpaceUserArr) Less(i,j int) bool {
   sn1,_ := strconv.Atoi(arr[i].SpaceNo)
   sn2,_ := strconv.Atoi(arr[j].SpaceNo)
   return sn1 < sn2
}
func (sv *CarService) FindHikSpaceUser() SpaceUserArr {
   resultList := make(SpaceUserArr, 0)
   url := "/artemis/api/pms/v1/parkingSpace/spaceNo"
   reqBody := map[string]interface{} {
      "pageNo": 1,
      "pageSize": 1000,
   }
   pageResult := sv.getHikPageResult(url, reqBody)
   if pageResult != nil {
      rb, err := json.Marshal(pageResult.List)
      if err != nil {
         fmt.Println("marshal pageResult.List err:", err)
      } else {
         var spaceList []SpaceNo
         err = json.Unmarshal(rb, &spaceList)
         if err != nil {
            fmt.Println("unmarshal spaceNos err:", err)
         } else {
            if len(spaceList) > 0 { //当前有停留车
               personMap := sv.GetHikPersonMap()
               vehicleMap := sv.GetHikVehicleMap()
               for _,sp := range spaceList {
                  su := SpaceUser{
                     SpaceNo: sp.SpaceNo,
                     PlateNo: sp.PlateNo,
                  }
                  if sp.PlateNo != "" {
                     r := []rune(sp.PlateNo)
                     ncStr := string(r[1:]) //把第一位汉字剔除掉
                     newK := strings.ReplaceAll(ncStr, "D", "*")
                     newK = strings.ReplaceAll(newK, "0", "*")
                     personId := ""
                     if v,exist := vehicleMap[newK]; exist {
                        personId = v.PersonId
                     }
                     if personId != "" {
                        su.CarType = "备案车"
                        if person, in := personMap[personId]; in {
                           su.Username = person.PersonName
                           su.PhoneNum = person.PhoneNo
                        }
                     } else {
                        su.CarType = "临时车"
                     }
                  } else {
                     su.PlateNo = "无车牌"
                  }
                  resultList = append(resultList, su)
               }
            }
         }
      }
   }
   sort.Sort(resultList)
   return resultList
}
func (sv *CarService) FindSpaceNo(userId string) models.PosResult {
   resultList := make(models.PosResult,0)
   var myPlateNosMap = make(map[string]string)
@@ -312,6 +394,37 @@
   PersonId                   string             `json:"personId"`
}
//以人员id为key
func (sv *CarService) GetHikPersonMap() map[string]HikPerson {
   m := make(map[string]HikPerson)
   personList := sv.GetHikPersonList()
   if personList != nil {
      for _,p := range personList {
         m[p.PersonId] = p
      }
   }
   return m
}
//以车牌号为Key
func (sv *CarService) GetHikVehicleMap() map[string] HikVehicle {
   m := make(map[string]HikVehicle)
   carPersons := sv.GetVehicleListByPerson("")
   if carPersons != nil {
      for _,veh := range carPersons {
         if veh.PlateNo != "" {
            r := []rune(veh.PlateNo)
            ncStr := string(r[1:]) //把第一位汉字剔除掉
            newK := strings.ReplaceAll(ncStr, "D", "*")
            newK = strings.ReplaceAll(newK, "0", "*")
            m[newK] = veh
         }
      }
   }
   return m
}
func (sv *CarService) GetHikPersonList() []HikPerson {
   url := "/artemis/api/resource/v2/person/personList"
   pageSize := 1000