From 0e28dd6942c8a7207146f6a6b542bc45f75462b0 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期一, 16 十二月 2019 13:35:26 +0800
Subject: [PATCH] ---

---
 algorithm/middleware/middleware.go |  277 +++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 226 insertions(+), 51 deletions(-)

diff --git a/algorithm/middleware/middleware.go b/algorithm/middleware/middleware.go
index 7eb9b21..507f864 100644
--- a/algorithm/middleware/middleware.go
+++ b/algorithm/middleware/middleware.go
@@ -14,13 +14,52 @@
 	"time"
 )
 
-func Entrance (args *structure.SdkDatas,groupRule protomsg.GroupRule) (bool,string,string){
+func Entrance (args *structure.SdkDatas,groupRule protomsg.GroupRule,lable *structure.Others,message *protomsg.SdkMessage) (bool,string,string){
 	resultSplice := []*structure.LittleRuleResult{}
 	sdkNames := ""
 	polygonId := ""
+
+	// 杩欐杩囩殑鏄椂闂存瑙勫垯锛堟椂闂存绛夛級
+	for j := 0; j < len(groupRule.Rules); j++ {
+		for _, sdkData := range args.Sdkdata {
+			sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId)
+			if err != nil {
+				logger.Error("娌℃煡鍒皊dk鐨勪俊鎭�---", err)
+			}
+			ipcId := sdk.IpcId
+			sdkName := sdk.SdkName
+			if ipcId == sdkData.IpcId {
+				for _, areaMap := range sdkData.AreaMapList {
+					ruleResult := timeRuleResult(groupRule.Rules[j], areaMap)
+					if ruleResult.Result != "" {
+						if strings.Contains(ruleResult.Result, "false") {
+							return false,"",""  // 涓嶇鍚堟椂闂磋鍒欑殑璇濈洿鎺ヨ繑鍥烇紝涓嶅啀娴垂绋嬪簭鎵ц
+						}
+						if strings.Contains(ruleResult.Result, "true") {
+							areaMap.IsEffective = true
+						}
+						//logger.Info("鏃堕棿瑙勫垯缁撴灉锛�", ruleResult.Result)
+						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].SdkArgAlias == "score" || groupRule.Rules[j].SdkArgAlias == "proportion" || groupRule.Rules[j].SdkArgAlias == "size" || (groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && groupRule.Rules[j].SdkArgAlias != "time_rule"){
+
+		carFlag := groupRule.Rules[j].SdkArgAlias == "license" ||  groupRule.Rules[j].SdkArgAlias == "nConfidence" || groupRule.Rules[j].SdkArgAlias == "fConfidence" ||
+			groupRule.Rules[j].SdkArgAlias == "nType" || groupRule.Rules[j].SdkArgAlias == "nVehicleColor1" ||  groupRule.Rules[j].SdkArgAlias == "nVehicleBright" || groupRule.Rules[j].SdkArgAlias == "nCarColor" ||
+		groupRule.Rules[j].SdkArgAlias == "fVDConf" || groupRule.Rules[j].SdkArgAlias == "nVehicleColor2" ||  groupRule.Rules[j].SdkArgAlias == "nColor" || groupRule.Rules[j].SdkArgAlias == "nPlateFlag"
+
+		if groupRule.Rules[j].SdkArgAlias == "score" || groupRule.Rules[j].SdkArgAlias == "proportion" || groupRule.Rules[j].SdkArgAlias == "size" ||
+			(groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && groupRule.Rules[j].SdkArgAlias != "time_rule") || carFlag{
 			for _, sdkData := range args.Sdkdata {
 				// 鏍规嵁瑙勫垯鐨剆dkId鏌ュ嚭鍏跺搴旂殑ipcId锛岀敤ipcId鍘绘壘璇ユ瘮瀵圭殑鏁版嵁
 				sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId)
@@ -31,11 +70,17 @@
 				sdkName := sdk.SdkName
 				//logger.Info("瑙勫垯鐨刬pcId涓巗dkData鐨処pcId:", ipcId, "===", sdkData.IpcId)
 				if ipcId == sdkData.IpcId {
-					//logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", sdkName, "---","")
+					//logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", groupRule.Rules[j],sdkName,groupRule.Rules[j].SdkArgAlias, "---","")
 					for _, areaMap := range sdkData.AreaMapList {
-						ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap)
+						ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap,lable,args,message)
+						logger.Info("鍓嶇疆杩炴帴绗︼細",groupRule.Rules[j])
+						if groupRule.Rules[j].RuleWithPre == "鈯�" {
+							assembleDta(args,groupRule.Rules[j-1],groupRule.Rules[j])
+							// 鎶婂綋鍓嶅皬瑙勫垯缁撴灉缃┖
+							ruleResult = structure.LittleRuleResult{}
+						}
 						if ruleResult.Result != "" {
-							logger.Info("鏉′欢瑙勫垯缁撴灉锛�", ruleResult.Result)
+							//logger.Info("鏉′欢瑙勫垯缁撴灉锛�", ruleResult.Result)
 							// 濡傛灉缁撴灉涓虹湡锛屾妸杩欐潯瑙勫垯涓殑鍖哄煙缃负鏈夋晥
 							if strings.Contains(ruleResult.Result, "true") {
 								areaMap.IsEffective = true
@@ -69,9 +114,9 @@
 				if ipcId == sdkData.IpcId {
 					//logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", sdkName, "---","")
 					for _, areaMap := range sdkData.AreaMapList {
-						ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap)
+						ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap,lable,args,message)
 						if ruleResult.Result != "" {
-							logger.Info("浜鸿劯姣斿瑙勫垯缁撴灉锛�", ruleResult.Result)
+							//logger.Info("浜鸿劯姣斿瑙勫垯缁撴灉锛�", ruleResult.Result)
 							// 濡傛灉缁撴灉涓虹湡锛屾妸杩欐潯瑙勫垯涓殑鍖哄煙缃负鏈夋晥
 							if strings.Contains(ruleResult.Result, "true") {
 								areaMap.IsEffective = true
@@ -92,7 +137,7 @@
 	}
 	// 涓綋闈欐
 	for j := 0; j < len(groupRule.Rules); j++ {
-		if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && groupRule.Rules[j].SdkArgAlias != "time_rule"{
+		if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a977" && groupRule.Rules[j].SdkArgAlias == "duration"{
 			for _, sdkData := range args.Sdkdata {
 				// 鏍规嵁瑙勫垯鐨剆dkId鏌ュ嚭鍏跺搴旂殑ipcId锛岀敤ipcId鍘绘壘璇ユ瘮瀵圭殑鏁版嵁
 				sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId)
@@ -103,11 +148,11 @@
 				sdkName := sdk.SdkName
 				//logger.Info("瑙勫垯鐨刬pcId涓巗dkData鐨処pcId:", ipcId, "===", sdkData.IpcId)
 				if ipcId == sdkData.IpcId {
-					//logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", sdkName, "---","")
+					//logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", groupRule.Rules[j],sdkName,groupRule.Rules[j].SdkArgAlias, "---","")
 					for _, areaMap := range sdkData.AreaMapList {
-						ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap)
+						ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap,lable,args,message)
 						if ruleResult.Result != "" {
-							logger.Info("浜鸿劯姣斿瑙勫垯缁撴灉锛�", ruleResult.Result)
+							//logger.Info("涓綋闈欐缁撴灉锛�", ruleResult.Result)
 							// 濡傛灉缁撴灉涓虹湡锛屾妸杩欐潯瑙勫垯涓殑鍖哄煙缃负鏈夋晥
 							if strings.Contains(ruleResult.Result, "true") {
 								areaMap.IsEffective = true
@@ -119,6 +164,70 @@
 							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-5c1c3278a978" && (groupRule.Rules[j].SdkArgAlias == "nCarCount" || groupRule.Rules[j].SdkArgAlias == "nCarLogoCount"){
+			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("褰撳墠璧扮殑瑙勫垯鏄�--锛�", 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 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 == "520af340-f257-4fe2-ac3c-695c390e53dc" && groupRule.Rules[j].SdkArgAlias == "cmpThreshold"{
+			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
+				if ipcId == sdkData.IpcId {
+					//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 ruleResult.Result != "" {
+							//logger.Info("杞︾墝缁撴灉锛�", ruleResult.Result)
+							// 濡傛灉缁撴灉涓虹湡锛屾妸杩欐潯瑙勫垯涓殑鍖哄煙缃负鏈夋晥
+							if strings.Contains(ruleResult.Result, "true") {
+								areaMap.IsEffective = true
+							}
+
 							resultSplice = append(resultSplice, &ruleResult)
 						}
 					}
@@ -139,12 +248,12 @@
 				sdkName := sdk.SdkName
 				if ipcId == sdkData.IpcId {
 					for _, areaMap := range sdkData.AreaMapList {
-						ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap)
+						ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap,lable,args,message)
 						if ruleResult.Result != "" {
 							if strings.Contains(ruleResult.Result, "true") {
 								areaMap.IsEffective = true
 							}
-							logger.Info("鏁伴噺瑙勫垯缁撴灉锛�", ruleResult.Result)
+							//logger.Info("鏁伴噺瑙勫垯缁撴灉锛�", ruleResult.Result)
 							if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
 								sdkNames = sdkName + " "
 							}
@@ -158,35 +267,7 @@
 			}
 		}
 	}
-	// 杩欐杩囩殑鏄椂闂存瑙勫垯锛堟椂闂存绛夛級
-	for j := 0; j < len(groupRule.Rules); j++ {
-		for _, sdkData := range args.Sdkdata {
-			sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId)
-			if err != nil {
-				logger.Error("娌℃煡鍒皊dk鐨勪俊鎭�---", err)
-			}
-			ipcId := sdk.IpcId
-			sdkName := sdk.SdkName
-			if ipcId == sdkData.IpcId {
-				for _, areaMap := range sdkData.AreaMapList {
-					ruleResult := timeRuleResult(groupRule.Rules[j], areaMap)
-					if ruleResult.Result != "" {
-						if strings.Contains(ruleResult.Result, "true") {
-							areaMap.IsEffective = true
-						}
-						logger.Info("鏃堕棿瑙勫垯缁撴灉锛�", ruleResult.Result)
-						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)
-					}
-				}
-			}
-		}
-	}
+
 	// 灏嗘暟缁勬寜sort鎺掑簭
 	sort.Sort(ruleserver.ResultList(resultSplice))
 	// 鎺掑簭鍚庡彇鍚勮嚜鐨勭粨鏋滃拰杩炴帴绗︽嫾鍑鸿鍒欒〃杈惧紡寰楀嚭缁撴灉
@@ -277,20 +358,30 @@
 	return structure.LittleRuleResult{}
 }
 
-func CallSo(sdkId string,rule *protomsg.Rule, am *structure.AreaMap) structure.LittleRuleResult{
+func CallSo(sdkId string,rule *protomsg.Rule, am *structure.AreaMap,lable *structure.Others,args *structure.SdkDatas,message *protomsg.SdkMessage) structure.LittleRuleResult{
 	// 鏍规嵁sdkId鏌ュ嚭鍏跺搴旂殑sdk鐨剆oName锛岃皟鐢ㄧ浉搴攕o鐨凟ntrance鏂规硶
 	var soName = ""
-	if sdkId == "812b674b-2375-4589-919a-5c1c3278a97e" {
+
+	switch sdkId {
+	case "812b674b-2375-4589-919a-5c1c3278a97e":
 		soName = "face.so"
-	} else if sdkId == "812b674b-2375-4589-919a-5c1c3278a975"{
+	case "812b674b-2375-4589-919a-5c1c3278a975":
 		soName = "intrusion.so"
-	} else if sdkId == "812b674b-2375-4589-919a-5c1c3278a976" || sdkId == "812b674b-2375-4589-919a-5c1c3278a973" {
+	case "812b674b-2375-4589-919a-5c1c3278a976":
 		soName = "personUnsual.so"
-	} else if sdkId == "812b674b-2375-4589-919a-5c1c3278a972" {
+	case "812b674b-2375-4589-919a-5c1c3278a973":
+		soName = "personUnsual.so"
+	case "812b674b-2375-4589-919a-5c1c3278a972":
 		soName = "faceCompare.so"
+	case "812b674b-2375-4589-919a-5c1c3278a977":
+		soName = "static.so"
+	case "812b674b-2375-4589-919a-5c1c3278a978":
+		soName = "plate.so"
+	case "520af340-f257-4fe2-ac3c-695c390e53dc":
+		soName = "personTrack.so"
 	}
-	//soInfo,errr := cache.GetSoInfoById(sdkId)
-	//if errr != nil {
+	//soInfo,err := cache.GetSoInfoById(sdkId)
+	//if err != nil {
 	//	panic("娌¤鍒版敞鍐岃〃")
 	//}
 	//soName := soInfo.SoName
@@ -302,7 +393,8 @@
 	if err1 != nil {
 		panic("娌℃湁鎵惧埌鍏ュ彛鍑芥暟")
 	}
-	ruleResult := f.(func(rule *protomsg.Rule, am *structure.AreaMap)structure.LittleRuleResult)(rule,am)
+	//logger.Info("鍙戠粰so鐨勬暟鎹細",sdkId,rule.SdkArgValue,rule.Operator,rule.SdkArgAlias)
+	ruleResult := f.(func(rule *protomsg.Rule, am *structure.AreaMap,lable *structure.Others, args *structure.SdkDatas,message *protomsg.SdkMessage)structure.LittleRuleResult)(rule,am,lable,args,message)
 	return ruleResult
 }
 
@@ -332,4 +424,87 @@
 		}
 	}
 	return 0
-}
\ No newline at end of file
+}
+
+//// 鏃堕棿娈佃皟搴�
+//func timeDispatch(args *structure.SdkDatas,groupRule protomsg.GroupRule,resultSplice []*structure.LittleRuleResult,sdkNames,polygonId string) (bool,string,string){
+//	// 杩欐杩囩殑鏄椂闂存瑙勫垯锛堟椂闂存绛夛級
+//	for j := 0; j < len(groupRule.Rules); j++ {
+//		for _, sdkData := range args.Sdkdata {
+//			sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId)
+//			if err != nil {
+//				logger.Error("娌℃煡鍒皊dk鐨勪俊鎭�---", err)
+//			}
+//			ipcId := sdk.IpcId
+//			sdkName := sdk.SdkName
+//			if ipcId == sdkData.IpcId {
+//				for _, areaMap := range sdkData.AreaMapList {
+//					ruleResult := timeRuleResult(groupRule.Rules[j], areaMap)
+//					if ruleResult.Result != "" {
+//						if strings.Contains(ruleResult.Result, "false") {
+//							return false,"",""  // 涓嶇鍚堟椂闂磋鍒欑殑璇濈洿鎺ヨ繑鍥烇紝涓嶅啀娴垂绋嬪簭鎵ц
+//						}
+//						if strings.Contains(ruleResult.Result, "true") {
+//							areaMap.IsEffective = true
+//						}
+//						//logger.Info("鏃堕棿瑙勫垯缁撴灉锛�", ruleResult.Result)
+//						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)
+//					}
+//				}
+//			}
+//		}
+//	}
+//}
+
+//func assembleData(args *structure.SdkDatas,resultSplice []*structure.LittleRuleResult,groupRule protomsg.GroupRule) {
+//	for index,result := range resultSplice {
+//		if strings.Contains(result.Result,"contain") {
+//			assembleDta(args,groupRule.Rules[index-1],groupRule.Rules[index])
+//			// 鍒犻櫎甯︽湁contain鐨勮鍒欑粨鏋�
+//			resultSplice = append(resultSplice[:index],resultSplice[index+1:]...)
+//		}
+//	}
+//}
+// 濡傛灉瑙勫垯缁勪腑鏈夊寘鍚鍙凤紝鎶婅鍒欑粍涔嬪悗鐨勮鍒欏搴旂殑绠楁硶鍜屽尯鍩熸彁鍙栫殑鏁版嵁瑁呴厤鍒板墠闈㈠幓
+func assembleDta(args *structure.SdkDatas,rule1,rule2 *protomsg.Rule) {
+		// 鎷垮埌鍚庨潰鐨勯偅涓尯鍩熺殑鏁版嵁
+		logger.Info("瑙﹀彂浜嗗寘鍚簨浠讹紝鎶婂悗鑰呯殑鏁版嵁缁欏埌鍓嶈��",*rule1,*rule2)
+		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
+				}
+			}
+		}
+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 {
+		precent := ruleserver.PgsInterPercent(Rect2Point(arg.Location),arg1.Location,1,1)
+		if precent > 99 {
+			arg.AttachArg = arg1.SourceArg
+		}
+	}
+}

--
Gitblit v1.8.0