From 76636907c24fc83002717c41c7265cdfdc1b7582 Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期四, 11 七月 2019 16:54:34 +0800 Subject: [PATCH] --- --- ruleserver/ruleToformula.go | 127 ++++++++++++++++++++++-------------------- 1 files changed, 66 insertions(+), 61 deletions(-) diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go index 62fd7dd..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鐨勭粨鏋� @@ -180,7 +181,7 @@ areaMap := AreaMap{cameraId: cameraId, areaId: polygon.Id, areaJson: polygon.Polygon, triggerLine: polygon.TriggerLine, directionLine: polygon.DirectionLine} // 涓烘瘡涓憚鍍忔満鍖哄煙濉厖鏁版嵁 areaMap.CountAreaObjs(arg) - arg.AreaMapList = append(arg.AreaMapList, areaMap) + arg.AreaMapList = append(arg.AreaMapList, &areaMap) } } @@ -222,6 +223,27 @@ } } } + +// 缁欑洰鏍囧~鍏卨iker +func (arg *Arg) fillLiker() { + bytes := bigCache.Getdbpersonmsg("", arg.Feature, true) + var m map[string]float32 + err1 := json.Unmarshal(bytes, &m) + if err1 != nil { + logger.Error("getBaseInfo瑙e帇閿欒", err1) + } + logger.Info("----------------------------------------map鏄�", m) + for key, val := range m { + logger.Info("_______________________________________瀵规瘮搴撶殑杩斿洖鍊�", key, val) + baseinfo, err1 := esutil.Dbpersoninfosbyid(key) + if err1 != nil { + logger.Error("鏌ヨ搴曞簱浜哄憳淇℃伅鍑洪敊", err1) + } + baseinfo.CompareScore = val + arg.Liker = append(arg.Liker, &baseinfo) + } + //logger.Info("------------------绗竴娆$湅args:",*arg) +} func Compare(args *SdkDatas, groupRule *protomsg.GroupRule) { compareFlag := 0 tableIds := "" @@ -253,47 +275,18 @@ if groupRule.Rules[j].PolygonId == areaMap.areaId { for _, arg := range areaMap.args { if compareFlag == 1 { - bytes := bigCache.Getdbpersonmsg("", arg.Feature, true) - var m map[string]float32 - err1 := json.Unmarshal(bytes, &m) - if err1 != nil { - logger.Error("getBaseInfo瑙e帇閿欒", err1) - } - logger.Info("----------------------------------------map鏄�", m) - for key, val := range m { - logger.Info("_______________________________________瀵规瘮搴撶殑杩斿洖鍊�", key, val) - baseinfo, err1 := esutil.Dbpersoninfosbyid(key) - if err1 != nil { - logger.Error("鏌ヨ搴曞簱浜哄憳淇℃伅鍑洪敊", err1) - } - baseinfo.CompareScore = val - arg.Liker = append(arg.Liker, &baseinfo) - } - logger.Info("----------------绗竴娆$湅鐪媋rgs:",arg) + arg.fillLiker() } 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)) } - logger.Info("----------------------绗簩娆$湅args锛�",areaMap.args) areaMap.filterData = areaMap.args + //logger.Info("=======绗竴娆$湅args锛�",(areaMap.filterData)) } } } @@ -311,6 +304,7 @@ Compare(args, groupRule) resultSplice := []*LittleRuleResult{} sdkNames := "" + polygonId := "" // 鍏堣繃瀹屾潯浠惰鍒� for j := 0; j < len(groupRule.Rules); j++ { for _, sdkData := range args.Sdkdata { @@ -321,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) + 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) } @@ -351,11 +350,14 @@ sdkName := sdk.SdkName if ipcId == sdkData.IpcId { for _, areaMap := range sdkData.AreaMapList { - ruleResult := transferParameters(groupRule.Rules[j], &areaMap) + 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) } @@ -374,11 +376,14 @@ sdkName := sdk.SdkName if ipcId == sdkData.IpcId { for _, areaMap := range sdkData.AreaMapList { - ruleResult := timeRuleResult(groupRule.Rules[j], &areaMap) + 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) } @@ -397,7 +402,7 @@ if ipcId == sdkData.IpcId { for _, areaMap := range sdkData.AreaMapList { // 鍘诲紑鍚竴涓畾鏃跺櫒 - duration(groupRule.Rules[j], groupRule.GroupId, &areaMap, args) + duration(groupRule.Rules[j], groupRule.GroupId, areaMap, args) } } } @@ -464,7 +469,7 @@ for _, sdkData := range args.Sdkdata { if sdkData.IpcId == "A8B73405-373D-4F23-CED2-A617EBD7EC55" && faceFlag { // sdkData閲屾湁浜鸿劯鏁版嵁涓旈厤缃簡绠楁硶鎵嶆妸绗﹀悎鏉′欢鐨勬暟鎹杩涙爣绛鹃噷鍘� for _, areaMap := range sdkData.AreaMapList { - faces = append(faces, putFaceToResult(&areaMap)...) + faces = append(faces, putFaceToResult(areaMap)...) } } } @@ -477,12 +482,12 @@ for _, sdkData := range args.Sdkdata { if sdkData.IpcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && sdkNames != "" { // 鎶妝olo鏁版嵁鐨勫悇涓洰鏍囩殑鍧愭爣杈撳嚭鏂逛究鍚庨潰鐢绘 for _, areaMap := range sdkData.AreaMapList { - locations = append(locations, putYolosToResult(&areaMap)...) + locations = append(locations, putYolosToResult(areaMap)...) } } } 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 { @@ -497,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) { @@ -519,7 +524,7 @@ faces := []Arg{} if len(am.filterData) > 0 { for _, data := range am.filterData { - faces = append(faces, data) + faces = append(faces, *data) } } @@ -556,8 +561,8 @@ a.targetNum++ arg1 := Arg{obj.Score, PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale), float64(obj.Rects.Width * obj.Rects.Height), obj.IsYolo, obj.Rects, obj.Feature, obj.ThftRes, []*protomsg.Baseinfo{}} //logger.Println("鏀捐繘鍘荤殑arg锛�-------", arg1) - a.args = append(a.args, arg1) - a.filterData = append(a.filterData, arg1) + a.args = append(a.args, &arg1) + a.filterData = append(a.filterData, &arg1) } } a.time = time.Unix(time.Now().Unix(), 0).String()[11:16] @@ -654,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))) @@ -725,7 +730,7 @@ // 濡傛灉鏄笉瑙勭煩鐨勮繛鎺ョ缁熺粺杩斿洖false 瑙勫垯涔熷彧鑳藉垽鏂汉鑴哥殑鐩镐技搴︼紝鎵�浠ヤ笉瀛樺湪鍒殑杩炴帴绗� if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔� logger.Info("--------------------缁堜簬绛夊埌浣犵殑涓嬫枃") - var args []Arg + var args []*Arg if rule.RuleWithPre == "&&" { args = am.filterData } else { @@ -774,7 +779,7 @@ if rule.PolygonId == am.areaId { // 棣栧厛杩欐潯瑙勫垯寰楁槸杩欎釜绠楁硶鐨勮鍒欙紝鍏舵瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓� if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔� logger.Info("----------褰撳墠鏉′欢瑙勫垯锛�---------", rule) - var args []Arg + var args []*Arg if rule.RuleWithPre == "&&" { args = am.filterData } else { -- Gitblit v1.8.0