From 5da0f8933166a926725443f0e8e2e836d40e515f Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期五, 12 七月 2019 20:06:17 +0800
Subject: [PATCH] 改造定时器

---
 ruleserver/ruleToformula.go |  159 +++++++++++++++++++++++++++++-----------------------
 1 files changed, 88 insertions(+), 71 deletions(-)

diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index 0ff5a7d..051cf60 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -122,7 +122,7 @@
 type SdkDatas struct {
 	CameraId   string
 	Sdkdata    []*SdkData
-	RuleResult map[string]interface{} // 杩囧畬瑙勫垯鍚庢墦鐨勬爣绛� face: []Arg  yolo: []Result
+	RuleResult map[string]interface{} // 杩囧畬瑙勫垯鍚庢墦鐨勬爣绛� face: []Arg, yolo: []Result, cacheData: SdkDatas, timeLabel: 0,1,2,3,4,5
 }
 
 // 灏嗕紶閫掕繃鏉ョ殑鍙傛暟杞寲涓�
@@ -232,7 +232,7 @@
 	if err1 != nil {
 		logger.Error("getBaseInfo瑙e帇閿欒", err1)
 	}
-	logger.Info("----------------------------------------map鏄�", m)
+	//logger.Info("----------------------------------------map鏄�", m)
 	for key, val := range m {
 		baseinfo, err1 := esutil.Dbpersoninfosbyid(key)
 		if err1 != nil {
@@ -449,86 +449,103 @@
 			panic("瑙勫垯鏈夎锛屽緱鍒扮殑鏁板鍏紡涓嶅彲瑙f瀽")
 		}
 		result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
-		if !result.(bool) {
-			// 缁欒繖甯ф暟鎹墦涓婅鍒欑粍鏍囩
-			//args.RuleResult = append(args.RuleResult, Result{TaskId: taskId, RuleGroupId: groupRule.GroupId})
-			for k, timeEle := range TimeEleList {
-				if strings.Contains(k, groupRule.GroupId) {
-					timeEle.N = timeEle.InitN // 閲嶇疆瀹氭椂鍣�
+		// 杩涜瀹氭椂鍣ㄧ殑澶勭悊鍜屽垽鏂�
+		timeFlag := TimerAlarm(args,groupRule.GroupId,result.(bool))
+		if timeFlag == "01" || timeFlag == "10" || timeFlag == "11" {
+			// 鏈�鍚庢垚鍔熸姤璀︽墠鎶婄鍚堟潯浠剁殑浜鸿劯鏁版嵁濉炶繘缁撴灉鏍囩閲�
+			// 閰嶄簡浜鸿劯鐨勭畻娉曟墠鎶婁汉鑴哥殑鏁版嵁鐢╁嚭鏉ユ墦鏍囩
+			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
 				}
 			}
-			logger.Info("-------------------閲嶇疆鐩稿叧鐨勫畾鏃跺櫒骞惰繑鍥瀎alse---------------")
-			return false
+			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)...)
+					}
+				}
+			}
+			if faceFlag {
+				args.RuleResult["face"] = faces
+			}
+			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.AlarmLevel, groupRule.GroupText, locations,polygonId})
+				logger.Info("-------------------yolo缁撴灉鏍囩闀垮害", len(args.RuleResult["yolo"].([]Result)))
+			}
+			if args.RuleResult["face"] != nil {
+				logger.Info("-------------------face缁撴灉鏍囩", len(args.RuleResult["face"].([]Arg)))
+			}
+			return true
 		} else {
-			// 鍒ゆ柇鎸佺画鏃堕棿鏉′欢锛屽幓鐪嬫睜瀛愰噷鏄惁鏈変笌鏈抚鏁版嵁鏈夊叧鐨勫畾鏃跺櫒锛屽鏋滄湁锛岀湅姝ゆ椂鏄惁璧板埌0锛屾病鏈夋瀹氭椂鍣ㄦ垨鏈夊畾鏃跺櫒璧板埌0鐨勮瘽杩斿洖鎴愬姛鎶ヨ
-			var flag bool = true
-			for k, timeEle := range TimeEleList {
-				if strings.Contains(k, groupRule.GroupId) {
-					if timeEle.N != 0 { // 杩欑粍瑙勫垯鐨勫畾鏃跺櫒瑕佸叏閮ㄧ瓑浜�0
-						logger.Info("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��-------------涓嶅啢锛屼綘鏄瀹氭椂鍣ㄦ墦璐ョ殑锛�")
-						flag = false
-					}
-				}
-			}
-			if flag {
-				// 鏈�鍚庢垚鍔熸姤璀︽墠鎶婄鍚堟潯浠剁殑浜鸿劯鏁版嵁濉炶繘缁撴灉鏍囩閲�
-				// 閰嶄簡浜鸿劯鐨勭畻娉曟墠鎶婁汉鑴哥殑鏁版嵁鐢╁嚭鏉ユ墦鏍囩
-				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)...)
-						}
-					}
-				}
-				if faceFlag {
-					args.RuleResult["face"] = faces
-				}
-				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)...)
-						}
-					}
-				}
-				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)))
-				}
-				if args.RuleResult["face"] != nil {
-					logger.Info("-------------------face缁撴灉鏍囩", len(args.RuleResult["face"].([]Arg)))
-				}
-				return true
-			} else {
-				return false
-			}
+			return false
 		}
 	} else {
 		return false
 	}
 }
