From 40c09c362a2b8edab8e52ec2cc09dd7e0c883a4c Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期三, 10 七月 2019 15:58:42 +0800
Subject: [PATCH] 修改定时器

---
 ruleserver/ruleToformula.go |   14 +++++++-------
 main.go                     |    5 -----
 ruleserver/timeTicker.go    |   27 ++++++++++++++++-----------
 3 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/main.go b/main.go
index 2247a75..7c6019f 100644
--- a/main.go
+++ b/main.go
@@ -44,11 +44,6 @@
 	go ruleserver.TimeTicker()
 	nReciever("ipc:///tmp/sdk-2-rules-process.ipc", deliver.PushPull, 1)
 	wg.Wait()
-	//resp,err := DrawPolygonOnImage()
-	//if err != nil {
-	//	logger.Println("鐢绘鎴栬�呬笂浼犳湁闂")
-	//}
-	//logger.Println(resp["fileUrl"].(string))
 }
 func nReciever(url string, m deliver.Mode, count int) {
 	c := deliver.NewServer(m, url)
diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index 8be94d4..54425ce 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -197,7 +197,7 @@
 	}
 }
 
-// 瀵瑰崟甯у浘鍍忕殑鍒ゆ柇 鏄垗寮冿紙鎴栬�呰瀵逛簬鏌愪簺闇�姹傚彲浠ユ斁ES鏁版嵁搴撲竴浠斤級杩樻槸杩斿洖
+// 瀵瑰崟甯у浘鍍忕殑鍒ゆ柇 thisSdkDatas  褰撳墠浼犲叆鐨勮繖甯ф暟鎹紝cacheSdkData 瀹氭椂鍣ㄩ噷缂撳瓨鐨勪竴甯ф暟鎹� 娌℃湁灏辫繑鍥瀗il  (thisSdkDatas SdkDatas, cacheSdkDatas SdkDatas)
 func Judge(args *SdkDatas) {
 	if len(args.Sdkdata) > 0 {
 		// 鎷垮埌鏈憚鍍忔満鐨勫尯鍩�
@@ -404,7 +404,7 @@
 			ipcId := sdk.IpcId
 			if ipcId == sdkData.IpcId {
 				for _, areaMap := range sdkData.AreaMapList {
-					duration(groupRule.Rules[j], &areaMap)
+					duration(groupRule.Rules[j], &areaMap, args)
 				}
 			}
 		}
@@ -661,9 +661,9 @@
 				if result.(bool) {
 					logger.Info("___________________________________________________________________鑱斿姩浠诲姟鎶ヨ")
 					args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, "", groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, []Rect{}})
-					logger.Info("-------------------yolo缁撴灉鏍囩", args.RuleResult["yolo"].([]Result))
+					logger.Info("-------------------yolo缁撴灉鏍囩鏈夊嚑涓�", len(args.RuleResult["yolo"].([]Result)))
 					if args.RuleResult["face"] != nil {
-						logger.Info("-------------------face缁撴灉鏍囩", args.RuleResult["face"].([]Arg))
+						logger.Info("-------------------face缁撴灉鏍囩鏈夊嚑涓�", len(args.RuleResult["face"].([]Arg)))
 					}
 					//os.Exit(0)
 				}
@@ -675,7 +675,7 @@
 		logger.Info("杩欏抚鍥惧儚鍦ㄤ换鍔′笅鐨勪竴鏁存潯瑙勫垯涓嬶紙鑱斿姩浠诲姟涓嬪氨鏄窡鏈憚鍍忔満鍍忕浉鍏崇殑灏忚鍒欙級鐨勫垽鏂粨鏋滀负false")
 		// 鎵�浠ヤ篃瑕佸幓缁撴灉鏁扮粍閲屾斁鍊兼垨鏇存柊
 		for _, va := range timeEle.RuleResults {
-			if args.CameraId != "" && va.CameraId == args.CameraId { // arg.CameraId 闅忎究鎵句竴涓暟鎹�
+			if args.CameraId != "" && va.CameraId == args.CameraId {
 				va.Result = strconv.FormatBool(isOk)
 			}
 		}
@@ -824,7 +824,7 @@
 }
 
 // 閮借繃婊ゅ畬鏉′欢涔嬪悗鐪嬬湅鏄惁瑕佸垱寤轰竴涓畾鏃跺櫒鍏冪礌 鍒涘缓瀹氭椂鍣ㄧ殑鏉′欢锛氭槸鍚︽湁闈犲彸琛岋紝涓綋闈欐绛夎嚜甯﹀畾鏃跺櫒鍚箟鐨勭畻娉曚互鍙婃槸鍚︽湁鎸佺画鏃堕棿
