From d9499d682909977bc2b4c2783c4d07d397713968 Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期一, 29 七月 2019 17:22:11 +0800 Subject: [PATCH] --- --- ruleserver/ruleToformula.go | 37 ++++++++++++++++++++++++------------- 1 files changed, 24 insertions(+), 13 deletions(-) diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go index 2617389..f879229 100644 --- a/ruleserver/ruleToformula.go +++ b/ruleserver/ruleToformula.go @@ -84,6 +84,7 @@ TaskId string // 浠诲姟id SdkName string RuleGroupId string // 瑙勫垯缁刬d + DefenceState bool //鏄惁甯冮槻 AlarmLevel int32 // 鎶ヨ绛夌骇 RuleText string // 鏂囧瓧鐗堣鍒欑粍 Location []Rect // 鐩爣鐨勫潗鏍� @@ -117,7 +118,7 @@ // 寰楀埌灞炰簬璇ユ憚鍍忔満鐨勮嫢骞茬粍浠诲姟鐨勫畬鏁磋鍒欙紙璺熸瘡涓�鏉″畬鏁磋鍒欐瘮杈冧箣鍚庡緱鍑烘湰寮犲浘鍍忓浜庢煇涓鍒欐槸鍚︽姤璀︾殑缁撴灉銆傛斁杩沵ap锛屾瘮濡傛湰甯у浘鍍忕殑id锛屾墍纰版挒鎴愬姛鐨勮鍒檌d锛� args.RuleResult = make(map[string]interface{}) args.RuleResult["yolo"] = []Result{} - args.RuleResult["face"] = []Arg{} + args.RuleResult["face"] = []FaceResult{} if taskGroup != nil && len(taskGroup.GroupRules) > 0 { for _, group := range taskGroup.GroupRules { //logger.Println("------------------------------浠诲姟瑙勫垯锛�",taskRule) @@ -276,12 +277,12 @@ for _, sdkData := range args.Sdkdata { if sdkData.IpcId == "A8B73405-373D-4F23-CED2-A617EBD7EC55" && faceFlag { // sdkData閲屾湁浜鸿劯鏁版嵁涓旈厤缃簡绠楁硶鎵嶆妸绗﹀悎鏉′欢鐨勬暟鎹杩涙爣绛鹃噷鍘� for _, areaMap := range sdkData.AreaMapList { - faces = append(faces, putFaceToResult(areaMap)...) + faces = append(faces, putFaceToResult(areaMap,faces)...) } } } - if faceFlag { - args.RuleResult["face"] = faces + for _,face := range faces { + logger.Debug("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�擾_______________鐪嬬湅浜鸿劯鐨勫潗鏍�:",face.Location) } logger.Warn("___________________________________________________________________________缁堜簬璧板畬涓囬噷闀垮緛") // 鎶婁粬浠殑浣嶇疆鏁版嵁涔熶紶涓嬪幓 @@ -295,12 +296,12 @@ } logger.Debug("------locations鐨勫唴瀹癸細", locations) if sdkNames != "" { - args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkNames, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, locations, polygonId}) - logger.Info("-------------------yolo缁撴灉鏍囩闀垮害", len(args.RuleResult["yolo"].([]Result))) + args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkNames, groupRule.GroupId,groupRule.DefenceState,groupRule.AlarmLevel, groupRule.GroupText, locations, polygonId}) + //logger.Info("-------------------yolo缁撴灉鏍囩闀垮害", len(args.RuleResult["yolo"].([]Result))) } - if args.RuleResult["face"] != nil { - args.RuleResult["face"] = append(args.RuleResult["face"].([]FaceResult), FaceResult{Result{taskId, sdkNames, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, []Rect{}, polygonId},faces}) - logger.Info("-------------------face缁撴灉鏍囩", len(args.RuleResult["face"].(FaceResult).Args)) + if faceFlag { + args.RuleResult["face"] = append(args.RuleResult["face"].([]FaceResult), FaceResult{Result{taskId, sdkNames, groupRule.GroupId,groupRule.DefenceState,groupRule.AlarmLevel, groupRule.GroupText, []Rect{}, polygonId},faces}) + logger.Info("-------------------face缁撴灉鏍囩", len(args.RuleResult["face"].([]FaceResult))) } // 鏈�鍚庤繃鎸佺画鏃堕棿绛夋椂闂寸淮搴︾殑鏉′欢 鎶婃椂闂磋鍒欎綅缃皟鏁村埌杩欎釜浣嶇疆鏄负浜嗙紦瀛樻暟鎹� for j := 0; j < len(groupRule.Rules); j++ { @@ -336,11 +337,19 @@ } } -func putFaceToResult(am *AreaMap) []Arg { +func putFaceToResult(am *AreaMap,faceList []Arg) []Arg { faces := []Arg{} if len(am.filterData) > 0 { for _, data := range am.filterData { - faces = append(faces, *data) + flag := true + for _,face := range faceList { + if data.Location.X == face.Location.X && data.Location.Y == face.Location.Y && data.Location.Width == face.Location.Width && data.Location.Height == face.Location.Height { + flag = false + } + } + if flag { + faces = append(faces, *data) + } } } @@ -423,7 +432,7 @@ result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋� if result.(bool) { logger.Info("___________________________________________________________________鑱斿姩浠诲姟鎶ヨ") - args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, "", groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, []Rect{}, ""}) + args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, "", groupRule.GroupId, groupRule.DefenceState,groupRule.AlarmLevel, groupRule.GroupText, []Rect{}, ""}) logger.Info("-------------------yolo缁撴灉鏍囩鏈夊嚑涓�", len(args.RuleResult["yolo"].([]Result))) if args.RuleResult["face"] != nil { logger.Info("-------------------face缁撴灉鏍囩鏈夊嚑涓�", len(args.RuleResult["face"].([]Arg))) @@ -480,8 +489,10 @@ var args []*Arg if rule.RuleWithPre == "&&" { args = am.filterData + logger.Info("杩囨护鍚庣殑args鐨勯暱搴︿负锛�",len(args)) } else { args = am.args + logger.Info("娌¤繃婊ょ殑args鐨勯暱搴︿负锛�",len(args)) } // 鍏堟竻绌鸿繃婊ゅ悗鐨勬暟鎹紝鍐嶅線閲屽鏈杩囨护鍚庣殑鏁版嵁 am.filterData = am.filterData[0:0] @@ -587,7 +598,7 @@ timeLength, _ := strconv.Atoi(rule.SdkArgValue) timeEle := TimeElement{N: timeLength, InitN: timeLength, AlarmFlag: false, BufferFlag: 10, CacheSdkData: ResultMsg{message, args.RuleResult}} // 鎵旇繘鍘讳竴涓畾鏃跺櫒鍏冪礌锛堝苟缂撳瓨褰撳墠鐢婚潰甯ф暟鎹級 //TimeEleList = make(map[string]timeElement) - TimeEleList[groupId+" "+rule.Id] = &timeEle // 瀹氭椂鍣ㄥ厓绱犱互鎽勫儚鏈篿d鎷兼帴鍖哄煙id涓洪敭 + TimeEleList[groupId+" "+rule.Id] = &timeEle // 瀹氭椂鍣ㄥ厓绱犱互缁勮鍒檌d鍜屽綋鍓嶆寔缁椂闂村皬瑙勫垯id涓洪敭 logger.Info("鍒涘缓浜嗚鏁板櫒骞朵笖璁℃暟鍣ㄩ泦鍚堜负锛�", TimeEleList) } } -- Gitblit v1.8.0