From a37d04bf73e12325bf5dc5055f34770c912dcf66 Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期六, 16 十一月 2019 18:13:38 +0800 Subject: [PATCH] --- --- ruleserver/ruleToformula.go | 59 ++++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 42 insertions(+), 17 deletions(-) diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go index 12f138d..c666960 100644 --- a/ruleserver/ruleToformula.go +++ b/ruleserver/ruleToformula.go @@ -27,9 +27,7 @@ cameraPolygons := GetPolygons(args.CameraId) // 鎶婃墍鏈夌殑sdk鎻愬彇鐨勬暟鎹兘鎸夋墍灞炴憚鍍忔満鐨勫尯鍩熷綊缃� logger.Debug("褰撳墠鎽勫儚鏈篿d涓猴細",message.Cid,"褰撳墠鎽勫儚鏈烘墽琛岀殑浠诲姟鏄細",message.Tasklab.Taskname,"--浠诲姟id涓猴細",message.Tasklab.Taskid) - for _, arg := range args.Sdkdata { - SdkDataFormat(args.CameraId, arg, cameraPolygons) - } + CallReadyData(args,cameraPolygons) // 璺戞湰鎽勫儚鏈虹殑鎵�鏈夎鍒欑粍 涓�缁勪竴缁勮窇 taskGroup := GetRuleGroup(args.CameraId, args.TaskId) // 鏈憚鍍忔満鏈换鍔′笅鎵�鏈夎鍒欑粍 //logger.Println("鐪嬩笅鎽勫儚鏈轰笅鐨勪换鍔$粍锛�",taskRuleList) @@ -90,6 +88,18 @@ return a,b,c } +func CallReadyData(args *structure.SdkDatas,cameraPolygons []protomsg.CameraPolygon) { + p,err := plugin.Open("./algorithm/middleware.so") + if err != nil { + panic(err) + } + f,err1 := p.Lookup("ReadData") + if err1 != nil { + panic("娌℃湁鎵惧埌涓棿浠剁殑鏁版嵁鍑嗗鍑芥暟") + } + f.(func(args *structure.SdkDatas,cameraPolygons []protomsg.CameraPolygon)())(args,cameraPolygons) +} + func RunRule(args *structure.SdkDatas, groupRule *protomsg.GroupRule, taskId string, message *protomsg.SdkMessage, label structure.Others) (bool,[]int) { defer func() { if err := recover(); err != nil { @@ -102,18 +112,10 @@ result := false sdkNames := "" polygonId := "" - targets := []*structure.Arg{} // 绗﹀悎鏉′欢鐨勭洰鏍� + // 鎶婁竴甯ф暟鎹拰涓�缁勮鍒欏彂缁欑畻娉曢儴鍒嗭紝寰楀嚭鍒ゆ柇缁撴灉 result,sdkNames,polygonId = CallMiddleware(args,*groupRule,&label,message) - for _, sdkData := range args.Sdkdata { - for _, areaMap := range sdkData.AreaMapList { - targets = append(targets,areaMap.AlarmObj...) - for _,obj := range areaMap.AlarmObj { - logger.Info("涓綋闈欐鐨勭洰鏍�",obj.Id, obj.Location, obj.CacheData.Cid, len(obj.CacheData.Data)) - } - } - } - //logger.Info("绗﹀悎鏉′欢鐨勭洰鏍囨暟鎹細",targets) + if result { // 鏈�鍚庤繃鎸佺画鏃堕棿绛夋椂闂寸淮搴︾殑鏉′欢 鎶婃椂闂磋鍒欎綅缃皟鏁村埌杩欎釜浣嶇疆鏄负浜嗙紦瀛樻暟鎹� 锛侊紒锛侊紒锛乸s: 瀵圭敾闈腑鍗曚釜鐩爣鍋氬畾鏃跺櫒鐨勪笉鐢ㄥ啀杩囩敾闈㈠畾鏃跺櫒 cacheId := "" @@ -177,10 +179,21 @@ // 澶勭悊鐩爣瀹氭椂鏁版嵁 targets := []*structure.Arg{} for _, sdkData := range args.Sdkdata { - if sdkData.IpcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && sdkNames != "" { // 鎶妝olo鏁版嵁鐨勫悇涓洰鏍囩殑鍧愭爣杈撳嚭鏂逛究鍚庨潰鐢绘 + 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 { + if sdkData.IpcId == "91d923ef-6200-4549-ab1b-8e773e85d729" && sdkNames != "" { // 鎶妝olo鏁版嵁鐨勫悇涓洰鏍囩殑鍧愭爣杈撳嚭鏂逛究鍚庨潰鐢绘 + for _, areaMap := range sdkData.AreaMapList { + if areaMap.IsEffective { + cars = append(cars, putYolosToResult(areaMap)...) } } } @@ -192,7 +205,7 @@ islink = false } var labelTypes []int // 0涓簓olo鏍囩锛�1涓篺ace鏍囩 2涓轰袱鑰呮爣绛� - if sdkNames != "" { + 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))) @@ -204,7 +217,12 @@ } 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["face"].([]FaceResult))) + logger.Info("-------------------鐩爣鎸佺画缁撴灉鏍囩", len(args.RuleResult["target"].([]structure.Result))) + //labelTypes = append(labelTypes,2) + } + if len(cars) > 0 { + args.RuleResult["car"] = append(args.RuleResult["car"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, cars, polygonId, islink,label}) + logger.Info("-------------------鐩爣鎸佺画缁撴灉鏍囩", len(args.RuleResult["target"].([]structure.Result))) //labelTypes = append(labelTypes,2) } // 缁欐寔缁椂闂寸殑绗竴寮犺祴浜堢紦瀛樻暟鎹紙閬嶅巻澶嶅埗锛� @@ -238,6 +256,7 @@ // 缁撴灉涓哄亣鏃朵篃瑕佽蛋锛屾湁鏉�姝诲畾鏃跺櫒鐨勬搷浣� TimerAlarm(&label, groupRule.GroupId, result) //fmt.Println(timeFlag) + logger.Info("涓嶇鍚堣鍒�") return false,[]int{} } } @@ -429,7 +448,10 @@ 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" && rule.SdkId != "812b674b-2375-4589-919a-5c1c3278a977"{ // 鎺掗櫎瀵圭敾闈腑鍗曚釜鐩爣鐨勭畻娉曪紝涓綋闈欐浠ュ強闈犲彸琛岃繖绉� + if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a977" { // 鎺掗櫎瀵圭敾闈腑鍗曚釜鐩爣鐨勭畻娉曪紝涓綋闈欐浠ュ強闈犲彸琛岃繖绉� + return "" + } + if rule.SdkArgAlias == "duration" { //logger.Info("褰撳墠灏忚鍒欐槸锛�---------", rule) // 鍏堢湅鐪嬪畾鏃跺櫒鍏冪礌闃熷垪涓槸鍚︽湁杩欐潯瑙勫垯鐨勫畾鏃跺櫒,濡傛灉鏈夊氨涓嶈兘鍐嶆鍒涘缓浜� rw.Lock() @@ -442,6 +464,9 @@ } 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,*lable}) timeLength, _ := strconv.Atoi(rule.SdkArgValue) timeEle := TimeElement{N: timeLength, InitN: timeLength, AlarmFlag: false, BufferFlag: 10, CacheSdkData: structure.ResultMsg{message, nil}} // 鎵旇繘鍘讳竴涓畾鏃跺櫒鍏冪礌锛堝苟缂撳瓨褰撳墠鐢婚潰甯ф暟鎹級 //TimeEleList = make(map[string]timeElement) -- Gitblit v1.8.0