From 44d5e620bf62e4b1c70f16af980738d5c4c7d517 Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期一, 16 十二月 2019 18:33:19 +0800 Subject: [PATCH] --- --- algorithm/middleware/middleware.go | 117 +++++++++++++++++++++++++--------------------------------- 1 files changed, 51 insertions(+), 66 deletions(-) diff --git a/algorithm/middleware/middleware.go b/algorithm/middleware/middleware.go index fd4c8f2..e3c951a 100644 --- a/algorithm/middleware/middleware.go +++ b/algorithm/middleware/middleware.go @@ -73,8 +73,9 @@ //logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", groupRule.Rules[j],sdkName,groupRule.Rules[j].SdkArgAlias, "---","") for _, areaMap := range sdkData.AreaMapList { ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap,lable,args,message) - if groupRule.Rules[j].RuleWithPre == "鈯�" { - assembleDta(args,groupRule.Rules[j-1],groupRule.Rules[j]) + logger.Info("鍓嶇疆杩炴帴绗︼細",groupRule.Rules[j]) + if groupRule.Rules[j].RuleWithPre == "鈯�" && len(ruleResult.Target) > 0 { + assembleDta(resultSplice[len(resultSplice)-1].Target,ruleResult.Target) // 鎶婂綋鍓嶅皬瑙勫垯缁撴灉缃┖ ruleResult = structure.LittleRuleResult{} } @@ -99,41 +100,41 @@ } } // 浜鸿劯 - //for j := 0; j < len(groupRule.Rules); j++ { - // if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && groupRule.Rules[j].SdkArgAlias != "time_rule"{ - // for _, sdkData := range args.Sdkdata { - // // 鏍规嵁瑙勫垯鐨剆dkId鏌ュ嚭鍏跺搴旂殑ipcId锛岀敤ipcId鍘绘壘璇ユ瘮瀵圭殑鏁版嵁 - // sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId) - // if err != nil { - // logger.Error("娌℃煡鍒皊dk鐨勪俊鎭�---", err) - // } - // ipcId := sdk.IpcId - // sdkName := sdk.SdkName - // //logger.Info("瑙勫垯鐨刬pcId涓巗dkData鐨処pcId:", ipcId, "===", sdkData.IpcId) - // if ipcId == sdkData.IpcId { - // //logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", sdkName, "---","") - // for _, areaMap := range sdkData.AreaMapList { - // ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap,lable,args,message) - // if ruleResult.Result != "" { - // //logger.Info("浜鸿劯姣斿瑙勫垯缁撴灉锛�", ruleResult.Result) - // // 濡傛灉缁撴灉涓虹湡锛屾妸杩欐潯瑙勫垯涓殑鍖哄煙缃负鏈夋晥 - // if strings.Contains(ruleResult.Result, "true") { - // areaMap.IsEffective = true - // } - // // 濡傛灉姝ょ粨鏋滀负鐪熶笖褰撳墠杩囩殑鏄痽olo绠楁硶锛屽簲璁颁笅姝よ鍒欐墍瀵瑰簲鐨剆dkName,鍙﹀锛岃繕瑕佸幓閲� (鍚庡姞锛氭妸姝ゆ潯瑙︾鐨勫尯鍩焛d涔熻褰曚笅鏉�) - // if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) { - // sdkNames = sdkName + " " - // } - // if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(polygonId, groupRule.Rules[j].PolygonId) { - // polygonId += groupRule.Rules[j].PolygonId + "," - // } - // resultSplice = append(resultSplice, &ruleResult) - // } - // } - // } - // } - // } - //} + for j := 0; j < len(groupRule.Rules); j++ { + if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && groupRule.Rules[j].SdkArgAlias != "time_rule"{ + for _, sdkData := range args.Sdkdata { + // 鏍规嵁瑙勫垯鐨剆dkId鏌ュ嚭鍏跺搴旂殑ipcId锛岀敤ipcId鍘绘壘璇ユ瘮瀵圭殑鏁版嵁 + sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId) + if err != nil { + logger.Error("娌℃煡鍒皊dk鐨勪俊鎭�---", err) + } + ipcId := sdk.IpcId + sdkName := sdk.SdkName + //logger.Info("瑙勫垯鐨刬pcId涓巗dkData鐨処pcId:", ipcId, "===", sdkData.IpcId) + if ipcId == sdkData.IpcId { + //logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", sdkName, "---","") + for _, areaMap := range sdkData.AreaMapList { + ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap,lable,args,message) + if ruleResult.Result != "" { + //logger.Info("浜鸿劯姣斿瑙勫垯缁撴灉锛�", ruleResult.Result) + // 濡傛灉缁撴灉涓虹湡锛屾妸杩欐潯瑙勫垯涓殑鍖哄煙缃负鏈夋晥 + if strings.Contains(ruleResult.Result, "true") { + areaMap.IsEffective = true + } + // 濡傛灉姝ょ粨鏋滀负鐪熶笖褰撳墠杩囩殑鏄痽olo绠楁硶锛屽簲璁颁笅姝よ鍒欐墍瀵瑰簲鐨剆dkName,鍙﹀锛岃繕瑕佸幓閲� (鍚庡姞锛氭妸姝ゆ潯瑙︾鐨勫尯鍩焛d涔熻褰曚笅鏉�) + if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) { + sdkNames = sdkName + " " + } + if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(polygonId, groupRule.Rules[j].PolygonId) { + polygonId += groupRule.Rules[j].PolygonId + "," + } + resultSplice = append(resultSplice, &ruleResult) + } + } + } + } + } + } // 涓綋闈欐 for j := 0; j < len(groupRule.Rules); j++ { if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a977" && groupRule.Rules[j].SdkArgAlias == "duration"{ @@ -329,7 +330,7 @@ break } } - return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + flag, rule.Sort} + return structure.LittleRuleResult{SdkName:am.SdkName, Result:rule.RuleWithPre + "" + flag, Sort:rule.Sort} } if rule.Operator == "unsatisfy" || rule.Operator == "!=" { // 涓嶆弧瓒虫墍閫夌殑鏃堕棿瑙勫垯 @@ -349,7 +350,7 @@ break } } - return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + flag, rule.Sort} + return structure.LittleRuleResult{SdkName:am.SdkName, Result:rule.RuleWithPre + "" + flag, Sort:rule.Sort} } } @@ -471,36 +472,20 @@ // } //} // 濡傛灉瑙勫垯缁勪腑鏈夊寘鍚鍙凤紝鎶婅鍒欑粍涔嬪悗鐨勮鍒欏搴旂殑绠楁硶鍜屽尯鍩熸彁鍙栫殑鏁版嵁瑁呴厤鍒板墠闈㈠幓 -func assembleDta(args *structure.SdkDatas,rule1,rule2 *protomsg.Rule) { - // 鎷垮埌鍚庨潰鐨勯偅涓尯鍩熺殑鏁版嵁 - logger.Info("瑙﹀彂浜嗗寘鍚簨浠讹紝鎶婂悗鑰呯殑鏁版嵁缁欏埌鍓嶈��") - area := structure.AreaMap{} - for _, sdkData := range args.Sdkdata { - for _, areaMap := range sdkData.AreaMapList { - if areaMap.SdkId == rule2.SdkId && areaMap.AreaId == rule2.PolygonId { - area = *areaMap - goto second - } - } +func assembleDta(targets1,targets2 []*structure.Arg) { + if len(targets1) > 0 { + logger.Info("鏈変汉浣擄細",len(targets1)) + for _,target := range targets1 { + mergeArg(target,targets2) + targets2 = nil + return // 瑁呴厤涓�娆″氨鍙互 } -second: for _, sdkData := range args.Sdkdata { - for _, areaMap := range sdkData.AreaMapList { - if areaMap.SdkId == rule1.SdkId && areaMap.AreaId == rule1.PolygonId { - // 鎷垮埌鍖呭惈绗︿箣鍓嶇殑鏁版嵁锛岄亶鍘嗚閰� - for _,arg := range areaMap.FilterData { - mergeArg(arg,area) - logger.Info("鍚堝苟鍚庣殑arg鏄細",*arg) - } - // 娓呯┖浜鸿劯锛屼汉鑴镐笉鍐嶅崟鐙彃鍏ヤ簡 - area.FilterData = nil - return // 瑁呴厤涓�娆″氨鍙互 - } - } - } + } } -func mergeArg(arg *structure.Arg,areaMap structure.AreaMap) { - for _,arg1 := range areaMap.FilterData { +func mergeArg(arg *structure.Arg,targets2 []*structure.Arg) { + for _,arg1 := range targets2 { + logger.Info("浜鸿劯锛�",arg1.Location,arg1.Score) precent := ruleserver.PgsInterPercent(Rect2Point(arg.Location),arg1.Location,1,1) if precent > 99 { arg.AttachArg = arg1.SourceArg -- Gitblit v1.8.0