| | |
| | | |
| | | // 定时器元素 |
| | | type TimeElement struct { |
| | | N int // 按时间依次递减的当前值 |
| | | InitN int // 赋值后就不变的初始值 |
| | | BufferFlag int // 缓冲容错位 连续n帧false才为false |
| | | AlarmFlag bool // 报警标志位 定时器开启后第一次报警时会被置为true 往后再来报警也不会插进ES |
| | | N int // 按时间依次递减的当前值 |
| | | InitN int // 赋值后就不变的初始值 |
| | | BufferFlag int // 缓冲容错位 连续n帧false才为false |
| | | AlarmFlag bool // 报警标志位 定时器开启后第一次报警时会被置为true 往后再来报警也不会插进ES |
| | | CacheSdkData ResultMsg // 定时器的缓存数据 持续时间类的开启定时器时要缓存一帧 |
| | | GroupId string // 联动规则需要记录下此时的规则组id |
| | | GroupId string // 联动规则需要记录下此时的规则组id |
| | | RuleResults []*RuleResult |
| | | } |
| | | type RuleResult struct { |
| | |
| | | for k, timeEle := range TimeEleList { |
| | | if timeEle.N > 0 { |
| | | timeEle.N = timeEle.N - 1 |
| | | logger.Error("-------------------------------------打印定时器元素当前值-----------------------------------------:", timeEle.N) |
| | | logger.Error("-------------------------------------打印定时器计数元素当前值-----------------------------------------:", timeEle.N) |
| | | } |
| | | if timeEle.GroupId != "" && timeEle.N == 0 { |
| | | // 说明是联动任务的时间窗口 到点儿了该销毁了,再来了再创建 |
| | |
| | | TimeTicker() |
| | | } |
| | | |
| | | |
| | | // 判断是否符合定时器条件 |
| | | func TimerAlarm(args *SdkDatas,groupId string,result bool) (string) { |
| | | var flagTime string // |
| | | func TimerAlarm(args *SdkDatas, groupId string, result bool) (string) { |
| | | var flagTime string // |
| | | // 判断有无此规则组的定时器 |
| | | flag := false |
| | | for k,_ := range TimeEleList { |
| | | logger.Debug("-----------------看看这个key和groupId",k,groupId) |
| | | for k, _ := range TimeEleList { |
| | | logger.Debug("-----------------看看这个key和groupId", k, groupId) |
| | | if strings.Contains(k, groupId) { |
| | | flag = true |
| | | } |
| | | } |
| | | if flag { // 有定时器 |
| | | if flag { // 有定时器 |
| | | if result { // 结果为真 |
| | | for k, timeEle := range TimeEleList { |
| | | if strings.Contains(k, groupId) { |
| | |
| | | if timeEle.N != 0 { |
| | | flagTime = "00" |
| | | // 有定时器但不为0把已打的标签删除 |
| | | args.RuleResult = nil |
| | | logger.Debug("------------------------结果为真但计数器不到0,不报警,此时的计数器的值为:",timeEle.N) |
| | | // args.RuleResult = nil |
| | | logger.Debug("------------------------结果为真但计数器不到0,不报警,此时的计数器的值为:", timeEle.N) |
| | | } |
| | | } |
| | | } |
| | |
| | | if strings.Contains(k, groupId) { |
| | | if timeEle.AlarmFlag { |
| | | if timeEle.BufferFlag == 0 { |
| | | logger.Debug("------------------------------杀死定时器,报警此帧状态改变的数据,此时的计数器的值为",timeEle.N) |
| | | logger.Debug("------------------------------杀死定时器,报警此帧状态改变的数据,此时的计数器的值为", timeEle.N) |
| | | flagTime = "12" |
| | | args.RuleResult["timeLabel"] = flagTime |
| | | delete(TimeEleList,k) |
| | | delete(TimeEleList, k) |
| | | } else { |
| | | if timeEle.BufferFlag > 0 { |
| | | timeEle.BufferFlag-- |
| | | } |
| | | } |
| | | } else { |
| | | delete(TimeEleList,k) |
| | | delete(TimeEleList, k) |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } else { // 无定时器 |
| | | if result { |
| | |
| | | } |
| | | return flagTime |
| | | } |
| | | |
| | | // 结构体根据某字段排序 |
| | | type SubList []*RuleResult |
| | | |