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

---
 ruleserver/timeTicker.go |  129 +++++++++++++++++++++++++++++-------------
 1 files changed, 88 insertions(+), 41 deletions(-)

diff --git a/ruleserver/timeTicker.go b/ruleserver/timeTicker.go
index 4a674ca..f8fa70e 100644
--- a/ruleserver/timeTicker.go
+++ b/ruleserver/timeTicker.go
@@ -2,7 +2,8 @@
 
 import (
 	"fmt"
-	"os"
+	"ruleprocess/logger"
+	"strings"
 	"time"
 )
 
@@ -13,13 +14,16 @@
 
 // 瀹氭椂鍣ㄥ厓绱�
 type TimeElement struct {
-	N           int     // 鎸夋椂闂翠緷娆¢�掑噺鐨勫綋鍓嶅��
-	InitN       int     // 璧嬪�煎悗灏变笉鍙樼殑鍒濆鍊�
-	Data        AreaMap //
-	GroupId     string  // 鑱斿姩瑙勫垯闇�瑕佽褰曚笅姝ゆ椂鐨勮鍒欑粍id
-	RuleResults []*RuleResult
+	N            int       // 鎸夋椂闂翠緷娆¢�掑噺鐨勫綋鍓嶅��
+	InitN        int       // 璧嬪�煎悗灏变笉鍙樼殑鍒濆鍊�
+	BufferFlag   int       // 缂撳啿瀹归敊浣� 杩炵画n甯alse鎵嶄负false
+	AlarmFlag    bool      // 鎶ヨ鏍囧織浣� 瀹氭椂鍣ㄥ紑鍚悗绗竴娆℃姤璀︽椂浼氳缃负true 寰�鍚庡啀鏉ユ姤璀︿篃涓嶄細鎻掕繘ES
+	CacheSdkData ResultMsg // 瀹氭椂鍣ㄧ殑缂撳瓨鏁版嵁 鎸佺画鏃堕棿绫荤殑寮�鍚畾鏃跺櫒鏃惰缂撳瓨涓�甯�
+	GroupId      string    // 鑱斿姩瑙勫垯闇�瑕佽褰曚笅姝ゆ椂鐨勮鍒欑粍id
+	RuleResults  []*RuleResult
 }
