From 97c3fd313506a3a2d60c7889d58935dfca458ca0 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期四, 11 七月 2019 17:04:41 +0800
Subject: [PATCH] ---
---
ruleserver/ruleToformula.go | 126 ++++++++++++++++++++++--------------------
1 files changed, 66 insertions(+), 60 deletions(-)
diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index ad10e89..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,46 +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)
- }
+ 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))
}
areaMap.filterData = areaMap.args
- logger.Info("----------------------绗簩娆$湅args锛�",areaMap.filterData)
+ //logger.Info("=======绗竴娆$湅args锛�",(areaMap.filterData))
}
}
}
@@ -310,6 +304,7 @@
Compare(args, groupRule)
resultSplice := []*LittleRuleResult{}
sdkNames := ""
+ polygonId := ""
// 鍏堣繃瀹屾潯浠惰鍒�
for j := 0; j < len(groupRule.Rules); j++ {
for _, sdkData := range args.Sdkdata {
@@ -320,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)
}
@@ -350,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)
}
@@ -373,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)
}
@@ -396,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)
}
}
}
@@ -463,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)...)
}
}
}
@@ -476,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 {
@@ -496,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) {
@@ -518,7 +524,7 @@
faces := []Arg{}
if len(am.filterData) > 0 {
for _, data := range am.filterData {
- faces = append(faces, data)
+ faces = append(faces, *data)
}
}
@@ -555,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]
@@ -653,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)))
@@ -724,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 {
@@ -773,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