From b6bc6bf3590aedc964a9c2016805f645754c9572 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期四, 12 九月 2019 15:34:10 +0800
Subject: [PATCH] ---联动任务

---
 insertdata/insertDataToEs.go |  161 +++++++++++++++++++++++++++++++----------------------
 1 files changed, 94 insertions(+), 67 deletions(-)

diff --git a/insertdata/insertDataToEs.go b/insertdata/insertDataToEs.go
index 083de8a..2eed4e7 100644
--- a/insertdata/insertDataToEs.go
+++ b/insertdata/insertDataToEs.go
@@ -7,10 +7,9 @@
 	"fmt"
 	"io/ioutil"
 	"net"
-	"os"
 	"ruleprocess/cache"
 	"ruleprocess/logger"
-	"strings"
+	"strconv"
 	"time"
 
 	"basic.com/pubsub/protomsg.git"
@@ -111,6 +110,8 @@
 	AlarmLevel   string `json:"alarmLevel"`
 	RuleText     string `json:"ruleText"`
 	DefenceState bool   `json:"defenceState"`
+	IsLink		 bool	`json:"isLink"`
+	LinkInfo	 string `json:"linkInfo"`
 }
 
 // 涓�涓猣ace瀵瑰涓鍒欑粍鐨勫綊缃汉鑴哥殑缁撴瀯浣�
@@ -165,8 +166,9 @@
 func InsertFace(msg ruleserver.ResultMsg, linkId string) {
 	if msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]ruleserver.FaceResult)) > 0 {
 		logger.Info("寰�ES鎻掍汉鑴告暟鎹�")
-		faces := PutFace(msg)
-		logger.Info("鏁寸悊鍚庣殑鏁版嵁锛�",faces)
+		faces := []*FaceAndRules{}
+		faces = PutFace(faces,msg)
+		//logger.Info("鏁寸悊鍚庣殑鏁版嵁锛�",faces)
 		if faces != nil {
 			for _,face := range faces {
 				// 涓婁紶澶у浘
@@ -177,10 +179,10 @@
 				}
 				alarmRules := []AlarmRule{}
 				logger.Warn("浜鸿劯id涓猴細",face.Id,"浜鸿劯鐨勮鍒欓暱搴︿负锛�",len(face.rules))
-				os.Exit(1)
+				//os.Exit(1)
 				for _,faceResult := range face.rules {
 					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,faceResult.IsLink,""})
 				}
 				i := protomsg.Image{}
 				err = proto.Unmarshal(bdata, &i)
@@ -203,8 +205,9 @@
 				if err != nil {
 					logger.Error("涓婁紶灏忓浘鍑洪敊")
 				}
-				logger.Info("================灏忓浘鍦板潃:", resp["fileUrl"].(string))
+				//logger.Info("================灏忓浘鍦板潃:", resp["fileUrl"].(string))
 				sex := ""
+				logger.Info(sex)
 				if face.ThftRes.Gender == 1 {
 					sex = "鐢�"
 				} else {
@@ -212,31 +215,34 @@
 				}
 				race := getRaceString(face.ThftRes.Race)
 				ageDescription := getDescription(face.ThftRes.Age)
+				logger.Info(ageDescription)
 				esDataId := uuid.NewV4().String()
 				linksId := ""
 				if linkId != "" {
 					linksId = linkId
 				}
+				logger.Info("浜鸿劯鐨刬d:",strconv.FormatUint(face.Id, 10))
+				logger.Info("浜鸿劯鐨勫垎鍊硷細",face.Score)
 				pervideo := PerVideoPicture{
 					esDataId,
 					msg.Cid,
 					camera.Addr,
 					i.Timestamp,
-					strings.Split(bigPhotoUrl["fileUrl"].(string), "/")[1],
+					bigPhotoUrl["fileUrl"].(string),
 					msg.Tasklab.Taskid,
 					msg.Tasklab.Taskname,
 					"浜鸿劯",
 					"",
 					alarmRules,
 					time.Now().Format("2006-01-02 15:04:05"), // 鍙娴嬶紝娌℃湁姣斿鏃堕棿
-					sex,
+					sex,            //鏆傛敼涓轰汉鑴竔d
 					face.ThftRes.Age,
-					ageDescription,
+					ageDescription, // 鏆傛敼涓哄垎鍊糵mt.Sprintf("%.2f",face.Score)
 					race,
 					face.ThftRes.Smile,
 					face.ThftRes.Beauty,
 					base64.StdEncoding.EncodeToString(face.Feature),
-					[]string{strings.Split(resp["fileUrl"].(string), "/")[1]},
+					[]string{resp["fileUrl"].(string)},
 					"鏆傛棤闆嗙兢",
 					localConfig.ServerId,
 					localConfig.ServerName,
@@ -270,33 +276,48 @@
 }
 
 // 褰掔疆浜鸿劯
