From 573a1e019fc00e171b7df7105fe69b414a490966 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期六, 09 十一月 2019 15:03:36 +0800
Subject: [PATCH] 把一部分判断放进中间件

---
 algorithm/middleware/middleware.go |   73 ++++++++++
 /dev/null                          |    0 
 ruleserver/ruleToformula.go        |  226 ++++++++++++++------------------
 algorithm/static/static.go         |   41 +++++
 ruleserver/readyDataForRule.go     |   12 
 ruleserver/timeTicker.go           |    8 
 ruleserver/geoPolygon.go           |   20 +-
 7 files changed, 224 insertions(+), 156 deletions(-)

diff --git a/algorithm/middleware/middleware.go b/algorithm/middleware/middleware.go
index a1e9bbc..7eb9b21 100644
--- a/algorithm/middleware/middleware.go
+++ b/algorithm/middleware/middleware.go
@@ -7,12 +7,14 @@
 	"github.com/knetic/govaluate"
 	"plugin"
 	"ruleprocess/cache"
+	"ruleprocess/ruleserver"
 	"ruleprocess/structure"
+	"sort"
 	"strings"
 	"time"
 )
 
-func Entrance (args *structure.SdkDatas,groupRule protomsg.GroupRule) ([]*structure.LittleRuleResult,string,string){
+func Entrance (args *structure.SdkDatas,groupRule protomsg.GroupRule) (bool,string,string){
 	resultSplice := []*structure.LittleRuleResult{}
 	sdkNames := ""
 	polygonId := ""
@@ -52,6 +54,43 @@
 			}
 		}
 	}
+	// 浜鸿劯
+	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)
+						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 {
@@ -148,7 +187,37 @@
 			}
 		}
 	}
-	return resultSplice,sdkNames,polygonId
+	// 灏嗘暟缁勬寜sort鎺掑簭
+	sort.Sort(ruleserver.ResultList(resultSplice))
+	// 鎺掑簭鍚庡彇鍚勮嚜鐨勭粨鏋滃拰杩炴帴绗︽嫾鍑鸿鍒欒〃杈惧紡寰楀嚭缁撴灉
+	completeFormula := ""
+	for _, va := range resultSplice {
+		completeFormula = completeFormula + va.Result
+	}
+	if strings.HasPrefix(completeFormula, "&&") || strings.HasPrefix(completeFormula, "||") || strings.HasPrefix(completeFormula, ">=") || strings.HasPrefix(completeFormula, "<=") || strings.HasPrefix(completeFormula, "==") || strings.HasPrefix(completeFormula, "!=") || strings.HasPrefix(completeFormula, ">") || strings.HasPrefix(completeFormula, "<") {
+		// 浠ヨ繖浜涘紑澶寸殑鍩烘湰鏄仈鍔ㄤ换鍔�
+		if strings.HasPrefix(completeFormula, "&&") || strings.HasPrefix(completeFormula, "||") || strings.HasPrefix(completeFormula, ">=") || strings.HasPrefix(completeFormula, "<=") || strings.HasPrefix(completeFormula, "==") || strings.HasPrefix(completeFormula, "!=") {
+			completeFormula = completeFormula[2:]
+		}
+		if strings.HasPrefix(completeFormula, ">") || strings.HasPrefix(completeFormula, "<") {
+			completeFormula = completeFormula[1:]
+		}
+		logger.Info("-------------------鐪嬬湅鎷旀瘺鍚庣殑琛ㄨ揪寮忥細", completeFormula)
+		//expression, _ := govaluate.NewEvaluableExpression(completeFormula)
+		//result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
+		//return result.(bool)
+	}
+	if completeFormula != "" {
+		logger.Info("缁撴灉鍏紡-----------锛�", completeFormula)
+		expression, err2 := govaluate.NewEvaluableExpression(completeFormula)
+		if strings.HasPrefix(completeFormula, "&&") || strings.HasPrefix(completeFormula, "||") || err2 != nil {
+			panic("瑙勫垯鏈夎锛屽緱鍒扮殑鏁板鍏紡涓嶅彲瑙f瀽")
+		}
+		result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
+		return result.(bool),sdkNames,polygonId
+	} else {
+		return false,sdkNames,polygonId
+	}
 }
 
 func timeRuleResult(rule *protomsg.Rule, am *structure.AreaMap) structure.LittleRuleResult {
diff --git a/algorithm/static/static.go b/algorithm/static/static.go
index 88b4e33..6caff13 100644
--- a/algorithm/static/static.go
+++ b/algorithm/static/static.go
@@ -8,9 +8,23 @@
 	"ruleprocess/structure"
 	"strconv"
 )
