From 4452794b46d66af2f83878855af7571857d946fa Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期四, 05 十二月 2019 18:24:53 +0800
Subject: [PATCH] 多协程模式
---
algorithm/static/static.go | 64 ++++++++++++++++++-------------
1 files changed, 37 insertions(+), 27 deletions(-)
diff --git a/algorithm/static/static.go b/algorithm/static/static.go
index 75fec1f..08d09da 100644
--- a/algorithm/static/static.go
+++ b/algorithm/static/static.go
@@ -2,7 +2,7 @@
import (
"basic.com/pubsub/protomsg.git"
- "basic.com/valib/logger.git"
+ logger "github.com/alecthomas/log4go"
"github.com/knetic/govaluate"
"ruleprocess/ruleserver"
"ruleprocess/structure"
@@ -45,13 +45,13 @@
var formula string
if rule.SdkArgAlias == "score" {
formula = strconv.FormatFloat(arg.Score, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
- logger.Info("褰撳墠鐩镐技搴﹀皬鍏紡锛�", formula)
+ //logger.Info("褰撳墠鐩镐技搴﹀皬鍏紡锛�", formula)
} else if rule.SdkArgAlias == "proportion" {
formula = strconv.FormatFloat(arg.Proportion, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
- logger.Info("褰撳墠鍗犳瘮灏忓叕寮忥細", formula)
+ //logger.Info("褰撳墠鍗犳瘮灏忓叕寮忥細", formula)
} else {
formula = strconv.FormatFloat(arg.Size, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
- logger.Info("褰撳墠灏哄灏忓叕寮忥細", formula)
+ //logger.Info("褰撳墠灏哄灏忓叕寮忥細", formula)
}
expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡
result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
@@ -103,7 +103,7 @@
logger.Error("涓綋闈欐瑙勫垯鏈夎", err)
}
}()
- logger.Info("璧颁簡涓綋闈欐鏍稿績绠楁硶")
+ //logger.Info("璧颁簡涓綋闈欐鏍稿績绠楁硶")
initN := 5
if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a977" && rule.SdkArgAlias == "duration" {
if init,err := strconv.Atoi(rule.SdkArgValue); err != nil {
@@ -112,39 +112,47 @@
initN = init
}
}
- if (structure.StaticMap[am.AreaId] == nil || len(structure.StaticMap[am.AreaId].Targets) == 0) && len(am.FilterData) > 0 { // 鍗崇涓�甯ф暟鎹�(涔熶笉涓�瀹�)锛岃繕娌℃湁缂撳瓨
- logger.Info("涔嬪墠鏃犵紦瀛樺苟涓旀娆″尯鍩熷唴鏈変汉")
- args.RuleResult["target"] = []structure.Result{}
- args.RuleResult["target"] = append(args.RuleResult["target"].([]structure.Result), structure.Result{args.TaskId, "", "", true, 0, "", am.FilterData, am.AreaJson, false,nil})
+ if len(am.FilterData) < 0 {
+ logger.Info("鏈抚鍖哄煙鍐呮棤鏁版嵁锛岃繑鍥�")
+ // 娓呯┖缂撳瓨鐨勭洰鏍�
+
+ return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "false", rule.Sort}
+ }
+ m := make(map[string]interface{})
+ m["target"] = []structure.Result{}
+ m["target"] = append(m["target"].([]structure.Result), structure.Result{args.TaskId, "", "", true, 0, "", am.FilterData, am.AreaJson, false,*lable})
+
+ if structure.StaticMap[am.AreaId] == nil || len(structure.StaticMap[am.AreaId].Targets) == 0 {
+ //logger.Info("涔嬪墠鏃犵紦瀛樺苟涓旀娆″尯鍩熷唴鏈変汉")
+
objs := []*structure.Obj{}
for _, tar := range am.FilterData {
- obj := &structure.Obj{Id: tar.Id, Location: tar.Location, N: initN,InitN:initN,CacheSdkData:structure.ResultMsg{message, args.RuleResult}}
+ obj := &structure.Obj{Id: tar.Id, Location: tar.Location, N: initN, InitN:initN, AlarmFlag: false, BufferFlag: 10, CacheSdkData:structure.ResultMsg{message, m}}
objs = append(objs, obj)
}
structure.StaticMap[am.AreaId] = &structure.CameraArea{objs}
return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "false", rule.Sort}
} else {
- logger.Info("涔嬪墠鏈夌紦瀛�")
+ //logger.Info("涔嬪墠鏈夌紦瀛�")
flag := "false"
// 浠ヤ箣鍓嶉潤姝㈢殑瀵硅薄涓轰富鍒ゆ柇鏄惁闈欐
tars := []*structure.Arg{}
- logger.Info("鐪嬩竴涓嬮潤姝㈠尯鍩熷唴鐨勭洰鏍囷細",am.AreaId)
+ //logger.Info("鐪嬩竴涓嬮潤姝㈠尯鍩熷唴鐨勭洰鏍囷細",am.AreaId)
+ //for _, tar := range structure.StaticMap[am.AreaId].Targets {
+ // logger.Info("鍏蜂綋鐩爣锛�",tar.Location)
+ //}
for _, tar := range structure.StaticMap[am.AreaId].Targets {
- logger.Info("鍏蜂綋鐩爣锛�",tar.Location)
- }
- for _, tar := range structure.StaticMap[am.AreaId].Targets {
- singleResult,arg := SingleStatic(tar,am,lable,90)
+ singleResult,arg := SingleStatic(tar,am,lable,95)
if singleResult {
flag = "true"
tars = append(tars,arg)
- logger.Info("闈欐鐨勭洰鏍囷細",arg.Id,arg.Location,arg.Score)
+ //logger.Info("闈欐鐨勭洰鏍囷細",arg.Id,arg.Location,arg.Score)
}
}
// 鎶婃弧瓒虫潯浠剁殑鐩爣鏀捐繘areaMap涓�
am.AlarmObj = tars
// 鏇存柊鏁版嵁,鎶婃柊鏉ョ殑鏁版嵁鍐欏叆缂撳瓨
- objs := []*structure.Obj{}
for _, tar := range am.FilterData {
flag1 := false
for _, OBJ := range structure.StaticMap[am.AreaId].Targets {
@@ -153,11 +161,10 @@
}
}
if !flag1 { // 闆嗗悎涓病鏈夌殑鎵嶆彃鍏�
- obj := &structure.Obj{Id: tar.Id, Location: tar.Location, N: initN,InitN:initN,AlarmFlag: false, BufferFlag: 10, CacheSdkData: structure.ResultMsg{message, nil}}
- objs = append(objs, obj)
+ obj := &structure.Obj{Id: tar.Id, Location: tar.Location, N: initN, InitN:initN,AlarmFlag: false, BufferFlag: 10, CacheSdkData: structure.ResultMsg{message, m}}
+ structure.StaticMap[am.AreaId].Targets = append(structure.StaticMap[am.AreaId].Targets, obj)
}
}
- structure.StaticMap[am.AreaId] = &structure.CameraArea{objs}
return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + flag, rule.Sort}
}
}
@@ -178,7 +185,7 @@
// 鍒ゆ柇涓�涓洰鏍囨槸鍚﹂潤姝簡鎸囧畾鏃堕棿
func SingleStatic(person *structure.Obj, am *structure.AreaMap,lable *structure.Others, argValue float64) (bool,*structure.Arg){
- logger.Info("鍗曚釜鐩爣鐨勫垽鏂細")
+ //logger.Info("鍗曚釜鐩爣鐨勫垽鏂細")
flag := false
var o *structure.Arg = nil
for _, obj := range am.FilterData {
@@ -211,23 +218,26 @@
rw.Lock()
if result { // 缁撴灉涓虹湡
- for k, tar := range structure.StaticMap[areaId].Targets {
+ for _, tar := range structure.StaticMap[areaId].Targets {
if tar.Id == person.Id {
if tar.N == 0 && tar.AlarmFlag {
- logger.Debug("-------------------------绗﹀悎鎸佺画鏃堕棿瑙勫垯浣嗗苟涓嶆槸棣栨锛屼笉鎶ヨ")
+ //logger.Debug("-------------------------绗﹀悎鎸佺画鏃堕棿瑙勫垯浣嗗苟涓嶆槸棣栨锛屼笉鎶ヨ")
flagTime = "11"
+ o.TimeLable = flagTime
+ o.CacheData = tar.CacheSdkData
}
if tar.N == 0 && !tar.AlarmFlag { // 杩欑粍瑙勫垯鐨勫畾鏃跺櫒瑕佸叏閮ㄧ瓑浜�0 鏆備笖璁や负涓�缁勮鍒欏彧鏈変竴涓畾鏃跺櫒
logger.Debug("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��-------------棣栨绗﹀悎鎸佺画鏃堕棿瑙勫垯骞舵姤璀�")
flagTime = "10"
tar.AlarmFlag = true
+ o.TimeLable = flagTime
o.CacheData = tar.CacheSdkData
}
if tar.N != 0 {
flagTime = "00"
// 鏈夊畾鏃跺櫒浣嗕笉涓�0鎶婂凡鎵撶殑鏍囩鍒犻櫎
// args.RuleResult = nil
- logger.Debug("------------------------缁撴灉涓虹湡浣嗚鏁板櫒涓嶅埌0锛屼笉鎶ヨ,姝ゆ椂鐨勮鏁板櫒", k, "鐨勫�间负锛�", tar.N)
+ //logger.Debug("------------------------缁撴灉涓虹湡浣嗚鏁板櫒涓嶅埌0锛屼笉鎶ヨ,姝ゆ椂鐨勮鏁板櫒", k, "鐨勫�间负锛�", tar.N)
}
}
}
@@ -236,7 +246,7 @@
if tar.Id == person.Id {
if tar.AlarmFlag {
if tar.BufferFlag == 0 {
- logger.Debug("------------------------------鏉�姝昏鏁板櫒锛屾姤璀︽甯х姸鎬佹敼鍙樼殑鏁版嵁锛屾鏃剁殑璁℃暟鍣ㄧ殑鍊间负", tar.N)
+ //logger.Debug("------------------------------鏉�姝昏鏁板櫒锛屾姤璀︽甯х姸鎬佹敼鍙樼殑鏁版嵁锛屾鏃剁殑璁℃暟鍣ㄧ殑鍊间负", tar.N)
flagTime = "12"
structure.StaticMap[areaId].Targets = append(structure.StaticMap[areaId].Targets[:index],structure.StaticMap[areaId].Targets[index+1:]...)
} else {
@@ -246,7 +256,7 @@
}
}
} else {
- logger.Debug("-----------缁撴灉涓哄亣涓斾笉鍒�0锛屾潃姝诲畾鏃跺櫒")
+ //logger.Debug("-----------缁撴灉涓哄亣涓斾笉鍒�0锛屾潃姝诲畾鏃跺櫒")
structure.StaticMap[areaId].Targets = append(structure.StaticMap[areaId].Targets[:index],structure.StaticMap[areaId].Targets[index+1:]...)
}
}
--
Gitblit v1.8.0