From 5bcdce542498b33f514d7de197c45aa1cb6fb024 Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期五, 15 十一月 2019 14:26:36 +0800 Subject: [PATCH] --- --- algorithm/static/static.go | 54 ++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 38 insertions(+), 16 deletions(-) diff --git a/algorithm/static/static.go b/algorithm/static/static.go index f652775..b4b2b90 100644 --- a/algorithm/static/static.go +++ b/algorithm/static/static.go @@ -16,7 +16,10 @@ if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" || rule.SdkArgAlias == "" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔� return filterRule(rule, am) } else if rule.SdkArgAlias == "duration" { - return CompareAndSave(rule,am,lable,args,message) + + lr := CompareAndSave(rule,am,lable,args,message) + logger.Info("涓綋闈欐瑙勫垯缁撴灉锛�",lr) + return lr } else { return structure.LittleRuleResult{} } @@ -95,6 +98,12 @@ } // 鍒ゆ柇涓�涓尯鍩熷唴鏈夋病鏈夐潤姝㈢殑鐩爣 func CompareAndSave(rule *protomsg.Rule, am *structure.AreaMap,lable *structure.Others,args *structure.SdkDatas,message *protomsg.SdkMessage) structure.LittleRuleResult { + defer func() { + if err := recover(); err != nil { + logger.Error("涓綋闈欐瑙勫垯鏈夎", err) + } + }() + logger.Info("璧颁簡涓綋闈欐鏍稿績绠楁硶") initN := 5 if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a977" && rule.SdkArgAlias == "duration" { if init,err := strconv.Atoi(rule.SdkArgValue); err != nil { @@ -103,20 +112,35 @@ initN = init } } - if len(structure.StaticMap[am.AreaId].Targets) == 0 { // 鍗崇涓�甯ф暟鎹�(涔熶笉涓�瀹�)锛岃繕娌℃湁缂撳瓨 + 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} + obj := &structure.Obj{Id: tar.Id, Location: tar.Location, N: initN, InitN:initN, 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("涔嬪墠鏈夌紦瀛�") flag := "false" // 浠ヤ箣鍓嶉潤姝㈢殑瀵硅薄涓轰富鍒ゆ柇鏄惁闈欐 tars := []*structure.Arg{} + //logger.Info("鐪嬩竴涓嬮潤姝㈠尯鍩熷唴鐨勭洰鏍囷細",am.AreaId) + //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) @@ -135,8 +159,8 @@ flag1 = true } } - if !flag1 { // 闆嗗悎涓病鏈夌殑鎵嶆彃鍏� - obj := &structure.Obj{Id: tar.Id, Location: tar.Location, N: initN,InitN:initN,AlarmFlag: false, BufferFlag: 10, CacheSdkData: structure.ResultMsg{message, nil}} + if !flag1 { // 闆嗗悎涓病鏈夌殑鎵嶆彃鍏� + 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) } } @@ -161,34 +185,36 @@ // 鍒ゆ柇涓�涓洰鏍囨槸鍚﹂潤姝簡鎸囧畾鏃堕棿 func SingleStatic(person *structure.Obj, am *structure.AreaMap,lable *structure.Others, argValue float64) (bool,*structure.Arg){ + logger.Info("鍗曚釜鐩爣鐨勫垽鏂細") flag := false var o *structure.Arg = nil for _, obj := range am.FilterData { if person.Id == obj.Id { coincidenceDegree := PgsInterPercent(Rect2Point(person.Location), obj.Location, 1, 1) + logger.Info("鍒ゆ柇鐩爣鐨勯噸鍚堝害",coincidenceDegree) o = obj if coincidenceDegree >= argValue { flag = true } } } - if flag { // 鏈変竴涓璞′繚鎸侀潤姝紙id鐩哥瓑骞朵笖閲嶅悎搴﹂珮浜庨槇鍊硷級 - flagTime := TimerAlarm(lable,person,flag,am.AreaId) + if flag { // 褰撳墠妫�娴嬪璞′繚鎸侀潤姝紙id鐩哥瓑骞朵笖閲嶅悎搴﹂珮浜庨槇鍊硷級 + flagTime := TimerAlarm(o,person,flag,am.AreaId) if flagTime == "10" || flagTime == "11" { return flag,o } else { return false,o } } else { - TimerAlarm(lable,person,flag,am.AreaId) + TimerAlarm(o,person,flag,am.AreaId) return flag,o } } var rw sync.RWMutex // 鍒ゆ柇鏄惁绗﹀悎瀹氭椂鍣ㄦ潯浠� -func TimerAlarm(oth *structure.Others,person *structure.Obj, result bool,areaId string) (string) { +func TimerAlarm(o *structure.Arg,person *structure.Obj, result bool,areaId string) (string) { var flagTime string // - + logger.Info("鐩爣鐨勫畾鏃跺櫒锛�") rw.Lock() if result { // 缁撴灉涓虹湡 @@ -197,15 +223,12 @@ if tar.N == 0 && tar.AlarmFlag { logger.Debug("-------------------------绗﹀悎鎸佺画鏃堕棿瑙勫垯浣嗗苟涓嶆槸棣栨锛屼笉鎶ヨ") flagTime = "11" - oth.TimeLabel = flagTime } if tar.N == 0 && !tar.AlarmFlag { // 杩欑粍瑙勫垯鐨勫畾鏃跺櫒瑕佸叏閮ㄧ瓑浜�0 鏆備笖璁や负涓�缁勮鍒欏彧鏈変竴涓畾鏃跺櫒 logger.Debug("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��-------------棣栨绗﹀悎鎸佺画鏃堕棿瑙勫垯骞舵姤璀�") flagTime = "10" tar.AlarmFlag = true - oth.CacheData = []structure.ResultMsg{} - oth.CacheData = append(oth.CacheData,tar.CacheSdkData) - oth.TimeLabel = flagTime + o.CacheData = tar.CacheSdkData } if tar.N != 0 { flagTime = "00" @@ -222,7 +245,6 @@ if tar.BufferFlag == 0 { logger.Debug("------------------------------鏉�姝昏鏁板櫒锛屾姤璀︽甯х姸鎬佹敼鍙樼殑鏁版嵁锛屾鏃剁殑璁℃暟鍣ㄧ殑鍊间负", tar.N) flagTime = "12" - oth.TimeLabel = flagTime structure.StaticMap[areaId].Targets = append(structure.StaticMap[areaId].Targets[:index],structure.StaticMap[areaId].Targets[index+1:]...) } else { if tar.BufferFlag > 0 { -- Gitblit v1.8.0