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 |   85 +++++++++++++++++++++++++++---------------
 1 files changed, 55 insertions(+), 30 deletions(-)

diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index 7f2f17a..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)
-			}
-		}
-	}
-	//logger.Info("绗﹀悎鏉′欢鐨勭洰鏍囨暟鎹細",targets)
+
 	if result {
 		// 鏈�鍚庤繃鎸佺画鏃堕棿绛夋椂闂寸淮搴︾殑鏉′欢   鎶婃椂闂磋鍒欎綅缃皟鏁村埌杩欎釜浣嶇疆鏄负浜嗙紦瀛樻暟鎹�         锛侊紒锛侊紒锛乸s: 瀵圭敾闈腑鍗曚釜鐩爣鍋氬畾鏃跺櫒鐨勪笉鐢ㄥ啀杩囩敾闈㈠畾鏃跺櫒
 		cacheId := ""
@@ -175,16 +177,27 @@
 			}
 			logger.Debug("------locations鐨勫唴瀹癸細", yolos)
 			// 澶勭悊鐩爣瀹氭椂鏁版嵁
-			//targets := []*structure.Arg{}
-			//for _, sdkData := range args.Sdkdata {
-			//	if sdkData.IpcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && sdkNames != "" { // 鎶妝olo鏁版嵁鐨勫悇涓洰鏍囩殑鍧愭爣杈撳嚭鏂逛究鍚庨潰鐢绘
-			//		for _, areaMap := range sdkData.AreaMapList {
-			//			if areaMap.IsEffective {
-			//				yolos = append(yolos, putTargetsToResult(areaMap)...)
-			//			}
-			//		}
-			//	}
-			//}
+			targets := []*structure.Arg{}
+			for _, sdkData := range args.Sdkdata {
+				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)...)
+						}
+					}
+				}
+			}
 			var islink bool
 			if groupRule.SetType == "linkTask" {
 				islink = true
@@ -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)))
@@ -202,11 +215,16 @@
 				//logger.Info("-------------------face缁撴灉鏍囩", len(args.RuleResult["face"].([]FaceResult)))
 				labelTypes = append(labelTypes,1)
 			}
-			//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)))
-			//	//labelTypes = append(labelTypes,2)
-			//}
+			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["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)
+			}
 			// 缁欐寔缁椂闂寸殑绗竴寮犺祴浜堢紦瀛樻暟鎹紙閬嶅巻澶嶅埗锛�
 			if cacheId != "" { // 鏈夎繖甯ф暟鎹殑缂撳瓨
 				tempMap := make(map[string]interface{})
@@ -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