From 3b4dcffad6217648b95f5b007299f30af9ce3884 Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期三, 13 十一月 2019 13:54:27 +0800 Subject: [PATCH] 改es联动插入 --- insertdata/insertDataToEs.go | 221 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 178 insertions(+), 43 deletions(-) diff --git a/insertdata/insertDataToEs.go b/insertdata/insertDataToEs.go index fc97d18..a4f7a60 100644 --- a/insertdata/insertDataToEs.go +++ b/insertdata/insertDataToEs.go @@ -61,24 +61,25 @@ AnalyServerName string `json:"analyServerName"` AnalyServerIp string `json:"analyServerIp"` ClusterId string `json:"clusterId"` - LinkId string `json:"linkId"` DetectScore float64 `json:"detectScore"` IsAlarm int `json:"isAlarm"` IsAckAlarm int `json:"isAckAlarm"` IsCollect int `json:"isCollect"` IsDelete int `json:"isDelete"` BaseInfo []*structure.BaseInfo `json:"baseInfo"` - TargetInfo Target + TargetInfo []Target + LinkTag string `json:"linkTag"` + LinkTagInfo []*PerVideoPicture `json:"linkTagInfo"` } type Target struct { - TargetId string `json:"targetId"` + TargetId string `json:"targetId"` TargetScore float64 `json:"targetScore"` TargetLocation Points } type Points struct { - TopLeft Point `json:"topLeft"` + TopLeft Point `json:"topLeft"` BottomRight Point `json:"bottomRight"` } @@ -86,6 +87,7 @@ Lat float64 `json:"lat"` Lon float64 `json:"lon"` } + // yolo琛屼负鐨勬暟鎹粨鏋� type Personaction struct { Id string `json:"id"` @@ -103,13 +105,14 @@ ClusterId string `json:"clusterId"` PicSmUrl []string `json:"picSmUrl"` PicDate string `json:"picDate"` - LinkId string `json:"linkId"` VideoUrl string `json:"videoUrl"` IsAlarm int `json:"isAlarm"` IsAckAlarm int `json:"isAckAlarm"` IsCollect int `json:"isCollect"` IsDelete int `json:"isDelete"` - TargetInfo []Target + TargetInfo []Target + LinkTag string `json:"linkTag"` + LinkTagInfo []*PerVideoPicture `json:"linkTagInfo"` } type AlarmRule struct { @@ -140,12 +143,12 @@ weedfsUrl = "http://" + localConfig1.WebPicIp + ":" + strconv.Itoa(int(localConfig1.WebPicPort)) + "/submit" videoPersonUrl = "http://" + localConfig1.AlarmIp + ":" + strconv.Itoa(int(localConfig1.AlarmPort)) + "/" + EsInfo.EsIndex.VideoPersons.IndexName + "/" + EsInfo.EsIndex.VideoPersons.IndexType personAction = "http://" + localConfig1.AlarmIp + ":" + strconv.Itoa(int(localConfig1.AlarmPort)) + "/" + EsInfo.EsIndex.Personaction.IndexName + "/" + EsInfo.EsIndex.Personaction.IndexType - InsertFace(msg, "") - InsertYolo(msg, "") + InsertFace(msg) + InsertYolo(msg) } // 寰�es涓彃鍏ヤ汉鑴告暟鎹� -func InsertFace(msg structure.ResultMsg, linkId string) { +func InsertFace(msg structure.ResultMsg) { if msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]structure.FaceResult)) > 0 { logger.Info("寰�ES鎻掍汉鑴告暟鎹�") faces := []*FaceAndRules{} @@ -193,19 +196,15 @@ race := getRaceString(face.ThftRes.Race) ageDescription := getDescription(face.ThftRes.Age) logger.Info(ageDescription) - //esDataId := uuid.NewV4().String() - linksId := "" - if linkId != "" { - linksId = linkId - } var target = new(Target) target.TargetId = strconv.FormatUint(face.Id, 10) target.TargetScore = face.Score - target.TargetLocation = Points{TopLeft:Point{face.Location.X,face.Location.Y},BottomRight:Point{face.Location.X+face.Location.Width,face.Location.Y+face.Location.Height}} + target.TargetLocation = Points{TopLeft: Point{face.Location.X, face.Location.Y}, BottomRight: Point{face.Location.X + face.Location.Width, face.Location.Y + face.Location.Height}} //logger.Info("浜鸿劯鐨刬d:",strconv.FormatUint(face.Id, 10)) - + var targetInfos []Target + targetInfos = append(targetInfos,*target) pervideo := PerVideoPicture{ - msg.Push.PushId, + face.Uuid, msg.Cid, msg.Push.Cam.Addr, picTime, @@ -229,14 +228,15 @@ msg.Push.ServerName, msg.Push.LocalIp, "", - linksId, face.Score, 1, 0, 0, 0, face.Liker, - *target, + targetInfos, + "", + nil, } requstbody, err := json.Marshal(pervideo) @@ -250,7 +250,7 @@ } else { logger.Info("鎻掑叆es杩斿洖鐨勪俊鎭細", resp1) // 鍙戝嚭褰曞儚淇″彿 - ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: msg.Push.PushId, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, VideoUrl:msg.Push.VideoUrl,ImgId: i.Id, SdkIds: []string{}, Type: 1}) + ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: msg.Push.PushId, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, VideoUrl: msg.Push.VideoUrl, ImgId: i.Id, SdkIds: []string{}, Type: 1}) } } } @@ -303,7 +303,7 @@ } // 寰�es涓彃鍏olo鏁版嵁 -func InsertYolo(msg structure.ResultMsg, linkId string) { +func InsertYolo(msg structure.ResultMsg) { if msg.RuleResult["yolo"] != nil && len(msg.RuleResult["yolo"].([]structure.Result)) > 0 { // 鍏堝垽鏂竴涓嬫暟鎹甫鐨勮鍒欐爣绛炬槸鍚︽湁鍙互鎻掑叆鐨� flag := false @@ -355,10 +355,10 @@ } } // 瑁呴厤鐩爣淇℃伅鏁版嵁 - for _,target := range yoloResult.Location { + for _, target := range yoloResult.Location { // 鍘婚噸娣诲姞 var flag = true - for _,selectTarget := range targetInfos { + for _, selectTarget := range targetInfos { if strconv.FormatUint(target.TargetId, 10) == selectTarget.TargetId { flag = false break @@ -368,30 +368,22 @@ var target1 = new(Target) target1.TargetId = strconv.FormatUint(target.TargetId, 10) target1.TargetScore = target.TargetScore - target1.TargetLocation = Points{TopLeft:Point{target.X,target.Y},BottomRight:Point{target.X+target.Width,target.Y+target.Height}} - targetInfos = append(targetInfos,*target1) + target1.TargetLocation = Points{TopLeft: Point{target.X, target.Y}, BottomRight: Point{target.X + target.Width, target.Y + target.Height}} + targetInfos = append(targetInfos, *target1) } } } } - linkFlag := false + + linkTagInfos := []*PerVideoPicture{} for _, yoloResult := range msg.RuleResult["yolo"].([]structure.Result) { if (yoloResult.Others.TimeLabel == "01" || yoloResult.Others.TimeLabel == "10") && yoloResult.Others.LinkCache != nil && len(yoloResult.Others.LinkCache) > 1 { - linkId := uuid.NewV4().String() for _, msg2 := range yoloResult.Others.LinkCache { - logger.Warn("鎻掑叆鑱斿姩鏁版嵁", "姝ゅ抚鏁版嵁鐨刬d涓�", msg2.Cid) - InsertYolo(msg2, linkId) - linkFlag = true + // 鎶妋sg2鐨勬暟鎹閰嶆垚涓�涓狿erVideoPicture缁撴瀯浣� + linkTagInfos = append(linkTagInfos,msg2PersonVideo(msg2)) } } } - if linkFlag { - // 鑱斿姩鏁版嵁涓寘鍚湰甯ф暟鎹紝鎻掑叆鑱斿姩鏁版嵁鍚庡氨涓嶉渶瑕佹彃鍏ユ湰甯ф暟鎹簡 - logger.Warn("鎴愬姛鎻掑叆涓や釜鑱斿姩鍥剧墖") - //os.Exit(1) - return - } - //logger.Info("--------璧板埌杩欏効灏变笉涓�鏍�") isAlarm := 0 resp := make(map[string]interface{}) // 瑙e帇缂╁苟涓婁紶鍥剧墖 @@ -419,10 +411,6 @@ if resp["fileUrl"] != nil { url = append(url, resp["fileUrl"].(string)) //esDataId := uuid.NewV4().String() - linksId := "" - if linkId != "" { - linksId = linkId - } peraction := Personaction{ msg.Push.PushId, msg.Cid, @@ -439,13 +427,14 @@ "", url, i.Timestamp, - linksId, "", isAlarm, 0, 0, 0, targetInfos, + "", + linkTagInfos, } requstbody, err := json.Marshal(peraction) @@ -459,7 +448,7 @@ } else { logger.Debug("鎻掑叆es杩斿洖鐨勬暟鎹俊鎭槸锛�", resp1) // 鍙戝嚭褰曞儚淇″彿 - ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: msg.Push.PushId, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid,VideoUrl:msg.Push.VideoUrl, ImgId: i.Id, SdkIds: []string{}, Type: 2}) + ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: msg.Push.PushId, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, VideoUrl: msg.Push.VideoUrl, ImgId: i.Id, SdkIds: []string{}, Type: 2}) logger.Warn("__________________________________________寰�ES鎻掑叆yolo鏁版嵁鎴愬姛") //os.Exit(1) } @@ -552,3 +541,149 @@ } return race } + +func msg2PersonVideo (msg structure.ResultMsg) *PerVideoPicture{ + if msg.RuleResult["yolo"] != nil && len(msg.RuleResult["yolo"].([]structure.Result)) > 0 { + // 鍏堝垽鏂竴涓嬫暟鎹甫鐨勮鍒欐爣绛炬槸鍚︽湁鍙互鎻掑叆鐨� + flag := false + for _, res := range msg.RuleResult["yolo"].([]structure.Result) { + //logger.Info("瀹氭椂鍣ㄦ墦鐨勬暟瀛楁爣绛撅細",res.Others.TimeLabel) + if res.Others.TimeLabel == "01" || res.Others.TimeLabel == "10" { + flag = true + } + } + if flag { + logger.Info("鎻掑叆Yolo缁勮鏁版嵁") + var sdkNames string = "" + alarmRules := []AlarmRule{} + var targetInfos []Target + url := []string{} + for _, yoloResult := range msg.RuleResult["yolo"].([]structure.Result) { + if yoloResult.Others.TimeLabel == "01" || yoloResult.Others.TimeLabel == "10" { + // 鎷煎嚭sdkname + //logger.Info("搴旇杩涙潵鎵嶅鐨�") + sdkNames = sdkNames + yoloResult.SdkName + alarm := ChangeToString(yoloResult.DefenceState, yoloResult.AlarmLevel) + linkInfo := "" + if yoloResult.IsLink { + linkInfo = "鑱斿姩浠诲姟" + } + alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState, yoloResult.IsLink, linkInfo}) + // 涓婁紶缂撳瓨鏁版嵁鐨勫浘鐗囨嬁鍒皍rl + if yoloResult.Others.CacheData != nil { + //InsertYolo(msg.RuleResult["cacheData"].(ruleserver.ResultMsg)) + // 鎶婄紦瀛樼殑鏁版嵁涓婁紶鍚庡緱鍒板湴鍧�瀛樿繘鍘� + // 瑙e帇缂╁苟涓婁紶鍥剧墖 + msgs := yoloResult.Others.CacheData + for _, msg1 := range msgs { + bdata, err := util.UnCompress(msg1.Data) + if err != nil { + panic("瑙e帇缂╁浘鐗囨椂鍑虹幇閿欒") + } + i := protomsg.Image{} + err = proto.Unmarshal(bdata, &i) + resp1, err1 := util.DrawPolygonOnImageForYolo(msg1.Cid, i, msg1.RuleResult["yolo"].([]structure.Result), weedfsUrl) + if err1 != nil { + logger.Error("缂撳瓨鏁版嵁鐢绘鎴栦笂浼犲浘鐗囨湇鍔″櫒鍑洪敊", err) + } else { + logger.Info("涓婁紶鐨勫浘鐗囦俊鎭細", resp1) + } + if resp1["fileUrl"] != nil { + url = append(url, resp1["fileUrl"].(string)) + } + } + } + // 瑁呴厤鐩爣淇℃伅鏁版嵁 + for _, target := range yoloResult.Location { + // 鍘婚噸娣诲姞 + var flag = true + for _, selectTarget := range targetInfos { + if strconv.FormatUint(target.TargetId, 10) == selectTarget.TargetId { + flag = false + break + } + } + if flag { + var target1 = new(Target) + target1.TargetId = strconv.FormatUint(target.TargetId, 10) + target1.TargetScore = target.TargetScore + target1.TargetLocation = Points{TopLeft: Point{target.X, target.Y}, BottomRight: Point{target.X + target.Width, target.Y + target.Height}} + targetInfos = append(targetInfos, *target1) + } + } + } + } + isAlarm := 0 + resp := make(map[string]interface{}) + // 瑙e帇缂╁苟涓婁紶鍥剧墖 + bdata, err := util.UnCompress(msg.Data) + if err != nil { + panic("瑙e帇缂╁浘鐗囨椂鍑虹幇閿欒") + } + i := protomsg.Image{} + err = proto.Unmarshal(bdata, &i) + if len(alarmRules) > 0 { + isAlarm = 1 + //resp, err = util.PostFormBufferData(weedfsUrl, i, uuid.NewV4().String()) + resp, err = util.DrawPolygonOnImageForYolo(msg.Cid, i, msg.RuleResult["yolo"].([]structure.Result), weedfsUrl) + if err != nil { + logger.Error("鐢绘鎴栦笂浼犲浘鐗囨湇鍔″櫒鍑洪敊", err) + return nil + } else { + logger.Info("涓婁紶鐨勫浘鐗囦俊鎭細", resp) + } + } else { + isAlarm = 0 + // 涓嶆槸鎶ヨ鏁版嵁涓嶅瓨 + return nil + } + if resp["fileUrl"] != nil { + url = append(url, resp["fileUrl"].(string)) + //esDataId := uuid.NewV4().String() + pervideo := &PerVideoPicture{ + msg.Push.PushId + "-" + uuid.NewV4().String(), + msg.Cid, + msg.Push.Cam.Addr, + i.Timestamp, + "", + msg.Tasklab.Taskid, + msg.Tasklab.Taskname, + "浜鸿劯", + "", + alarmRules, + time.Now().Format("2006-01-02 15:04:05"), // 鍙娴嬶紝娌℃湁姣斿鏃堕棿 + "", //鏆傛敼涓轰汉鑴竔d strconv.FormatUint(face.Id, 10) + 0, + "", // 鏆傛敼涓哄垎鍊糵mt.Sprintf("%.2f",face.Score) + "", + 0, + 0, + nil, + []string{resp["fileUrl"].(string)}, + "", + msg.Push.ServerId, + msg.Push.ServerName, + msg.Push.LocalIp, + "", + 0, + isAlarm, + 0, + 0, + 0, + nil, + targetInfos, + "", + nil, + } + return pervideo + } else { + return nil + } + } else { + logger.Debug("timeLabel鏉′欢閮戒笉绗﹀悎锛�") + return nil + } + } else { + return nil + } +} \ No newline at end of file -- Gitblit v1.8.0