From 9951eff77caf327fe9ca07b74e0b6b06d030daf8 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期二, 02 七月 2019 09:48:40 +0800
Subject: [PATCH] 画框测试
---
ruleserver/ruleToformula.go | 84 +++++++++++++++++++++++-------------------
1 files changed, 46 insertions(+), 38 deletions(-)
diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index ca648a2..7df90a0 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -4,12 +4,12 @@
"encoding/json"
"fmt"
"log"
+ "ruleprocess/cache"
"sort"
"strconv"
"strings"
"time"
- "basic.com/dbapi.git"
"basic.com/pubsub/protomsg.git"
"github.com/knetic/govaluate"
)
@@ -159,19 +159,21 @@
// 鏍规嵁鎽勫儚鏈篿d鎷垮埌鎽勫儚鏈烘墍鏈夊尯鍩�
func GetPolygons(cameraId string) []protomsg.CameraPolygon {
- var api dbapi.CameraApi
- data := api.FindAllPolygons()
- //fmt.Println("鏌ュ埌鐨勬墍鏈夊尯鍩燂細", data)
- // 鏍规嵁id浠巑ap涓嬁鍒板尯鍩�
+ //var api dbapi.CameraApi
+ //data := api.FindAllPolygons()
+ ////fmt.Println("鏌ュ埌鐨勬墍鏈夊尯鍩燂細", data)
+ //// 鏍规嵁id浠巑ap涓嬁鍒板尯鍩�
var cameraPolygons []protomsg.CameraPolygon
- for _, item := range data {
- if item.CameraId == cameraId && item.Type != "line" {
- // 闇�瑕佹牴鎹瘮渚嬫妸鍓嶅彴鐢荤殑鍖哄煙鐨勫潗鏍囪浆鍖栦负鐩稿簲鎽勫儚鏈烘媿鎽勭殑鍥惧儚鐨勫ぇ灏� x鍧愭爣鍒嗗埆*image.width/椤甸潰鍖哄煙瀹� y鍧愭爣鍒嗗埆*image.height/椤甸潰鍖哄煙楂�
- // 鍓嶅彴瀹介珮鍥哄畾
- //log.Println("------------绗﹀悎鏉′欢鐨勫尯鍩燂細",item)
- cameraPolygons = append(cameraPolygons, item)
- }
- }
+ //for _, item := range data {
+ // if item.CameraId == cameraId && item.Type != "line" {
+ // // 闇�瑕佹牴鎹瘮渚嬫妸鍓嶅彴鐢荤殑鍖哄煙鐨勫潗鏍囪浆鍖栦负鐩稿簲鎽勫儚鏈烘媿鎽勭殑鍥惧儚鐨勫ぇ灏� x鍧愭爣鍒嗗埆*image.width/椤甸潰鍖哄煙瀹� y鍧愭爣鍒嗗埆*image.height/椤甸潰鍖哄煙楂�
+ // // 鍓嶅彴瀹介珮鍥哄畾
+ // //log.Println("------------绗﹀悎鏉′欢鐨勫尯鍩燂細",item)
+ // cameraPolygons = append(cameraPolygons, item)
+ // }
+ //}
+ cameraPolygons = cache.GetPolygonsByCameraId(cameraId)
+
//log.Println("鏍规嵁鎽勫儚鏈篿d鏌ュ埌鐨勫尯鍩�", cameraPolygons, "--鍖哄煙鏁伴噺涓猴細", len(cameraPolygons))
return cameraPolygons
}
@@ -295,11 +297,11 @@
if completeFormula != "" {
log.Println("鐪嬬湅鍏紡-----------锛�", completeFormula)
expression, _ := govaluate.NewEvaluableExpression(completeFormula)
- result, err := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
- if err != nil {
- panic("寰楀埌鐨勬暟瀛﹀叕寮忎笉鍙В鏋�")
+ if strings.HasPrefix(completeFormula,"&&") || strings.HasPrefix(completeFormula,"||"){
+ panic("瑙勫垯鏈夎锛屽緱鍒扮殑鏁板鍏紡涓嶅彲瑙f瀽")
}
- if result.(bool) {
+ result,_ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
+ if !result.(bool) {
// 缁欒繖甯ф暟鎹墦涓婅鍒欑粍鏍囩
//args.RuleResult = append(args.RuleResult, Result{TaskId: taskId, RuleGroupId: groupRule.GroupId})
for k, timeEle := range TimeEleList {
@@ -314,6 +316,7 @@
for k, timeEle := range TimeEleList {
if strings.Contains(k, taskId) {
if timeEle.N != 0 { // 璺熻繖涓换鍔℃湁鍏崇殑瀹氭椂鍣ㄨ鍏ㄩ儴绛変簬0
+ log.Println("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��-------------涓嶅啢锛屼綘鏄瀹氭椂鍣ㄦ墦璐ョ殑锛�")
flag = false
}
}
@@ -409,16 +412,17 @@
func GetRuleGroup(cameraId string) []*protomsg.TaskGroupArgs {
// 鏌ヨ鏁版嵁搴�
// 绗竴姝ユ煡鍑鸿窡杩欎釜鎽勫儚鏈虹浉鍏崇殑group_id(澶ц鍒�)
- var api dbapi.CameraTaskArgsApi
- all := api.FindAll()
- //fmt.Println("鎵�鏈夎鍒�:", all)
- var taskArgs []*protomsg.TaskGroupArgs
- for _, camArg := range all {
- if camArg.CameraId == cameraId {
- taskArgs = camArg.TaskArgs
- }
- }
- return taskArgs
+ //var api dbapi.CameraTaskArgsApi
+ //
+ ////fmt.Println("鎵�鏈夎鍒�:", all)
+ //var taskArgs []*protomsg.TaskGroupArgs
+ //for _, camArg := range all {
+ // if camArg.CameraId == cameraId {
+ // taskArgs = camArg.TaskArgs
+ // }
+ //}
+ all := cache.GetCameraTaskRulesByCameraId(cameraId)
+ return all
}
// 鑱斿姩浠诲姟鐨勫鐞�
@@ -511,7 +515,6 @@
func filterRule(rule *protomsg.Rule, am *AreaMap) LittleRuleResult {
if rule.SdkId == "FaceDetect" || rule.SdkId == "FaceCompare" {
// 澶勭悊鐨勬槸浜鸿劯绠楁硶 濡傛灉杩欐潯瑙勫垯閰嶇疆鐨勬槸浜鸿劯绠楁硶锛岃繃婊ゅ畬鏉′欢涔嬪悗鐩存帴寰楀嚭缁撴灉锛屽洜涓鸿偗瀹氭病鏈夋暟閲忔潯浠讹紝鑷繁鎷兼帴
- log.Println("------------------------------------------杩樿兘杩涜繖鍎夸簡涓嶆垚锛燂紵锛�")
if rule.SdkId == am.sdkId && rule.PolygonId == am.areaId { // 绠楁硶鍜屽尯鍩熼兘寰楀鐨勪笂
if rule.SdkId == "FaceCompare" {
@@ -608,10 +611,13 @@
var formula string
if rule.SdkArgAlias == "score" {
formula = strconv.FormatFloat(arg.Score, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
+ log.Println("褰撳墠鐩镐技搴﹀皬鍏紡锛�",formula)
} else if rule.SdkArgAlias == "proportion" {
formula = strconv.FormatFloat(arg.Proportion, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
+ log.Println("褰撳墠鍗犳瘮灏忓叕寮忥細",formula)
} else {
formula = strconv.FormatFloat(arg.Size, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
+ log.Println("褰撳墠灏哄灏忓叕寮忥細",formula)
}
expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡
result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
@@ -720,11 +726,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) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
@@ -738,7 +745,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) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
@@ -780,14 +787,15 @@
// 鍙栧嚭鏌愪釜鏃堕棿瑙勫垯鐨勭鍑犲ぉ鐨勮鍒欐闆嗗悎
func GetTimeById(id string, index int) []TimeRange {
- var cameraTimeRule protomsg.CameraTimerule
- var api dbapi.CameraApi
- _, rules := api.FindAllTimeRules()
- for _, rule := range rules {
- if rule.Id == id {
- cameraTimeRule = rule
- }
- }
+ //var cameraTimeRule protomsg.CameraTimerule
+ //var api dbapi.CameraApi
+ //_, rules := api.FindAllTimeRules()
+ //for _, rule := range rules {
+ // if rule.Id == id {
+ // cameraTimeRule = rule
+ // }
+ //}
+ _,cameraTimeRule := cache.GetTimeRuleById(id)
var timeRangeList []day
json.Unmarshal([]byte(cameraTimeRule.TimeRule), &timeRangeList)
for _, timerange := range timeRangeList {
--
Gitblit v1.8.0