From b96e8aadb0f3c216031dc8f6f5f2dad0786b390a Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期三, 31 七月 2019 14:10:27 +0800
Subject: [PATCH] 联动任务缓存数据(结构重整)

---
 insertdata/insertDataToEs.go |  226 +++++++++++++++++++++----------------
 ruleserver/ruleToformula.go  |  109 +++++++++--------
 ruleserver/timeTicker.go     |   16 +-
 3 files changed, 192 insertions(+), 159 deletions(-)

diff --git a/insertdata/insertDataToEs.go b/insertdata/insertDataToEs.go
index 7926e92..7a10bf3 100644
--- a/insertdata/insertDataToEs.go
+++ b/insertdata/insertDataToEs.go
@@ -312,111 +312,141 @@
 // 寰�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) {
+			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{}
-		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
+					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{
+					for _,msg2 := range yoloResult.Others["linkCache"].([]*ruleserver.ResultMsg) {
+						logger.Warn("鎻掑叆鑱斿姩鏁版嵁")
+						InsertYolo(*msg2)
+						linkFlag = true
+					}
+				}
+			}
+			if linkFlag {
+				// 鑱斿姩鏁版嵁涓寘鍚湰甯ф暟鎹紝鎻掑叆鑱斿姩鏁版嵁鍚庡氨涓嶉渶瑕佹彃鍏ユ湰甯ф暟鎹簡
+				return
+			}
+			isAlarm := 0
+			resp := make(map[string]interface{})
 			// 瑙e帇缂╁苟涓婁紶鍥剧墖
-			msgs := msg.RuleResult["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])
+			bdata, err := util.UnCompress(msg.Data)
+			if err != nil {
+				panic("瑙e帇缂╁浘鐗囨椂鍑虹幇閿欒")
 			}
-		}
-		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)
+			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)
+				}
+			} 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()
 
-		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鏉′欢閮戒笉绗﹀悎锛�" )
 		}
 	}
 }
diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index 3d46d58..f4f4678 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -1,7 +1,6 @@
 package ruleserver
 
 import (
-	"os"
 	"ruleprocess/cache"
 	"ruleprocess/logger"
 	"sort"
@@ -71,12 +70,12 @@
 	CameraId   string
 	TaskId     string
 	Sdkdata    []*SdkData
-	RuleResult map[string]interface{} // 杩囧畬瑙勫垯鍚庢墦鐨勬爣绛� face: []FaceResult, yolo: []Result, cacheData: []ResultMsg, timeLabel: 0,1,2,3,4,5
+	RuleResult map[string]interface{} // 杩囧畬瑙勫垯鍚庢墦鐨勬爣绛� face: []FaceResult, yolo: []Result
 }
 
 type ResultMsg struct {
 	*protomsg.SdkMessage
-	RuleResult map[string]interface{} // 杩囧畬瑙勫垯鍚庢墦鐨勬爣绛�
+	RuleResult map[string]interface{} // 杩囧畬瑙勫垯鍚庢墦鐨勬爣绛� face: []FaceResult, yolo: []Result
 }
 
 // 杩囪鍒欏簱鎵撲笂鐨勬爣绛�
@@ -84,11 +83,12 @@
 	TaskId       string // 浠诲姟id
 	SdkName      string
 	RuleGroupId  string // 瑙勫垯缁刬d
-	DefenceState bool   //鏄惁甯冮槻
+	DefenceState bool   // 鏄惁甯冮槻
 	AlarmLevel   int32  // 鎶ヨ绛夌骇
 	RuleText     string // 鏂囧瓧鐗堣鍒欑粍
 	Location     []Rect // 鐩爣鐨勫潗鏍�
 	AlarmPolygon string // 瑙﹀彂鐨勬姤璀︽
