From 6778d033d1659069119cd0fb7fc5947b29c1cd5e Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期一, 15 七月 2019 14:23:45 +0800
Subject: [PATCH] 扩大全部区域判断范围

---
 ruleserver/ruleToformula.go |   70 ++++++++++++++++++++++-------------
 1 files changed, 44 insertions(+), 26 deletions(-)

diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index 74719eb..00b3f3d 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -2,6 +2,7 @@
 
 import (
 	"encoding/json"
+	"fmt"
 	"ruleprocess/cache"
 	"ruleprocess/logger"
 	"sort"
@@ -406,22 +407,7 @@
 			}
 		}
 	}
-	// 鏈�鍚庤繃鎸佺画鏃堕棿绛夋椂闂寸淮搴︾殑鏉′欢
-	for j := 0; j < len(groupRule.Rules); j++ {
-		for _, sdkData := range args.Sdkdata {
-			sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId)
-			if err != nil {
-				logger.Error("娌℃煡鍒皊dk鐨勪俊鎭�---", err)
-			}
-			ipcId := sdk.IpcId
-			if ipcId == sdkData.IpcId {
-				for _, areaMap := range sdkData.AreaMapList {
-					// 鍘诲紑鍚竴涓畾鏃跺櫒
-					duration(groupRule.Rules[j], groupRule.GroupId, areaMap, args,message)
-				}
-			}
-		}
-	}
+
 	// 灏嗘暟缁勬寜sort鎺掑簭
 	sort.Sort(resultList(resultSplice))
 	// 鎺掑簭鍚庡彇鍚勮嚜鐨勭粨鏋滃拰杩炴帴绗︽嫾鍑鸿鍒欒〃杈惧紡寰楀嚭缁撴灉
@@ -449,9 +435,8 @@
 			panic("瑙勫垯鏈夎锛屽緱鍒扮殑鏁板鍏紡涓嶅彲瑙f瀽")
 		}
 		result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
-		// 杩涜瀹氭椂鍣ㄧ殑澶勭悊鍜屽垽鏂�
-		timeFlag := TimerAlarm(args,groupRule.GroupId,result.(bool))
-		if timeFlag == "01" || timeFlag == "10" || timeFlag == "11" {
+
+		if result.(bool) {
 			// 鏈�鍚庢垚鍔熸姤璀︽墠鎶婄鍚堟潯浠剁殑浜鸿劯鏁版嵁濉炶繘缁撴灉鏍囩閲�
 			// 閰嶄簡浜鸿劯鐨勭畻娉曟墠鎶婁汉鑴哥殑鏁版嵁鐢╁嚭鏉ユ墦鏍囩
 			faces := []Arg{}
@@ -489,8 +474,33 @@
 			if args.RuleResult["face"] != nil {
 				logger.Info("-------------------face缁撴灉鏍囩", len(args.RuleResult["face"].([]Arg)))
 			}
-			return true
+			// 鏈�鍚庤繃鎸佺画鏃堕棿绛夋椂闂寸淮搴︾殑鏉′欢   鎶婃椂闂磋鍒欎綅缃皟鏁村埌杩欎釜浣嶇疆鏄负浜嗙紦瀛樻暟鎹�
+			for j := 0; j < len(groupRule.Rules); j++ {
+				for _, sdkData := range args.Sdkdata {
+					sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId)
+					if err != nil {
+						logger.Error("娌℃煡鍒皊dk鐨勪俊鎭�---", err)
+					}
+					ipcId := sdk.IpcId
+					if ipcId == sdkData.IpcId {
+						for _, areaMap := range sdkData.AreaMapList {
+							// 鍘诲紑鍚竴涓畾鏃跺櫒
+							duration(groupRule.Rules[j], groupRule.GroupId, areaMap, args,message)
+						}
+					}
+				}
+			}
+			// 杩涜瀹氭椂鍣ㄧ殑澶勭悊鍜屽垽鏂�
+			timeFlag := TimerAlarm(args,groupRule.GroupId,result.(bool))
+			if timeFlag == "01" || timeFlag == "10" || timeFlag == "11" { // 婊¤冻瀹氭椂鍣ㄦ潯浠�
+				return true
+			} else {
+				return false
+			}
 		} else {
+			// 缁撴灉涓哄亣鏃朵篃瑕佽蛋锛屾湁鏃跺�欎负鍋囩殑鐘舵�佸弽杞暟鎹篃闇�瑕佽褰曚笅鏉�
+			timeFlag := TimerAlarm(args,groupRule.GroupId,result.(bool))
+			fmt.Println(timeFlag)
 			return false
 		}
 	} else {
@@ -526,6 +536,8 @@
 					}
 					if timeEle.N != 0 {
 						flagTime = "00"
+						// 鏈夊畾鏃跺櫒浣嗕笉涓�0鎶婂凡鎵撶殑鏍囩鍒犻櫎
+						args.RuleResult = nil
 						logger.Debug("------------------------缁撴灉涓虹湡浣嗚鏁板櫒涓嶅埌0锛屼笉鎶ヨ,姝ゆ椂鐨勮鏁板櫒鐨勫�间负锛�",timeEle.N)
 					}
 				}
@@ -534,10 +546,16 @@
 			for k, timeEle := range TimeEleList {
 				if strings.Contains(k, groupId) {
 					if timeEle.AlarmFlag {
-						logger.Debug("------------------------------鏉�姝诲畾鏃跺櫒锛屾姤璀︽甯х姸鎬佹敼鍙樼殑鏁版嵁锛屾鏃剁殑璁℃暟鍣ㄧ殑鍊间负",timeEle.N)
-						flagTime = "12"
-						args.RuleResult["timeLabel"] = flagTime
-						delete(TimeEleList,k)
+						if timeEle.BufferFlag == 0 {
+							logger.Debug("------------------------------鏉�姝诲畾鏃跺櫒锛屾姤璀︽甯х姸鎬佹敼鍙樼殑鏁版嵁锛屾鏃剁殑璁℃暟鍣ㄧ殑鍊间负",timeEle.N)
+							flagTime = "12"
+							args.RuleResult["timeLabel"] = flagTime
+							delete(TimeEleList,k)
+						} else {
+							if timeEle.BufferFlag > 0 {
+								timeEle.BufferFlag--
+							}
+						}
 					} else {
 						delete(TimeEleList,k)
 					}
@@ -610,7 +628,7 @@
 // 灏嗗瓧绗︿覆鏍煎紡鐨勫潗鏍囧簭鍒楀寲涓篜oint鏍煎紡
 func Json2points(areaPoints string) []Point {
 	var pts []Point
-	if areaPoints == "[]" {
+	if areaPoints == "[]" || areaPoints == ""{
 		logger.Error("=====================姝ゅ尯鍩熶负鍏ㄩ儴鍖哄煙")
 		pts = append(pts, Point{0, 0})
 		pts = append(pts, Point{0, 540})
@@ -873,7 +891,7 @@
 
 			if flag {
 				timeLength, _ := strconv.Atoi(rule.SdkArgValue)
-				timeEle := TimeElement{N: timeLength, InitN: timeLength, AlarmFlag: false, CacheSdkData: &ResultMsg{message,args.RuleResult}} // 鎵旇繘鍘讳竴涓畾鏃跺櫒鍏冪礌锛堝苟缂撳瓨褰撳墠鐢婚潰甯ф暟鎹級
+				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涓洪敭
 				logger.Info("鍒涘缓浜嗚鏁板櫒骞朵笖璁℃暟鍣ㄩ泦鍚堜负锛�", TimeEleList)

--
Gitblit v1.8.0