From 7d57c67a1c98b9f8c0256b95999c3e801d90b3f4 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期四, 07 十一月 2019 19:30:51 +0800
Subject: [PATCH] ---
---
ruleserver/ruleToformula.go | 81 ++++++++++++++++++++++++++++++----------
1 files changed, 61 insertions(+), 20 deletions(-)
diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index d099a52..d7062ee 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -3,7 +3,7 @@
import (
"ruleprocess/cache"
"ruleprocess/structure"
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"sort"
"strconv"
"strings"
@@ -66,6 +66,12 @@
LinkTask(args, group, taskId, message, label)
}
}
+ }
+ // 浜轰綋杩借釜
+ // 濡傛灉鏍囩涓惈鏈夋寔缁椂闂撮娆℃姤璀︾殑timeLabel鐨勮瘽鍒欎笉闇�瑕佽繃浜轰綋杩借釜锛屼笉鐒跺氨娌$殑鎻掑叆浜�
+ fk := TrackOrNot(args.RuleResult)
+ if !fk {
+ BodyIsSame(args,message)
}
}
}
@@ -207,6 +213,7 @@
if result.(bool) {
// 鏈�鍚庤繃鎸佺画鏃堕棿绛夋椂闂寸淮搴︾殑鏉′欢 鎶婃椂闂磋鍒欎綅缃皟鏁村埌杩欎釜浣嶇疆鏄负浜嗙紦瀛樻暟鎹�
+ cacheId := ""
for j := 0; j < len(groupRule.Rules); j++ {
for _, sdkData := range args.Sdkdata {
sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId)
@@ -217,14 +224,17 @@
if ipcId == sdkData.IpcId {
for _, areaMap := range sdkData.AreaMapList {
// 鍘诲紑鍚竴涓畾鏃跺櫒
- duration(groupRule.Rules[j], groupRule.GroupId, areaMap, args, message)
+ cacheid := duration(groupRule.Rules[j], groupRule.GroupId, areaMap, args, message)
+ if cacheid != "" {
+ cacheId = cacheid
+ }
}
}
}
}
// 杩涜瀹氭椂鍣ㄧ殑澶勭悊鍜屽垽鏂�
timeFlag := TimerAlarm(&label, groupRule.GroupId, result.(bool))
- if timeFlag == "01" || timeFlag == "10" || timeFlag == "11" { // 娌℃湁瀹氭椂鍣ㄦ垨鑰呮弧瓒冲畾鏃跺櫒鏉′欢
+ if timeFlag == "01" || timeFlag == "10" || timeFlag == "11" || cacheId != ""{ // 娌℃湁瀹氭椂鍣ㄦ垨鑰呮弧瓒冲畾鏃跺櫒鏉′欢
// 鎵撲汉鑴告爣绛惧拰yolo鏍囩
// 鏈�鍚庢垚鍔熸姤璀︽墠鎶婄鍚堟潯浠剁殑浜鸿劯鏁版嵁濉炶繘缁撴灉鏍囩閲�
// 閰嶄簡浜鸿劯鐨勭畻娉曟墠鎶婁汉鑴哥殑鏁版嵁鐢╁嚭鏉ユ墦鏍囩
@@ -244,7 +254,7 @@
}
}
}
- logger.Info("face鏍囩鐨勯暱搴︼細",len(faces))
+ //logger.Info("face鏍囩鐨勯暱搴︼細",len(faces))
//for _,face := range faces {
// //logger.Debug("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�擾_______________鐪嬬湅浜鸿劯鐨勫潗鏍�:",face.Location)
//}
@@ -254,7 +264,9 @@
for _, sdkData := range args.Sdkdata {
if sdkData.IpcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && sdkNames != "" { // 鎶妝olo鏁版嵁鐨勫悇涓洰鏍囩殑鍧愭爣杈撳嚭鏂逛究鍚庨潰鐢绘
for _, areaMap := range sdkData.AreaMapList {
- locations = append(locations, putYolosToResult(areaMap)...)
+ if areaMap.IsEffective {
+ locations = append(locations, putYolosToResult(areaMap)...)
+ }
}
}
}
@@ -276,6 +288,28 @@
//logger.Info("-------------------face缁撴灉鏍囩", len(args.RuleResult["face"].([]FaceResult)))
labelTypes = append(labelTypes,1)
}
+ // 缁欐寔缁椂闂寸殑绗竴寮犺祴浜堢紦瀛樻暟鎹紙閬嶅巻澶嶅埗锛�
+ if cacheId != "" { // 鏈夎繖甯ф暟鎹殑缂撳瓨
+ tempMap := make(map[string]interface{})
+ for k, result := range args.RuleResult {
+ if k == "yolo" {
+ tempMap[k] = []structure.Result{}
+ for _, res := range result.([]structure.Result) {
+ tempMap[k] = append(tempMap[k].([]structure.Result), res)
+ }
+ }
+ if k == "face" {
+ tempMap[k] = []structure.FaceResult{}
+ for _, res := range result.([]structure.FaceResult) {
+ tempMap[k] = append(tempMap[k].([]structure.FaceResult), res)
+ }
+ }
+ }
+ rw.Lock()
+ TimeEleList[cacheId].CacheSdkData.RuleResult = tempMap
+ rw.Unlock()
+ }
+
return true,labelTypes
} else {
return false,[]int{}
@@ -339,20 +373,20 @@
timeEle = *timeEle1
}
}
- for _,ruleRe := range timeEle.RuleResults {
- logger.Info("鑱斿姩鏁扮粍閲岀殑鏁版嵁----",ruleRe.CameraId,ruleRe.Sort)
- }
+ //for _,ruleRe := range timeEle.RuleResults {
+ // logger.Info("鑱斿姩鏁扮粍閲岀殑鏁版嵁----",ruleRe.CameraId,ruleRe.Sort)
+ //}
if flag { // 濡傛灉杩樻病鏈夎繖涓畾鏃跺櫒鍏冪礌灏辨柊澧炰竴涓�
//timeEle := TimeElement{N: 2, InitN: 2, GroupId: groupRule.GroupId} // 鎵旇繘鍘讳竴涓畾鏃跺櫒鍏冪礌
//TimeEleList = make(map[string]timeElement)
TimeEleList[groupRule.GroupId] = &timeEle // 瀹氭椂鍣ㄥ厓绱犱互瑙勫垯缁刬d涓洪敭
- logger.Info("---------------------------------------------鑱斿姩浠诲姟鍒涘缓浜嗚鏁板櫒骞朵笖璁℃暟鍣ㄩ泦鍚堜负锛�", TimeEleList)
+ //logger.Info("---------------------------------------------鑱斿姩浠诲姟鍒涘缓浜嗚鏁板櫒骞朵笖璁℃暟鍣ㄩ泦鍚堜负锛�", TimeEleList)
// 寰楀嚭杩欑粍瀹屾暣瑙勫垯閲屾秹鍙婂埌鍑犱釜鎽勫儚鏈猴紝鍐冲畾鐫�鏁扮粍閲屾湁鍑犱釜缁撴瀯浣�,鍘婚噸娣诲姞鏂瑰紡
for j := 0; j < len(groupRule.Rules); j++ {
var flag1 bool = true
- logger.Info("瑙勫垯缁勪俊鎭細",groupRule.Rules[j].CameraId)
+ //logger.Info("瑙勫垯缁勪俊鎭細",groupRule.Rules[j].CameraId)
for _, ruleRes := range TimeEleList[groupRule.GroupId].RuleResults {
- logger.Info("鑱斿姩鏁扮粍閲岀殑鏁版嵁锛�",ruleRes.CameraId,ruleRes.Sort)
+ //logger.Info("鑱斿姩鏁扮粍閲岀殑鏁版嵁锛�",ruleRes.CameraId,ruleRes.Sort)
if groupRule.Rules[j].CameraId == ruleRes.CameraId {
flag1 = false
}
@@ -421,7 +455,7 @@
for _, ruleRes := range TimeEleList[groupRule.GroupId].RuleResults {
label.LinkCache = append(label.LinkCache, ruleRes.CacheData)
}
- logger.Debug("鑱斿姩浠诲姟缂撳瓨浜嗗嚑涓暟鎹�", len(label.LinkCache))
+ //logger.Debug("鑱斿姩浠诲姟缂撳瓨浜嗗嚑涓暟鎹�", len(label.LinkCache))
for i := 0; i < len(args.RuleResult["yolo"].([]structure.Result)); i++ {
if args.RuleResult["yolo"].([]structure.Result)[i].RuleGroupId == groupRule.GroupId { // 鎶婅仈鍔ㄦ暟鎹拷鍔犱笂
args.RuleResult["yolo"].([]structure.Result)[i].Others.LinkCache = label.LinkCache
@@ -492,7 +526,7 @@
// 鎶婃病鏈夌浉浼艰�呯殑浜鸿劯浠巉ilterData涓垹闄�
for index := 0; index < len(am.FilterData); {
// 灏嗚揪涓嶅埌闃堝�肩殑鐩镐技鑰呬粠鐩镐技鑰呮暟缁勪腑鍒犻櫎
- logger.Info("鐪嬬湅鐩镐技鑰呬汉鏁帮細",len(am.FilterData[index].Liker))
+ //logger.Info("鐪嬬湅鐩镐技鑰呬汉鏁帮細",len(am.FilterData[index].Liker))
if len(am.FilterData[index].Liker) == 0 {
// Go 璇█涓垏鐗囧垹闄ゅ厓绱犵殑鏈川鏄細浠ヨ鍒犻櫎鍏冪礌涓哄垎鐣岀偣锛屽皢鍓嶅悗涓や釜閮ㄥ垎鐨勫唴瀛橀噸鏂拌繛鎺ヨ捣鏉ャ�備笉鐢ㄦ��鐤戯紝鏁扮粍鍒犻櫎鍏冪礌灏辫繖涔堝潙鐖�
am.FilterData = append(am.FilterData[:index], am.FilterData[index+1:]...)
@@ -503,7 +537,7 @@
if len(am.FilterData) > 0 {
flag = "true"
}
- logger.Info("---------浜鸿劯姣斿绗﹀悎鏉′欢鐨勬暟閲忎负锛�",len(am.FilterData))
+ //logger.Info("---------浜鸿劯姣斿绗﹀悎鏉′欢鐨勬暟閲忎负锛�",len(am.FilterData))
return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + flag, rule.Sort}
}
}
@@ -512,7 +546,7 @@
if rule.Operator == "==" || rule.Operator == ">=" || rule.Operator == "<=" || rule.Operator == "<" || rule.Operator == ">" || rule.Operator == "!=" {
// 濡傛灉鏄笉瑙勭煩鐨勮繛鎺ョ缁熺粺杩斿洖false 瑙勫垯涔熷彧鑳藉垽鏂汉鑴哥殑鐩镐技搴︼紝鎵�浠ヤ笉瀛樺湪鍒殑杩炴帴绗�
if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔�
- logger.Info("-----------------------杩囪鍒欎箣鍓嶅尯鍩熷唴鐨勪汉鑴告暟閲忎负锛�",am.TargetNum)
+ //logger.Info("-----------------------杩囪鍒欎箣鍓嶅尯鍩熷唴鐨勪汉鑴告暟閲忎负锛�",am.TargetNum)
var args []*structure.Arg
if rule.RuleWithPre == "&&" {
args = am.FilterData
@@ -544,7 +578,7 @@
}
}
am.TargetNum = len(am.FilterData) // 鎶婄鍚堟潯浠剁殑鐩爣鏁伴噺鏇存柊鍒皌argetNum瀛楁
- logger.Info("杩囧畬鏉′欢鍚庣殑鐩爣鏁伴噺涓猴細",am.TargetNum)
+ //logger.Info("杩囧畬鏉′欢鍚庣殑鐩爣鏁伴噺涓猴細",am.TargetNum)
if am.TargetNum > 0 {
logger.Info("锛侊紒锛侊紒锛侊紒锛侊紒锛佷汉鑴告娴嬫垚鍔�")
return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "true", rule.Sort}
@@ -565,6 +599,7 @@
// 澶勭悊鐨勯兘鏄痽olo鏁版嵁
if rule.PolygonId == am.AreaId { // 棣栧厛杩欐潯瑙勫垯寰楁槸杩欎釜绠楁硶鐨勮鍒欙紝鍏舵瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓�
if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔�
+ logger.Info("鍖哄煙鏁版嵁锛�",am.AreaJson)
var args []*structure.Arg
if rule.RuleWithPre == "&&" {
args = am.FilterData
@@ -593,6 +628,9 @@
}
}
am.TargetNum = len(am.FilterData) // 鎶婄鍚堟潯浠剁殑鐩爣鏁伴噺鏇存柊鍒皌argetNum瀛楁
+ for _,tar := range am.FilterData {
+ logger.Info("鍏蜂綋鐩爣鐨勫潗鏍囦负",tar.Id,tar.Location)
+ }
if am.TargetNum > 0 {
return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "true", rule.Sort}
} else {
@@ -612,30 +650,33 @@
}
// 濡傛灉鏈夋寔缁椂闂存潯浠剁淮鎶ゅ紑鍚竴涓畾鏃跺櫒
-func duration(rule *protomsg.Rule, groupId string, am *structure.AreaMap, args *structure.SdkDatas, message *protomsg.SdkMessage) {
+func duration(rule *protomsg.Rule, groupId string, am *structure.AreaMap, args *structure.SdkDatas, message *protomsg.SdkMessage) string{
+ cacheId := ""
if rule.PolygonId == am.AreaId { // 棣栧厛瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓� 閰嶇疆鐨勭畻娉曡瀵圭殑涓�
if rule.SdkArgAlias == "duration" { //
- logger.Info("褰撳墠灏忚鍒欐槸锛�---------", rule)
+ //logger.Info("褰撳墠灏忚鍒欐槸锛�---------", rule)
// 鍏堢湅鐪嬪畾鏃跺櫒鍏冪礌闃熷垪涓槸鍚︽湁杩欐潯瑙勫垯鐨勫畾鏃跺櫒,濡傛灉鏈夊氨涓嶈兘鍐嶆鍒涘缓浜�
rw.Lock()
var flag bool = true
for k, _ := range TimeEleList {
if k == groupId+"+"+rule.Id {
flag = false // 鏈夊氨缃负false
- logger.Info("鏈夎繖涓畾鏃跺櫒锛屼笉鍐嶅垱寤轰簡锛�")
+ //logger.Info("鏈夎繖涓畾鏃跺櫒锛屼笉鍐嶅垱寤轰簡锛�")
}
}
if flag {
timeLength, _ := strconv.Atoi(rule.SdkArgValue)
- timeEle := TimeElement{N: timeLength, InitN: timeLength, AlarmFlag: false, BufferFlag: 10, CacheSdkData: structure.ResultMsg{message, args.RuleResult}} // 鎵旇繘鍘讳竴涓畾鏃跺櫒鍏冪礌锛堝苟缂撳瓨褰撳墠鐢婚潰甯ф暟鎹級
+ timeEle := TimeElement{N: timeLength, InitN: timeLength, AlarmFlag: false, BufferFlag: 10, CacheSdkData: structure.ResultMsg{message, nil}} // 鎵旇繘鍘讳竴涓畾鏃跺櫒鍏冪礌锛堝苟缂撳瓨褰撳墠鐢婚潰甯ф暟鎹級
//TimeEleList = make(map[string]timeElement)
TimeEleList[groupId+"+"+rule.Id] = &timeEle // 瀹氭椂鍣ㄥ厓绱犱互褰撳墠鎸佺画鏃堕棿灏忚鍒檌d涓洪敭
logger.Info("鍒涘缓浜嗚鏁板櫒")
+ cacheId = groupId+"+"+rule.Id
}
rw.Unlock()
}
}
+ return cacheId
}
// 缁欐暟鎹簱鐨勮鍒欒〃杈惧紡浠e弬 args: 涓�鏉″瓙瑙勫垯锛屽尯鍩熸暟鎹�
--
Gitblit v1.8.0