From 5c029fad17da0b4bff16cb78b5de193cc367be47 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期三, 31 七月 2019 17:18:47 +0800
Subject: [PATCH] ---

---
 insertdata/insertDataToEs.go |  268 +++++++++++++++++++++++++++++++----------------------
 1 files changed, 158 insertions(+), 110 deletions(-)

diff --git a/insertdata/insertDataToEs.go b/insertdata/insertDataToEs.go
index a4bddd7..d3eb11b 100644
--- a/insertdata/insertDataToEs.go
+++ b/insertdata/insertDataToEs.go
@@ -7,6 +7,7 @@
 	"fmt"
 	"io/ioutil"
 	"net"
+	"os"
 	"ruleprocess/cache"
 	"ruleprocess/logger"
 	"strings"
@@ -111,26 +112,35 @@
 }
 
 // 寰�ES鎻掓暟鎹�
+//func InsertToEs(msg ruleserver.ResultMsg) {
+//	var timeLabel string
+//	// 鐩存帴浠庤鍒欑殑鏍囩鏁版嵁閲屾嬁绗﹀悎瑙勫垯鐨勪汉鑴哥粨鏋�
+//	if msg.RuleResult["timeLabel"] != nil {
+//		timeLabel = msg.RuleResult["timeLabel"].(string)
+//	}
+//	logger.Debug("鎻掑叆鏁版嵁鍓嶇湅鐪嬫姤璀︽爣蹇椾綅锛�", timeLabel)
+//	if timeLabel == "01" { // 鏃犲畾鏃跺櫒鐘舵�佽鎻掑叆鐨勬姤璀︽暟鎹�
+//		InsertFace(msg)
+//		flag := ruleserver.BodyIsSame(msg.SdkMessage)
+//		if !flag {
+//			InsertYolo(msg)
+//		}
+//	}
+//	if timeLabel == "10" { // 瀹氭椂鍣ㄧ姸鎬佽鎻掑叆鐨勯甯ф姤璀︽暟鎹�傝繛甯︾潃瀹氭椂鍣ㄥ紑鍚椂鐨勯偅甯�
+//		InsertFace(msg)
+//		InsertYolo(msg)
+//	}
+//	//if timeLabel == "12" { // 骞堕潪鎶ヨ鏁版嵁锛屽彧鏄姸鎬佹敼鍙樼殑鏁版嵁
+//	//	//ChangeStatusFace(msg)
+//	//	ChangeStatusYolo(msg)
+//	//}
+//}
 func InsertToEs(msg ruleserver.ResultMsg) {
-	var timeLabel string
-	// 鐩存帴浠庤鍒欑殑鏍囩鏁版嵁閲屾嬁绗﹀悎瑙勫垯鐨勪汉鑴哥粨鏋�
-	if msg.RuleResult["timeLabel"] != nil {
-		timeLabel = msg.RuleResult["timeLabel"].(string)
-	}
-	logger.Debug("鎻掑叆鏁版嵁鍓嶇湅鐪嬫姤璀︽爣蹇椾綅锛�", timeLabel)
-	if timeLabel == "01" { // 鏃犲畾鏃跺櫒鐘舵�佽鎻掑叆鐨勬姤璀︽暟鎹�
-		InsertFace(msg)
-		InsertYolo(msg)
-	}
-	if timeLabel == "10" { // 瀹氭椂鍣ㄧ姸鎬佽鎻掑叆鐨勯甯ф姤璀︽暟鎹�傝繛甯︾潃瀹氭椂鍣ㄥ紑鍚椂鐨勯偅甯�
-		InsertFace(msg)
-		InsertYolo(msg)
-
-	}
-	if timeLabel == "12" { // 骞堕潪鎶ヨ鏁版嵁锛屽彧鏄姸鎬佹敼鍙樼殑鏁版嵁
-		//ChangeStatusFace(msg)
-		ChangeStatusYolo(msg)
-	}
+	InsertFace(msg)
+	//flag := ruleserver.BodyIsSame(msg.SdkMessage)
+	//if !flag {
+	InsertYolo(msg)
+	//}
 }
 
 // 寰�es涓彃鍏ヤ汉鑴告暟鎹�
