panlei
2019-11-16 d09f65efe90826dd76eaf0ca7cc618df9b09c40d
algorithm/static/static.go
@@ -114,18 +114,20 @@
   }
   if len(am.FilterData) < 0 {
      logger.Info("本帧区域内无数据,返回")
      // 清空缓存的目标
      return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "false", rule.Sort}
   }
   m := make(map[string]interface{})
   m["target"] = []structure.Result{}
   m["target"] = append(m["target"].([]structure.Result), structure.Result{args.TaskId, "", "", true, 0, "", am.FilterData, am.AreaJson, false,*lable})
   if structure.StaticMap[am.AreaId] == nil || len(structure.StaticMap[am.AreaId].Targets) == 0 { // 即第一帧数据(也不一定),还没有缓存
   if structure.StaticMap[am.AreaId] == nil || len(structure.StaticMap[am.AreaId].Targets) == 0 {
      logger.Info("之前无缓存并且此次区域内有人")
      objs := []*structure.Obj{}
      for _, tar := range am.FilterData {
         obj := &structure.Obj{Id: tar.Id, Location: tar.Location, N: initN, InitN:initN,AlarmFlag: false, BufferFlag: 10, CacheSdkData:structure.ResultMsg{message, m}}
         obj := &structure.Obj{Id: tar.Id, Location: tar.Location, N: initN, InitN:initN, AlarmFlag: false, BufferFlag: 10, CacheSdkData:structure.ResultMsg{message, m}}
         objs = append(objs, obj)
      }
      structure.StaticMap[am.AreaId] = &structure.CameraArea{objs}
@@ -151,7 +153,6 @@
      // 把满足条件的目标放进areaMap中
      am.AlarmObj = tars
      // 更新数据,把新来的数据写入缓存
      objs := []*structure.Obj{}
      for _, tar := range am.FilterData {
         flag1 := false
         for _, OBJ := range structure.StaticMap[am.AreaId].Targets {
@@ -159,12 +160,11 @@
               flag1 = true
            }
         }
            if !flag1 { // 集合中没有的才插入
            obj := &structure.Obj{Id: tar.Id, Location: tar.Location, N: initN,InitN:initN,AlarmFlag: false, BufferFlag: 10, CacheSdkData: structure.ResultMsg{message, m}}
            objs = append(objs, obj)
         if !flag1 { // 集合中没有的才插入
            obj := &structure.Obj{Id: tar.Id, Location: tar.Location, N: initN, InitN:initN,AlarmFlag: false, BufferFlag: 10, CacheSdkData: structure.ResultMsg{message, m}}
            structure.StaticMap[am.AreaId].Targets = append(structure.StaticMap[am.AreaId].Targets, obj)
         }
      }
      structure.StaticMap[am.AreaId] = &structure.CameraArea{objs}
      return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + flag, rule.Sort}
   }
}
@@ -223,11 +223,14 @@
               if tar.N == 0 && tar.AlarmFlag {
                  logger.Debug("-------------------------符合持续时间规则但并不是首次,不报警")
                  flagTime = "11"
                  o.TimeLable = flagTime
                  o.CacheData = tar.CacheSdkData
               }
               if tar.N == 0 && !tar.AlarmFlag { // 这组规则的定时器要全部等于0   暂且认为一组规则只有一个定时器
                  logger.Debug("———————————-------------首次符合持续时间规则并报警")
                  flagTime = "10"
                  tar.AlarmFlag = true
                  o.TimeLable = flagTime
                  o.CacheData = tar.CacheSdkData
               }
               if tar.N != 0 {