From a215b8990746bef9973641e6a68875273e7924b2 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期五, 12 七月 2019 19:51:42 +0800
Subject: [PATCH] 改造定时器
---
ruleserver/ruleToformula.go | 158 ++++++++++++++++++++++++++++------------------------
1 files changed, 85 insertions(+), 73 deletions(-)
diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index fd32535..fc16429 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 cacheData: SdkDatas
+ RuleResult map[string]interface{} // 杩囧畬瑙勫垯鍚庢墦鐨勬爣绛� face: []Arg, yolo: []Result, cacheData: SdkDatas, timeLabel: 0,1,2,3,4,5
}
// 灏嗕紶閫掕繃鏉ョ殑鍙傛暟杞寲涓�
@@ -449,89 +449,101 @@
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
- }
- }
- }
- //TimerAlarm(args,groupRule.GroupId)
- 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)...)
- }
- }
- }
- 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 {
- return false
- }
+ return false
}
} else {
return false
}
}
-func TimerAlarm(args SdkDatas,groupId string) (int) {
- var flagTime int = 0 // 涓�0鐨勬剰鎬濇槸
- for k, timeEle := range TimeEleList {
+// 鍒ゆ柇鏄惁绗﹀悎瀹氭椂鍣ㄦ潯浠�
+func TimerAlarm(args *SdkDatas,groupId string,result bool) (string) {
+ var flagTime string //
+ // 鍒ゆ柇鏈夋棤姝よ鍒欑粍鐨勫畾鏃跺櫒
+ flag := false
+ for k,_ := range TimeEleList {
if strings.Contains(k, groupId) {
- if timeEle.N == 0 && !timeEle.AlarmFlag { // 杩欑粍瑙勫垯鐨勫畾鏃跺櫒瑕佸叏閮ㄧ瓑浜�0 鏆備笖璁や负涓�缁勮鍒欏彧鏈変竴涓畾鏃跺櫒
- logger.Info("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��-------------棣栨绗﹀悎鎸佺画鏃堕棿瑙勫垯骞舵姤璀�")
- flagTime = 1
- timeEle.AlarmFlag = true
- args.RuleResult["cacheData"] = timeEle.CacheSdkData
+ 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"
+ }
+ }
}
- if timeEle.N == 0 && timeEle.AlarmFlag {
- logger.Info("-------------------------绗﹀悎鎸佺画鏃堕棿瑙勫垯浣嗗苟涓嶆槸棣栨锛屼笉鎶ヨ")
- flagTime = 2
+ } else { // 缁撴灉涓哄亣
+ for k, timeEle := range TimeEleList {
+ if strings.Contains(k, groupId) {
+ timeEle.N = timeEle.InitN // 閲嶇疆瀹氭椂鍣�
+ timeEle.CacheSdkData = SdkDatas{} // 鎶婄紦瀛樻暟鎹墧浜�
+ flagTime = "12"
+ logger.Debug("------------------------------閲嶇疆瀹氭椂鍣�")
+ }
}
+
+ }
+ } else {
+ if result {
+ flagTime = "01"
+ } else {
+ flagTime = "00"
}
}
return flagTime
--
Gitblit v1.8.0