+	Others		 map[string]interface{} // cacheData: []ResultMsg,(鏈粍瑙勫垯涓惈鏈夋寔缁椂闂寸殑瑙勫垯寮�鍚殑瀹氭椂鍣ㄧ紦瀛樼殑鏁版嵁甯�)锛宭inkCache: []ResultMsg 锛宼imeLabel: 00,01,10,11,12
 }
 
 // 杩囪鍒欏簱鎵撲笂鐨勬爣绛�
@@ -126,13 +126,14 @@
 				taskId := taskGroup.TaskId
 				//logger.Println("------------鏈粍浠诲姟涓嬬殑瑙勫垯缁勭殑鏁伴噺锛�",len(ruleList))
 				temp := group.Rules // temp涓轰竴缁勫畬鏁磋鍒� 鍦ㄦ闇�瑕佸垽鏂鍒欐槸鍚︽槸鑱斿姩瑙勫垯
+				label := make(map[string]interface{})
 				if len(temp) > 0 {
 					if group.SetType == "linkTask" {
 						// groupId涓惈鏈塴ink鍒欎负鑱斿姩浠诲姟
-						LinkTask(args, group, taskId, message)
+						LinkTask(args, group, taskId, message,label)
 					} else {
 						// 鐙珛浠诲姟鐨勫鐞�
-						RunRule(args, group, taskId, message)
+						RunRule(args, group, taskId, message,label)
 					}
 				}
 			}
@@ -140,7 +141,7 @@
 	}
 }
 
-func RunRule(args *SdkDatas, groupRule *protomsg.GroupRule, taskId string, message *protomsg.SdkMessage) bool {
+func RunRule(args *SdkDatas, groupRule *protomsg.GroupRule, taskId string, message *protomsg.SdkMessage,label map[string]interface{}) bool {
 	defer func() {
 		if err := recover(); err != nil {
 			logger.Error("姣斿瑙勫垯鏈夎", err.(string))
@@ -211,7 +212,7 @@
 			}
 		}
 	}
-	// 杩欐杩囩殑鏄椂闂磋鍒欙紙鏃堕棿娈电瓑锛�
+	// 杩欐杩囩殑鏄椂闂存瑙勫垯锛堟椂闂存绛夛級
 	for j := 0; j < len(groupRule.Rules); j++ {
 		for _, sdkData := range args.Sdkdata {
 			sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId)
@@ -267,44 +268,6 @@
 		result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
 
 		if result.(bool) {
-			// 鏈�鍚庢垚鍔熸姤璀︽墠鎶婄鍚堟潯浠剁殑浜鸿劯鏁版嵁濉炶繘缁撴灉鏍囩閲�
-			// 閰嶄簡浜鸿劯鐨勭畻娉曟墠鎶婁汉鑴哥殑鏁版嵁鐢╁嚭鏉ユ墦鏍囩
-			faces := []Arg{}
-			faceFlag := false
-			for j := 0; j < len(groupRule.Rules); j++ {
-				if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" {
-					faceFlag = true
-				}
-			}
-			for _, sdkData := range args.Sdkdata {
-				if sdkData.IpcId == "A8B73405-373D-4F23-CED2-A617EBD7EC55" && faceFlag { // sdkData閲屾湁浜鸿劯鏁版嵁涓旈厤缃簡绠楁硶鎵嶆妸绗﹀悎鏉′欢鐨勬暟鎹杩涙爣绛鹃噷鍘�
-					for _, areaMap := range sdkData.AreaMapList {
-						faces = append(faces, putFaceToResult(areaMap,faces)...)
-					}
-				}
-			}
-			//for _,face := range faces  {
-			//	//logger.Debug("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�擾_______________鐪嬬湅浜鸿劯鐨勫潗鏍�:",face.Location)
-			//}
-			logger.Warn("___________________________________________________________________________缁堜簬璧板畬涓囬噷闀垮緛")
-			// 鎶婁粬浠殑浣嶇疆鏁版嵁涔熶紶涓嬪幓
-			locations := []Rect{}
-			for _, sdkData := range args.Sdkdata {
-				if sdkData.IpcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && sdkNames != "" { // 鎶妝olo鏁版嵁鐨勫悇涓洰鏍囩殑鍧愭爣杈撳嚭鏂逛究鍚庨潰鐢绘
-					for _, areaMap := range sdkData.AreaMapList {
-						locations = append(locations, putYolosToResult(areaMap)...)
-					}
-				}
-			}
-			//logger.Debug("------locations鐨勫唴瀹癸細", locations)
-			if sdkNames != "" {
-				args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkNames, groupRule.GroupId,groupRule.DefenceState,groupRule.AlarmLevel, groupRule.GroupText, locations, polygonId})
-				//logger.Info("-------------------yolo缁撴灉鏍囩闀垮害", len(args.RuleResult["yolo"].([]Result)))
-			}
-			if faceFlag {
-				args.RuleResult["face"] = append(args.RuleResult["face"].([]FaceResult), FaceResult{Result{taskId, sdkNames, groupRule.GroupId,groupRule.DefenceState,groupRule.AlarmLevel, groupRule.GroupText, []Rect{}, polygonId},faces})
-				//logger.Info("-------------------face缁撴灉鏍囩", len(args.RuleResult["face"].([]FaceResult)))
-			}
 			// 鏈�鍚庤繃鎸佺画鏃堕棿绛夋椂闂寸淮搴︾殑鏉′欢   鎶婃椂闂磋鍒欎綅缃皟鏁村埌杩欎釜浣嶇疆鏄负浜嗙紦瀛樻暟鎹�
 			for j := 0; j < len(groupRule.Rules); j++ {
 				for _, sdkData := range args.Sdkdata {
@@ -322,12 +285,52 @@
 				}
 			}
 			// 杩涜瀹氭椂鍣ㄧ殑澶勭悊鍜屽垽鏂�
