From f9b37525a5901d59edf9235c7df4ffd192d35943 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期五, 15 十一月 2019 11:34:34 +0800
Subject: [PATCH] ---
---
ruleserver/ruleToformula.go | 87 ++++++++++++++++++++++++++-----------------
1 files changed, 52 insertions(+), 35 deletions(-)
diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index c96892c..f3acafb 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -36,8 +36,8 @@
// 寰楀埌灞炰簬璇ユ憚鍍忔満鐨勮嫢骞茬粍浠诲姟鐨勫畬鏁磋鍒欙紙璺熸瘡涓�鏉″畬鏁磋鍒欐瘮杈冧箣鍚庡緱鍑烘湰寮犲浘鍍忓浜庢煇涓鍒欐槸鍚︽姤璀︾殑缁撴灉銆傛斁杩沵ap锛屾瘮濡傛湰甯у浘鍍忕殑id锛屾墍纰版挒鎴愬姛鐨勮鍒檌d锛�
args.RuleResult = make(map[string]interface{})
args.RuleResult["yolo"] = []structure.Result{}
- args.RuleResult["face"] = []structure.TargetResult{}
- args.RuleResult["target"] = []structure.TargetResult{}
+ args.RuleResult["face"] = []structure.Result{}
+ args.RuleResult["target"] = []structure.Result{}
//logger.Warn("浼犺繘鍘讳箣鍓嶆槸浠�涔堝痉琛岋細",args.RuleResult["yolo"])
if taskGroup != nil && len(taskGroup.GroupRules) > 0 {
// 鍏堣繃鐙珛锛屽啀杩囪仈鍔�
@@ -109,7 +109,7 @@
for _, areaMap := range sdkData.AreaMapList {
targets = append(targets,areaMap.AlarmObj...)
for _,obj := range areaMap.AlarmObj {
- logger.Info("涓綋闈欐鐨勭洰鏍�",obj.Id,obj.Location)
+ logger.Info("涓綋闈欐鐨勭洰鏍�",obj.Id, obj.Location, obj.CacheData.Cid, len(obj.CacheData.Data))
}
}
}
@@ -141,7 +141,7 @@
// 鎵撲汉鑴告爣绛惧拰yolo鏍囩
// 鏈�鍚庢垚鍔熸姤璀︽墠鎶婄鍚堟潯浠剁殑浜鸿劯鏁版嵁濉炶繘缁撴灉鏍囩閲�
// 閰嶄簡浜鸿劯鐨勭畻娉曟墠鎶婁汉鑴哥殑鏁版嵁鐢╁嚭鏉ユ墦鏍囩
- faces := []structure.Arg{}
+ faces := []*structure.Arg{}
faceFlag := false
for j := 0; j < len(groupRule.Rules); j++ {
if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" {
@@ -163,17 +163,28 @@
//}
logger.Warn("___________________________________________________________________________缁堜簬璧板畬涓囬噷闀垮緛")
// 鎶婁粬浠殑浣嶇疆鏁版嵁涔熶紶涓嬪幓
- locations := []structure.TargetInfo{}
+ yolos := []*structure.Arg{}
for _, sdkData := range args.Sdkdata {
if sdkData.IpcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && sdkNames != "" { // 鎶妝olo鏁版嵁鐨勫悇涓洰鏍囩殑鍧愭爣杈撳嚭鏂逛究鍚庨潰鐢绘
for _, areaMap := range sdkData.AreaMapList {
if areaMap.IsEffective {
- locations = append(locations, putYolosToResult(areaMap)...)
+ yolos = append(yolos, putYolosToResult(areaMap)...)
}
}
}
}
- logger.Debug("------locations鐨勫唴瀹癸細", locations)
+ logger.Debug("------locations鐨勫唴瀹癸細", yolos)
+ // 澶勭悊鐩爣瀹氭椂鏁版嵁
+ targets := []*structure.Arg{}
+ for _, sdkData := range args.Sdkdata {
+ if sdkData.IpcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && sdkNames != "" { // 鎶妝olo鏁版嵁鐨勫悇涓洰鏍囩殑鍧愭爣杈撳嚭鏂逛究鍚庨潰鐢绘
+ for _, areaMap := range sdkData.AreaMapList {
+ if areaMap.IsEffective {
+ targets = append(targets, putTargetsToResult(areaMap)...)
+ }
+ }
+ }
+ }
var islink bool
if groupRule.SetType == "linkTask" {
islink = true
@@ -182,14 +193,19 @@
}
var labelTypes []int // 0涓簓olo鏍囩锛�1涓篺ace鏍囩 2涓轰袱鑰呮爣绛�
if sdkNames != "" {
- args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, locations, polygonId, islink,label})
+ args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, yolos, polygonId, islink,label})
labelTypes = append(labelTypes,0)
//logger.Info("-------------------yolo缁撴灉鏍囩闀垮害", len(args.RuleResult["yolo"].([]Result)))
}
if faceFlag {
- args.RuleResult["face"] = append(args.RuleResult["face"].([]structure.TargetResult), structure.TargetResult{structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, []structure.TargetInfo{}, polygonId, islink,label}, faces})
+ args.RuleResult["face"] = append(args.RuleResult["face"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, faces, polygonId, islink,label})
//logger.Info("-------------------face缁撴灉鏍囩", len(args.RuleResult["face"].([]FaceResult)))
labelTypes = append(labelTypes,1)
+ }
+ if len(targets) > 0 {
+ args.RuleResult["target"] = append(args.RuleResult["target"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, targets, polygonId, islink,label})
+ logger.Info("-------------------鐩爣鎸佺画缁撴灉鏍囩", len(args.RuleResult["target"].([]structure.Result)))
+ //labelTypes = append(labelTypes,2)
}
// 缁欐寔缁椂闂寸殑绗竴寮犺祴浜堢紦瀛樻暟鎹紙閬嶅巻澶嶅埗锛�
if cacheId != "" { // 鏈夎繖甯ф暟鎹殑缂撳瓨
@@ -202,9 +218,9 @@
}
}
if k == "face" {
- tempMap[k] = []structure.TargetResult{}
- for _, res := range result.([]structure.TargetResult) {
- tempMap[k] = append(tempMap[k].([]structure.TargetResult), res)
+ tempMap[k] = []structure.Result{}
+ for _, res := range result.([]structure.Result) {
+ tempMap[k] = append(tempMap[k].([]structure.Result), res)
}
}
}
@@ -226,8 +242,8 @@
}
}
-func putFaceToResult(am *structure.AreaMap, faceList []structure.Arg) []structure.Arg {
- faces := []structure.Arg{}
+func putFaceToResult(am *structure.AreaMap, faceList []*structure.Arg) []*structure.Arg {
+ faces := []*structure.Arg{}
if len(am.FilterData) > 0 {
for _, data := range am.FilterData {
flag := true
@@ -237,7 +253,7 @@
}
}
if flag {
- faces = append(faces, *data)
+ faces = append(faces, data)
}
}
}
@@ -245,21 +261,22 @@
return faces
}
-func putYolosToResult(am *structure.AreaMap) []structure.TargetInfo {
- locations := []structure.TargetInfo{}
+func putYolosToResult(am *structure.AreaMap) []*structure.Arg {
+ locations := []*structure.Arg{}
if len(am.FilterData) > 0 {
- for _, data := range am.FilterData {
- location := structure.TargetInfo{}
- location.Rect = data.Location
- location.TargetId = data.Id
- location.TargetScore = data.Score
- locations = append(locations, location)
- }
+ locations = am.FilterData
}
//logger.Println("-----------------------------------------------鍚浣犳槸绌虹殑锛�",faces)
return locations
}
-
+func putTargetsToResult(am *structure.AreaMap) []*structure.Arg {
+ locations := []*structure.Arg{}
+ if len(am.AlarmObj) > 0 {
+ locations = am.AlarmObj
+ }
+ //logger.Println("-----------------------------------------------鍚浣犳槸绌虹殑锛�",faces)
+ return locations
+}
// 鑱斿姩浠诲姟鐨勫鐞�
func LinkTask(args *structure.SdkDatas, groupRule *protomsg.GroupRule, taskId string, message *protomsg.SdkMessage, label structure.Others) {
// new涓�涓畾鏃跺櫒锛屽鏋滀互姝roupId涓烘爣蹇楃殑瀹氭椂鍣ㄤ笉瀛樺湪鐨勮瘽
@@ -315,9 +332,9 @@
}
}
if k == "face" {
- tempMap[k] = []structure.TargetResult{}
- for _, res := range result.([]structure.TargetResult) {
- tempMap[k] = append(tempMap[k].([]structure.TargetResult), res)
+ tempMap[k] = []structure.Result{}
+ for _, res := range result.([]structure.Result) {
+ tempMap[k] = append(tempMap[k].([]structure.Result), res)
}
}
}
@@ -361,9 +378,9 @@
args.RuleResult["yolo"].([]structure.Result)[i].Others.LinkCache = label.LinkCache
}
}
- for i := 0; i < len(args.RuleResult["face"].([]structure.TargetResult)); i++ {
- if args.RuleResult["face"].([]structure.TargetResult)[i].RuleGroupId == groupRule.GroupId { // 鎶婅仈鍔ㄦ暟鎹拷鍔犱笂
- args.RuleResult["face"].([]structure.TargetResult)[i].Others.LinkCache = label.LinkCache
+ for i := 0; i < len(args.RuleResult["face"].([]structure.Result)); i++ {
+ if args.RuleResult["face"].([]structure.Result)[i].RuleGroupId == groupRule.GroupId { // 鎶婅仈鍔ㄦ暟鎹拷鍔犱笂
+ args.RuleResult["face"].([]structure.Result)[i].Others.LinkCache = label.LinkCache
}
}
}
@@ -381,9 +398,9 @@
}
}
if val == 1 {
- if len(args.RuleResult["face"].([]structure.TargetResult)) >= 1 {
- lens := len(args.RuleResult["face"].([]structure.TargetResult))-1
- args.RuleResult["face"] = args.RuleResult["face"].([]structure.TargetResult)[0:lens]
+ if len(args.RuleResult["face"].([]structure.Result)) >= 1 {
+ lens := len(args.RuleResult["face"].([]structure.Result))-1
+ args.RuleResult["face"] = args.RuleResult["face"].([]structure.Result)[0:lens]
}
}
}
@@ -412,7 +429,7 @@
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" { //
+ if rule.SdkArgAlias == "duration" && rule.SdkId != "812b674b-2375-4589-919a-5c1c3278a977"{ // 鎺掗櫎瀵圭敾闈腑鍗曚釜鐩爣鐨勭畻娉曪紝涓綋闈欐浠ュ強闈犲彸琛岃繖绉�
//logger.Info("褰撳墠灏忚鍒欐槸锛�---------", rule)
// 鍏堢湅鐪嬪畾鏃跺櫒鍏冪礌闃熷垪涓槸鍚︽湁杩欐潯瑙勫垯鐨勫畾鏃跺櫒,濡傛灉鏈夊氨涓嶈兘鍐嶆鍒涘缓浜�
rw.Lock()
--
Gitblit v1.8.0