From b9d95191e0326a1a75f3809d75b94638c47c3d43 Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期一, 16 十二月 2019 16:58:51 +0800 Subject: [PATCH] --- --- ruleserver/ruleToformula.go | 218 ++++++++++++++++++++++-------------------------------- 1 files changed, 90 insertions(+), 128 deletions(-) diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go index 8688dab..f2f81f2 100644 --- a/ruleserver/ruleToformula.go +++ b/ruleserver/ruleToformula.go @@ -5,7 +5,7 @@ "github.com/knetic/govaluate" "plugin" "ruleprocess/cache" - logger "github.com/alecthomas/log4go" + "basic.com/valib/logger.git" "ruleprocess/structure" "sort" "strconv" @@ -37,6 +37,7 @@ args.RuleResult["face"] = []structure.Result{} args.RuleResult["target"] = []structure.Result{} args.RuleResult["plate"] = []structure.Result{} + args.RuleResult["track"] = []structure.Result{} //logger.Warn("浼犺繘鍘讳箣鍓嶆槸浠�涔堝痉琛岋細",args.RuleResult["yolo"]) if taskGroup != nil && len(taskGroup.GroupRules) > 0 { // 鍏堣繃鐙珛锛屽啀杩囪仈鍔� @@ -118,6 +119,7 @@ result,sdkNames,polygonId = CallMiddleware(args,*groupRule,&label,message) if result { + // 鏈�鍚庤繃鎸佺画鏃堕棿绛夋椂闂寸淮搴︾殑鏉′欢 鎶婃椂闂磋鍒欎綅缃皟鏁村埌杩欎釜浣嶇疆鏄负浜嗙紦瀛樻暟鎹� 锛侊紒锛侊紒锛乸s: 瀵圭敾闈腑鍗曚釜鐩爣鍋氬畾鏃跺櫒鐨勪笉鐢ㄥ啀杩囩敾闈㈠畾鏃跺櫒 for j := 0; j < len(groupRule.Rules); j++ { for _, sdkData := range args.Sdkdata { @@ -137,132 +139,7 @@ // 杩涜瀹氭椂鍣ㄧ殑澶勭悊鍜屽垽鏂� timeFlag := TimerAlarm(&label, groupRule.GroupId, result) if timeFlag == "01" || timeFlag == "10" || timeFlag == "11"{ // 娌℃湁瀹氭椂鍣ㄦ垨鑰呮弧瓒冲畾鏃跺櫒鏉′欢 - // 鎵撲汉鑴告爣绛惧拰yolo鏍囩 - // 鏈�鍚庢垚鍔熸姤璀︽墠鎶婄鍚堟潯浠剁殑浜鸿劯鏁版嵁濉炶繘缁撴灉鏍囩閲� - // 閰嶄簡浜鸿劯鐨勭畻娉曟墠鎶婁汉鑴哥殑鏁版嵁鐢╁嚭鏉ユ墦鏍囩 - 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" { - faceFlag = true - } - } - for _, sdkData := range args.Sdkdata { - if sdkData.IpcId == "A8B73405-373D-4F23-CED2-A617EBD7EC55" && faceFlag { // sdkData閲屾湁浜鸿劯鏁版嵁涓旈厤缃簡绠楁硶鎵嶆妸绗﹀悎鏉′欢鐨勬暟鎹杩涙爣绛鹃噷鍘� - for _, areaMap := range sdkData.AreaMapList { - if areaMap.IsEffective { - faces = append(faces, putFaceToResult(areaMap, faces)...) - } - } - } - } - //logger.Info("face鏍囩鐨勯暱搴︼細",len(faces)) - //for _,face := range faces { - // //logger.Debug("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�擾_______________鐪嬬湅浜鸿劯鐨勫潗鏍�:",face.Location) - //} - //logger.Warn("___________________________________________________________________________缁堜簬璧板畬涓囬噷闀垮緛") - // 鎶婁粬浠殑浣嶇疆鏁版嵁涔熶紶涓嬪幓 - 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 { - yolos = append(yolos, putYolosToResult(areaMap)...) - } - } - } - } - //logger.Debug("------locations鐨勫唴瀹癸細", yolos) - // 澶勭悊鐩爣瀹氭椂鏁版嵁 - targets := []*structure.Arg{} - for _, sdkData := range args.Sdkdata { - if sdkData.IpcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && sdkNames != "" { // 杈撳嚭鐩爣鏁版嵁 - for _, areaMap := range sdkData.AreaMapList { - if areaMap.IsEffective { - targets = append(targets, putTargetsToResult(areaMap)...) - } - } - } - } - // 杞﹁締鐩爣缁熻 - cars := []*structure.Arg{} - for _, sdkData := range args.Sdkdata { - //logger.Info("鐪嬬湅sdkNames",sdkNames) - if sdkData.IpcId == "91d923ef-6200-4549-ab1b-8e773e85d729" { // 鎶婅溅鐗屾暟鎹殑鍚勪釜鐩爣鐨勫潗鏍囪緭鍑烘柟渚垮悗闈㈢敾妗� - for _, areaMap := range sdkData.AreaMapList { - if areaMap.IsEffective { - cars = append(cars, putFaceToResult(areaMap, cars)...) - } - } - } - } - // 璺熻釜鐩爣缁熻 - personTrack := []*structure.Arg{} - for _, sdkData := range args.Sdkdata { - //logger.Info("鐪嬬湅sdkNames",sdkNames) - if sdkData.IpcId == "璺熻釜鐨刬pcId" { // 鎶婅窡韪〉闈㈢殑鍚勪釜鐩爣鐨勫潗鏍囪緭鍑� - for _, areaMap := range sdkData.AreaMapList { - if areaMap.IsEffective { - personTrack = append(personTrack, putFaceToResult(areaMap, personTrack)...) - } - } - } - } - var islink bool - if groupRule.SetType == "linkTask" { - islink = true - } else { - islink = false - } - //logger.Info("瑙﹀彂鐨勫尯鍩焛d锛�",polygonId) - var labelTypes []int // 0涓簓olo鏍囩锛�1涓篺ace鏍囩 2涓轰袱鑰呮爣绛� - if sdkNames != "" && len(targets) == 0 { - 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.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, faces, polygonId, islink,label}) - //logger.Info("-------------------face缁撴灉鏍囩", len(args.RuleResult["face"].([]structure.Result))) - 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 len(cars) > 0 { - args.RuleResult["plate"] = append(args.RuleResult["plate"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, cars, polygonId, islink,label}) - //logger.Info("-------------------杞︾墝缁撴灉鏍囩", len(args.RuleResult["plate"].([]structure.Result))) - //labelTypes = append(labelTypes,2) - } - if len(personTrack) > 0 { - args.RuleResult["track"] = append(args.RuleResult["track"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, personTrack, polygonId, islink,label}) - //logger.Info("-------------------杞︾墝缁撴灉鏍囩", len(args.RuleResult["plate"].([]structure.Result))) - //labelTypes = append(labelTypes,2) - } - // 缁欐寔缁椂闂寸殑绗竴寮犺祴浜堢紦瀛樻暟鎹紙閬嶅巻澶嶅埗锛� - //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.Result{} - // for _, res := range result.([]structure.Result) { - // tempMap[k] = append(tempMap[k].([]structure.Result), res) - // } - // } - // } - // rw.Lock() - // TimeEleList[cacheId].CacheSdkData.RuleResult = tempMap - // rw.Unlock() - //} - + labelTypes := AssembResultLabel(args,groupRule,sdkNames,taskId,polygonId,label) return true,labelTypes } else { return false,[]int{} @@ -479,7 +356,7 @@ if flag { m := make(map[string]interface{}) m["yolo"] = []structure.Result{} - m["yolo"] = append(m["yolo"].([]structure.Result), structure.Result{args.TaskId, "", "", true, 0, "", am.FilterData, am.AreaJson, false,label}) + m["yolo"] = append(m["yolo"].([]structure.Result), structure.Result{args.TaskId, "", "", true, 0, "", am.FilterData,am.AreaJson, false,label}) timeLength, _ := strconv.Atoi(rule.SdkArgValue) timeEle := TimeElement{N: timeLength, InitN: timeLength, AlarmFlag: false, BufferFlag: 10, CacheSdkData: structure.ResultMsg{message, m}} // 鎵旇繘鍘讳竴涓畾鏃跺櫒鍏冪礌锛堝苟缂撳瓨褰撳墠鐢婚潰甯ф暟鎹級 //TimeEleList = make(map[string]timeElement) @@ -493,3 +370,88 @@ return } +func AssembResultLabel(args *structure.SdkDatas, groupRule *protomsg.GroupRule,sdkNames string,taskId string,polygonId string,label structure.Others) []int{ + + faces := []*structure.Arg{} + yolos := []*structure.Arg{} + targets := []*structure.Arg{} + personTrack := []*structure.Arg{} + cars := []*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" { + faceFlag = true + } + } + for _, sdkData := range args.Sdkdata { + switch sdkData.IpcId { + case "A8B73405-373D-4F23-CED2-A617EBD7EC55" : + if faceFlag { // sdkData閲屾湁浜鸿劯鏁版嵁涓旈厤缃簡绠楁硶鎵嶆妸绗﹀悎鏉′欢鐨勬暟鎹杩涙爣绛鹃噷鍘� + for _, areaMap := range sdkData.AreaMapList { + if areaMap.IsEffective { + faces = append(faces, putFaceToResult(areaMap, faces)...) + } + } + } + case "02D54B61-0F16-C604-8567-FC4BE493C523": + if sdkNames != "" { // 鎶妝olo鏁版嵁鐨勫悇涓洰鏍囩殑鍧愭爣杈撳嚭鏂逛究鍚庨潰鐢绘 + for _, areaMap := range sdkData.AreaMapList { + if areaMap.IsEffective { + yolos = append(yolos, putYolosToResult(areaMap)...) + // 澶勭悊鐩爣瀹氭椂鏁版嵁 + targets = append(targets, putTargetsToResult(areaMap)...) + } + } + } + case "91d923ef-6200-4549-ab1b-8e773e85d729": + // 杞﹁締鏁版嵁 + for _, areaMap := range sdkData.AreaMapList { + if areaMap.IsEffective { + cars = append(cars, putFaceToResult(areaMap, cars)...) + } + } + case "807bac1b-4501-4c52-b450-0aeb75a68ded": + // 璺熻釜鐩爣 + for _, areaMap := range sdkData.AreaMapList { + if areaMap.IsEffective { + personTrack = append(personTrack, putFaceToResult(areaMap, personTrack)...) + } + } + } + } + + var islink bool + if groupRule.SetType == "linkTask" { + islink = true + } else { + islink = false + } + //logger.Info("瑙﹀彂鐨勫尯鍩焛d锛�",polygonId) + var labelTypes []int // 0涓簓olo鏍囩锛�1涓篺ace鏍囩 2涓轰袱鑰呮爣绛� + if sdkNames != "" && len(targets) == 0 { + 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.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, faces,polygonId, islink,label}) + //logger.Info("-------------------face缁撴灉鏍囩", len(args.RuleResult["face"].([]structure.Result))) + 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 len(cars) > 0 { + args.RuleResult["plate"] = append(args.RuleResult["plate"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, cars, polygonId, islink,label}) + //logger.Info("-------------------杞︾墝缁撴灉鏍囩", len(args.RuleResult["plate"].([]structure.Result))) + labelTypes = append(labelTypes,3) + } + if len(personTrack) > 0 { + args.RuleResult["track"] = append(args.RuleResult["track"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, personTrack, polygonId, islink,label}) + //logger.Info("-------------------杞︾墝缁撴灉鏍囩", len(args.RuleResult["plate"].([]structure.Result))) + labelTypes = append(labelTypes,4) + } + return labelTypes +} \ No newline at end of file -- Gitblit v1.8.0