From 9bb6f2ddbdcc3c06799dd7beb2e19861f982d9d4 Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期二, 09 七月 2019 11:13:51 +0800 Subject: [PATCH] 给配置文件对应的结构体配上yaml的序列化 --- ruleserver/ruleToformula.go | 58 +++++++++++++++++++++++++++++++++------------------------- 1 files changed, 33 insertions(+), 25 deletions(-) diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go index bb22dc5..26e0430 100644 --- a/ruleserver/ruleToformula.go +++ b/ruleserver/ruleToformula.go @@ -2,7 +2,7 @@ import ( "encoding/json" - "github.com/gogo/protobuf/proto" + "fmt" "ruleprocess/cache" "ruleprocess/logger" "sort" @@ -10,11 +10,13 @@ "strings" "time" - bigCache "basic.com/pubsub/cache.git" + bigCache "basic.com/pubsub/cache.git" "basic.com/pubsub/protomsg.git" "github.com/knetic/govaluate" ) - +func init () { + bigCache.Init() +} // 浠诲姟 type Task struct { camID string //鎽勫儚鏈篒D @@ -64,7 +66,7 @@ IsYolo bool // 鏄惁鏄痽olo鏁版嵁 Location Rect // 璁颁笅姣忎釜鐩爣鐨勪綅缃弬鏁帮紝鏈�鍚庣粰缁撴灉瑁呴厤浜鸿劯鏁版嵁鐨勬椂鍊欑敤鐨勫埌 SdkName string - Feature []byte + Feature []byte ThftRes protomsg.ThftResult Liker []*protomsg.Baseinfo } @@ -234,30 +236,36 @@ compareFlag := false // 鐪嬬湅鏄惁鏈夊彧閰嶄汉鑴告瘮瀵圭畻娉曚絾娌℃湁閰嶅姣斿簱鐨勮鍒欙紝濡傛灉鏈夛紝鍒欐瘮瀵瑰璞′负鍏ㄩ儴搴曞簱 for j := 0; j < len(groupRule.Rules); j++ { - if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972"{ - if groupRule.Rules[j].SdkArgAlias == "瀵规瘮搴曞簱" { + if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" { + if groupRule.Rules[j].SdkArgAlias == "compareBase" { compareFlag = true } } } if compareFlag { logger.Info("閰嶇疆浜嗗姣斿簳搴撳弬鏁�") - }else { + } else { logger.Info("娌℃湁閰嶇疆瀵规瘮搴曞簱鍙傛暟") } for j := 0; j < len(groupRule.Rules); j++ { - if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && groupRule.Rules[j].SdkArgAlias == "瀵规瘮搴曞簱"{ + // 鍙湁鏄汉鑴稿姣斿苟涓旈厤缃殑鍙傛暟鏄姣斿簳搴撴墠璧帮紙鑻ラ厤鐨勫姣旈槇鍊煎垯涓嶈蛋锛� + if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && groupRule.Rules[j].SdkArgAlias == "compareBase" { for _, sdkData := range args.Sdkdata { if sdkData.SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" { // 鎼滅储鍒颁汉鑴告娴嬬殑sdkdata 鐜板湪鍏充簬浜鸿劯鐨勫彧鏈変粬涓�涓猻dk锛屽叏鎵句粬 for _, areaMap := range sdkData.AreaMapList { // 鎷垮尯鍩熶腑姣忎釜浜鸿劯鐗瑰緛鍊煎幓瀵规瘮锛屽~鍏呭叾liker if groupRule.Rules[j].PolygonId == areaMap.areaId { - for _,arg := range areaMap.args { - bytes := bigCache.Getdbpersonmsg(string(arg.Feature),true) - binfos := protomsg.Binfos{} - proto.Unmarshal(bytes,&binfos) - arg.Liker = binfos.Infos - logger.Info("-------------------鎴愬姛缁檒iker璧嬪�硷細",arg.Liker) + for _, arg := range areaMap.args { + bytes := bigCache.Getdbpersonmsg("", arg.Feature, true) + var m map[string]float32 + json.Unmarshal(bytes, &m) + for key, val := range m { + fmt.Println(key) + baseinfo := protomsg.Baseinfo{} + baseinfo.CompareScore = val + arg.Liker = append(arg.Liker, &baseinfo) + } + logger.Info("-------------------鎴愬姛缁檒iker璧嬪�硷細", arg.Liker) } } } @@ -273,7 +281,7 @@ } }() logger.Info("+++++++++++瑙勫垯寮�濮嬭繍琛�+++++++++++++++++褰撳墠瑙勫垯--锛�", *groupRule) - Compare(args,groupRule) + Compare(args, groupRule) resultSplice := []*LittleRuleResult{} // 鍏堣繃瀹屾潯浠惰鍒� for j := 0; j < len(groupRule.Rules); j++ { @@ -330,12 +338,12 @@ 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 :] + completeFormula = completeFormula[2:] } if strings.HasPrefix(completeFormula, ">") || strings.HasPrefix(completeFormula, "<") { - completeFormula = completeFormula[1 :] + completeFormula = completeFormula[1:] } - logger.Info("-------------------鐪嬬湅鎷旀瘺鍚庣殑琛ㄨ揪寮忥細",completeFormula) + logger.Info("-------------------鐪嬬湅鎷旀瘺鍚庣殑琛ㄨ揪寮忥細", completeFormula) expression, _ := govaluate.NewEvaluableExpression(completeFormula) result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋� return result.(bool) @@ -418,7 +426,7 @@ //if flag11 { // args.RuleResult["face"] = faces //} - args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkName, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText,locations}) + args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkName, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, locations}) logger.Info("-------------------yolo缁撴灉鏍囩", args.RuleResult["yolo"].([]Result)) } if args.RuleResult["face"] != nil { @@ -482,7 +490,7 @@ if threshold <= obj.Score && size <= float64(obj.Rects.Width*obj.Rects.Height) && intersectionper <= PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale) { // 杩欐瑕佸榻愯〃杈惧紡閲屾墍闇�瑕佺殑鎵�鏈夊弬鏁� a.targetNum++ - arg1 := Arg{obj.Score, PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale), float64(obj.Rects.Width * obj.Rects.Height), obj.IsYolo, obj.Rects, obj.SdkName, obj.Feature,obj.ThftRes,[]*protomsg.Baseinfo{}} + arg1 := Arg{obj.Score, PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale), float64(obj.Rects.Width * obj.Rects.Height), obj.IsYolo, obj.Rects, obj.SdkName, obj.Feature, obj.ThftRes, []*protomsg.Baseinfo{}} //logger.Println("鏀捐繘鍘荤殑arg锛�-------", arg1) a.args = append(a.args, arg1) a.filterData = append(a.filterData, arg1) @@ -604,7 +612,7 @@ } } if sdkName != "" { - args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkName, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText,[]Rect{}}) + args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkName, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, []Rect{}}) logger.Info("-------------------yolo缁撴灉鏍囩", args.RuleResult["yolo"].([]Result)) } if args.RuleResult["face"] != nil { @@ -632,10 +640,10 @@ func filterRule(rule *protomsg.Rule, am *AreaMap) LittleRuleResult { if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a972" { // 澶勭悊鐨勬槸浜鸿劯绠楁硶 濡傛灉杩欐潯瑙勫垯閰嶇疆鐨勬槸浜鸿劯绠楁硶锛岃繃婊ゅ畬鏉′欢涔嬪悗鐩存帴寰楀嚭缁撴灉锛屽洜涓鸿偗瀹氭病鏈夋暟閲忔潯浠讹紝鑷繁鎷兼帴 - logger.Error("瑙勫垯鐨勭畻娉昳d鍜屽尯鍩熺殑绠楁硶id锛�",rule.SdkId,"===",am.sdkId) + logger.Info("瑙勫垯鐨勭畻娉昳d鍜屽尯鍩熺殑绠楁硶id锛�", rule.SdkId, "===", am.sdkId) if rule.SdkId == am.sdkId && rule.PolygonId == am.areaId { // 绠楁硶鍜屽尯鍩熼兘寰楀鐨勪笂 - if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && rule.SdkArgAlias != "time_rule"{ + if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && rule.SdkArgAlias != "time_rule" { // 鍙渶瑕佽繃婊ら槇鍊硷紝杩囨护瀹屽悗鏁扮粍闀垮害澶т簬0鍗充负鎶ヨ锛屼絾瑕佽�冭檻濡備綍瀵规瘡涓�寮犻兘鎶ヨ鍛� argValue, err := strconv.ParseFloat(rule.SdkArgValue, 64) if err != nil { @@ -646,8 +654,8 @@ for _, obj := range am.filterData { for index := 0; index < len(obj.Liker); { // 灏嗚揪涓嶅埌闃堝�肩殑鐩镐技鑰呬粠鐩镐技鑰呮暟缁勪腑鍒犻櫎 - logger.Warn("=======================鐩镐技鍊硷細",float64(obj.Liker[index].CompareScore * 100)) - if float64(obj.Liker[index].CompareScore * 100) < argValue { + logger.Warn("=======================鐩镐技鍊硷細", float64(obj.Liker[index].CompareScore*100)) + if float64(obj.Liker[index].CompareScore*100) < argValue { // Go 璇█涓垏鐗囧垹闄ゅ厓绱犵殑鏈川鏄細浠ヨ鍒犻櫎鍏冪礌涓哄垎鐣岀偣锛屽皢鍓嶅悗涓や釜閮ㄥ垎鐨勫唴瀛橀噸鏂拌繛鎺ヨ捣鏉ャ�備笉鐢ㄦ��鐤戯紝鏁扮粍鍒犻櫎鍏冪礌灏辫繖涔堝潙鐖� obj.Liker = append(obj.Liker[:index], obj.Liker[index+1:]...) } else { -- Gitblit v1.8.0