-type RuleResult struct { // 姣忎釜鎽勫儚鏈轰竴涓粨鏋勪綋
+type RuleResult struct {
+	// 姣忎釜鎽勫儚鏈轰竴涓粨鏋勪綋
 	CameraId    string // 鎽勫儚鏈篿d
 	Sort        int32  // 鎽勫儚鏈哄湪瑙勫垯缁勪腑搴忓彿
 	Result      string // 鎽勫儚鏈鸿繃婊ゆ暟鎹緱鍑虹殑缁撴灉
@@ -27,6 +31,7 @@
 }
 
 func TimeTicker() {
+	logger.Info("瀹氭椂鍣ㄦ墽琛屼簡")
 	fmt.Println("瀹氭椂鍣ㄦ墽琛屼簡")
 	ticker := time.NewTicker(1 * time.Second)
 	go func(ticker *time.Ticker) {
@@ -34,17 +39,24 @@
 		for {
 			select {
 			case <-ticker.C:
-				fmt.Println("瀹氭椂鍣ㄦ墽琛屽崟鍏�")
+				logger.Info("瀹氭椂鍣ㄦ墽琛屽崟鍏�", time.Now().Unix())
+				fmt.Println("瀹氭椂鍣ㄦ墽琛屽崟鍏�", time.Now().Unix())
 				// 姣忕閽熻鏁板櫒姹犲瓙閲屾墍鏈夌殑璁℃暟鍣ㄥ厓绱犻兘鍑忎竴锛屽噺鍒�0鐨勬槸璇ユ姤璀︾殑
-				for _, timeEle := range TimeEleList {
+				for k, timeEle := range TimeEleList {
 					if timeEle.N > 0 {
 						timeEle.N = timeEle.N - 1
+						logger.Error("-------------------------------------鎵撳嵃瀹氭椂鍣ㄨ鏁板厓绱犲綋鍓嶅��-----------------------------------------锛�", timeEle.N)
+					}
+					if timeEle.GroupId != "" && timeEle.N == 0 {
+						// 璇存槑鏄仈鍔ㄤ换鍔$殑鏃堕棿绐楀彛 鍒扮偣鍎夸簡璇ラ攢姣佷簡,鍐嶆潵浜嗗啀鍒涘缓
+						delete(TimeEleList, k)
 					}
 				}
 			case stop := <-stopChan:
 				if stop {
-					fmt.Println("瀹氭椂鍣ㄧ粨鏉�")
-					os.Exit(0)
+					logger.Info("瀹氭椂鍣ㄧ粨鏉�")
+					return
+					//os.Exit(0)
 				}
 			}
 		}
@@ -55,35 +67,71 @@
 	TimeTicker()
 }
 
-// 瀹氭椂鍣ㄥ崟鍏�  搴熷純鐗堟湰
-// func TimeTicker() chan bool {
-// 	fmt.Println("鎵ц浜唗imeTicker")
-// 	ticker := time.NewTicker(1 * time.Second)
-// 	stopChan := make(chan bool)
-// 	go func(ticker *time.Ticker) {
-// 		defer ticker.Stop()
-// 		for {
-// 			select {
-// 			case <-ticker.C:
-// 				//fmt.Println("鎵ц鍗曞厓", "璁℃暟鍣ㄩ泦鍚�2", TimeEleList)
-// 				for k, timeEle := range TimeEleList {
-// 					timeEle.n = timeEle.n - 1
-// 					//fmt.Println("閬嶅巻鐨勬暟鍊�", TimeEleList)
-// 					if timeEle.n == 0 {
-// 						// do something alarm
-// 						alarm(k, timeEle)
-// 					}
-// 				}
-// 			case stop := <-stopChan:
-// 				if stop {
-// 					fmt.Println("瀹氭椂鍣ㄧ粨鏉�")
-// 					return
-// 				}
-// 			}
-// 		}
-// 	}(ticker)
-// 	return stopChan
-// }
+// 鍒ゆ柇鏄惁绗﹀悎瀹氭椂鍣ㄦ潯浠�
+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) {
+			flag = true
+		}
+	}
+	if flag { // 鏈夊畾鏃跺櫒
+		if result { // 缁撴灉涓虹湡
+			for k, timeEle := range TimeEleList {
+				if strings.Contains(k, groupId) {
+					if timeEle.N == 0 && timeEle.AlarmFlag {
+						logger.Debug("-------------------------绗﹀悎鎸佺画鏃堕棿瑙勫垯浣嗗苟涓嶆槸棣栨锛屼笉鎶ヨ")
+						flagTime = "11"
+						args.RuleResult["timeLabel"] = flagTime
+					}
+					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 {
+						flagTime = "00"
+						// 鏈夊畾鏃跺櫒浣嗕笉涓�0鎶婂凡鎵撶殑鏍囩鍒犻櫎
+						// args.RuleResult = nil
+						logger.Debug("------------------------缁撴灉涓虹湡浣嗚鏁板櫒涓嶅埌0锛屼笉鎶ヨ,姝ゆ椂鐨勮鏁板櫒鐨勫�间负锛�", timeEle.N)
+					}
+				}
+			}
+		} else { // 缁撴灉涓哄亣
+			for k, timeEle := range TimeEleList {
+				if strings.Contains(k, groupId) {
+					if timeEle.AlarmFlag {
+						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)
+					}
+				}
+			}
+		}
+	} else { // 鏃犲畾鏃跺櫒
+		if result {
+			flagTime = "01"
+			args.RuleResult["timeLabel"] = flagTime
+		} else {
+			flagTime = "00"
+		}
+	}
+	return flagTime
+}
 
 // 缁撴瀯浣撴牴鎹煇瀛楁鎺掑簭
 type SubList []*RuleResult
@@ -98,4 +146,3 @@
 func (p resultList) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }
 func (p resultList) Len() int           { return len(p) }
 func (p resultList) Less(i, j int) bool { return p[i].Sort < p[j].Sort }
-

--
Gitblit v1.8.0