-			timeFlag := TimerAlarm(args, groupRule.GroupId, result.(bool))
+			timeFlag := TimerAlarm(label, groupRule.GroupId, result.(bool))
 			if timeFlag == "01" || timeFlag == "10" || timeFlag == "11" { // 婊¤冻瀹氭椂鍣ㄦ潯浠�
+				// 鎵撲汉鑴告爣绛惧拰yolo鏍囩
+				// 鏈�鍚庢垚鍔熸姤璀︽墠鎶婄鍚堟潯浠剁殑浜鸿劯鏁版嵁濉炶繘缁撴灉鏍囩閲�
+				// 閰嶄簡浜鸿劯鐨勭畻娉曟墠鎶婁汉鑴哥殑鏁版嵁鐢╁嚭鏉ユ墦鏍囩
+				faces := []Arg{}
+				faceFlag := false
+				for j := 0; j < len(groupRule.Rules); j++ {
+					if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" {
+						faceFlag = true
+					}
+				}
+				for _, sdkData := range args.Sdkdata {
+					if sdkData.IpcId == "A8B73405-373D-4F23-CED2-A617EBD7EC55" && faceFlag { // sdkData閲屾湁浜鸿劯鏁版嵁涓旈厤缃簡绠楁硶鎵嶆妸绗﹀悎鏉′欢鐨勬暟鎹杩涙爣绛鹃噷鍘�
+						for _, areaMap := range sdkData.AreaMapList {
+							faces = append(faces, putFaceToResult(areaMap,faces)...)
+						}
+					}
+				}
+				//for _,face := range faces  {
+				//	//logger.Debug("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�擾_______________鐪嬬湅浜鸿劯鐨勫潗鏍�:",face.Location)
+				//}
+				logger.Warn("___________________________________________________________________________缁堜簬璧板畬涓囬噷闀垮緛")
+				// 鎶婁粬浠殑浣嶇疆鏁版嵁涔熶紶涓嬪幓
+				locations := []Rect{}
+				for _, sdkData := range args.Sdkdata {
+					if sdkData.IpcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && sdkNames != "" { // 鎶妝olo鏁版嵁鐨勫悇涓洰鏍囩殑鍧愭爣杈撳嚭鏂逛究鍚庨潰鐢绘
+						for _, areaMap := range sdkData.AreaMapList {
+							locations = append(locations, putYolosToResult(areaMap)...)
+						}
+					}
+				}
+				//logger.Debug("------locations鐨勫唴瀹癸細", locations)
+				if sdkNames != "" {
+					args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkNames, groupRule.GroupId,groupRule.DefenceState,groupRule.AlarmLevel, groupRule.GroupText, locations, polygonId,label})
+					//logger.Info("-------------------yolo缁撴灉鏍囩闀垮害", len(args.RuleResult["yolo"].([]Result)))
+				}
+				if faceFlag {
+					args.RuleResult["face"] = append(args.RuleResult["face"].([]FaceResult), FaceResult{Result{taskId, sdkNames, groupRule.GroupId,groupRule.DefenceState,groupRule.AlarmLevel, groupRule.GroupText, []Rect{}, polygonId,label},faces})
+					//logger.Info("-------------------face缁撴灉鏍囩", len(args.RuleResult["face"].([]FaceResult)))
+				}
 				return true
 			} else {
 				return false
 			}
