From 9df109de9e0452e13d22968340c4790022118cdf Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期四, 11 七月 2019 17:09:02 +0800
Subject: [PATCH] ---

---
 ruleserver/ruleToformula.go |   68 +++++++++++++++++----------------
 1 files changed, 35 insertions(+), 33 deletions(-)

diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index 02deb86..a0ac529 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -89,8 +89,8 @@
 	triggerLine   string
 	directionLine string
 	targetNum     int    // 鍖哄煙鍐呯洰鏍囨暟閲�
-	args          []*Arg  // 鍖哄煙鍐呯洰鏍囬泦鍚�
-	filterData    []*Arg  // 杩囨护鍚庡尯鍩熷唴鐩爣闆嗗悎
+	args          []*Arg // 鍖哄煙鍐呯洰鏍囬泦鍚�
+	filterData    []*Arg // 杩囨护鍚庡尯鍩熷唴鐩爣闆嗗悎
 	time          string // 褰撳墠鏃堕棿锛堢敤浠ュ尮閰嶆椂闂磋鍒欙級
 	keepRight     bool   // 鏄惁闈犲彸琛�
 	isStatic      bool   // 鏄惁闈欐
@@ -115,7 +115,7 @@
 	IsStatic    bool       // 鏄惁闈欐
 	ImageWidth  int        // 鎽勫儚鏈烘媿鎽勭殑鍥惧儚瀹� 鍍忕礌
 	ImageHeight int        // 鎽勫儚鏈烘媿鎽勭殑鍥惧儚楂� 鍍忕礌
-	AreaMapList []*AreaMap  // 鏈瑂dk鎻愬彇鐨勬暟鎹寜鐓у尯鍩熷垝鍒嗗悗鐨勬暟鎹泦鍚�
+	AreaMapList []*AreaMap // 鏈瑂dk鎻愬彇鐨勬暟鎹寜鐓у尯鍩熷垝鍒嗗悗鐨勬暟鎹泦鍚�
 }
 
 // 浠庣畻娉曟ā鍧楀効鎷挎潵鐨勫涓�甯у浘鍍忓悇涓畻娉曟彁鍙栫殑鏁版嵁闆嗗悎
@@ -135,12 +135,13 @@
 
 // 杩囪鍒欏簱鎵撲笂鐨勬爣绛�
 type Result struct {
-	TaskId      string // 浠诲姟id
-	SdkName     string
-	RuleGroupId string // 瑙勫垯缁刬d
-	AlarmLevel  int32  // 鎶ヨ绛夌骇
-	RuleText    string // 鏂囧瓧鐗堣鍒欑粍
-	Location    []Rect
+	TaskId       string // 浠诲姟id
+	SdkName      string
+	RuleGroupId  string // 瑙勫垯缁刬d
+	AlarmLevel   int32  // 鎶ヨ绛夌骇
+	RuleText     string // 鏂囧瓧鐗堣鍒欑粍
+	Location     []Rect // 鐩爣鐨勫潗鏍�
+	AlarmPolygon string // 瑙﹀彂鐨勬姤璀︽
 }
 type LittleRuleResult struct {
 	SdkName string // 璁板綍涓嬫缁撴灉鏄摢涓猻dk鐨勭粨鏋�
@@ -222,7 +223,9 @@
 		}
 	}
 }
-func (arg *Arg) fillLiker(){
+
+// 缁欑洰鏍囧~鍏卨iker
+func (arg *Arg) fillLiker() {
 	bytes := bigCache.Getdbpersonmsg("", arg.Feature, true)
 	var m map[string]float32
 	err1 := json.Unmarshal(bytes, &m)
@@ -277,26 +280,13 @@
 								if compareFlag == 2 {
 									array := strings.Split(tableIds, ",")
 									for i := 0; i < len(array)-1; i++ {
-										bytes := bigCache.Getdbpersonmsg(array[i], arg.Feature, true)
-										var m map[string]float32
-										err1 := json.Unmarshal(bytes, &m)
-										if err1 != nil {
-											logger.Error("getBaseInfo瑙e帇閿欒", err1)
-										}
-										for key, val := range m {
-											baseinfo, err1 := esutil.Dbpersoninfosbyid(key)
-											if err1 != nil {
-												logger.Error("鏌ヨ搴曞簱浜哄憳淇℃伅鍑洪敊", err1)
-											}
-											baseinfo.CompareScore = val
-											arg.Liker = append(arg.Liker, &baseinfo)
-										}
+										arg.fillLiker()
 									}
 								}
 								logger.Info("-------------------鎴愬姛缁檒iker璧嬪��,闀垮害涓猴細", len(arg.Liker))
 							}
 							areaMap.filterData = areaMap.args
-							logger.Info("=======绗竴娆$湅args锛�",areaMap.filterData)
+							//logger.Info("=======绗竴娆$湅args锛�",(areaMap.filterData))
 						}
 					}
 				}
