panlei
2019-09-04 b4814201252dd4d01173ac30f5fdf7af78db5aee
face link fix bug
1个文件已修改
33 ■■■■ 已修改文件
ruleserver/ruleToformula.go 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/ruleToformula.go
@@ -161,7 +161,7 @@
    }
}
func RunRule(args *SdkDatas, groupRule *protomsg.GroupRule, taskId string, message *protomsg.SdkMessage, label Others) bool {
func RunRule(args *SdkDatas, groupRule *protomsg.GroupRule, taskId string, message *protomsg.SdkMessage, label Others) (bool,[]int) {
    defer func() {
        if err := recover(); err != nil {
            logger.Error("比对规则有误", err.(string))
@@ -357,27 +357,30 @@
                } else {
                    islink = false
                }
                var labelTypes []int // 0为yolo标签,1为face标签 2为两者标签
                if sdkNames != "" {
                    args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, locations, polygonId, islink,label,})
                    labelTypes = append(labelTypes,0)
                    //logger.Info("-------------------yolo结果标签长度", len(args.RuleResult["yolo"].([]Result)))
                }
                if faceFlag {
                    args.RuleResult["face"] = append(args.RuleResult["face"].([]FaceResult), FaceResult{Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, []Rect{}, polygonId, islink,label,}, faces})
                    //logger.Info("-------------------face结果标签", len(args.RuleResult["face"].([]FaceResult)))
                    labelTypes = append(labelTypes,1)
                }
                return true
                return true,labelTypes
            } else {
                return false
                return false,[]int{}
            }
        } else {
            // 结果为假时也要走,有杀死定时器的操作
            TimerAlarm(&label, groupRule.GroupId, result.(bool))
            //fmt.Println(timeFlag)
            return false
            return false,[]int{}
        }
    } else {
        return false
        return false,[]int{}
    }
}
@@ -442,7 +445,7 @@
        }
    }
    // 往数组里赋值
    isOk := RunRule(args, groupRule, taskId, message, label)
    isOk,labelTypes := RunRule(args, groupRule, taskId, message, label)
    if isOk {
        logger.Info("这帧图像在任务下的一整条规则下(联动任务下就是跟本摄像机像相关的小规则)的判断结果为true")
        // 根据cameraId去更新或者插入结果,然后判断是否数组是否可以得出报警的结论
@@ -515,10 +518,22 @@
        } else {
            logger.Warn("数组不圆满不打标签")
            // 倒是把打的组规则标签给去掉了啊
            if len(args.RuleResult["yolo"].([]Result)) > 1 {
                lens := len(args.RuleResult["yolo"].([]Result))-1
                args.RuleResult["yolo"] = args.RuleResult["yolo"].([]Result)[0:lens]
            for _,val := range labelTypes {
                if val == 0 {
                    if len(args.RuleResult["yolo"].([]Result)) > 1 {
                        lens := len(args.RuleResult["yolo"].([]Result))-1
                        args.RuleResult["yolo"] = args.RuleResult["yolo"].([]Result)[0:lens]
                    }
                }
                if val == 1 {
                    if len(args.RuleResult["face"].([]FaceResult)) > 1 {
                        lens := len(args.RuleResult["face"].([]FaceResult))-1
                        args.RuleResult["face"] = args.RuleResult["face"].([]FaceResult)[0:lens]
                    }
                }
            }
        }
    } else { // 没有报警,
        //logger.Info("这帧图像在任务下的一整条规则下(联动任务下就是跟本摄像机像相关的小规则)的判断结果为false")