+
 		} else {
 			// 缁撴灉涓哄亣鏃朵篃瑕佽蛋锛屾湁鏃跺�欎负鍋囩殑鐘舵�佸弽杞暟鎹篃闇�瑕佽褰曚笅鏉�
 			//timeFlag := TimerAlarm(args, groupRule.GroupId, result.(bool))
@@ -371,7 +374,7 @@
 }
 
 // 鑱斿姩浠诲姟鐨勫鐞�
-func LinkTask(args *SdkDatas, groupRule *protomsg.GroupRule, taskId string, message *protomsg.SdkMessage) {
+func LinkTask(args *SdkDatas, groupRule *protomsg.GroupRule, taskId string, message *protomsg.SdkMessage,label map[string]interface{}) {
 	// new涓�涓畾鏃跺櫒锛屽鏋滀互姝roupId涓烘爣蹇楃殑瀹氭椂鍣ㄤ笉瀛樺湪鐨勮瘽
 	logger.Info("------------------------------------------褰撳墠鏄仈鍔ㄤ换鍔★紝瑙勫垯鏄細", groupRule.GroupText)
 	var flag bool = true
@@ -401,7 +404,7 @@
 		}
 	}
 	// 寰�鏁扮粍閲岃祴鍊�
-	isOk := RunRule(args, groupRule, taskId, message)
+	isOk := RunRule(args, groupRule, taskId, message,label)
 	if isOk {
 		logger.Info("杩欏抚鍥惧儚鍦ㄤ换鍔′笅鐨勪竴鏁存潯瑙勫垯涓嬶紙鑱斿姩浠诲姟涓嬪氨鏄窡鏈憚鍍忔満鍍忕浉鍏崇殑灏忚鍒欙級鐨勫垽鏂粨鏋滀负true")
 		// 鏍规嵁cameraId鍘绘洿鏂版垨鑰呮彃鍏ョ粨鏋�,鐒跺悗鍒ゆ柇鏄惁鏁扮粍鏄惁鍙互寰楀嚭鎶ヨ鐨勭粨璁�
@@ -436,12 +439,12 @@
 				if result.(bool) {
 					logger.Info("___________________________________________________________________鑱斿姩浠诲姟鎶ヨ")
 					// 鎶婃暟缁勯噷缂撳瓨鐨勬暟鎹彇鍑烘潵涓�璧锋姤璀�
-					args.RuleResult["linkCache"] = []*ResultMsg{}
+					label["linkCache"] = []*ResultMsg{}
 					for _, ruleRes := range TimeEleList[groupRule.GroupId].RuleResults {
-						args.RuleResult["linkCache"] = append(args.RuleResult["linkCache"].([]*ResultMsg),ruleRes.CacheData)
+						label["linkCache"] = append(label["linkCache"].([]*ResultMsg),ruleRes.CacheData)
 					}
-					logger.Debug("鑱斿姩浠诲姟缂撳瓨浜嗗嚑涓暟鎹�",len(args.RuleResult["linkCache"].([]*ResultMsg)))
-					os.Exit(1)
+					logger.Debug("鑱斿姩浠诲姟缂撳瓨浜嗗嚑涓暟鎹�",len(label["linkCache"].([]*ResultMsg)))
+					//os.Exit(1)
 				}
 			}
 		} else {
diff --git a/ruleserver/timeTicker.go b/ruleserver/timeTicker.go
index e236763..2bd8280 100644
--- a/ruleserver/timeTicker.go
+++ b/ruleserver/timeTicker.go
@@ -69,7 +69,7 @@
 }
 
 // 鍒ゆ柇鏄惁绗﹀悎瀹氭椂鍣ㄦ潯浠�
