panlei
2019-07-04 23e956b0a7e0f79f34d2113b0fa1154bef3e6643
ruleserver/ruleToformula.go
@@ -138,6 +138,7 @@
   RuleGroupId string // 规则组id
   AlarmLevel  int32  // 报警等级
   RuleText    string // 文字版规则组
   Location    []Rect
}
type LittleRuleResult struct {
   SdkName string // 记录下此结果是哪个sdk的结果
@@ -296,10 +297,8 @@
      if strings.HasPrefix(completeFormula,">") || strings.HasPrefix(completeFormula,"<") {
         completeFormula = completeFormula[1:len(completeFormula)-1]
      }
      log.Println("-------------------看看拔毛后的表达式:",completeFormula)
      expression, _ := govaluate.NewEvaluableExpression(completeFormula)
      if strings.HasPrefix(completeFormula, "&&") || strings.HasPrefix(completeFormula, "||") {
         panic("规则有误,得到的数学公式不可解析")
      }
      result, _ := expression.Evaluate(nil) // 得到数学公式的结果
      return result.(bool)
   }
@@ -362,7 +361,26 @@
               }
            }
            if sdkName != "" {
               args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkName, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText})
               // 把他们的位置数据也传下去
               locations := []Rect{}
               for _, sdkData := range args.Sdkdata {
                  for _, areaMap := range sdkData.AreaMapList {
                     for j := 0; j < len(groupRule.Rules); j++ {
                        locations = append(locations, putYolosToResult(groupRule.Rules[j], &areaMap)...)
                     }
                  }
               }
               //// 配了人脸的算法才把人脸的数据甩出来打标签
               //flag11 := false
               //for j := 0; j < len(groupRule.Rules); j++ {
               //   if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a971" {
               //      flag11 = true
               //   }
               //}
               //if flag11 {
               //   args.RuleResult["face"] = faces
               //}
               args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkName, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText,locations})
               log.Println("-------------------yolo结果标签", args.RuleResult["yolo"].([]Result))
            }
            if args.RuleResult["face"] != nil {
@@ -389,6 +407,19 @@
   }
   //log.Println("-----------------------------------------------听说你是空的?",faces)
   return faces
}
func putYolosToResult(rule *protomsg.Rule, am *AreaMap) []Rect {
   locations := []Rect{}
   if rule.SdkId == am.sdkId && rule.SdkId != "812b674b-2375-4589-919a-5c1c3278a97e" && rule.SdkId != "812b674b-2375-4589-919a-5c1c3278a971" {
      if len(am.filterData) > 0 {
         for _, data := range am.filterData {
            locations = append(locations, data.Location)
         }
      }
   }
   //log.Println("-----------------------------------------------听说你是空的?",faces)
   return locations
}
// 计算区域内的目标数量以及将相似度、占比、尺寸等打包
@@ -535,7 +566,7 @@
                  }
               }
               if sdkName != "" {
                  args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkName, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText})
                  args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkName, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText,[]Rect{}})
                  log.Println("-------------------yolo结果标签", args.RuleResult["yolo"].([]Result))
               }
               if args.RuleResult["face"] != nil {