From cbe73e3706a6494b506febd0e4a51ce1096aae1f Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期四, 05 十二月 2019 17:21:46 +0800
Subject: [PATCH] 加跟踪算法,进程间通讯加sleep

---
 algorithm/middleware/middleware.go |  104 ++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 73 insertions(+), 31 deletions(-)

diff --git a/algorithm/middleware/middleware.go b/algorithm/middleware/middleware.go
index 282e069..8657df7 100644
--- a/algorithm/middleware/middleware.go
+++ b/algorithm/middleware/middleware.go
@@ -18,6 +18,38 @@
 	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++ {
 
@@ -168,6 +200,42 @@
 			}
 		}
 	}
+	// 璺ㄦ憚鍍忔満璺熻釜
+	for j := 0; j < len(groupRule.Rules); j++ {
+		if groupRule.Rules[j].SdkId == "浜轰綋璺熻釜" && groupRule.Rules[j].SdkArgAlias != "鐏甸瓊鍙傛暟"{
+			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].SdkArgAlias == "objCount" {
@@ -200,35 +268,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))
 	// 鎺掑簭鍚庡彇鍚勮嚜鐨勭粨鏋滃拰杩炴帴绗︽嫾鍑鸿鍒欒〃杈惧紡寰楀嚭缁撴灉
@@ -334,9 +374,11 @@
 		soName = "static.so"
 	} else if sdkId == "812b674b-2375-4589-919a-5c1c3278a978" {
 		soName = "plate.so"
+	} else if sdkId == "浜轰綋璺熻釜" {
+		soName = "personTrack.so"
 	}
-	//soInfo,errr := cache.GetSoInfoById(sdkId)
-	//if errr != nil {
+	//soInfo,err := cache.GetSoInfoById(sdkId)
+	//if err != nil {
 	//	panic("娌¤鍒版敞鍐岃〃")
 	//}
 	//soName := soInfo.SoName

--
Gitblit v1.8.0