From 2b4f2df77c248b472e36a095b571e8d75f9fa30c Mon Sep 17 00:00:00 2001 From: liuxiaolong <liuxiaolong@aiotlink.com> Date: 星期二, 01 九月 2020 17:55:55 +0800 Subject: [PATCH] add find spaceUser --- routers/router.go | 1 service/carService.go | 113 +++++++++++++++++++++++++++++++++++++ controllers/car.go | 12 ++++ 3 files changed, 126 insertions(+), 0 deletions(-) diff --git a/controllers/car.go b/controllers/car.go index 15aed3d..63cf1a7 100644 --- a/controllers/car.go +++ b/controllers/car.go @@ -266,6 +266,18 @@ c.ServeJSON() } +// @router /spaceUser [get] +func (c *CarController) SpaceUser() { + sv := service.NewCarService() + spaceUser := sv.FindHikSpaceUser() + c.Data["json"] = code.Code{ + Success: true, + Status: http.StatusOK, + Data: spaceUser, + } + c.ServeJSON() +} + // @router /pushLog [get] func (c *CarController) PushLog() { st := c.GetString("startTime") diff --git a/routers/router.go b/routers/router.go index 51a01a7..e1f14f9 100644 --- a/routers/router.go +++ b/routers/router.go @@ -63,4 +63,5 @@ beego.Router(preApi+"/car/pushLog", &controllers.CarController{}, "*:PushLog") beego.Router(preApi+"/car/spaceInfo", &controllers.CarController{}, "*:SpaceInfo") + beego.Router(preApi+"/car/spaceUser", &controllers.CarController{}, "*:SpaceUser") } diff --git a/service/carService.go b/service/carService.go index 2ae876a..3d3ca03 100644 --- a/service/carService.go +++ b/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"` } +//浠ヤ汉鍛榠d涓簁ey +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 +} + +//浠ヨ溅鐗屽彿涓篕ey +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 -- Gitblit v1.8.0