-func TimerAlarm(args *SdkDatas, groupId string, result bool) (string) {
+func TimerAlarm(args map[string]interface{}, groupId string, result bool) (string) {
 	var flagTime string //
 	// 鍒ゆ柇鏈夋棤姝よ鍒欑粍鐨勫畾鏃跺櫒
 	flag := false
@@ -82,19 +82,19 @@
 	if flag { // 鏈夊畾鏃跺櫒
 		if result { // 缁撴灉涓虹湡
 			for k, timeEle := range TimeEleList {
-				if strings.Contains(k, groupId) {
+				if strings.Contains(k, groupId) && k != groupId{
 					if timeEle.N == 0 && timeEle.AlarmFlag {
 						logger.Debug("-------------------------绗﹀悎鎸佺画鏃堕棿瑙勫垯浣嗗苟涓嶆槸棣栨锛屼笉鎶ヨ")
 						flagTime = "11"
-						args.RuleResult["timeLabel"] = flagTime
+						args["timeLabel"] = flagTime
 					}
 					if timeEle.N == 0 && !timeEle.AlarmFlag { // 杩欑粍瑙勫垯鐨勫畾鏃跺櫒瑕佸叏閮ㄧ瓑浜�0   鏆備笖璁や负涓�缁勮鍒欏彧鏈変竴涓畾鏃跺櫒
 						logger.Debug("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��-------------棣栨绗﹀悎鎸佺画鏃堕棿瑙勫垯骞舵姤璀�")
 						flagTime = "10"
 						timeEle.AlarmFlag = true
-						args.RuleResult["cacheData"] = []ResultMsg{}
-						args.RuleResult["cacheData"] = append(args.RuleResult["cacheData"].([]ResultMsg),timeEle.CacheSdkData)
-						args.RuleResult["timeLabel"] = flagTime
+						args["cacheData"] = []ResultMsg{}
+						args["cacheData"] = append(args["cacheData"].([]ResultMsg),timeEle.CacheSdkData)
+						args["timeLabel"] = flagTime
 					}
 					if timeEle.N != 0 {
 						flagTime = "00"
@@ -111,7 +111,7 @@
 						if timeEle.BufferFlag == 0 {
 							logger.Debug("------------------------------鏉�姝诲畾鏃跺櫒锛屾姤璀︽甯х姸鎬佹敼鍙樼殑鏁版嵁锛屾鏃剁殑璁℃暟鍣ㄧ殑鍊间负", timeEle.N)
 							flagTime = "12"
-							args.RuleResult["timeLabel"] = flagTime
+							args["timeLabel"] = flagTime
 							delete(TimeEleList, k)
 						} else {
 							if timeEle.BufferFlag > 0 {
@@ -127,7 +127,7 @@
 	} else { // 鏃犲畾鏃跺櫒
 		if result {
 			flagTime = "01"
-			args.RuleResult["timeLabel"] = flagTime
+			args["timeLabel"] = flagTime
 		} else {
 			flagTime = "00"
 		}

--
Gitblit v1.8.0