---
panlei
2019-07-22 3eb2097f39be5993a8701e39bcd4dfdf82b2057c
---
1个文件已修改
13 ■■■■ 已修改文件
ruleserver/ruleToformula.go 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/ruleToformula.go
@@ -155,11 +155,7 @@
            sdkName := sdk.SdkName
            logger.Info("规则的ipcId与sdkData的IpcId:", ipcId, "===", sdkData.IpcId)
            if ipcId == sdkData.IpcId {
                logger.Info("当前走的规则的算法是--:", sdkName, "---")
                logger.Info("========================有几个区域:", len(sdkData.AreaMapList))
                for _, areaMap := range sdkData.AreaMapList {
                    logger.Info("检查一下区域的具体数据:", areaMap.areaJson)
                }
                logger.Info("当前走的规则是--:", sdkName, "---","")
                for _, areaMap := range sdkData.AreaMapList {
                    ruleResult := filterRule(groupRule.Rules[j], areaMap)
                    if ruleResult.Result != "" {
@@ -451,6 +447,7 @@
        if rule.PolygonId == am.areaId { // 算法和区域都得对的上
            if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && rule.SdkArgAlias != "time_rule" && rule.SdkArgAlias != "compareBase" {
                logger.Debug("当前小规则是:",rule)
                flag := "false"
                // 把没有相似者的人脸从filterData中删除
                for index := 0; index < len(am.filterData); {
@@ -468,6 +465,7 @@
                return LittleRuleResult{am.sdkName, rule.RuleWithPre + "" + flag, rule.Sort}
            }
            if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" { // 人脸检测
                logger.Debug("当前小规则是:",rule)
                if rule.Operator == "==" || rule.Operator == ">=" || rule.Operator == "<=" || rule.Operator == "<" || rule.Operator == ">" || rule.Operator == "!=" {
                    // 如果是不规矩的连接符统统返回false 规则也只能判断人脸的相似度,所以不存在别的连接符
                    if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 判断的是相似值,占比,尺寸等过滤条件,如果再有,还可以再加
@@ -520,7 +518,7 @@
        // 处理的都是yolo数据
        if rule.PolygonId == am.areaId { // 首先这条规则得是这个算法的规则,其次规则所对应的区域id要跟区域数据的id对的上
            if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 判断的是相似值,占比,尺寸等过滤条件,如果再有,还可以再加
                logger.Info("----------当前条件规则:---------", rule)
                logger.Info("当前小规则是:---------", rule)
                var args []*Arg
                if rule.RuleWithPre == "&&" {
                    args = am.filterData
@@ -569,6 +567,7 @@
func duration(rule *protomsg.Rule, groupId string, am *AreaMap, args *SdkDatas, message *protomsg.SdkMessage) {
    if rule.PolygonId == am.areaId { // 首先规则所对应的区域id要跟区域数据的id对的上  配置的算法要对的上
        if rule.SdkArgAlias == "duration" { //
            logger.Info("当前小规则是:---------", rule)
            // 先看看定时器元素队列中是否有这个摄像机这个区域的定时器,如果有就不能再次创建了
            var flag bool = true
            for k, _ := range TimeEleList {
@@ -592,6 +591,7 @@
// 给数据库的规则表达式代参 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)
            if rule.Operator == "" {
@@ -627,6 +627,7 @@
}
func timeRuleResult(rule *protomsg.Rule, am *AreaMap) LittleRuleResult {
    if rule.PolygonId == am.areaId { // 首先规则所对应的区域id要跟区域数据的id对的上
        logger.Info("当前小规则是:---------", rule)
        if rule.SdkArgAlias == "time_rule" { // 判断是否符合时间规则
            logger.Info("----------当前时间规则:---------", rule)
            // 根据放值字段里存的时间规则的id去另一个表里查需要比对的时间段(比如当前时间是周三,应根据区域id查出其周三的几个布防时间段,数组)