@@ -147,7 +157,7 @@
 				}
 				alarmRules := []AlarmRule{}
 				alarm := ChangeToString(faceResult.DefenceState, faceResult.AlarmLevel)
-				alarmRules = append(alarmRules, AlarmRule{faceResult.RuleGroupId, alarm, faceResult.RuleText,faceResult.DefenceState})
+				alarmRules = append(alarmRules, AlarmRule{faceResult.RuleGroupId, alarm, faceResult.RuleText, faceResult.DefenceState})
 				i := protomsg.Image{}
 				err = proto.Unmarshal(bdata, &i)
 				bigPhotoUrl := make(map[string]interface{})
@@ -310,109 +320,147 @@
 // 寰�es涓彃鍏olo鏁版嵁
 func InsertYolo(msg ruleserver.ResultMsg) {
 	if msg.RuleResult["yolo"] != nil && len(msg.RuleResult["yolo"].([]ruleserver.Result)) > 0 {
-		logger.Info("寰�ES鎻抷olo鏁版嵁")
-		var sdkNames string = ""
-		alarmRules := []AlarmRule{}
-		for _, yoloResult := range msg.RuleResult["yolo"].([]ruleserver.Result) {
-			sdkNames = sdkNames + yoloResult.SdkName
-			alarm := ChangeToString(yoloResult.DefenceState, yoloResult.AlarmLevel)
-			alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText,yoloResult.DefenceState})
-		}
-		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.DrawPolygonOnImage(msg.Cid, i, msg.RuleResult["yolo"].([]ruleserver.Result), weedfsUrl)
-			if err != nil {
-				logger.Error("鐢绘鎴栦笂浼犲浘鐗囨湇鍔″櫒鍑洪敊", err)
-			} else {
-				logger.Info("涓婁紶鐨勫浘鐗囦俊鎭細", resp)
+		// 鍏堝垽鏂竴涓嬫暟鎹甫鐨勮鍒欐爣绛炬槸鍚︽湁鍙互鎻掑叆鐨�
+		flag := false
+		for _, res := range msg.RuleResult["yolo"].([]ruleserver.Result) {
+			logger.Info("瀹氭椂鍣ㄦ墦鐨勬暟瀛楁爣绛撅細",res.Others["timeLabel"].(string))
+			if res.Others["timeLabel"].(string) == "01" || res.Others["timeLabel"].(string) == "10" {
+				flag = true
 			}
-		} else {
-			isAlarm = 0
-			// 涓嶆槸鎶ヨ鏁版嵁涓嶅瓨
-			return
 		}
-		// logger.Println("鍥剧墖涓婁紶杩斿洖鍊硷細", resp)
-		// 鏌ヨ鏈満淇℃伅
-		localConfig, err := cache.GetServerInfo()
-		if err != nil {
-			logger.Error("鏌ヨ鏈満淇℃伅澶辫触锛�")
-		}
-		// 鏌ヨcameraName
-		camera, err := cache.GetCameraById(msg.Cid)
-		if err != nil {
-			logger.Error("鏌ヨ鎽勫儚鏈轰俊鎭け璐�")
-		}
-		serverIp, err := GetLocalIP()
-		url := []string{}
-		url = append(url, strings.Split(resp["fileUrl"].(string), "/")[1])
-		if msg.RuleResult["cacheData"] != nil {
-			InsertYolo(msg.RuleResult["cacheData"].(ruleserver.ResultMsg))
-			// 鎶婄紦瀛樼殑鏁版嵁涓婁紶鍚庡緱鍒板湴鍧�瀛樿繘鍘�
+		if flag {
+			logger.Info("寰�ES鎻抷olo鏁版嵁")
+			var sdkNames string = ""
+			alarmRules := []AlarmRule{}
+			url := []string{}
+			for _, yoloResult := range msg.RuleResult["yolo"].([]ruleserver.Result) {
+				if yoloResult.Others["timeLabel"].(string) == "01" || yoloResult.Others["timeLabel"].(string) == "10" {
+					// 鎷煎嚭sdkname
+					logger.Info("搴旇杩涙潵鎵嶅鐨�")
+					sdkNames = sdkNames + yoloResult.SdkName
+					alarm := ChangeToString(yoloResult.DefenceState, yoloResult.AlarmLevel)
+					alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState})
+					// 涓婁紶缂撳瓨鏁版嵁鐨勫浘鐗囨嬁鍒皍rl
+					if yoloResult.Others["cacheData"] != nil {
+						//InsertYolo(msg.RuleResult["cacheData"].(ruleserver.ResultMsg))
+						// 鎶婄紦瀛樼殑鏁版嵁涓婁紶鍚庡緱鍒板湴鍧�瀛樿繘鍘�
+						// 瑙e帇缂╁苟涓婁紶鍥剧墖
+						msgs := yoloResult.Others["cacheData"].([]ruleserver.ResultMsg)
+						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.DrawPolygonOnImage(msg1.Cid, i, msg1.RuleResult["yolo"].([]ruleserver.Result), weedfsUrl)
+							if err1 != nil {
+								logger.Error("缂撳瓨鏁版嵁鐢绘鎴栦笂浼犲浘鐗囨湇鍔″櫒鍑洪敊", err)
+							} else {
+								logger.Info("涓婁紶鐨勫浘鐗囦俊鎭細", resp1)
+							}
+							url = append(url, strings.Split(resp1["fileUrl"].(string), "/")[1])
+						}
+					}
+				}
+			}
+			linkFlag := false
+			for _, yoloResult := range msg.RuleResult["yolo"].([]ruleserver.Result) {
+				if (yoloResult.Others["timeLabel"].(string) == "01" || yoloResult.Others["timeLabel"].(string) == "10") && yoloResult.Others["linkCache"] != nil && len(yoloResult.Others["linkCache"].([]ruleserver.ResultMsg)) > 0{
+					for _, msg2 := range yoloResult.Others["linkCache"].([]ruleserver.ResultMsg) {
+						logger.Warn("鎻掑叆鑱斿姩鏁版嵁")
+						logger.Warn("鍝堝搱鍝堝搱鍝�",msg2.RuleResult)
+						InsertYolo(msg2)
+						logger.Warn("鍏勫紵闅鹃亾浣犻櫡鍏ヤ簡姝诲惊鐜悧")
+						linkFlag = true
+					}
+				}
+			}
+			if linkFlag {
+				// 鑱斿姩鏁版嵁涓寘鍚湰甯ф暟鎹紝鎻掑叆鑱斿姩鏁版嵁鍚庡氨涓嶉渶瑕佹彃鍏ユ湰甯ф暟鎹簡
+				os.Exit(1)
+				return
+			}
+			logger.Info("--------璧板埌杩欏効灏变笉涓�鏍�")
+			isAlarm := 0
+			resp := make(map[string]interface{})
 			// 瑙e帇缂╁苟涓婁紶鍥剧墖
