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

---
 ruleserver/ruleToformula.go |   38 ++++++++++++++++++++++++++++++--------
 1 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index fdc25cd..7634abd 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -161,7 +161,7 @@
 	}
 }
 
-func RunRule(args *SdkDatas, groupRule *protomsg.GroupRule, taskId string, message *protomsg.SdkMessage, label Others) bool {
+func RunRule(args *SdkDatas, groupRule *protomsg.GroupRule, taskId string, message *protomsg.SdkMessage, label Others) (bool,[]int) {
 	defer func() {
 		if err := recover(); err != nil {
 			logger.Error("姣斿瑙勫垯鏈夎", err.(string))
@@ -357,27 +357,30 @@
 				} else {
 					islink = false
 				}
+				var labelTypes []int // 0涓簓olo鏍囩锛�1涓篺ace鏍囩 2涓轰袱鑰呮爣绛�
 				if sdkNames != "" {
 					args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, locations, polygonId, islink,label,})
+					labelTypes = append(labelTypes,0)
 					//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, islink,label,}, faces})
 					//logger.Info("-------------------face缁撴灉鏍囩", len(args.RuleResult["face"].([]FaceResult)))
+					labelTypes = append(labelTypes,1)
 				}
-				return true
+				return true,labelTypes
 			} else {
-				return false
+				return false,[]int{}
 			}
 
 		} else {
 			// 缁撴灉涓哄亣鏃朵篃瑕佽蛋锛屾湁鏉�姝诲畾鏃跺櫒鐨勬搷浣�
 			TimerAlarm(&label, groupRule.GroupId, result.(bool))
 			//fmt.Println(timeFlag)
-			return false
+			return false,[]int{}
 		}
 	} else {
-		return false
+		return false,[]int{}
 	}
 }
 
@@ -423,6 +426,9 @@
 			timeEle = *timeEle1
 		}
 	}
+	for _,ruleRe := range timeEle.RuleResults {
+		logger.Info("鑱斿姩鏁扮粍閲岀殑鏁版嵁----",ruleRe.CameraId,ruleRe.Sort)
+	}
 	if flag { // 濡傛灉杩樻病鏈夎繖涓畾鏃跺櫒鍏冪礌灏辨柊澧炰竴涓�
 		//timeEle := TimeElement{N: 2, InitN: 2, GroupId: groupRule.GroupId} // 鎵旇繘鍘讳竴涓畾鏃跺櫒鍏冪礌
 		//TimeEleList = make(map[string]timeElement)
@@ -432,6 +438,7 @@
 		for j := 0; j < len(groupRule.Rules); j++ {
 			var flag1 bool = true
 			for _, ruleRes := range TimeEleList[groupRule.GroupId].RuleResults {
+				logger.Info("鑱斿姩鏁扮粍閲岀殑鏁版嵁锛�",ruleRes.CameraId,ruleRes.Sort)
 				if groupRule.Rules[j].CameraId == ruleRes.CameraId {
 					flag1 = false
 				}
@@ -441,8 +448,9 @@
 			}
 		}
 	}
+	logger.Info("")
 	// 寰�鏁扮粍閲岃祴鍊�
-	isOk := RunRule(args, groupRule, taskId, message, label)
+	isOk,labelTypes := RunRule(args, groupRule, taskId, message, label)
 	if isOk {
 		logger.Info("杩欏抚鍥惧儚鍦ㄤ换鍔′笅鐨勪竴鏁存潯瑙勫垯涓嬶紙鑱斿姩浠诲姟涓嬪氨鏄窡鏈憚鍍忔満鍍忕浉鍏崇殑灏忚鍒欙級鐨勫垽鏂粨鏋滀负true")
 		// 鏍规嵁cameraId鍘绘洿鏂版垨鑰呮彃鍏ョ粨鏋�,鐒跺悗鍒ゆ柇鏄惁鏁扮粍鏄惁鍙互寰楀嚭鎶ヨ鐨勭粨璁�
@@ -515,8 +523,22 @@
 		} else {
 			logger.Warn("鏁扮粍涓嶅渾婊′笉鎵撴爣绛�")
 			// 鍊掓槸鎶婃墦鐨勭粍瑙勫垯鏍囩缁欏幓鎺変簡鍟�
-			lens := len(args.RuleResult["yolo"].([]Result))-1
-			args.RuleResult["yolo"] = args.RuleResult["yolo"].([]Result)[0:lens]
+			for _,val := range labelTypes {
+				if val == 0 {
+					if len(args.RuleResult["yolo"].([]Result)) >= 1 {
+						lens := len(args.RuleResult["yolo"].([]Result))-1
+						args.RuleResult["yolo"] = args.RuleResult["yolo"].([]Result)[0:lens]
+					}
+				}
+				if val == 1 {
+					if len(args.RuleResult["face"].([]FaceResult)) >= 1 {
+						lens := len(args.RuleResult["face"].([]FaceResult))-1
+						args.RuleResult["face"] = args.RuleResult["face"].([]FaceResult)[0:lens]
+					}
+				}
+			}
+
+
 		}
 	} else { // 娌℃湁鎶ヨ锛�
 		//logger.Info("杩欏抚鍥惧儚鍦ㄤ换鍔′笅鐨勪竴鏁存潯瑙勫垯涓嬶紙鑱斿姩浠诲姟涓嬪氨鏄窡鏈憚鍍忔満鍍忕浉鍏崇殑灏忚鍒欙級鐨勫垽鏂粨鏋滀负false")

--
Gitblit v1.8.0