From dfde28cd58daae9f51970f4434d0ab0a01a992a3 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期一, 01 七月 2019 18:14:43 +0800
Subject: [PATCH] 时间规则把==理解为满足,!= 理解为不满足

---
 ruleserver/ruleToformula.go |   20 +++++++++++++++-----
 1 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index 320cbf9..98fae4d 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -215,7 +215,6 @@
 							linkTask(args, ruleList[i], taskId)
 						} else {
 							// 鐙珛浠诲姟鐨勫鐞�
-							log.Println("----------------------------------------64鎽勫儚鏈哄叆鍏�")
 							RunRule(args, ruleList[i], taskId)
 						}
 					}
@@ -225,6 +224,12 @@
 	}
 }
 func RunRule(args *SdkDatas, groupRule *protomsg.GroupRule, taskId string) bool {
+	defer func() {
+		if err := recover(); err != nil {
+			fmt.Println("姣斿瑙勫垯鏈夎", err.(string))
+		}
+
+	}()
 	resultSplice := []*LittleRuleResult{}
 	// 鍏堣繃瀹屾潯浠惰鍒�
 	for j := 0; j < len(groupRule.Rules); j++ {
@@ -290,8 +295,11 @@
 	if completeFormula != "" {
 		log.Println("鐪嬬湅鍏紡-----------锛�", completeFormula)
 		expression, _ := govaluate.NewEvaluableExpression(completeFormula)
-		result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
-		if result.(bool) {
+		if strings.HasPrefix(completeFormula,"&&") || strings.HasPrefix(completeFormula,"||"){
+			panic("瑙勫垯鏈夎锛屽緱鍒扮殑鏁板鍏紡涓嶅彲瑙f瀽")
+		}
+		result,_ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
+		if !result.(bool) {
 			// 缁欒繖甯ф暟鎹墦涓婅鍒欑粍鏍囩
 			//args.RuleResult = append(args.RuleResult, Result{TaskId: taskId, RuleGroupId: groupRule.GroupId})
 			for k, timeEle := range TimeEleList {
@@ -712,11 +720,12 @@
 			now := time.Now()
 			index := getIndexOfWeek(now.Weekday().String())
 			timeList := GetTimeById(rule.SdkArgValue, index)
+			log.Println("褰撳ぉ鐨勬椂闂磋鍒欙細----------",timeList)
 			//fmt.Println("浠庢暟鎹簱涓煡鍑虹殑鏃堕棿瑙勫垯锛�", timeList)
 			// 鍒ゆ柇鍥剧墖鏁版嵁鐨勬椂闂存槸鍚︾鍚堝綋鍓嶈鍒� 鍦ㄤ竴涓嵆涓簍rue锛屽叏涓嶅湪涓篺alse
 			flag := "false"
 			for _, timeSlot := range timeList {
-				if rule.Operator == "satisfy" { // 婊¤冻鎵�閫夌殑鏃堕棿瑙勫垯
+				if rule.Operator == "satisfy" || rule.Operator == "=="{ // 婊¤冻鎵�閫夌殑鏃堕棿瑙勫垯
 					formula := "'" + timeSlot.Start + "'" + "<" + "'" + am.time + "'"
 					expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡
 					result, _ := expression.Evaluate(nil)                      // 寰楀埌鏁板鍏紡鐨勭粨鏋�
@@ -730,7 +739,7 @@
 						break
 					}
 				}
-				if rule.Operator == "unsatisfy" { // 涓嶆弧瓒虫墍閫夌殑鏃堕棿瑙勫垯
+				if rule.Operator == "unsatisfy" || rule.Operator == "!="{ // 涓嶆弧瓒虫墍閫夌殑鏃堕棿瑙勫垯
 					formula := timeSlot.Start + "<" + am.time
 					expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡
 					result, _ := expression.Evaluate(nil)                      // 寰楀埌鏁板鍏紡鐨勭粨鏋�
@@ -775,6 +784,7 @@
 	var cameraTimeRule protomsg.CameraTimerule
 	var api dbapi.CameraApi
 	_, rules := api.FindAllTimeRules()
+	log.Println("鏃堕棿闆嗗悎锛�----------------",rules)
 	for _, rule := range rules {
 		if rule.Id == id {
 			cameraTimeRule = rule

--
Gitblit v1.8.0