panlei
2019-07-22 8f3b9f0dcef90b84c1a3f0c7be71f484c6a84e2f
ruleserver/timeTicker.go
@@ -3,6 +3,7 @@
import (
   "fmt"
   "ruleprocess/logger"
   "strings"
   "time"
)
@@ -66,6 +67,73 @@
   TimeTicker()
}
// 判断是否符合定时器条件
func TimerAlarm(args *SdkDatas,groupId string,result bool) (string) {
   var flagTime string  //
   // 判断有无此规则组的定时器
   flag := false
   for k,_ := range TimeEleList {
      logger.Debug("-----------------看看这个key和groupId",k,groupId)
      if strings.Contains(k, groupId) {
         flag = true
      }
   }
   if flag {     // 有定时器
      if result { // 结果为真
         for k, timeEle := range TimeEleList {
            if strings.Contains(k, groupId) {
               if timeEle.N == 0 && timeEle.AlarmFlag {
                  logger.Debug("-------------------------符合持续时间规则但并不是首次,不报警")
                  flagTime = "11"
                  args.RuleResult["timeLabel"] = flagTime
               }
               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 {
                  flagTime = "00"
                  // 有定时器但不为0把已打的标签删除
                  args.RuleResult = nil
                  logger.Debug("------------------------结果为真但计数器不到0,不报警,此时的计数器的值为:",timeEle.N)
               }
            }
         }
      } else { // 结果为假
         for k, timeEle := range TimeEleList {
            if strings.Contains(k, groupId) {
               if timeEle.AlarmFlag {
                  if timeEle.BufferFlag == 0 {
                     logger.Debug("------------------------------杀死定时器,报警此帧状态改变的数据,此时的计数器的值为",timeEle.N)
                     flagTime = "12"
                     args.RuleResult["timeLabel"] = flagTime
                     delete(TimeEleList,k)
                  } else {
                     if timeEle.BufferFlag > 0 {
                        timeEle.BufferFlag--
                     }
                  }
               } else {
                  delete(TimeEleList,k)
               }
            }
         }
      }
   } else { // 无定时器
      if result {
         flagTime = "01"
         args.RuleResult["timeLabel"] = flagTime
      } else {
         flagTime = "00"
      }
   }
   return flagTime
}
// 结构体根据某字段排序
type SubList []*RuleResult