+
 //涓綋闈欐绠楁硶
+var StaticMap = make(map[string]CameraArea)
+
+type CameraArea struct {
+	targets  []Obj
+	duration int
+	cache    structure.ResultMsg
+}
+type Obj struct {
+	id           string
+	location     []structure.Rect
+	staticStatus int
+}
+
 func Entrance(rule *protomsg.Rule, am *structure.AreaMap) structure.LittleRuleResult {
-	for _,obj := range am.FilterData {
+	for _, obj := range am.FilterData {
 		var flag bool = true
 		for k, _ := range ruleserver.TimeEleList {
 			if k == rule.Id+""+strconv.Itoa(int(obj.Id)) {
@@ -20,7 +34,7 @@
 		}
 		if flag {
 			timeEle := ruleserver.TimeElement{N: 10, InitN: 10, AlarmFlag: false, BufferFlag: 5} // 鎵旇繘鍘讳竴涓畾鏃跺櫒鍏冪礌
-			ruleserver.TimeEleList[rule.Id+""+strconv.Itoa(int(obj.Id))] = &timeEle // 瀹氭椂鍣ㄥ厓绱犱互灏忚鍒檌d鍜岀洰鏍噄d涓洪敭
+			ruleserver.TimeEleList[rule.Id+""+strconv.Itoa(int(obj.Id))] = &timeEle              // 瀹氭椂鍣ㄥ厓绱犱互灏忚鍒檌d鍜岀洰鏍噄d涓洪敭
 		}
 	}
 	return structure.LittleRuleResult{}
@@ -62,4 +76,25 @@
 	} else {
 		return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "false", rule.Sort}
 	}
-}
\ No newline at end of file
+}
+
+// 鍒ゆ柇涓や釜鐭╁舰鐨勯噸鍚堝害锛屾妸闈㈢Н鏇村ぇ鐨勫仛鍒嗘瘝
+func PgsInterPercent(pgpts []structure.Point, box structure.Rect, widthScale float64, heightScale float64) (percent float64) {
+
+	areapts, areaBox := ruleserver.GetLocation(box, 10)
+	var count = 0
+	for _, pts := range areapts {
+		if ruleserver.PintIsInPolygon(pts, pgpts, widthScale, heightScale) {
+			count++
+		}
+	}
+	perInterBox := float64(count) / float64(len(areapts)) // 閲嶅悎闈㈢Н鍗犵煩褰㈢殑姣斾緥
+	areaInter := perInterBox * areaBox
+	areaPg := ruleserver.ComputePolygonArea(pgpts)
+	perInterPg := areaInter / areaPg // 閲嶅悎闈㈢Н鍗犲杈瑰舰鍖哄煙鐨勬瘮渚�
+	// 鍝釜鍗犵殑姣斾緥灏忔寜鍝釜璁$畻锛屾瘮濡備汉绔欒捣鏉ヤ簡锛屽ぇ妗嗗浣忎簡灏忔
+	if perInterBox < perInterPg {
+		return (perInterBox * 100)
+	}
+	return (perInterPg * 100)
+}
diff --git a/ruleprocess b/ruleprocess
deleted file mode 100755
index 066a30c..0000000
--- a/ruleprocess
+++ /dev/null
Binary files differ
diff --git a/ruleserver/geoPolygon.go b/ruleserver/geoPolygon.go
index ec304a4..bb74b6c 100644
--- a/ruleserver/geoPolygon.go
+++ b/ruleserver/geoPolygon.go
@@ -20,12 +20,6 @@
 	return num1
 }
 
