From 0d5aa709503ad0cb03c0c71a5fc23b5174f4fb50 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期二, 19 十一月 2019 11:51:53 +0800
Subject: [PATCH] ---
---
ruleserver/timeTicker.go | 191 +++++++++++++++++++++++++++++++----------------
1 files changed, 125 insertions(+), 66 deletions(-)
diff --git a/ruleserver/timeTicker.go b/ruleserver/timeTicker.go
index feed196..c0c0037 100644
--- a/ruleserver/timeTicker.go
+++ b/ruleserver/timeTicker.go
@@ -2,7 +2,9 @@
import (
"fmt"
- "ruleprocess/logger"
+ "basic.com/valib/logger.git"
+ "ruleprocess/structure"
+ "strings"
"time"
)
@@ -13,81 +15,139 @@
// 瀹氭椂鍣ㄥ厓绱�
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 structure.ResultMsg // 瀹氭椂鍣ㄧ殑缂撳瓨鏁版嵁 鎸佺画鏃堕棿绫荤殑寮�鍚畾鏃跺櫒鏃惰缂撳瓨涓�甯�
+ GroupId string // 鑱斿姩瑙勫垯闇�瑕佽褰曚笅姝ゆ椂鐨勮鍒欑粍id
+ RuleResults []*RuleResult
}
-type RuleResult struct { // 姣忎釜鎽勫儚鏈轰竴涓粨鏋勪綋
- CameraId string // 鎽勫儚鏈篿d
- Sort int32 // 鎽勫儚鏈哄湪瑙勫垯缁勪腑搴忓彿
- Result string // 鎽勫儚鏈鸿繃婊ゆ暟鎹緱鍑虹殑缁撴灉
- RuleWithPre string // 鎽勫儚鏈轰箣闂寸殑杩炴帴绗�
+type RuleResult struct {
+ // 姣忎釜鎽勫儚鏈轰竴涓粨鏋勪綋
+ CameraId string // 鎽勫儚鏈篿d
+ Sort int32 // 鎽勫儚鏈哄湪瑙勫垯缁勪腑搴忓彿
+ Result string // 鎽勫儚鏈鸿繃婊ゆ暟鎹緱鍑虹殑缁撴灉
+ RuleWithPre string // 鎽勫儚鏈轰箣闂寸殑杩炴帴绗�
+ CacheData structure.ResultMsg // 缂撳瓨褰撳墠甯ф暟鎹�
}
func TimeTicker() {
- logger.Info("瀹氭椂鍣ㄦ墽琛屼簡")
- fmt.Println("瀹氭椂鍣ㄦ墽琛屼簡")
ticker := time.NewTicker(1 * time.Second)
- go func(ticker *time.Ticker) {
- defer ticker.Stop()
- for {
- select {
- case <-ticker.C:
- logger.Info("瀹氭椂鍣ㄦ墽琛屽崟鍏�",time.Now().Unix())
- fmt.Println("瀹氭椂鍣ㄦ墽琛屽崟鍏�",time.Now().Unix())
- // 姣忕閽熻鏁板櫒姹犲瓙閲屾墍鏈夌殑璁℃暟鍣ㄥ厓绱犻兘鍑忎竴锛屽噺鍒�0鐨勬槸璇ユ姤璀︾殑
- for _, timeEle := range TimeEleList {
- if timeEle.N > 0 {
- timeEle.N = timeEle.N - 1
- logger.Info("-------------------------------------鎵撳嵃瀹氭椂鍣ㄥ厓绱犲綋鍓嶅��-----------------------------------------锛�",timeEle.N)
- }
+ //go func(ticker *time.Ticker) {
+ defer ticker.Stop()
+ for {
+ select {
+ case <-ticker.C:
+ logger.Info("瀹氭椂鍣ㄦ墽琛屽崟鍏�", time.Now().Unix())
+ fmt.Println("瀹氭椂鍣ㄦ墽琛屽崟鍏�", time.Now().Unix())
+ // 姣忕閽熻鏁板櫒姹犲瓙閲屾墍鏈夌殑璁℃暟鍣ㄥ厓绱犻兘鍑忎竴锛屽噺鍒�0鐨勬槸璇ユ姤璀︾殑
+ // 鍥剧墖瀹氭椂鍣ㄧ郴鍒�
+ rw.Lock()
+ for k, timeEle := range TimeEleList {
+ if timeEle.N > 0 {
+ timeEle.N = timeEle.N - 1
+ logger.Debug("-------------------------------------鎵撳嵃瀹氭椂鍣ㄨ鏁板厓绱犲綋鍓嶅��-----------------------------------------锛�", timeEle.N)
}
- case stop := <-stopChan:
- if stop {
- logger.Info("瀹氭椂鍣ㄧ粨鏉�")
- return
- //os.Exit(0)
+ if timeEle.GroupId != "" && timeEle.N == 0 {
+ // 璇存槑鏄仈鍔ㄤ换鍔$殑鏃堕棿绐楀彛 鍒扮偣鍎夸簡璇ラ攢姣佷簡,鍐嶆潵浜嗗啀鍒涘缓
+ delete(TimeEleList, k)
}
}
+ rw.Unlock()
+ // 鐩爣瀹氭椂鍣ㄧ郴鍒�
+ for _,cameraArea := range structure.StaticMap {
+ for _,obj := range cameraArea.Targets {
+ if obj.N > 0 {
+ obj.N = obj.N - 1
+ }
+ }
+ }
+ case stop := <-stopChan:
+ if stop {
+ logger.Info("瀹氭椂鍣ㄧ粨鏉�")
+ return
+ //os.Exit(0)
+ }
}
- }(ticker)
+ }
+ //}(ticker)
}
func StopTimeTicker() {
stopChan <- true
TimeTicker()
}
-// 瀹氭椂鍣ㄥ崟鍏� 搴熷純鐗堟湰
-// func TimeTicker() chan bool {
-// logger.Info("鎵ц浜唗imeTicker")
-// ticker := time.NewTicker(1 * time.Second)
-// stopChan := make(chan bool)
-// go func(ticker *time.Ticker) {
-// defer ticker.Stop()
-// for {
-// select {
-// case <-ticker.C:
-// //logger.Info("鎵ц鍗曞厓", "璁℃暟鍣ㄩ泦鍚�2", TimeEleList)
-// for k, timeEle := range TimeEleList {
-// timeEle.n = timeEle.n - 1
-// //logger.Info("閬嶅巻鐨勬暟鍊�", TimeEleList)
-// if timeEle.n == 0 {
-// // do something alarm
-// alarm(k, timeEle)
-// }
-// }
-// case stop := <-stopChan:
-// if stop {
-// logger.Info("瀹氭椂鍣ㄧ粨鏉�")
-// return
-// }
-// }
-// }
-// }(ticker)
-// return stopChan
-// }
+// 鍒ゆ柇鏄惁绗﹀悎瀹氭椂鍣ㄦ潯浠�
+func TimerAlarm(oth *structure.Others, groupId string, result bool) (string) {
+ var flagTime string //
+ // 鍒ゆ柇鏈夋棤姝よ鍒欑粍鐨勫畾鏃跺櫒
+ flag := false
+ rw.Lock()
+ for k, _ := range TimeEleList {
+ //logger.Debug("-----------------鐪嬬湅杩欎釜key鍜実roupId", k, groupId)
+ if strings.Contains(k, groupId) && k != groupId{
+ flag = true
+ }
+ }
+ if flag { // 鏈夊畾鏃跺櫒
+ if result { // 缁撴灉涓虹湡
+ for k, timeEle := range TimeEleList {
+ if strings.Contains(k, groupId) && k != groupId{
+ if timeEle.N == 0 && timeEle.AlarmFlag {
+ logger.Debug("-------------------------绗﹀悎鎸佺画鏃堕棿瑙勫垯浣嗗苟涓嶆槸棣栨锛屼笉鎶ヨ")
+ flagTime = "11"
+ oth.TimeLabel = flagTime
+ }
+ if timeEle.N == 0 && !timeEle.AlarmFlag { // 杩欑粍瑙勫垯鐨勫畾鏃跺櫒瑕佸叏閮ㄧ瓑浜�0 鏆備笖璁や负涓�缁勮鍒欏彧鏈変竴涓畾鏃跺櫒
+ logger.Debug("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��-------------棣栨绗﹀悎鎸佺画鏃堕棿瑙勫垯骞舵姤璀�")
+ flagTime = "10"
+ timeEle.AlarmFlag = true
+ oth.CacheData = []structure.ResultMsg{}
+ oth.CacheData = append(oth.CacheData,timeEle.CacheSdkData)
+ oth.TimeLabel = flagTime
+ }
+ if timeEle.N != 0 {
+ flagTime = "00"
+ // 鏈夊畾鏃跺櫒浣嗕笉涓�0鎶婂凡鎵撶殑鏍囩鍒犻櫎
+ // args.RuleResult = nil
+ logger.Debug("------------------------缁撴灉涓虹湡浣嗚鏁板櫒涓嶅埌0锛屼笉鎶ヨ,姝ゆ椂鐨勮鏁板櫒", k, "鐨勫�间负锛�", timeEle.N)
+ }
+ }
+ }
+ } else { // 缁撴灉涓哄亣
+ for k, timeEle := range TimeEleList {
+ if strings.Contains(k, groupId) && k != groupId{
+ if timeEle.AlarmFlag {
+ if timeEle.BufferFlag == 0 {
+ logger.Debug("------------------------------鏉�姝诲畾鏃跺櫒锛屾姤璀︽甯х姸鎬佹敼鍙樼殑鏁版嵁锛屾鏃剁殑璁℃暟鍣ㄧ殑鍊间负", timeEle.N)
+ flagTime = "12"
+ oth.TimeLabel = flagTime
+ delete(TimeEleList, k)
+ } else {
+ if timeEle.BufferFlag > 0 {
+ logger.Debug("缂撳啿鍖哄噺鍑�")
+ timeEle.BufferFlag--
+ }
+ }
+ } else {
+ logger.Debug("-----------缁撴灉涓哄亣涓斾笉鍒�0锛屾潃姝诲畾鏃跺櫒")
+ delete(TimeEleList, k)
+ }
+ }
+ }
+ }
+ } else { // 鏃犲畾鏃跺櫒
+ if result {
+ flagTime = "01"
+ oth.TimeLabel = flagTime
+ } else {
+ flagTime = "00"
+ }
+ }
+ rw.Unlock()
+ return flagTime
+}
// 缁撴瀯浣撴牴鎹煇瀛楁鎺掑簭
type SubList []*RuleResult
@@ -97,9 +157,8 @@
func (p SubList) Less(i, j int) bool { return p[i].Sort < p[j].Sort }
// 缁撴瀯浣撴牴鎹煇瀛楁鎺掑簭
-type resultList []*LittleRuleResult
+type ResultList []*structure.LittleRuleResult
-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 }
-
+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