liuxiaolong
2020-09-01 2b4f2df77c248b472e36a095b571e8d75f9fa30c
add find spaceUser
3个文件已修改
126 ■■■■■ 已修改文件
controllers/car.go 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
routers/router.go 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/carService.go 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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")
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")
}
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