| | |
| | | for _, rule := range ruleGroup.Rules { |
| | | // 过每一个小规则 |
| | | if rule.TopicType == "camera" { |
| | | result = Connector + cameraJudge(label, rule) |
| | | result += Connector + cameraJudge(label, rule) |
| | | } |
| | | if rule.TopicType == "dbtable" { |
| | | result = Connector + baseJudge(label, rule) |
| | | result += Connector + baseJudge(label, rule) |
| | | } |
| | | if rule.TopicType == "task" { |
| | | result = Connector + taskJudge(label, rule) |
| | | result += Connector + taskJudge(label, rule) |
| | | } |
| | | if rule.TopicType == "person" { |
| | | result = Connector + taskJudge(label, rule) |
| | | result += Connector + taskJudge(label, rule) |
| | | } |
| | | if rule.TopicType == "alarmLevel" { |
| | | result = Connector + defenceJudge(label, rule) |
| | | result += Connector + defenceJudge(label, rule) |
| | | } |
| | | } |
| | | // 得出总的判断结果 |
| | |
| | | expression, err := govaluate.NewEvaluableExpression(result); |
| | | if err != nil { |
| | | logger.Error("表达式有误,请检查!") |
| | | return |
| | | } |
| | | result, err1 := expression.Evaluate(nil) |
| | | if err1 != nil { |
| | |
| | | expression, err := govaluate.NewEvaluableExpression("t1 < t2"); |
| | | if err != nil { |
| | | logger.Error("表达式有误,请检查!") |
| | | return false |
| | | } |
| | | parameters := make(map[string]interface{}, 8) |
| | | parameters["t1"] = time1 |
| | |
| | | if rule.TopicArg == "addr" { |
| | | formula = "'" + label.CameraAddr + "'" + rule.Operator + "'" + rule.RuleValue + "'" |
| | | } |
| | | logger.Info("-------打印摄像机规则公式:",formula) |
| | | expression, err := govaluate.NewEvaluableExpression(formula); |
| | | if err != nil { |
| | | logger.Error("表达式有误,请检查!", formula) |
| | |
| | | for _, liker := range arg.Liker { |
| | | formula := "'" + liker.TableId + "'" + rule.Operator + "'" + rule.RuleValue + "'" |
| | | expression, err := govaluate.NewEvaluableExpression(formula); |
| | | logger.Info("-------打印底库规则公式:",formula) |
| | | if err != nil { |
| | | logger.Error("表达式有误,请检查!", formula) |
| | | //return "false" |
| | | return "false" |
| | | } |
| | | result, err1 := expression.Evaluate(nil) |
| | | if err1 != nil { |
| | |
| | | // 其他这个值先这么处理 |
| | | return "true" |
| | | } |
| | | logger.Info("-------打印人员规则公式:",formula) |
| | | expression, err := govaluate.NewEvaluableExpression(formula); |
| | | if err != nil { |
| | | logger.Error("表达式有误,请检查!", formula) |
| | | //return "false" |
| | | return "false" |
| | | } |
| | | result, err1 := expression.Evaluate(nil) |
| | | if err1 != nil { |
| | |
| | | } |
| | | } else { |
| | | formula := strconv.Itoa(int(personGroup.AlarmLevel)) + rule.Operator + formate(rule.RuleValue) |
| | | logger.Info("-------打印人员等级规则公式:",formula) |
| | | expression, err := govaluate.NewEvaluableExpression(formula); |
| | | if err != nil { |
| | | logger.Error("表达式有误,请检查!", formula) |
| | | //return "false" |
| | | return "false" |
| | | } |
| | | result, err1 := expression.Evaluate(nil) |
| | | if err1 != nil { |
| | |
| | | } |
| | | } else { |
| | | for _, def := range label.DefenceLevel { |
| | | formula := strconv.Itoa(int(def)) + rule.Operator + formate(rule.RuleValue) |
| | | formula := strconv.Itoa(int(def)) + rule.Operator + rule.RuleValue |
| | | logger.Info("-------打印布防等级规则公式:",formula) |
| | | expression, err := govaluate.NewEvaluableExpression(formula); |
| | | if err != nil { |
| | | logger.Error("表达式有误,请检查!", formula) |
| | | //return "false" |
| | | return "false" |
| | | } |
| | | result, err1 := expression.Evaluate(nil) |
| | | if err1 != nil { |
| | |
| | | func taskJudge(label *Label, rule *protomsg.EventPushRule) string { |
| | | formula := "'"+label.TaskId +"'"+ rule.Operator +"'"+ rule.RuleValue+"'" |
| | | expression, err := govaluate.NewEvaluableExpression(formula); |
| | | logger.Info("-------打印任务规则公式:",formula) |
| | | if err != nil { |
| | | logger.Error("表达式有误,请检查!", formula) |
| | | return "false" |