panlei
2019-07-24 0ad8c150817dca075c587f1c2f7b44c407fd1364
ruleserver/ruleToformula.go
@@ -89,6 +89,12 @@
   Location     []Rect // 目标的坐标
   AlarmPolygon string // 触发的报警框
}
// 过规则库打上的标签
type FaceResult struct {
   Result
   Args         []Arg
}
type LittleRuleResult struct {
   SdkName string // 记录下此结果是哪个sdk的结果
   Result  string // 已包含了前置连接符
@@ -293,7 +299,8 @@
            logger.Info("-------------------yolo结果标签长度", len(args.RuleResult["yolo"].([]Result)))
         }
         if args.RuleResult["face"] != nil {
            logger.Info("-------------------face结果标签", len(args.RuleResult["face"].([]Arg)))
            args.RuleResult["face"] = append(args.RuleResult["face"].([]FaceResult), FaceResult{Result{taskId, sdkNames, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, []Rect{}, polygonId},faces})
            logger.Info("-------------------face结果标签", len(args.RuleResult["face"].(FaceResult).Args))
         }
         // 最后过持续时间等时间维度的条件   把时间规则位置调整到这个位置是为了缓存数据
         for j := 0; j < len(groupRule.Rules); j++ {
@@ -518,7 +525,6 @@
      // 处理的都是yolo数据
      if rule.PolygonId == am.areaId { // 首先这条规则得是这个算法的规则,其次规则所对应的区域id要跟区域数据的id对的上
         if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 判断的是相似值,占比,尺寸等过滤条件,如果再有,还可以再加
            logger.Info("当前小规则是:---------", rule)
            var args []*Arg
            if rule.RuleWithPre == "&&" {
               args = am.filterData
@@ -591,8 +597,8 @@
// 给数据库的规则表达式代参 args: 一条子规则,区域数据
func transferParameters(rule *protomsg.Rule, am *AreaMap) LittleRuleResult {
   if rule.PolygonId == am.areaId { // 首先规则所对应的区域id要跟区域数据的id对的上
      logger.Info("当前小规则是:---------", rule)
      if rule.SdkArgAlias == "objCount" { // 如果参数是要区域内目标数量 即yolo 人脸不会有数量
         logger.Info("当前小规则是:---------", rule)
         //logger.Info("得出结果阶段", "比较的规则是:", rule)
         if rule.Operator == "" {
            return LittleRuleResult{am.sdkName, strconv.Itoa(am.targetNum) + "" + rule.RuleWithPre, rule.Sort} // 如果后面不跟操作符就直接返回数量  比如要跟下一个区域比较数量的就直接返回本区域的数量
@@ -627,8 +633,7 @@
}
func timeRuleResult(rule *protomsg.Rule, am *AreaMap) LittleRuleResult {
   if rule.PolygonId == am.areaId { // 首先规则所对应的区域id要跟区域数据的id对的上
      logger.Info("当前小规则是:---------", rule)
      if rule.SdkArgAlias == "time_rule" { // 判断是否符合时间规则
      if rule.SdkArgAlias == "time_rule" { // 判断是否符合时间规
         logger.Info("----------当前时间规则:---------", rule)
         // 根据放值字段里存的时间规则的id去另一个表里查需要比对的时间段(比如当前时间是周三,应根据区域id查出其周三的几个布防时间段,数组)
         //logger.Info("时间规则的测试")