panlei
2019-12-13 34eb10fac7b0cc8ff4f081e9bf1ac8a3124fe0c5
algorithm/middleware/middleware.go
@@ -18,12 +18,44 @@
   resultSplice := []*structure.LittleRuleResult{}
   sdkNames := ""
   polygonId := ""
   // 这步过的是时间段规则(时间段等)
   for j := 0; j < len(groupRule.Rules); j++ {
      for _, sdkData := range args.Sdkdata {
         sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId)
         if err != nil {
            logger.Error("没查到sdk的信息---", err)
         }
         ipcId := sdk.IpcId
         sdkName := sdk.SdkName
         if ipcId == sdkData.IpcId {
            for _, areaMap := range sdkData.AreaMapList {
               ruleResult := timeRuleResult(groupRule.Rules[j], areaMap)
               if ruleResult.Result != "" {
                  if strings.Contains(ruleResult.Result, "false") {
                     return false,"",""  // 不符合时间规则的话直接返回,不再浪费程序执行
                  }
                  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 + " "
                  }
                  if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(polygonId, groupRule.Rules[j].PolygonId) {
                     polygonId += groupRule.Rules[j].PolygonId + ","
                  }
                  resultSplice = append(resultSplice, &ruleResult)
               }
            }
         }
      }
   }
   // 先过完条件规则
   for j := 0; j < len(groupRule.Rules); j++ {
      carFlag := groupRule.Rules[j].SdkArgAlias == "license" ||  groupRule.Rules[j].SdkArgAlias == "nColor" || groupRule.Rules[j].SdkArgAlias == "nConfidence" ||
         groupRule.Rules[j].SdkArgAlias == "nBright" || groupRule.Rules[j].SdkArgAlias == "nTime" ||  groupRule.Rules[j].SdkArgAlias == "nCarBright" || groupRule.Rules[j].SdkArgAlias == "nCarColor" ||
      groupRule.Rules[j].SdkArgAlias == "nCarLogo" || groupRule.Rules[j].SdkArgAlias == "nCarType" ||  groupRule.Rules[j].SdkArgAlias == "nCarModel" || groupRule.Rules[j].SdkArgAlias == "nCarModelConfidence"
      carFlag := groupRule.Rules[j].SdkArgAlias == "license" ||  groupRule.Rules[j].SdkArgAlias == "nConfidence" || groupRule.Rules[j].SdkArgAlias == "fConfidence" ||
         groupRule.Rules[j].SdkArgAlias == "nType" || groupRule.Rules[j].SdkArgAlias == "nVehicleColor1" ||  groupRule.Rules[j].SdkArgAlias == "nVehicleBright" || groupRule.Rules[j].SdkArgAlias == "nCarColor" ||
      groupRule.Rules[j].SdkArgAlias == "fVDConf" || groupRule.Rules[j].SdkArgAlias == "nVehicleColor2" ||  groupRule.Rules[j].SdkArgAlias == "nColor" || groupRule.Rules[j].SdkArgAlias == "nPlateFlag"
      if groupRule.Rules[j].SdkArgAlias == "score" || groupRule.Rules[j].SdkArgAlias == "proportion" || groupRule.Rules[j].SdkArgAlias == "size" ||
         (groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && groupRule.Rules[j].SdkArgAlias != "time_rule") || carFlag{
@@ -200,35 +232,7 @@
         }
      }
   }
   // 这步过的是时间段规则(时间段等)
   for j := 0; j < len(groupRule.Rules); j++ {
      for _, sdkData := range args.Sdkdata {
         sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId)
         if err != nil {
            logger.Error("没查到sdk的信息---", err)
         }
         ipcId := sdk.IpcId
         sdkName := sdk.SdkName
         if ipcId == sdkData.IpcId {
            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 + " "
                  }
                  if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(polygonId, groupRule.Rules[j].PolygonId) {
                     polygonId += groupRule.Rules[j].PolygonId + ","
                  }
                  resultSplice = append(resultSplice, &ruleResult)
               }
            }
         }
      }
   }
   // 将数组按sort排序
   sort.Sort(ruleserver.ResultList(resultSplice))
   // 排序后取各自的结果和连接符拼出规则表达式得出结果