---
panlei
2019-07-02 e9ad9550b89f681f06ac0b8461f3aee7f530afa8
ruleserver/ruleToformula.go
@@ -4,6 +4,7 @@
   "encoding/json"
   "fmt"
   "log"
   "os"
   "ruleprocess/cache"
   "sort"
   "strconv"
@@ -336,7 +337,10 @@
            }
            args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkName, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText})
            log.Println("-------------------yolo结果标签",args.RuleResult["yolo"].([]Result))
            log.Println("-------------------face结果标签",args.RuleResult["faces"].([]Arg))
            if args.RuleResult["faces"] != nil {
               log.Println("-------------------face结果标签",args.RuleResult["faces"].([]Arg))
               os.Exit(1)
            }
            return true
         } else {
            return false
@@ -516,11 +520,12 @@
// 过滤规则先筛选出符合条件的目标数量
func filterRule(rule *protomsg.Rule, am *AreaMap) LittleRuleResult {
   if rule.SdkId == "FaceDetect" || rule.SdkId == "FaceCompare" {
   if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a971" {
      // 处理的是人脸算法 如果这条规则配置的是人脸算法,过滤完条件之后直接得出结果,因为肯定没有数量条件,自己拼接
      log.Println("------------------------------------------------------------------------------------------------------------------------------------终于等到你")
      if rule.SdkId == am.sdkId && rule.PolygonId == am.areaId { // 算法和区域都得对的上
         if rule.SdkId == "FaceCompare" {
         if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a971" {
            // 只需要过滤阈值,过滤完后数组长度大于0即为报警,但要考虑如何对每一张都报警呢
            argValue, err := strconv.ParseFloat(rule.SdkArgValue, 64)
            if err != nil {
@@ -554,7 +559,7 @@
            }
            return LittleRuleResult{am.sdkName, rule.RuleWithPre + "" + flag, rule.Sort}
         }
         if rule.SdkId == "FaceDetect" { // 人脸检测
         if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" { // 人脸检测
            if rule.Operator == "==" || rule.Operator == ">=" || rule.Operator == "<=" || rule.Operator == "<" || rule.Operator == ">" || rule.Operator == "!=" {
               // 如果是不规矩的连接符统统返回false 规则也只能判断人脸的相似度,所以不存在别的连接符
               if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 判断的是相似值,占比,尺寸等过滤条件,如果再有,还可以再加