-func PutFace(msg ruleserver.ResultMsg) []FaceAndRules{
+func PutFace(faces []*FaceAndRules,msg ruleserver.ResultMsg)[]*FaceAndRules{
 	if msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]ruleserver.FaceResult)) > 0 {
-		logger.Info("鏁寸悊浜鸿劯鏁版嵁")
-		faces := []FaceAndRules{}
 		for _, faceResult := range msg.RuleResult["face"].([]ruleserver.FaceResult) {
-			hebingFace(faces, faceResult)
+			faces = hebingFace(faces, faceResult)
 		}
 		return faces
 	} else {
 		return nil
 	}
 }
-func hebingFace(faces []FaceAndRules, faceResult ruleserver.FaceResult) {
+func hebingFace(faces []*FaceAndRules, faceResult ruleserver.FaceResult) []*FaceAndRules{
 	for _, arg := range faceResult.Args {
 		// 鎷垮埌姣忎竴寮犱汉鑴�
+		logger.Info("褰掔疆浜鸿劯鏃剁浉浼艰�呯殑鏁伴噺锛�",len(arg.Liker))
 		flag := false
 		for _, face := range faces {
+			for _,lik := range face.Liker {
+				logger.Warn("--------鍚堝苟浜鸿劯鏃剁浉浼艰�咃細",lik.PersonId,lik.TableName)
+			}
 			if arg.Id == face.Id {
 				flag = true
 				face.rules = append(face.rules,faceResult.Result)
+				// 鐩镐技鑰呭幓閲嶅綊骞�
+				for _,liker := range arg.Liker {
+					flag1 := true
+					for _,liker1 := range face.Liker {
+						if liker.PersonId == liker1.PersonId {
+							flag1 = false
+						}
+					}
+					if flag1 {
+						face.Liker = append(face.Liker,liker)
+					}
+				}
+				//face.Liker = append(face.Liker,arg.Liker...)
 			}
 		}
-		if flag {
-			faces = append(faces, FaceAndRules{arg, []ruleserver.Result{faceResult.Result}})
+		if !flag {
+			faces = append(faces, &FaceAndRules{arg, []ruleserver.Result{faceResult.Result}})
 		}
 	}
-	logger.Info("鏁寸悊涓殑鏁版嵁",faces)
+	return faces
 }
 
 // 寰�es涓彃鍏olo鏁版嵁
@@ -321,7 +342,11 @@
 					//logger.Info("搴旇杩涙潵鎵嶅鐨�")
 					sdkNames = sdkNames + yoloResult.SdkName
 					alarm := ChangeToString(yoloResult.DefenceState, yoloResult.AlarmLevel)
-					alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState})
+					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))
@@ -341,7 +366,7 @@
 							} else {
 								logger.Info("涓婁紶鐨勫浘鐗囦俊鎭細", resp1)
 							}
-							url = append(url, strings.Split(resp1["fileUrl"].(string), "/")[1])
+							url = append(url, resp1["fileUrl"].(string))
 						}
 					}
 				}
@@ -379,6 +404,7 @@
 				resp, err = util.DrawPolygonOnImage(msg.Cid, i, msg.RuleResult["yolo"].([]ruleserver.Result), weedfsUrl)
 				if err != nil {
 					logger.Error("鐢绘鎴栦笂浼犲浘鐗囨湇鍔″櫒鍑洪敊", err)
+					return
 				} else {
 					logger.Info("涓婁紶鐨勫浘鐗囦俊鎭細", resp)
 				}
@@ -399,52 +425,53 @@
 				logger.Error("鏌ヨ鎽勫儚鏈轰俊鎭け璐�")
 			}
 			serverIp, err := GetLocalIP()
+			if resp["fileUrl"] != nil {
+				url = append(url, resp["fileUrl"].(string))
+				esDataId := uuid.NewV4().String()
+				linksId := ""
+				if linkId != "" {
+					linksId = linkId
+				}
+				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,
+					linksId,
+					"",
+					isAlarm,
+					0,
+					0,
+					0,
+				}
+				requstbody, err := json.Marshal(peraction)
 
-			url = append(url, strings.Split(resp["fileUrl"].(string), "/")[1])
-			esDataId := uuid.NewV4().String()
-			linksId := ""
-			if linkId != "" {
-				linksId = linkId
-			}
-			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,
-				linksId,
-				"",
-				isAlarm,
-				0,
-				0,
-				0,
-			}
-			requstbody, err := json.Marshal(peraction)
+				if err != nil {
+					logger.Info("json parse error ", err)
+					return
 
-			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)
+				}
+				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("timeLabel鏉′欢閮戒笉绗﹀悎锛�")
@@ -495,7 +522,7 @@
 		localConfig.ServerName,
 		serverIp,
 		"",
-		[]string{strings.Split(resp["fileUrl"].(string), "/")[1]},
+		[]string{resp["fileUrl"].(string)},
 		i.Timestamp,
 		"",
 		"",
@@ -553,7 +580,7 @@
 		msg.Cid,
 		camera.Addr,
 		i.Timestamp,
-		strings.Split(bigPhotoUrl["fileUrl"].(string), "/")[1],
+		bigPhotoUrl["fileUrl"].(string),
 		msg.Tasklab.Taskid,
 		msg.Tasklab.Taskname,
 		"浜鸿劯",

--
Gitblit v1.8.0