-func TimerAlarm(groupId string) (int) {
-	var flagTime int = 0
-	for k, timeEle := range TimeEleList {
+// 鍒ゆ柇鏄惁绗﹀悎瀹氭椂鍣ㄦ潯浠�
+func TimerAlarm(args *SdkDatas,groupId string,result bool) (string) {
+	var flagTime string  //
+	// 鍒ゆ柇鏈夋棤姝よ鍒欑粍鐨勫畾鏃跺櫒
+	flag := false
+	for k,_ := range TimeEleList {
+		logger.Debug("-----------------鐪嬬湅杩欎釜key鍜実roupId",k,groupId)
 		if strings.Contains(k, groupId) {
-			if timeEle.N == 0 && !timeEle.AlarmFlag { // 杩欑粍瑙勫垯鐨勫畾鏃跺櫒瑕佸叏閮ㄧ瓑浜�0   鏆備笖璁や负涓�缁勮鍒欏彧鏈変竴涓畾鏃跺櫒
-				logger.Info("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��-------------棣栨绗﹀悎鎸佺画鏃堕棿瑙勫垯骞舵姤璀�")
-				flagTime = 1
-				timeEle.AlarmFlag = true
+			flag = true
+		}
+	}
+	if flag {     // 鏈夊畾鏃跺櫒
+		if result { // 缁撴灉涓虹湡
+			for k, timeEle := range TimeEleList {
+				if strings.Contains(k, groupId) {
+					if timeEle.N == 0 && !timeEle.AlarmFlag { // 杩欑粍瑙勫垯鐨勫畾鏃跺櫒瑕佸叏閮ㄧ瓑浜�0   鏆備笖璁や负涓�缁勮鍒欏彧鏈変竴涓畾鏃跺櫒
+						logger.Debug("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��-------------棣栨绗﹀悎鎸佺画鏃堕棿瑙勫垯骞舵姤璀�")
+						flagTime = "10"
+						timeEle.AlarmFlag = true
+						args.RuleResult["cacheData"] = timeEle.CacheSdkData
+						args.RuleResult["timeLabel"] = flagTime
+					}
+					if timeEle.N == 0 && timeEle.AlarmFlag {
+						logger.Debug("-------------------------绗﹀悎鎸佺画鏃堕棿瑙勫垯浣嗗苟涓嶆槸棣栨锛屼笉鎶ヨ")
+						flagTime = "11"
+						args.RuleResult["timeLabel"] = flagTime
+					}
+					if timeEle.N != 0 {
+						flagTime = "00"
+						logger.Debug("------------------------缁撴灉涓虹湡浣嗚鏁板櫒涓嶅埌0锛屼笉鎶ヨ,姝ゆ椂鐨勮鏁板櫒鐨勫�间负锛�",timeEle.N)
+					}
+				}
 			}
-			if timeEle.N == 0 && timeEle.AlarmFlag {
-				logger.Info("-------------------------绗﹀悎鎸佺画鏃堕棿瑙勫垯浣嗗苟涓嶆槸棣栨锛屼笉鎶ヨ")
-				flagTime = 2
+		} else { // 缁撴灉涓哄亣
+			for k, timeEle := range TimeEleList {
+				if strings.Contains(k, groupId) {
+					logger.Debug("------------------------------閲嶇疆瀹氭椂鍣紝姝ゆ椂鐨勮鏁板櫒鐨勫�间负",timeEle.N)
+					timeEle.N = timeEle.InitN // 閲嶇疆瀹氭椂鍣�
+					timeEle.CacheSdkData = SdkDatas{} // 鎶婄紦瀛樻暟鎹墧浜�
+					flagTime = "12"
+				}
 			}
+
+		}
+	} else { // 鏃犲畾鏃跺櫒
+		if result {
+			flagTime = "01"
+		} else {
+			flagTime = "00"
 		}
 	}
 	return flagTime

--
Gitblit v1.8.0