From d9499d682909977bc2b4c2783c4d07d397713968 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期一, 29 七月 2019 17:22:11 +0800
Subject: [PATCH] ---

---
 ruleserver/ruleToformula.go |   37 ++++++++++++++++++++++++-------------
 1 files changed, 24 insertions(+), 13 deletions(-)

diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index 2617389..f879229 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -84,6 +84,7 @@
 	TaskId       string // 浠诲姟id
 	SdkName      string
 	RuleGroupId  string // 瑙勫垯缁刬d
+	DefenceState bool   //鏄惁甯冮槻
 	AlarmLevel   int32  // 鎶ヨ绛夌骇
 	RuleText     string // 鏂囧瓧鐗堣鍒欑粍
 	Location     []Rect // 鐩爣鐨勫潗鏍�
@@ -117,7 +118,7 @@
 		// 寰楀埌灞炰簬璇ユ憚鍍忔満鐨勮嫢骞茬粍浠诲姟鐨勫畬鏁磋鍒欙紙璺熸瘡涓�鏉″畬鏁磋鍒欐瘮杈冧箣鍚庡緱鍑烘湰寮犲浘鍍忓浜庢煇涓鍒欐槸鍚︽姤璀︾殑缁撴灉銆傛斁杩沵ap锛屾瘮濡傛湰甯у浘鍍忕殑id锛屾墍纰版挒鎴愬姛鐨勮鍒檌d锛�
 		args.RuleResult = make(map[string]interface{})
 		args.RuleResult["yolo"] = []Result{}
-		args.RuleResult["face"] = []Arg{}
+		args.RuleResult["face"] = []FaceResult{}
 		if taskGroup != nil && len(taskGroup.GroupRules) > 0 {
 			for _, group := range taskGroup.GroupRules {
 				//logger.Println("------------------------------浠诲姟瑙勫垯锛�",taskRule)
@@ -276,12 +277,12 @@
 			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 = append(faces, putFaceToResult(areaMap,faces)...)
 					}
 				}
 			}
-			if faceFlag {
-				args.RuleResult["face"] = faces
+			for _,face := range faces  {
+				logger.Debug("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�擾_______________鐪嬬湅浜鸿劯鐨勫潗鏍�:",face.Location)
 			}
 			logger.Warn("___________________________________________________________________________缁堜簬璧板畬涓囬噷闀垮緛")
 			// 鎶婁粬浠殑浣嶇疆鏁版嵁涔熶紶涓嬪幓
@@ -295,12 +296,12 @@
 			}
 			logger.Debug("------locations鐨勫唴瀹癸細", locations)
 			if sdkNames != "" {
-				args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkNames, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, locations, polygonId})
-				logger.Info("-------------------yolo缁撴灉鏍囩闀垮害", len(args.RuleResult["yolo"].([]Result)))
+				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 args.RuleResult["face"] != nil {
-				args.RuleResult["face"] = append(args.RuleResult["face"].([]FaceResult), FaceResult{Result{taskId, sdkNames, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, []Rect{}, polygonId},faces})
-				logger.Info("-------------------face缁撴灉鏍囩", len(args.RuleResult["face"].(FaceResult).Args))
+			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++ {
@@ -336,11 +337,19 @@
 	}
 }
 
-func putFaceToResult(am *AreaMap) []Arg {
+func putFaceToResult(am *AreaMap,faceList []Arg) []Arg {
 	faces := []Arg{}
 	if len(am.filterData) > 0 {
 		for _, data := range am.filterData {
-			faces = append(faces, *data)
+			flag := true
+			for _,face := range faceList  {
+				if data.Location.X == face.Location.X && data.Location.Y == face.Location.Y && data.Location.Width == face.Location.Width && data.Location.Height == face.Location.Height {
+					flag = false
+				}
+			}
+			if flag {
+				faces = append(faces, *data)
+			}
 		}
 	}
 
@@ -423,7 +432,7 @@
 				result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
 				if result.(bool) {
 					logger.Info("___________________________________________________________________鑱斿姩浠诲姟鎶ヨ")
-					args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, "", groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, []Rect{}, ""})
+					args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, "", groupRule.GroupId, groupRule.DefenceState,groupRule.AlarmLevel, groupRule.GroupText, []Rect{}, ""})
 					logger.Info("-------------------yolo缁撴灉鏍囩鏈夊嚑涓�", len(args.RuleResult["yolo"].([]Result)))
 					if args.RuleResult["face"] != nil {
 						logger.Info("-------------------face缁撴灉鏍囩鏈夊嚑涓�", len(args.RuleResult["face"].([]Arg)))
@@ -480,8 +489,10 @@
 						var args []*Arg
 						if rule.RuleWithPre == "&&" {
 							args = am.filterData
+							logger.Info("杩囨护鍚庣殑args鐨勯暱搴︿负锛�",len(args))
 						} else {
 							args = am.args
+							logger.Info("娌¤繃婊ょ殑args鐨勯暱搴︿负锛�",len(args))
 						}
 						// 鍏堟竻绌鸿繃婊ゅ悗鐨勬暟鎹紝鍐嶅線閲屽鏈杩囨护鍚庣殑鏁版嵁
 						am.filterData = am.filterData[0:0]
@@ -587,7 +598,7 @@
 				timeLength, _ := strconv.Atoi(rule.SdkArgValue)
 				timeEle := TimeElement{N: timeLength, InitN: timeLength, AlarmFlag: false, BufferFlag: 10, CacheSdkData: ResultMsg{message, args.RuleResult}} // 鎵旇繘鍘讳竴涓畾鏃跺櫒鍏冪礌锛堝苟缂撳瓨褰撳墠鐢婚潰甯ф暟鎹級
 				//TimeEleList = make(map[string]timeElement)
-				TimeEleList[groupId+" "+rule.Id] = &timeEle // 瀹氭椂鍣ㄥ厓绱犱互鎽勫儚鏈篿d鎷兼帴鍖哄煙id涓洪敭
+				TimeEleList[groupId+" "+rule.Id] = &timeEle // 瀹氭椂鍣ㄥ厓绱犱互缁勮鍒檌d鍜屽綋鍓嶆寔缁椂闂村皬瑙勫垯id涓洪敭
 				logger.Info("鍒涘缓浜嗚鏁板櫒骞朵笖璁℃暟鍣ㄩ泦鍚堜负锛�", TimeEleList)
 			}
 		}

--
Gitblit v1.8.0