-//Point 鍧愭爣鐐�
-type Point struct {
-	X float64 `json:"x"`
-	Y float64 `json:"y"`
-}
-
 //Rect 妫�娴嬬洰鏍�
 type Rect struct {
 	X      float64
@@ -43,7 +37,7 @@
 //PintIsInPolygon 鍒ゆ柇鐐规槸鍚﹀湪澶氳竟褰㈠唴閮�
 //point涓鸿鍒ゆ柇鐨勫潗鏍囩偣
 //polygon鏄杈瑰舰鍚勭偣鏁扮粍
-func pintIsInPolygon(point structure.Pointfloat, polygon []Point, widthScale float64, heightScale float64) bool {
+func PintIsInPolygon(point structure.Pointfloat, polygon []structure.Point, widthScale float64, heightScale float64) bool {
 	var nCross int = 0
 	for i := 0; i < len(polygon); i++ {
 
@@ -73,7 +67,7 @@
 }
 
 //GetLocation 灏嗕竴涓粰瀹氳捣濮嬪潗鏍囷紝瀹藉害闀垮害鐨勭煩褰㈠尯鍩熷潎鍒嗕负n鏂逛唤骞惰繑鍥炰腑蹇冨潗鏍囷紙n涓哄崟杈瑰钩鍒嗘暟鍊硷級鍜岄潰绉�
-func getLocation(rect structure.Rect, n int) ([]structure.Pointfloat, float64) {
+func GetLocation(rect structure.Rect, n int) ([]structure.Pointfloat, float64) {
 	xArr := make([]float64, n) // 鐢ㄥ垏鐗囦笉鐢ㄦ暟缁勶紝鏁扮粍涓嶈兘鐢ㄥ彉閲忓畾涔夐暱搴�
 	yArr := make([]float64, n)
 	pointArr := make([]structure.Pointfloat, 0, n*n)
@@ -92,7 +86,7 @@
 }
 
 //ComputePolygonArea 璁$畻浠绘剰澶氳竟褰㈤潰绉�
-func computePolygonArea(polygon []Point) float64 {
+func ComputePolygonArea(polygon []structure.Point) float64 {
 	pointNum := len(polygon)
 	var s float64 = 0
 	if pointNum < 3 {
@@ -106,18 +100,18 @@
 }
 
 //PgsInterPercent calculate percent of two polygon intersection  璁$畻涓や釜澶氳竟褰㈢殑閲嶅彔鍗犳瘮
-func PgsInterPercent(pgpts []Point, box structure.Rect, widthScale float64, heightScale float64) (percent float64) {
+func PgsInterPercent(pgpts []structure.Point, box structure.Rect, widthScale float64, heightScale float64) (percent float64) {
 
-	areapts, areaBox := getLocation(box, 10)
+	areapts, areaBox := GetLocation(box, 10)
 	var count = 0
 	for _, pts := range areapts {
-		if pintIsInPolygon(pts, pgpts, widthScale, heightScale) {
+		if PintIsInPolygon(pts, pgpts, widthScale, heightScale) {
 			count++
 		}
 	}
 	perInterBox := float64(count) / float64(len(areapts)) // 閲嶅悎闈㈢Н鍗犵煩褰㈢殑姣斾緥
 	areaInter := perInterBox * areaBox
-	areaPg := computePolygonArea(pgpts)
+	areaPg := ComputePolygonArea(pgpts)
 	perInterPg := areaInter / areaPg // 閲嶅悎闈㈢Н鍗犲杈瑰舰鍖哄煙鐨勬瘮渚�
 	// 鍝釜鍗犵殑姣斾緥澶ф寜鍝釜璁$畻
 	if perInterBox > perInterPg {
diff --git a/ruleserver/readyDataForRule.go b/ruleserver/readyDataForRule.go
index 7aa9db4..91b36da 100644
--- a/ruleserver/readyDataForRule.go
+++ b/ruleserver/readyDataForRule.go
@@ -123,14 +123,14 @@
 
 
 // 灏嗗瓧绗︿覆鏍煎紡鐨勫潗鏍囧簭鍒楀寲涓篜oint鏍煎紡
-func Json2points(areaPoints string) []Point {
-	var pts []Point
+func Json2points(areaPoints string) []structure.Point {
+	var pts []structure.Point
 	if areaPoints == "[]" || areaPoints == "" {
 		logger.Error("=====================姝ゅ尯鍩熶负鍏ㄩ儴鍖哄煙")
-		pts = append(pts, Point{0, 0})
-		pts = append(pts, Point{0, 540})
-		pts = append(pts, Point{960, 540})
-		pts = append(pts, Point{960, 0})
+		pts = append(pts, structure.Point{0, 0})
+		pts = append(pts, structure.Point{0, 540})
+		pts = append(pts, structure.Point{960, 540})
+		pts = append(pts, structure.Point{960, 0})
 	} else {
 		err := json.Unmarshal([]byte(areaPoints), &pts)
 		if err != nil {
diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index bb78fda..d5433ae 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -9,7 +9,6 @@
 	"ruleprocess/structure"
 	"sort"
 	"strconv"
-	"strings"
 	"sync"
 )
 
@@ -77,7 +76,7 @@
 	}
 }
 
-func CallMiddleware(args *structure.SdkDatas,rule protomsg.GroupRule) ([]*structure.LittleRuleResult, string, string){
+func CallMiddleware(args *structure.SdkDatas,rule protomsg.GroupRule) (bool, string, string){
 	p,err :=  plugin.Open("./algorithm/middleware.so")
 	if err != nil {
 		panic(err)
@@ -86,7 +85,7 @@
 	if err1 != nil {
 		panic("娌℃湁鎵惧埌涓棿浠跺叆鍙e嚱鏁�")
 	}
-	a,b,c := f.(func(args *structure.SdkDatas,rule protomsg.GroupRule)([]*structure.LittleRuleResult, string, string))(args,rule)
+	a,b,c := f.(func(args *structure.SdkDatas,rule protomsg.GroupRule)(bool, string, string))(args,rule)
 	return a,b,c
 }
 
@@ -99,149 +98,120 @@
 	logger.Info("+++++++++++瑙勫垯寮�濮嬭繍琛�+++++++++++++++++褰撳墠澶ц鍒�--锛�", (*groupRule).GroupText)
 	//logger.Warn("浼犺繘鍘讳箣鍚庢槸浠�涔堝痉琛岋細",args.RuleResult["yolo"])
 	Compare(args, groupRule)
-	resultSplice := []*structure.LittleRuleResult{}
+	result := false
 	sdkNames := ""
 	polygonId := ""
-	resultSplice,sdkNames,polygonId = CallMiddleware(args,*groupRule)
-	// 灏嗘暟缁勬寜sort鎺掑簭
-	sort.Sort(resultList(resultSplice))
-	// 鎺掑簭鍚庡彇鍚勮嚜鐨勭粨鏋滃拰杩炴帴绗︽嫾鍑鸿鍒欒〃杈惧紡寰楀嚭缁撴灉
-	completeFormula := ""
-	for _, va := range resultSplice {
-		completeFormula = completeFormula + va.Result
-	}
-	if strings.HasPrefix(completeFormula, "&&") || strings.HasPrefix(completeFormula, "||") || strings.HasPrefix(completeFormula, ">=") || strings.HasPrefix(completeFormula, "<=") || strings.HasPrefix(completeFormula, "==") || strings.HasPrefix(completeFormula, "!=") || strings.HasPrefix(completeFormula, ">") || strings.HasPrefix(completeFormula, "<") {
-		// 浠ヨ繖浜涘紑澶寸殑鍩烘湰鏄仈鍔ㄤ换鍔�
-		if strings.HasPrefix(completeFormula, "&&") || strings.HasPrefix(completeFormula, "||") || strings.HasPrefix(completeFormula, ">=") || strings.HasPrefix(completeFormula, "<=") || strings.HasPrefix(completeFormula, "==") || strings.HasPrefix(completeFormula, "!=") {
-			completeFormula = completeFormula[2:]
-		}
-		if strings.HasPrefix(completeFormula, ">") || strings.HasPrefix(completeFormula, "<") {
-			completeFormula = completeFormula[1:]
-		}
-		logger.Info("-------------------鐪嬬湅鎷旀瘺鍚庣殑琛ㄨ揪寮忥細", completeFormula)
-		//expression, _ := govaluate.NewEvaluableExpression(completeFormula)
-		//result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
-		//return result.(bool)
-	}
-	if completeFormula != "" {
-		logger.Info("缁撴灉鍏紡-----------锛�", completeFormula)
-		expression, err2 := govaluate.NewEvaluableExpression(completeFormula)
-		if strings.HasPrefix(completeFormula, "&&") || strings.HasPrefix(completeFormula, "||") || err2 != nil {
-			panic("瑙勫垯鏈夎锛屽緱鍒扮殑鏁板鍏紡涓嶅彲瑙f瀽")
-		}
-		result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
+	// 鎶婁竴甯ф暟鎹拰涓�缁勮鍒欏彂缁欑畻娉曢儴鍒嗭紝寰楀嚭鍒ゆ柇缁撴灉
+	result,sdkNames,polygonId = CallMiddleware(args,*groupRule)
 
-		if result.(bool) {
-			// 鏈�鍚庤繃鎸佺画鏃堕棿绛夋椂闂寸淮搴︾殑鏉′欢   鎶婃椂闂磋鍒欎綅缃皟鏁村埌杩欎釜浣嶇疆鏄负浜嗙紦瀛樻暟鎹�
-			cacheId := ""
+	if result {
+		// 鏈�鍚庤繃鎸佺画鏃堕棿绛夋椂闂寸淮搴︾殑鏉′欢   鎶婃椂闂磋鍒欎綅缃皟鏁村埌杩欎釜浣嶇疆鏄负浜嗙紦瀛樻暟鎹�
+		cacheId := ""
+		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
+				if ipcId == sdkData.IpcId {
+					for _, areaMap := range sdkData.AreaMapList {
+						// 鍘诲紑鍚竴涓畾鏃跺櫒
+						cacheid := duration(groupRule.Rules[j], groupRule.GroupId, areaMap, args, message)
+						if cacheid != "" {
+							cacheId = cacheid
+						}
+					}
+				}
+			}
+		}
+		// 杩涜瀹氭椂鍣ㄧ殑澶勭悊鍜屽垽鏂�
+		timeFlag := TimerAlarm(&label, groupRule.GroupId, result)
+		if timeFlag == "01" || timeFlag == "10" || timeFlag == "11" || cacheId != ""{ // 娌℃湁瀹氭椂鍣ㄦ垨鑰呮弧瓒冲畾鏃跺櫒鏉′欢
+			// 鎵撲汉鑴告爣绛惧拰yolo鏍囩
+			// 鏈�鍚庢垚鍔熸姤璀︽墠鎶婄鍚堟潯浠剁殑浜鸿劯鏁版嵁濉炶繘缁撴灉鏍囩閲�
+			// 閰嶄簡浜鸿劯鐨勭畻娉曟墠鎶婁汉鑴哥殑鏁版嵁鐢╁嚭鏉ユ墦鏍囩
+			faces := []structure.Arg{}
+			faceFlag := false
 			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
-					if ipcId == sdkData.IpcId {
-						for _, areaMap := range sdkData.AreaMapList {
-							// 鍘诲紑鍚竴涓畾鏃跺櫒
-							cacheid := duration(groupRule.Rules[j], groupRule.GroupId, areaMap, args, message)
-							if cacheid != "" {
-								cacheId = cacheid
-							}
+				if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" {
+					faceFlag = true
+				}
+			}
+			for _, sdkData := range args.Sdkdata {
+				if sdkData.IpcId == "A8B73405-373D-4F23-CED2-A617EBD7EC55" && faceFlag { // sdkData閲屾湁浜鸿劯鏁版嵁涓旈厤缃簡绠楁硶鎵嶆妸绗﹀悎鏉′欢鐨勬暟鎹杩涙爣绛鹃噷鍘�
+					for _, areaMap := range sdkData.AreaMapList {
+						if areaMap.IsEffective {
+							faces = append(faces, putFaceToResult(areaMap, faces)...)
 						}
 					}
 				}
 			}
-			// 杩涜瀹氭椂鍣ㄧ殑澶勭悊鍜屽垽鏂�
-			timeFlag := TimerAlarm(&label, groupRule.GroupId, result.(bool))
-			if timeFlag == "01" || timeFlag == "10" || timeFlag == "11" || cacheId != ""{ // 娌℃湁瀹氭椂鍣ㄦ垨鑰呮弧瓒冲畾鏃跺櫒鏉′欢
-				// 鎵撲汉鑴告爣绛惧拰yolo鏍囩
-				// 鏈�鍚庢垚鍔熸姤璀︽墠鎶婄鍚堟潯浠剁殑浜鸿劯鏁版嵁濉炶繘缁撴灉鏍囩閲�
-				// 閰嶄簡浜鸿劯鐨勭畻娉曟墠鎶婁汉鑴哥殑鏁版嵁鐢╁嚭鏉ユ墦鏍囩
-				faces := []structure.Arg{}
-				faceFlag := false
-				for j := 0; j < len(groupRule.Rules); j++ {
-					if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" {
-						faceFlag = true
-					}
-				}
-				for _, sdkData := range args.Sdkdata {
-					if sdkData.IpcId == "A8B73405-373D-4F23-CED2-A617EBD7EC55" && faceFlag { // sdkData閲屾湁浜鸿劯鏁版嵁涓旈厤缃簡绠楁硶鎵嶆妸绗﹀悎鏉′欢鐨勬暟鎹杩涙爣绛鹃噷鍘�
-						for _, areaMap := range sdkData.AreaMapList {
-							if areaMap.IsEffective {
-								faces = append(faces, putFaceToResult(areaMap, faces)...)
-							}
+			//logger.Info("face鏍囩鐨勯暱搴︼細",len(faces))
+			//for _,face := range faces  {
+			//	//logger.Debug("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�擾_______________鐪嬬湅浜鸿劯鐨勫潗鏍�:",face.Location)
+			//}
+			logger.Warn("___________________________________________________________________________缁堜簬璧板畬涓囬噷闀垮緛")
+			// 鎶婁粬浠殑浣嶇疆鏁版嵁涔熶紶涓嬪幓
+			locations := []structure.TargetInfo{}
+			for _, sdkData := range args.Sdkdata {
+				if sdkData.IpcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && sdkNames != "" { // 鎶妝olo鏁版嵁鐨勫悇涓洰鏍囩殑鍧愭爣杈撳嚭鏂逛究鍚庨潰鐢绘
+					for _, areaMap := range sdkData.AreaMapList {
+						if areaMap.IsEffective {
+							locations = append(locations, putYolosToResult(areaMap)...)
 						}
 					}
 				}
-				//logger.Info("face鏍囩鐨勯暱搴︼細",len(faces))
-				//for _,face := range faces  {
-				//	//logger.Debug("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�擾_______________鐪嬬湅浜鸿劯鐨勫潗鏍�:",face.Location)
-				//}
-				logger.Warn("___________________________________________________________________________缁堜簬璧板畬涓囬噷闀垮緛")
-				// 鎶婁粬浠殑浣嶇疆鏁版嵁涔熶紶涓嬪幓
-				locations := []structure.TargetInfo{}
-				for _, sdkData := range args.Sdkdata {
-					if sdkData.IpcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && sdkNames != "" { // 鎶妝olo鏁版嵁鐨勫悇涓洰鏍囩殑鍧愭爣杈撳嚭鏂逛究鍚庨潰鐢绘
-						for _, areaMap := range sdkData.AreaMapList {
-							if areaMap.IsEffective {
-								locations = append(locations, putYolosToResult(areaMap)...)
-							}
-						}
-					}
-				}
-				logger.Debug("------locations鐨勫唴瀹癸細", locations)
-				var islink bool
-				if groupRule.SetType == "linkTask" {
-					islink = true
-				} else {
-					islink = false
-				}
-				var labelTypes []int // 0涓簓olo鏍囩锛�1涓篺ace鏍囩 2涓轰袱鑰呮爣绛�
-				if sdkNames != "" {
-					args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, locations, polygonId, islink,label,})
-					labelTypes = append(labelTypes,0)
-					//logger.Info("-------------------yolo缁撴灉鏍囩闀垮害", len(args.RuleResult["yolo"].([]Result)))
-				}
-				if faceFlag {
-					args.RuleResult["face"] = append(args.RuleResult["face"].([]structure.FaceResult), structure.FaceResult{structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, []structure.TargetInfo{}, polygonId, islink,label,}, faces})
-					//logger.Info("-------------------face缁撴灉鏍囩", len(args.RuleResult["face"].([]FaceResult)))
-					labelTypes = append(labelTypes,1)
-				}
-				// 缁欐寔缁椂闂寸殑绗竴寮犺祴浜堢紦瀛樻暟鎹紙閬嶅巻澶嶅埗锛�
-				if cacheId != "" { // 鏈夎繖甯ф暟鎹殑缂撳瓨
-					tempMap := make(map[string]interface{})
-					for k, result := range args.RuleResult {
-						if k == "yolo" {
-							tempMap[k] = []structure.Result{}
-							for _, res := range result.([]structure.Result) {
-								tempMap[k] = append(tempMap[k].([]structure.Result), res)
-							}
-						}
-						if k == "face" {
-							tempMap[k] = []structure.FaceResult{}
-							for _, res := range result.([]structure.FaceResult) {
-								tempMap[k] = append(tempMap[k].([]structure.FaceResult), res)
-							}
-						}
-					}
-					rw.Lock()
-					TimeEleList[cacheId].CacheSdkData.RuleResult = tempMap
-					rw.Unlock()
-				}
-
-				return true,labelTypes
+			}
+			logger.Debug("------locations鐨勫唴瀹癸細", locations)
+			var islink bool
+			if groupRule.SetType == "linkTask" {
+				islink = true
 			} else {
-				return false,[]int{}
+				islink = false
+			}
+			var labelTypes []int // 0涓簓olo鏍囩锛�1涓篺ace鏍囩 2涓轰袱鑰呮爣绛�
+			if sdkNames != "" {
+				args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, locations, polygonId, islink,label,})
+				labelTypes = append(labelTypes,0)
+				//logger.Info("-------------------yolo缁撴灉鏍囩闀垮害", len(args.RuleResult["yolo"].([]Result)))
+			}
+			if faceFlag {
+				args.RuleResult["face"] = append(args.RuleResult["face"].([]structure.FaceResult), structure.FaceResult{structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, []structure.TargetInfo{}, polygonId, islink,label,}, faces})
+				//logger.Info("-------------------face缁撴灉鏍囩", len(args.RuleResult["face"].([]FaceResult)))
+				labelTypes = append(labelTypes,1)
+			}
+			// 缁欐寔缁椂闂寸殑绗竴寮犺祴浜堢紦瀛樻暟鎹紙閬嶅巻澶嶅埗锛�
+			if cacheId != "" { // 鏈夎繖甯ф暟鎹殑缂撳瓨
+				tempMap := make(map[string]interface{})
+				for k, result := range args.RuleResult {
+					if k == "yolo" {
+						tempMap[k] = []structure.Result{}
+						for _, res := range result.([]structure.Result) {
+							tempMap[k] = append(tempMap[k].([]structure.Result), res)
+						}
+					}
+					if k == "face" {
+						tempMap[k] = []structure.FaceResult{}
+						for _, res := range result.([]structure.FaceResult) {
+							tempMap[k] = append(tempMap[k].([]structure.FaceResult), res)
+						}
+					}
+				}
+				rw.Lock()
+				TimeEleList[cacheId].CacheSdkData.RuleResult = tempMap
+				rw.Unlock()
 			}
 
+			return true,labelTypes
 		} else {
-			// 缁撴灉涓哄亣鏃朵篃瑕佽蛋锛屾湁鏉�姝诲畾鏃跺櫒鐨勬搷浣�
-			TimerAlarm(&label, groupRule.GroupId, result.(bool))
-			//fmt.Println(timeFlag)
 			return false,[]int{}
 		}
+
 	} else {
+		// 缁撴灉涓哄亣鏃朵篃瑕佽蛋锛屾湁鏉�姝诲畾鏃跺櫒鐨勬搷浣�
+		TimerAlarm(&label, groupRule.GroupId, result)
+		//fmt.Println(timeFlag)
 		return false,[]int{}
 	}
 }
diff --git a/ruleserver/timeTicker.go b/ruleserver/timeTicker.go
index a572879..820ab18 100644
--- a/ruleserver/timeTicker.go
+++ b/ruleserver/timeTicker.go
@@ -148,8 +148,8 @@
 func (p SubList) Less(i, j int) bool { return p[i].Sort < p[j].Sort }
 
 // 缁撴瀯浣撴牴鎹煇瀛楁鎺掑簭
-type resultList []*structure.LittleRuleResult
+type ResultList []*structure.LittleRuleResult
 
-func (p resultList) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }
-func (p resultList) Len() int           { return len(p) }
-func (p resultList) Less(i, j int) bool { return p[i].Sort < p[j].Sort }
+func (p ResultList) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }
+func (p ResultList) Len() int           { return len(p) }
+func (p ResultList) Less(i, j int) bool { return p[i].Sort < p[j].Sort }

--
Gitblit v1.8.0