-			msg1 := msg.RuleResult["cacheData"].(ruleserver.ResultMsg)
-			bdata, err := util.UnCompress(msg1.Data)
+			bdata, err := util.UnCompress(msg.Data)
 			if err != nil {
 				panic("瑙e帇缂╁浘鐗囨椂鍑虹幇閿欒")
 			}
 			i := protomsg.Image{}
 			err = proto.Unmarshal(bdata, &i)
-			resp1, err1 := util.DrawPolygonOnImage(msg.Cid, i, msg.RuleResult["yolo"].([]ruleserver.Result), weedfsUrl)
-			if err1 != nil {
-				logger.Error("缂撳瓨鏁版嵁鐢绘鎴栦笂浼犲浘鐗囨湇鍔″櫒鍑洪敊", err)
+			if len(alarmRules) > 0 {
+				isAlarm = 1
+				//resp, err = util.PostFormBufferData(weedfsUrl, i, uuid.NewV4().String())
+				resp, err = util.DrawPolygonOnImage(msg.Cid, i, msg.RuleResult["yolo"].([]ruleserver.Result), weedfsUrl)
+				if err != nil {
+					logger.Error("鐢绘鎴栦笂浼犲浘鐗囨湇鍔″櫒鍑洪敊", err)
+				} else {
+					logger.Info("涓婁紶鐨勫浘鐗囦俊鎭細", resp)
+				}
 			} else {
-				logger.Info("涓婁紶鐨勫浘鐗囦俊鎭細", resp1)
+				isAlarm = 0
+				// 涓嶆槸鎶ヨ鏁版嵁涓嶅瓨
+				return
 			}
-			url = append(url, strings.Split(resp1["fileUrl"].(string), "/")[1])
-		}
-		esDataId := uuid.NewV4().String()
-		peraction := Personaction{
-			esDataId,
-			msg.Cid,
-			camera.Name,
-			camera.Addr,
-			msg.Tasklab.Taskid,
-			msg.Tasklab.Taskname,
-			sdkNames,
-			"",
-			alarmRules,
-			localConfig.ServerId,
-			localConfig.ServerName,
-			serverIp,
-			"",
-			url,
-			i.Timestamp,
-			"",
-			isAlarm,
-			0,
-			0,
-			0,
-		}
-		requstbody, err := json.Marshal(peraction)
+			// logger.Println("鍥剧墖涓婁紶杩斿洖鍊硷細", resp)
+			// 鏌ヨ鏈満淇℃伅
+			localConfig, err := cache.GetServerInfo()
+			if err != nil {
+				logger.Error("鏌ヨ鏈満淇℃伅澶辫触锛�")
+			}
+			// 鏌ヨcameraName
+			camera, err := cache.GetCameraById(msg.Cid)
+			if err != nil {
+				logger.Error("鏌ヨ鎽勫儚鏈轰俊鎭け璐�")
+			}
+			serverIp, err := GetLocalIP()
 