-func duration(rule *protomsg.Rule, am *AreaMap) {
+func duration(rule *protomsg.Rule, am *AreaMap, args *SdkDatas) {
 	if rule.PolygonId == am.areaId { // 棣栧厛瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓�  閰嶇疆鐨勭畻娉曡瀵圭殑涓�
 		if rule.SdkArgAlias == "duration" { //
 			// 鍏堢湅鐪嬪畾鏃跺櫒鍏冪礌闃熷垪涓槸鍚︽湁杩欎釜鎽勫儚鏈鸿繖涓尯鍩熺殑瀹氭椂鍣�,濡傛灉鏈夊氨涓嶈兘鍐嶆鍒涘缓浜�
@@ -838,7 +838,7 @@
 
 			if flag {
 				timeLength, _ := strconv.Atoi(rule.SdkArgValue)
-				timeEle := TimeElement{N: timeLength, InitN: timeLength} // 鎵旇繘鍘讳竴涓畾鏃跺櫒鍏冪礌
+				timeEle := TimeElement{N: timeLength, InitN: timeLength, AlarmFlag: false, CacheSdkData: *args} // 鎵旇繘鍘讳竴涓畾鏃跺櫒鍏冪礌
 				//TimeEleList = make(map[string]timeElement)
 				TimeEleList[am.taskId+" "+am.sdkId+" "+am.areaId] = &timeEle // 瀹氭椂鍣ㄥ厓绱犱互鎽勫儚鏈篿d鎷兼帴鍖哄煙id涓洪敭
 				logger.Info("鍒涘缓浜嗚鏁板櫒骞朵笖璁℃暟鍣ㄩ泦鍚堜负锛�", TimeEleList)
diff --git a/ruleserver/timeTicker.go b/ruleserver/timeTicker.go
index feed196..cd6ad55 100644
--- a/ruleserver/timeTicker.go
+++ b/ruleserver/timeTicker.go
@@ -13,13 +13,15 @@
 
 // 瀹氭椂鍣ㄥ厓绱�
 type TimeElement struct {
-	N           int     // 鎸夋椂闂翠緷娆¢�掑噺鐨勫綋鍓嶅��
-	InitN       int     // 璧嬪�煎悗灏变笉鍙樼殑鍒濆鍊�
-	Data        AreaMap //
-	GroupId     string  // 鑱斿姩瑙勫垯闇�瑕佽褰曚笅姝ゆ椂鐨勮鍒欑粍id
-	RuleResults []*RuleResult
+	N            int      // 鎸夋椂闂翠緷娆¢�掑噺鐨勫綋鍓嶅��
+	InitN        int      // 璧嬪�煎悗灏变笉鍙樼殑鍒濆鍊�
+	AlarmFlag	 bool	  // 鎶ヨ鏍囧織浣� 瀹氭椂鍣ㄥ紑鍚悗绗竴娆℃姤璀︽椂浼氳缃负true 寰�鍚庡啀鏉ユ姤璀︿篃涓嶄細鎻掕繘ES
+	CacheSdkData SdkDatas // 瀹氭椂鍣ㄧ殑缂撳瓨鏁版嵁 鎸佺画鏃堕棿绫荤殑寮�鍚畾鏃跺櫒鏃惰缂撳瓨涓�甯�
+	GroupId      string   // 鑱斿姩瑙勫垯闇�瑕佽褰曚笅姝ゆ椂鐨勮鍒欑粍id
+	RuleResults  []*RuleResult
 }
-type RuleResult struct { // 姣忎釜鎽勫儚鏈轰竴涓粨鏋勪綋
+type RuleResult struct {
+	// 姣忎釜鎽勫儚鏈轰竴涓粨鏋勪綋
 	CameraId    string // 鎽勫儚鏈篿d
 	Sort        int32  // 鎽勫儚鏈哄湪瑙勫垯缁勪腑搴忓彿
 	Result      string // 鎽勫儚鏈鸿繃婊ゆ暟鎹緱鍑虹殑缁撴灉
@@ -35,13 +37,17 @@
 		for {
 			select {
 			case <-ticker.C:
-				logger.Info("瀹氭椂鍣ㄦ墽琛屽崟鍏�",time.Now().Unix())
-				fmt.Println("瀹氭椂鍣ㄦ墽琛屽崟鍏�",time.Now().Unix())
+				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.Info("-------------------------------------鎵撳嵃瀹氭椂鍣ㄥ厓绱犲綋鍓嶅��-----------------------------------------锛�",timeEle.N)
+						logger.Info("-------------------------------------鎵撳嵃瀹氭椂鍣ㄥ厓绱犲綋鍓嶅��-----------------------------------------锛�", timeEle.N)
+					}
+					if timeEle.GroupId != "" && timeEle.N == 0{
+						// 璇存槑鏄仈鍔ㄤ换鍔$殑鏃堕棿绐楀彛 鍒扮偣鍎夸簡璇ラ攢姣佷簡,鍐嶆潵浜嗗啀寮�鍚�
+						delete(TimeEleList,k)
 					}
 				}
 			case stop := <-stopChan:
@@ -102,4 +108,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