@@ -314,6 +304,7 @@
 	Compare(args, groupRule)
 	resultSplice := []*LittleRuleResult{}
 	sdkNames := ""
+	polygonId := ""
 	// 鍏堣繃瀹屾潯浠惰鍒�
 	for j := 0; j < len(groupRule.Rules); j++ {
 		for _, sdkData := range args.Sdkdata {
@@ -324,16 +315,21 @@
 			}
 			ipcId := sdk.IpcId
 			sdkName := sdk.SdkName
-			logger.Info("瑙勫垯鐨刬pcId涓巗dkData鐨処pcId:",ipcId,"===",sdkData.IpcId)
+			logger.Info("瑙勫垯鐨刬pcId涓巗dkData鐨処pcId:", ipcId, "===", sdkData.IpcId)
 			if ipcId == sdkData.IpcId {
 				logger.Info("褰撳墠璧扮殑瑙勫垯鐨勭畻娉曟槸--锛�", sdkName, "---")
+				logger.Info("========================鏈夊嚑涓尯鍩燂細",len(sdkData.AreaMapList))
 				for _, areaMap := range sdkData.AreaMapList {
 					ruleResult := filterRule(groupRule.Rules[j], areaMap)
 					if ruleResult.Result != "" {
 						logger.Info("鏉′欢瑙勫垯缁撴灉锛�", ruleResult.Result)
-						// 濡傛灉姝ょ粨鏋滀负鐪熶笖褰撳墠杩囩殑鏄痽olo绠楁硶锛屽簲璁颁笅姝よ鍒欐墍瀵瑰簲鐨剆dkName,鍙﹀锛岃繕瑕佸幓閲�
-						if ruleResult.Result == "true" && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
+						// 濡傛灉姝ょ粨鏋滀负鐪熶笖褰撳墠杩囩殑鏄痽olo绠楁硶锛屽簲璁颁笅姝よ鍒欐墍瀵瑰簲鐨剆dkName,鍙﹀锛岃繕瑕佸幓閲� (鍚庡姞锛氭妸姝ゆ潯瑙︾鐨勫尯鍩焛d涔熻褰曚笅鏉�)
+						if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
 							sdkNames = sdkName + ","
+							polygonId = groupRule.Rules[j].PolygonId + ","
+						}
+						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)
 					}
@@ -357,8 +353,11 @@
 					ruleResult := transferParameters(groupRule.Rules[j], areaMap)
 					if ruleResult.Result != "" {
 						logger.Info("鏁伴噺瑙勫垯缁撴灉锛�", ruleResult.Result)
-						if ruleResult.Result == "true" && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
+						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)
 					}
@@ -380,8 +379,11 @@
 					ruleResult := timeRuleResult(groupRule.Rules[j], areaMap)
 					if ruleResult.Result != "" {
 						logger.Info("鏃堕棿瑙勫垯缁撴灉锛�", ruleResult.Result)
-						if ruleResult.Result == "true" && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
+						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)
 					}
@@ -485,7 +487,7 @@
 					}
 				}
 				if sdkNames != "" {
-					args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkNames, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, locations})
+					args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkNames, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, locations,polygonId})
 					logger.Info("-------------------yolo缁撴灉鏍囩", args.RuleResult["yolo"].([]Result))
 				}
 				if args.RuleResult["face"] != nil {
@@ -500,7 +502,7 @@
 		return false
 	}
 }
-func TimerAlarm(groupId string) (int){
+func TimerAlarm(groupId string) (int) {
 	var flagTime int = 0
 	for k, timeEle := range TimeEleList {
 		if strings.Contains(k, groupId) {
@@ -657,7 +659,7 @@
 				result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
 				if result.(bool) {
 					logger.Info("___________________________________________________________________鑱斿姩浠诲姟鎶ヨ")
-					args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, "", groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, []Rect{}})
+					args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, "", groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, []Rect{},""})
 					logger.Info("-------------------yolo缁撴灉鏍囩鏈夊嚑涓�", len(args.RuleResult["yolo"].([]Result)))
 					if args.RuleResult["face"] != nil {
 						logger.Info("-------------------face缁撴灉鏍囩鏈夊嚑涓�", len(args.RuleResult["face"].([]Arg)))

--
Gitblit v1.8.0