| | |
| | | "encoding/json" |
| | | "fmt" |
| | | "github.com/astaxie/beego" |
| | | "sort" |
| | | "strconv" |
| | | "strings" |
| | | ) |
| | |
| | | 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) |
| | |
| | | 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 |