---
panlei
2019-08-08 05efb91c8e0494ef96ff84e90b924c4baa13b75a
labelFilter/ruleForLabel.go
@@ -4,7 +4,6 @@
   "basic.com/dbapi.git"
   "basic.com/pubsub/protomsg.git"
   "github.com/knetic/govaluate"
   "os"
   "ruleprocess/logger"
   "ruleprocess/ruleserver"
   "strconv"
@@ -31,7 +30,11 @@
   for _, ruleGroup := range allRules {
      if ruleGroup.Enable { // 大规则开关开启状态
         // 先过时间规则
         timeJudge(label, ruleGroup)
         timeFlag := timeJudge(label, ruleGroup)
         if !timeFlag {
            logger.Info("不在规则的时间范围内,不推送!")
            return
         }
         result := ""
         var Connector string
         if ruleGroup.IsSatisfyAll {
@@ -73,10 +76,10 @@
               logger.Info("通过规则,表达式为:", result)
               // 推送服务器
               pushData(ruleGroup.Urls, msg)
               os.Exit(1)
               //os.Exit(1)
            } else {
               logger.Info("没通过规则,表达式为:", result)
               os.Exit(1)
               //os.Exit(1)
            }
         }
      }
@@ -86,15 +89,16 @@
}
// 是否符合时间规则
func timeJudge(label *Label, groupRule protomsg.EventPush) string {
func timeJudge(label *Label, groupRule protomsg.EventPush) bool {
   timeNow := time.Now().Format("2006-01-02 15:04:05")
   logger.Info("标签过滤器起始时间为:",groupRule.TimeStart,groupRule.TimeEnd)
   flag1 := isBefore(groupRule.TimeStart, timeNow)
   flag2 := isBefore(timeNow, groupRule.TimeEnd)
   if flag1 && flag2 {
      return "true"
      return true
   } else {
      logger.Info("不在规定的时间范围内!")
      return "false"
      return false
   }
}
@@ -123,6 +127,7 @@
   if rule.TopicArg == "addr" {
      formula = "'" + label.CameraAddr + "'" + rule.Operator + "'" + rule.RuleValue + "'"
   }
   logger.Info("-------打印摄像机规则公式:",formula)
   expression, err := govaluate.NewEvaluableExpression(formula);
   if err != nil {
      logger.Error("表达式有误,请检查!", formula)
@@ -159,6 +164,7 @@
            for _, liker := range arg.Liker {
               formula := "'" + liker.TableId + "'" + rule.Operator + "'" + rule.RuleValue + "'"
               expression, err := govaluate.NewEvaluableExpression(formula);
               logger.Info("-------打印底库规则公式:",formula)
               if err != nil {
                  logger.Error("表达式有误,请检查!", formula)
                  //return "false"
@@ -198,6 +204,7 @@
            // 其他这个值先这么处理
            return "true"
         }
         logger.Info("-------打印人员规则公式:",formula)
         expression, err := govaluate.NewEvaluableExpression(formula);
         if err != nil {
            logger.Error("表达式有误,请检查!", formula)
@@ -221,6 +228,7 @@
            }
         } else {
            formula := strconv.Itoa(int(personGroup.AlarmLevel)) + rule.Operator + formate(rule.RuleValue)
            logger.Info("-------打印人员等级规则公式:",formula)
            expression, err := govaluate.NewEvaluableExpression(formula);
            if err != nil {
               logger.Error("表达式有误,请检查!", formula)
@@ -257,6 +265,7 @@
   } else {
      for _, def := range label.DefenceLevel {
         formula := strconv.Itoa(int(def)) + rule.Operator + formate(rule.RuleValue)
         logger.Info("-------打印布防等级规则公式:",formula)
         expression, err := govaluate.NewEvaluableExpression(formula);
         if err != nil {
            logger.Error("表达式有误,请检查!", formula)
@@ -281,6 +290,7 @@
func taskJudge(label *Label, rule *protomsg.EventPushRule) string {
   formula := "'"+label.TaskId +"'"+ rule.Operator +"'"+ rule.RuleValue+"'"
   expression, err := govaluate.NewEvaluableExpression(formula);
   logger.Info("-------打印任务规则公式:",formula)
   if err != nil {
      logger.Error("表达式有误,请检查!", formula)
      return "false"
@@ -301,7 +311,8 @@
// 调用目标服务器的插入接口
func pushData(urls []*protomsg.PushUrl, data ruleserver.ResultMsg) {
   for _, url := range urls {
      Push(url.Url, data)
      logger.Debug("看看推送地址:",url.Url)
      Push("tcp://192.168.1.123:40012", data)
   }
}