panlei
2019-07-03 033f6617f74471a8178c4375f2034504ba3de421
ruleserver/ruleToformula.go
@@ -4,7 +4,6 @@
   "encoding/json"
   "fmt"
   "log"
   "os"
   "ruleprocess/cache"
   "sort"
   "strconv"
@@ -216,7 +215,7 @@
               if len(temp) > 0 {
                  if ruleList[i].SetType == "linkTask" {
                     // groupId中含有link则为联动任务
                     linkTask(args, ruleList[i], taskId)
                     LinkTask(args, ruleList[i], taskId)
                  } else {
                     // 独立任务的处理
                     RunRule(args, ruleList[i], taskId)
@@ -234,7 +233,7 @@
      }
   }()
   log.Println("+++++++++++规则开始运行+++++++++++++++++当前规则--:",*groupRule)
   log.Println("+++++++++++规则开始运行+++++++++++++++++当前规则--:",(*groupRule).GroupText)
   resultSplice := []*LittleRuleResult{}
   // 先过完条件规则
   for j := 0; j < len(groupRule.Rules); j++ {
@@ -249,13 +248,23 @@
      }
   }
   // 过完条件数据后把符合条件的人脸数据塞进结果标签里
   faces := []Arg{}
   for _, sdkData := range args.Sdkdata {
      for _, areaMap := range sdkData.AreaMapList {
         for j := 0; j < len(groupRule.Rules); j++ {
            args.RuleResult["face"] = putFaceToResult(groupRule.Rules[j], &areaMap)
            faces = append(faces,putFaceToResult(groupRule.Rules[j], &areaMap)...)
         }
      }
   }
   // 配了人脸的算法才把人脸的数据甩出来打标签
   flag := 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" {
         flag = true
      }
   }
   if flag {
      args.RuleResult["face"] = faces
   }
   // 再过其他数据 这步直接得到结果(真或假) 过目标数量
   for j := 0; j < len(groupRule.Rules); j++ {
@@ -324,7 +333,7 @@
            }
         }
         if flag {
            fmt.Println("----------------------------终于走完万里长征")
            fmt.Println("___________________________________________________________________________终于走完万里长征")
            // 如果成功了我应该找到规则中涉及到的sdk,记录下他们的sdkname
            sdkName := ""
            for j := 0; j < len(groupRule.Rules); j++ {
@@ -340,7 +349,6 @@
            }
            if args.RuleResult["face"] != nil {
               log.Println("-------------------face结果标签",args.RuleResult["face"].([]Arg))
               os.Exit(1)
            }
            return true
         } else {
@@ -354,14 +362,14 @@
func putFaceToResult(rule *protomsg.Rule, am *AreaMap) []Arg {
   faces := []Arg{}
   if rule.SdkId == am.sdkId {
   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 {
            log.Println("---------------------------------------------------------------------有这个data",data)
            faces = append(faces, data)
         }
      }
   }
   //log.Println("-----------------------------------------------听说你是空的?",faces)
   return faces
}
@@ -437,7 +445,7 @@
}
// 联动任务的处理
func linkTask(args *SdkDatas, groupRule *protomsg.GroupRule, taskId string) {
func LinkTask(args *SdkDatas, groupRule *protomsg.GroupRule, taskId string) {
   // new一个定时器,如果以此groupId为标志的定时器不存在的话
   var flag bool = true
   var timeEle = TimeElement{N: 3, InitN: 3, GroupId: groupRule.GroupId}
@@ -451,7 +459,7 @@
      timeEle := TimeElement{N: 3, InitN: 3, GroupId: groupRule.GroupId} // 扔进去一个定时器元素
      //TimeEleList = make(map[string]timeElement)
      TimeEleList[groupRule.GroupId] = &timeEle // 定时器元素以规则组id为键
      fmt.Println("创建了计数器并且计数器集合为:", TimeEleList)
      fmt.Println("---------------------------------------------联动任务创建了计数器并且计数器集合为:", TimeEleList)
      // 得出这组完整规则里涉及到几个摄像机,决定着数组里有几个结构体,去重添加方式
      for j := 0; j < len(groupRule.Rules); j++ {
         var flag1 bool = true