From f4d1c65c0559142665c4c8370c4c3a170226eea8 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期一, 16 十二月 2019 11:42:36 +0800
Subject: [PATCH] ---
---
labelFilter/ruleForLabel.go | 56 +++++++++++++++++++++++++++++++++-----------------------
1 files changed, 33 insertions(+), 23 deletions(-)
diff --git a/labelFilter/ruleForLabel.go b/labelFilter/ruleForLabel.go
index fa27f8f..17c5015 100644
--- a/labelFilter/ruleForLabel.go
+++ b/labelFilter/ruleForLabel.go
@@ -4,6 +4,7 @@
"basic.com/dbapi.git"
"basic.com/pubsub/protomsg.git"
"basic.com/valib/logger.git"
+ "github.com/golang/protobuf/proto"
"github.com/knetic/govaluate"
"ruleprocess/structure"
"strconv"
@@ -16,11 +17,11 @@
logger.Error("浜嬩欢鎺ㄩ�佹ā鍧楀効鐨勫紓甯告崟鑾凤細",err)
}
}()
-
+ start := time.Now()
// 瑁呴厤鎴愯嚜宸卞彲浠ヨ瘑鍒殑鏁版嵁
label := new(Label)
label.DataFormatToLabel(msg)
- logger.Info("label鐨勪俊鎭細", label.CameraName, label.DefenceLevel, label.Time)
+ //logger.Info("label鐨勪俊鎭細", label.CameraName, label.DefenceLevel, label.Time)
if label.CameraName == "" {
logger.Error("鏃犳晥鏁版嵁锛岀洿鎺ヨ繑鍥�")
return
@@ -28,7 +29,7 @@
//鎷垮埌鎵�鏈夎鍒欑粍
var api dbapi.EventPushApi
b, allRules := api.FindAllDetails()
- logger.Info("鏌ョ湅鎵�鏈夎鍒欑粍锛�", allRules)
+ //logger.Info("鏌ョ湅鎵�鏈夎鍒欑粍锛�", allRules)
if !b {
logger.Error("鏌ヨ鏃堕棿鎺ㄩ�佽鍒欏け璐ワ紒")
}
@@ -83,6 +84,7 @@
logger.Info("閫氳繃瑙勫垯锛岃〃杈惧紡涓猴細", result)
// 鎺ㄩ�佹湇鍔″櫒
pushData(ruleGroup.Urls, msg)
+ logger.Info("鏃堕棿鎺ㄩ�佹墍鐢ㄦ椂闂达細",time.Since(start))
//os.Exit(1)
} else {
logger.Info("娌¢�氳繃瑙勫垯,琛ㄨ揪寮忎负锛�", result)
@@ -98,7 +100,7 @@
// 鏄惁绗﹀悎鏃堕棿瑙勫垯
func timeJudge(label *Label, groupRule protomsg.EventPush) bool {
timeNow := time.Now().Format("2006-01-02 15:04:05")
- logger.Info("鏍囩杩囨护鍣ㄨ捣濮嬫椂闂翠负锛�",groupRule.TimeStart,groupRule.TimeEnd)
+ //logger.Info("鏍囩杩囨护鍣ㄨ捣濮嬫椂闂翠负锛�",groupRule.TimeStart,groupRule.TimeEnd)
flag1 := isBefore(groupRule.TimeStart, timeNow)
flag2 := isBefore(timeNow, groupRule.TimeEnd)
if flag1 && flag2 {
@@ -135,7 +137,7 @@
if rule.TopicArg == "addr" {
formula = "'" + label.CameraAddr + "'" + rule.Operator + "'" + rule.RuleValue + "'"
}
- logger.Info("-------鎵撳嵃鎽勫儚鏈鸿鍒欏叕寮忥細",formula)
+ //logger.Info("-------鎵撳嵃鎽勫儚鏈鸿鍒欏叕寮忥細",formula)
expression, err := govaluate.NewEvaluableExpression(formula);
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
@@ -150,7 +152,7 @@
logger.Info("绗﹀悎鎽勫儚鏈鸿鍒�!")
return "true"
}
- logger.Info("涓嶇鍚堟憚鍍忔満瑙勫垯!")
+ //logger.Info("涓嶇鍚堟憚鍍忔満瑙勫垯!")
return "false"
}
@@ -158,7 +160,7 @@
func baseJudge(label *Label, rule *protomsg.EventPushRule) string {
if rule.RuleValue == "all" {
for _, personGroup := range label.Persons {
- for _, arg := range personGroup.Args {
+ for _, arg := range personGroup.AlarmObj {
if len(arg.Liker) > 0 {
logger.Info("婊¤冻鍏ㄩ儴搴曞簱瑙勫垯")
return "true"
@@ -168,11 +170,11 @@
return "false"
} else {
for _, personGroup := range label.Persons {
- for _, arg := range personGroup.Args {
+ for _, arg := range personGroup.AlarmObj {
for _, liker := range arg.Liker {
formula := "'" + liker.TableId + "'" + rule.Operator + "'" + rule.RuleValue + "'"
expression, err := govaluate.NewEvaluableExpression(formula);
- logger.Info("-------鎵撳嵃搴曞簱瑙勫垯鍏紡锛�",formula)
+ //logger.Info("-------鎵撳嵃搴曞簱瑙勫垯鍏紡锛�",formula)
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
return "false"
@@ -197,7 +199,7 @@
//鏄惁绗﹀悎浜哄憳瑙勫垯
func personJudge(label *Label, rule *protomsg.EventPushRule) string {
for _, personGroup := range label.Persons {
- for _, person := range personGroup.Args {
+ for _, person := range personGroup.AlarmObj {
formula := ""
if rule.TopicArg == "sex" {
formula = strconv.Itoa(int(person.ThftRes.Gender)) + rule.Operator + rule.RuleValue
@@ -212,7 +214,7 @@
// 鍏朵粬杩欎釜鍊煎厛杩欎箞澶勭悊
return "true"
}
- logger.Info("-------鎵撳嵃浜哄憳瑙勫垯鍏紡锛�",formula)
+ //logger.Info("-------鎵撳嵃浜哄憳瑙勫垯鍏紡锛�",formula)
expression, err := govaluate.NewEvaluableExpression(formula);
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
@@ -230,13 +232,13 @@
}
if rule.TopicArg == "monitorLevel" {
if rule.RuleValue == "all" {
- if len(personGroup.Args) > 0 {
+ if len(personGroup.AlarmObj) > 0 {
logger.Info("绗﹀悎浜哄憳绛夌骇涓哄叏閮ㄧ殑瑙勫垯")
return "true"
}
} else {
formula := strconv.Itoa(int(personGroup.AlarmLevel)) + rule.Operator + formate(rule.RuleValue)
- logger.Info("-------鎵撳嵃浜哄憳绛夌骇瑙勫垯鍏紡锛�",formula)
+ //logger.Info("-------鎵撳嵃浜哄憳绛夌骇瑙勫垯鍏紡锛�",formula)
expression, err := govaluate.NewEvaluableExpression(formula);
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
@@ -264,16 +266,16 @@
func defenceJudge(label *Label, rule *protomsg.EventPushRule) string {
if rule.RuleValue == "all" { // 甯冮槻绛夌骇涓哄叏閮ㄦ椂鍙湁鏈夊竷闃茬瓑绾у嵆涓洪�氳繃
if len(label.DefenceLevel) > 0 {
- logger.Info("绗﹀悎甯冮槻绛夌骇瑙勫垯锛屽竷闃茬瓑绾т负鍏ㄩ儴")
+ //logger.Info("绗﹀悎甯冮槻绛夌骇瑙勫垯锛屽竷闃茬瓑绾т负鍏ㄩ儴")
return "true"
} else {
- logger.Info("涓嶇鍚堝竷闃茬瓑绾ц鍒�")
+ //logger.Info("涓嶇鍚堝竷闃茬瓑绾ц鍒�")
return "false"
}
} else {
for _, def := range label.DefenceLevel {
formula := strconv.Itoa(int(def)) + rule.Operator + rule.RuleValue
- logger.Info("-------鎵撳嵃甯冮槻绛夌骇瑙勫垯鍏紡锛�",formula)
+ //logger.Info("-------鎵撳嵃甯冮槻绛夌骇瑙勫垯鍏紡锛�",formula)
expression, err := govaluate.NewEvaluableExpression(formula);
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
@@ -285,11 +287,11 @@
//return "false"
}
if result.(bool) {
- logger.Info("绗﹀悎甯冮槻绛夌骇瑙勫垯!")
+ //logger.Info("绗﹀悎甯冮槻绛夌骇瑙勫垯!")
return "true"
}
}
- logger.Info("涓嶇鍚堝竷闃茬瓑绾ц鍒�")
+ //logger.Info("涓嶇鍚堝竷闃茬瓑绾ц鍒�")
return "false"
}
}
@@ -298,7 +300,7 @@
func taskJudge(label *Label, rule *protomsg.EventPushRule) string {
formula := "'"+label.TaskId +"'"+ rule.Operator +"'"+ rule.RuleValue+"'"
expression, err := govaluate.NewEvaluableExpression(formula);
- logger.Info("-------鎵撳嵃浠诲姟瑙勫垯鍏紡锛�",formula)
+ //logger.Info("-------鎵撳嵃浠诲姟瑙勫垯鍏紡锛�",formula)
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
return "false"
@@ -309,19 +311,27 @@
return "false"
}
if result.(bool) {
- logger.Info("绗﹀悎浠诲姟瑙勫垯!")
+ //logger.Info("绗﹀悎浠诲姟瑙勫垯!")
return "true"
}
- logger.Info("涓嶇鍚堜换鍔¤鍒�")
+ //logger.Info("涓嶇鍚堜换鍔¤鍒�")
return "false"
}
// 璋冪敤鐩爣鏈嶅姟鍣ㄧ殑鎻掑叆鎺ュ彛
func pushData(urls []*protomsg.PushUrl, data structure.ResultMsg) {
for _, url := range urls {
- logger.Debug("鐪嬬湅鎺ㄩ�佸湴鍧�锛�",url.Url)
- urlPool[url.Url] <- data
+ //logger.Debug("鎺ㄩ�佸湴鍧�锛�",url.Url)
+ bytes,err1 := proto.Marshal(data)
+ if err1 != nil {
+ logger.Info("搴忓垪鍖栧け璐ワ細",err1)
+ }
+ if _, ok := urlPool[url.Url] ; ok {
+ urlPool[url.Url] <- bytes
+ }
+
}
+
}
// 鎶婃姤璀︾瓑绾ц浆鍖栨垚姹夊瓧
--
Gitblit v1.8.0