panlei
2019-08-09 d12aede6b0cc9f082a8d64aa2d7194a24c7758f3
ruleserver/ruleToformula.go
@@ -122,7 +122,7 @@
         SdkDataFormat(args.CameraId, arg, cameraPolygons)
      }
      // 跑本摄像机的所有规则组 一组一组跑
      taskGroup := GetRuleGroup(args.CameraId, args.TaskId) // 本摄像机下所有任务组
      taskGroup := GetRuleGroup(args.CameraId, args.TaskId) // 本摄像机本任务下所有规则组
      //logger.Println("看下摄像机下的任务组:",taskRuleList)
      // 得到属于该摄像机的若干组任务的完整规则(跟每一条完整规则比较之后得出本张图像对于某个规则是否报警的结果。放进map,比如本帧图像的id,所碰撞成功的规则id)
      args.RuleResult = make(map[string]interface{})
@@ -190,6 +190,10 @@
               ruleResult := filterRule(groupRule.Rules[j], areaMap)
               if ruleResult.Result != "" {
                  logger.Info("条件规则结果:", ruleResult.Result)
                  // 如果结果为真,把这条规则中的区域置为有效
                  if strings.Contains(ruleResult.Result,"true") {
                     areaMap.isEffective = true
                  }
                  // 如果此结果为真且当前过的是yolo算法,应记下此规则所对应的sdkName,另外,还要去重 (后加:把此条触碰的区域id也记录下来)
                  if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
                     sdkNames = sdkName + ","
@@ -219,6 +223,9 @@
            for _, areaMap := range sdkData.AreaMapList {
               ruleResult := transferParameters(groupRule.Rules[j], areaMap)
               if ruleResult.Result != "" {
                  if strings.Contains(ruleResult.Result,"true") {
                     areaMap.isEffective = true
                  }
                  logger.Info("数量规则结果:", ruleResult.Result)
                  if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
                     sdkNames = sdkName + ","
@@ -245,6 +252,9 @@
            for _, areaMap := range sdkData.AreaMapList {
               ruleResult := timeRuleResult(groupRule.Rules[j], areaMap)
               if ruleResult.Result != "" {
                  if strings.Contains(ruleResult.Result,"true") {
                     areaMap.isEffective = true
                  }
                  logger.Info("时间规则结果:", ruleResult.Result)
                  if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
                     sdkNames = sdkName + ","
@@ -320,7 +330,9 @@
            for _, sdkData := range args.Sdkdata {
               if sdkData.IpcId == "A8B73405-373D-4F23-CED2-A617EBD7EC55" && faceFlag { // sdkData里有人脸数据且配置了算法才把符合条件的数据塞进标签里去
                  for _, areaMap := range sdkData.AreaMapList {
                     faces = append(faces, putFaceToResult(areaMap, faces)...)
                     if areaMap.isEffective {
                        faces = append(faces, putFaceToResult(areaMap, faces)...)
                     }
                  }
               }
            }