From 9d4762cee4c0762dde9ee8712c3460c6f986f876 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期六, 19 十月 2024 14:27:35 +0800 Subject: [PATCH] 修复V2 --- model/model.go | 105 ++++++++++++++++++++++++++ service/server.go | 91 ++++++++-------------- 2 files changed, 139 insertions(+), 57 deletions(-) diff --git a/model/model.go b/model/model.go index 037246b..7016d1c 100644 --- a/model/model.go +++ b/model/model.go @@ -19,12 +19,117 @@ DataSource: "smart-ai", } +type BaseCompareInfo struct { + BwType string `json:"bwType"` + TableId string `json:"tableId"` + TableName string `json:"tableName"` + CompareScore float32 `json:"compareScore"` + OriginScore float32 `json:"originScore"` + TargetId string `json:"targetId"` + TargetPicUrl string `json:"targetPicUrl"` + MonitorLevel string `json:"monitorLevel"` + Content string `json:"content"` + DbLabel string `json:"labels"` +} + +type AlarmRule struct { + RuleId string `json:"ruleId"` + RuleText string `json:"ruleText"` + AlarmLevel string `json:"alarmLevel"` +} + +type Point struct { + X int32 `json:"x"` + Y int32 `json:"y"` +} + +type Points struct { + TopLeft Point `json:"topLeft"` + BottomRight Point `json:"bottomRight"` +} + +type TargetInfo struct { + TargetId string `json:"targetId"` + TargetScore float64 `json:"targetScore"` + FrontFaceScore float64 `json:"frontFaceScore"` + ImgQuality float64 `json:"imgQuality"` + FaceQuality float64 `json:"faceQuality"` + TargetType string `json:"targetType"` + Feature string `json:"-"` + PicSmUrl string `json:"picSmUrl"` + TargetLocation Points `json:"targetLocation"` + Attribute string `json:"attribute"` +} + +type PicWidHei struct { + PicW int `json:"picW"` + PicH int `json:"picH"` +} + type pushDataInfoV2 struct { CameraId string `json:"cameraId"` CameraFloor string `json:"cameraFloor"` //鎽勫儚鏈烘ゼ灞� + Direction string `json:"direction"` // 鎽勫儚鏈鸿繍琛屾柟鍚� up or down PicDate string `json:"picDate"` PicId string `json:"picId"` DataSource string `json:"dataSource"` PicMaxImages [][]byte `json:"picMaxImages"` PicSmImages [][]byte `json:"picSmImages"` } + +type TaskResultInfoV2 struct { + Id string `json:"id"` + AnalyServerId string `json:"analyServerId"` + AnalyServerName string `json:"analyServerName"` + AnalyServerIp string `json:"analyServerIp"` + ClusterId string `json:"clusterId"` + CameraId string `json:"cameraId"` + CameraAddr string `json:"cameraAddr"` // 鎽勫儚鏈哄湴鍧� + CameraName string `json:"cameraName"` // 鎽勫儚鏈哄悕绉� + CommunityId string `json:"communityId"` + CommunityName string `json:"communityName"` + CameraLocation CameraLocation `json:"cameraLocation"` + DocumentNumber string `json:"documentNumber"` // 妗f缂栧彿 + OrgId string `json:"orgId"` //鏈烘瀯鍚嶇О + OrgName string `json:"orgName"` //鏈烘瀯鍚嶇О + PicDate string `json:"picDate"` + PicId string `json:"picId"` + PicMaxUrl string `json:"picMaxUrl"` + PicWH PicWidHei `json:"picWH"` + TaskId string `json:"taskId"` + TaskName string `json:"taskName"` + SdkName string `json:"sdkName"` + Content string `json:"content"` + ShowLabels string `json:"showLabels"` + OtherLabels string `json:"otherLabels"` + VideoUrl string `json:"videoUrl"` + IsAlarm bool `json:"isAlarm"` + IsAckAlarm bool `json:"isAckAlarm"` + IsDelete bool `json:"isDelete"` + IsKeyPerson bool `json:"isKeyPerson"` + KeyPersonType []string `json:"keyPersonType"` + AlarmRules []AlarmRule `json:"alarmRules"` + BaseInfo *BaseCompareInfo `json:"baseInfo"` + TargetInfo TargetInfo `json:"targetInfo"` + DataSource string `json:"dataSource"` // 鏁版嵁鏉ユ簮:鎽勫儚鏈�, 鏁版嵁鏍� +} + +type CameraLocation struct { + Building string `json:"building"` + Unit string `json:"unit"` + Pos string `json:"pos"` + Floor string `json:"floor"` + Direction string `json:"direction"` +} + +func (cl *CameraLocation) Join() string { + return cl.Building + cl.Unit + cl.Pos + cl.Floor +} + +// es瑙嗛鍒嗘瀽鐨勬暟鎹粨鏋� +type ESInfoV2 struct { + TaskResultInfoV2 + Version string `json:"version"` + UpdateTime string `json:"updateTime"` + LikeDate string `json:"likeDate"` +} diff --git a/service/server.go b/service/server.go index 4bbf983..45d3db3 100644 --- a/service/server.go +++ b/service/server.go @@ -30,7 +30,7 @@ } func GetTotal() (total int, err error) { - url := "http://" + config.Options.EsUrl + "/ai_ocean/_search" + url := "http://" + config.Options.EsUrl + "/ai_face_ocean/_search" queryDSL := `{ "size": "1", "query": { @@ -69,7 +69,7 @@ func GetData() (interface{}, error) { //fmt.Println(config.Options.EsUrl) //fmt.Println(config.Options.ServerUrl) - url := "http://" + config.Options.EsUrl + "/ai_ocean/_search" + url := "http://" + config.Options.EsUrl + "/ai_face_ocean/_search" queryDSL := `{ "size": "1", "query": { @@ -91,8 +91,7 @@ } ] }` - //fmt.Println(url) - //fmt.Println(queryDSL) + buf, err := esutil.EsReq("POST", url, []byte(queryDSL)) if err != nil { return nil, err @@ -104,74 +103,52 @@ if len(source) == 0 { return nil, nil } - picMaxImages := make([][]byte, 0) // 瀛樺偍鍥剧墖鏁版嵁鐨勬暟缁� - if source[0]["picMaxUrl"].([]interface{}) != nil { - //picMaxUrls := source[0]["picMaxUrl"].([]interface{}) - if len(source[0]["picMaxUrl"].([]interface{})) > 0 { - for _, picMaxUrl := range source[0]["picMaxUrl"].([]interface{}) { - picMaxImageData, err := GetImageData("http://" + picMaxUrl.(string)) - if err != nil { - logger.Warn("鑾峰彇澶у浘鏁版嵁澶辫触:", err.Error()) - continue - } - picMaxImages = append(picMaxImages, picMaxImageData) - } + + b, _ := json.Marshal(source[0]) + + var esInfoV2 model.ESInfoV2 + err = json.Unmarshal(b, &esInfoV2) + if err != nil { + return nil, err + } + + picMaxImages := make([]byte, 0) // 瀛樺偍鍥剧墖鏁版嵁鐨勬暟缁� + if esInfoV2.PicMaxUrl != "" { + picMaxImages, err = GetImageData("http://" + esInfoV2.PicMaxUrl) + if err != nil { + logger.Warn("鑾峰彇澶у浘鏁版嵁澶辫触:", err.Error()) } } if len(picMaxImages) == 0 { - return nil, errors.New("鑾峰彇澶у浘澶辫触, id:" + source[0]["id"].(string)) + return nil, errors.New("鑾峰彇澶у浘澶辫触, id:" + esInfoV2.TargetInfo.PicSmUrl) } //fmt.Println("鍥剧墖鏁版嵁鏁扮粍澶у皬:", len(picMaxImages)) - picSmImages := make([][]byte, 0) // 瀛樺偍鍥剧墖鏁版嵁鐨勬暟缁� - if source[0]["targetInfo"].(interface{}) != nil { - for _, target := range source[0]["targetInfo"].([]interface{}) { - info := target.(map[string]interface{}) - picSmUrl := info["picSmUrl"].(string) - if picSmUrl == "" { - continue - } - picSmImageData, err := GetImageData("http://" + picSmUrl) - if err != nil { - fmt.Println("鑾峰彇灏忓浘鏁版嵁澶辫触:", err) - continue - } - picSmImages = append(picSmImages, picSmImageData) + picSmImages := make([]byte, 0) // 瀛樺偍鍥剧墖鏁版嵁鐨勬暟缁� + if esInfoV2.TargetInfo.PicSmUrl != "" { + picSmImages, err = GetImageData("http://" + esInfoV2.TargetInfo.PicSmUrl) + if err != nil { + fmt.Println("鑾峰彇灏忓浘鏁版嵁澶辫触:", err) } } if len(picSmImages) == 0 { - return nil, errors.New("鑾峰彇灏忓浘鏁版嵁澶辫触, id:" + source[0]["id"].(string)) + return nil, errors.New("鑾峰彇灏忓浘鏁版嵁澶辫触, id:" + esInfoV2.Id) } - // 涓婃姤鏈烘瀯鍚嶇О - //source[0]["orgName"] = config.Options.OrgName - - cameraAddr := source[0]["cameraAddr"].(string) - if len(cameraAddr) > 6 { - if cameraAddr[len(cameraAddr)-3:] == "妤�" { - cameraAddr = cameraAddr[:len(cameraAddr)-3] + "F" - } - if cameraAddr[len(cameraAddr)-3:] == "灞�" { - cameraAddr = cameraAddr[:len(cameraAddr)-3] + "F" - } - } - - if strings.HasSuffix(cameraAddr, "F") { - model.PushDataInfoV2.CameraFloor = extractFloor(cameraAddr) - } else { - model.PushDataInfoV2.CameraFloor = "" - } - - model.PushDataInfoV2.CameraId = source[0]["cameraId"].(string) - model.PushDataInfoV2.PicDate = source[0]["picDate"].(string) - model.PushDataInfoV2.PicId = source[0]["id"].(string) - model.PushDataInfoV2.PicMaxImages = picMaxImages - model.PushDataInfoV2.PicSmImages = picSmImages + var pushData = model.PushDataInfoV2 + pushData.CameraId = esInfoV2.CameraId + pushData.PicDate = esInfoV2.PicDate + pushData.PicId = esInfoV2.PicId + pushData.CameraFloor = esInfoV2.CameraLocation.Floor + pushData.Direction = esInfoV2.CameraLocation.Direction + pushData.PicMaxImages = append(pushData.PicMaxImages, picMaxImages) + pushData.PicSmImages = append(pushData.PicSmImages, picSmImages) //fmt.Println(model.PushDataInfo.SourceData) - return model.PushDataInfoV2, nil + + return pushData, nil } func extractFloor(s string) string { -- Gitblit v1.8.0