-		if err != nil {
-			logger.Info("json parse error ", err)
-			return
+			url = append(url, strings.Split(resp["fileUrl"].(string), "/")[1])
+			esDataId := uuid.NewV4().String()
+			peraction := Personaction{
+				esDataId,
+				msg.Cid,
+				camera.Name,
+				camera.Addr,
+				msg.Tasklab.Taskid,
+				msg.Tasklab.Taskname,
+				sdkNames,
+				"",
+				alarmRules,
+				localConfig.ServerId,
+				localConfig.ServerName,
+				serverIp,
+				"",
+				url,
+				i.Timestamp,
+				"",
+				isAlarm,
+				0,
+				0,
+				0,
+			}
+			requstbody, err := json.Marshal(peraction)
 
-		}
-		resp1, err2 := EsReq("POST", personAction, requstbody)
-		if err2 != nil {
-			logger.Error("寰�ES鎻掑叆鏁版嵁澶辫触", err)
+			if err != nil {
+				logger.Info("json parse error ", err)
+				return
+
+			}
+			resp1, err2 := EsReq("POST", personAction, requstbody)
+			if err2 != nil {
+				logger.Error("寰�ES鎻掑叆鏁版嵁澶辫触", err)
+			} else {
+				logger.Debug("鎻掑叆es杩斿洖鐨勬暟鎹俊鎭槸锛�", resp1)
+				// 鍙戝嚭褰曞儚淇″彿
+				ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: esDataId, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, ImgId: i.Id, SdkIds: []string{}, Type: 2})
+				logger.Warn("__________________________________________寰�ES鎻掑叆yolo鏁版嵁鎴愬姛")
+				//os.Exit(1)
+			}
 		} else {
-			logger.Debug("鎻掑叆es杩斿洖鐨勬暟鎹俊鎭槸锛�", resp1)
-			// 鍙戝嚭褰曞儚淇″彿
-			ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: esDataId, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, ImgId: i.Id, SdkIds: []string{}, Type: 2})
-			logger.Warn("__________________________________________寰�ES鎻掑叆yolo鏁版嵁鎴愬姛")
-			//os.Exit(1)
+			logger.Debug("timeLabel鏉′欢閮戒笉绗﹀悎锛�")
 		}
 	}
 }

--
Gitblit v1.8.0