| | |
| | | import ( |
| | | reqUtil "car-service/extend/util" |
| | | "car-service/models" |
| | | "car-service/vo" |
| | | "encoding/json" |
| | | "fmt" |
| | | "github.com/astaxie/beego" |
| | | "strconv" |
| | | ) |
| | | type CarService struct { |
| | | hikUtil *reqUtil.HikHttpUtil |
| | |
| | | SpaceType string `json:"spaceType"` |
| | | } |
| | | |
| | | func (sv *CarService) FindSpaceNo() models.PosResult { |
| | | func (sv *CarService) FindSpaceNo(userId string) models.PosResult { |
| | | resultList := make(models.PosResult,0) |
| | | |
| | | var myPlateNosMap = make(map[string]string) |
| | | vehicles := sv.GetVehicleListByPerson(userId) |
| | | if vehicles != nil { |
| | | for _,veh := range vehicles { |
| | | myPlateNosMap[veh.PlateNo] = veh.PlateNo |
| | | //myPlateNos = append(myPlateNos, veh.PlateNo) |
| | | } |
| | | } |
| | | //bindCars := strings.Join(myPlateNos, ",") |
| | | //先查车库唯一标识 |
| | | parkList := sv.getHikParkList() //先查有几个停车场 |
| | | if parkList != nil { |
| | | //parkList := sv.getHikParkList() //先查有几个停车场 |
| | | //if parkList != nil { |
| | | url := "/artemis/api/pms/v1/parkingSpace/spaceNo" |
| | | for _,p := range parkList { |
| | | //for _,p := range parkList { |
| | | reqBody := map[string]interface{} { |
| | | "parkSyscode": p.ParkIndexCode,//停车库唯一标识 |
| | | //"parkSyscode": p.ParkIndexCode,//停车库唯一标识 |
| | | //"state": 1, //车位状态,0:空闲,1:停车 |
| | | //"bindCars": bindCars, |
| | | "pageNo": 1, |
| | | "pageSize": 1000, |
| | | } |
| | | result := sv.hikUtil.Post(url, reqBody) |
| | | fmt.Println("findSpaceNo result:", result) |
| | | if result.Code == reqUtil.HikResult_Success { |
| | | rb, err := json.Marshal(result.Data) |
| | | pageResult := sv.getHikPageResult(url, reqBody) |
| | | fmt.Println("findSpaceNo pageResult:", pageResult) |
| | | if pageResult != nil { |
| | | rb, err := json.Marshal(pageResult.List) |
| | | if err != nil { |
| | | fmt.Println("hik find spaceNo err:",err) |
| | | fmt.Println("marshal pageResult.List err:",err) |
| | | return nil |
| | | } |
| | | var spaceList []SpaceNo |
| | |
| | | return nil |
| | | } |
| | | for _,s := range spaceList { |
| | | isMine := false |
| | | if _,exist := myPlateNosMap[s.PlateNos]; exist { |
| | | isMine = true |
| | | } |
| | | pi := models.PosInfo { |
| | | SpaceNo: s.SpaceNo, |
| | | PosNo: "", |
| | | State: s.State, |
| | | PlateNo: s.PlateNos, |
| | | IsMine: isMine, |
| | | } |
| | | if v,ok := models.SpaceNo2Pos[s.SpaceNo];ok { |
| | | pi.PosNo = v |
| | |
| | | resultList = append(resultList, pi) |
| | | } |
| | | } |
| | | //} |
| | | //} |
| | | if len(resultList) == 0 { |
| | | for i:=1;i<91;i++ { |
| | | pi := models.PosInfo { |
| | | SpaceNo: strconv.Itoa(i), |
| | | PosNo: "", |
| | | State: 1, |
| | | PlateNo: "", |
| | | IsMine: false, |
| | | } |
| | | resultList = append(resultList, pi) |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | type HikPerson struct { |
| | | PersonId string `json:"personId"` |
| | | PersonName string `json:"personName"` |
| | | Gender int `json:"gender"` |
| | | Phone string `json:"phone"` |
| | | JobNo string `json:"jobNo"` |
| | | OrgIndexCode string `json:"orgIndexCode"` |
| | | CertificateType string `json:"certificateCode"` |
| | | CertificateNo string `json:"certificateNo"` |
| | | CreateTime string `json:"createTime"` |
| | | UpdateTime string `json:"updateTime"` |
| | | OrgPath string `json:"orgPath"` |
| | | OrgPathName string `json:"orgPathName"` |
| | | PersonPhone []HikPersonPhoto `json:"personPhoto"` |
| | | PersonId string `json:"personId"` |
| | | PersonName string `json:"personName"` |
| | | Gender int `json:"gender"` |
| | | PhoneNo string `json:"phoneNo"` |
| | | JobNo string `json:"jobNo"` |
| | | OrgIndexCode string `json:"orgIndexCode"` |
| | | CertificateType string `json:"certificateCode"` |
| | | CertificateNo string `json:"certificateNo"` |
| | | CreateTime string `json:"createTime"` |
| | | UpdateTime string `json:"updateTime"` |
| | | OrgPath string `json:"orgPath"` |
| | | OrgPathName string `json:"orgPathName"` |
| | | PersonPhone []HikPersonPhoto `json:"personPhoto"` |
| | | } |
| | | |
| | | type HikPersonPhoto struct { |
| | |
| | | |
| | | func (sv *CarService) GetHikPersonList() []HikPerson { |
| | | url := "/artemis/api/resource/v2/person/personList" |
| | | pageSize := 1000 |
| | | reqBody := map[string]interface{} { |
| | | "pageNo": 1, |
| | | "pageSize": 10000, |
| | | "pageSize": pageSize, |
| | | } |
| | | pageResult := sv.getHikPageResult(url, reqBody) |
| | | if pageResult == nil { |
| | | return nil |
| | | } |
| | | b,err := json.Marshal(pageResult.List) |
| | | if err != nil { |
| | | fmt.Println("marshal pageResult.List err:", err) |
| | | return nil |
| | | } |
| | | var list []HikPerson |
| | | if err = json.Unmarshal(b, &list);err != nil { |
| | | fmt.Println("unmarshal err:", err) |
| | | return nil |
| | | } |
| | | if pageResult.Total > pageSize { |
| | | times := pageResult.Total / pageSize |
| | | if pageResult.Total % pageSize > 0 { |
| | | times++ |
| | | } |
| | | for i:=1;i<times;i++ { |
| | | tpr := sv.getHikPageResult(url, map[string]interface{}{ |
| | | "pageNo": i+1, |
| | | "pageSize": pageSize, |
| | | }) |
| | | if tpr != nil { |
| | | tb,e := json.Marshal(tpr.List) |
| | | if e != nil { |
| | | fmt.Println("marshal tpr.List err:", e) |
| | | continue |
| | | } |
| | | var tprList []HikPerson |
| | | if e = json.Unmarshal(tb, &tprList);e ==nil { |
| | | list = append(list, tprList...) |
| | | } else { |
| | | fmt.Println("unmarshal tprList err:", e) |
| | | } |
| | | } else { |
| | | fmt.Println("total:", pageResult.Total, "tpr is nil") |
| | | } |
| | | } |
| | | } |
| | | |
| | | return list |
| | | } |
| | | |
| | | func (sv *CarService) getHikPageResult(url string, reqBody map[string]interface{}) *vo.HikPageResult { |
| | | fmt.Println(url, reqBody) |
| | | result := sv.hikUtil.Post(url, reqBody) |
| | | fmt.Println("findPersonList result:", result) |
| | | if result.Code == reqUtil.HikResult_Success { |
| | | b, err := json.Marshal(result.Data) |
| | | if err == nil { |
| | | var list []HikPerson |
| | | if err = json.Unmarshal(b, &list);err == nil { |
| | | return list |
| | | var pageResult vo.HikPageResult |
| | | if err = json.Unmarshal(b, &pageResult); err == nil { |
| | | return &pageResult |
| | | } else { |
| | | fmt.Println("unmarshal pageResult err:", err) |
| | | } |
| | | } else { |
| | | fmt.Println("marshal result.Data err:", err) |
| | | } |
| | | } else { |
| | | fmt.Println("result:", result) |
| | | } |
| | | return nil |
| | | } |
| | |
| | | "pageSize": 100, |
| | | "personIds": personId, |
| | | } |
| | | fmt.Println(url, reqBody) |
| | | result := sv.hikUtil.Post(url, reqBody) |
| | | fmt.Println("getVehicleList result:", result) |
| | | if result.Code == reqUtil.HikResult_Success { |
| | | b, err := json.Marshal(result.Data) |
| | | if err == nil { |
| | | var list []HikVehicle |
| | | if err = json.Unmarshal(b, &list);err == nil { |
| | | return list |
| | | } |
| | | pageResult := sv.getHikPageResult(url, reqBody) |
| | | if pageResult ==nil { |
| | | return nil |
| | | } |
| | | |
| | | b, err := json.Marshal(pageResult.List) |
| | | if err == nil { |
| | | var list []HikVehicle |
| | | if err = json.Unmarshal(b, &list);err == nil { |
| | | return list |
| | | } |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | //过车记录 |
| | | type CrossRecord struct { |
| | | CrossRecordSyscode string `json:"crossRecordSyscode"` |
| | | parkSyscode string `json:"parkSyscode"` |
| | | ParkName string `json:"parkName"` |
| | | EntranceSyscode string `json:"entranceSyscode"` |
| | | EntranceName string `json:"entranceName"` |
| | | RoadwaySyscode string `json:"roadwaySyscode"` |
| | | RoadwayName string `json:"roadwayName"` |
| | | VehicleOut int `json:"vehicleOut"` |
| | | ReleaseMode int `json:"releaseMode"` |
| | | ReleaseResult int `json:"releaseResult"` |
| | | ReleaseWay int `json:"releaseWay"` |
| | | ReleaseReason int `json:"releaseReason"` |
| | | PlateNo string `json:"plateNo"` |
| | | CardNo string `json:"cardNo"` |
| | | //VehicleColor int `json:"vehicleColor"` |
| | | //VehicleType int `json:"vehicleType"` |
| | | //PlateColor int `json:"plateColor"` |
| | | //PlateType int `json:"plateType"` |
| | | //CarCategory string `json:"carCategory"` |
| | | //CarCategoryName string `json:"carCategoryName"` |
| | | VehiclePicUri string `json:"vehiclePicUri"` |
| | | PlateNoPicUri string `json:"plateNoPicUri"` |
| | | FacePicUri string `json:"facePicUri"` |
| | | AswSyscode string `json:"aswSyscode"` |
| | | CrossTime string `json:"crossTime"` |
| | | CreateTime string `json:"createTime"` |
| | | } |
| | | |
| | | func (sv *CarService) CrossRecords() []CrossRecord { |
| | | url := "/artemis/api/pms/v1/crossRecords/page" |
| | | reqBody := map[string]interface{} { |
| | | "pageNo": 1, |
| | | "pageSize": 100, |
| | | } |
| | | pageResult := sv.getHikPageResult(url, reqBody) |
| | | if pageResult ==nil { |
| | | return nil |
| | | } |
| | | b, err := json.Marshal(pageResult.List) |
| | | if err == nil { |
| | | var list []CrossRecord |
| | | if err = json.Unmarshal(b, &list);err == nil { |
| | | return list |
| | | } |
| | | } |
| | | |
| | | return nil |
| | | } |