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 |   42 ++++++++++++++++++++++++++++++++++--------
 1 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index 37a495a..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)
@@ -88,6 +86,18 @@
 	}
 	a,b,c := f.(func(args *structure.SdkDatas,rule protomsg.GroupRule,label *structure.Others,message *protomsg.SdkMessage)(bool,string, string))(args,rule,lable,message)
 	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) {
@@ -169,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)...)
 						}
 					}
 				}
@@ -184,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)))
@@ -196,6 +217,11 @@
 			}
 			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)
 			}
@@ -438,9 +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})
+				//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