From cd2a59c4cfc968e0629a88d82b962a6177b2ea4f Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期一, 01 七月 2019 17:49:18 +0800 Subject: [PATCH] 加点异常处理 --- ruleserver/ruleToformula.go | 31 ++++++++++++++++++------------- 1 files changed, 18 insertions(+), 13 deletions(-) diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go index 607afd3..ca648a2 100644 --- a/ruleserver/ruleToformula.go +++ b/ruleserver/ruleToformula.go @@ -64,7 +64,7 @@ Location Rect // 璁颁笅姣忎釜鐩爣鐨勪綅缃弬鏁帮紝鏈�鍚庣粰缁撴灉瑁呴厤浜鸿劯鏁版嵁鐨勬椂鍊欑敤鐨勫埌 SdkName string ThftRes protomsg.ThftResult - Liker []LikePerson + Liker []*protomsg.Baseinfo } type LikePerson struct { @@ -98,7 +98,7 @@ IsYolo bool // 鏄惁鏄痽olo鏁版嵁 SdkName string ThftRes protomsg.ThftResult - Liker []LikePerson // 濡傛灉鏄汉鑴哥殑璇濆挨鍏舵槸姣斿锛屽簲瀛樹笅浠栬窡搴曞簱鐨勪汉鍛樼殑鐩镐技鎯呭喌 yolo鐨勮瘽缁檔il灏辫 + Liker []*protomsg.Baseinfo // 濡傛灉鏄汉鑴哥殑璇濆挨鍏舵槸姣斿锛屽簲瀛樹笅浠栬窡搴曞簱鐨勪汉鍛樼殑鐩镐技鎯呭喌 yolo鐨勮瘽缁檔il灏辫 } // 姣忎釜绠楁硶瀵逛簬褰撳墠甯х敾闈㈣嚜宸辨彁鍙栫殑鏁版嵁 @@ -183,9 +183,7 @@ areaMap := AreaMap{cameraId: cameraId, areaId: polygon.Id, areaJson: polygon.Polygon, triggerLine: polygon.TriggerLine, directionLine: polygon.DirectionLine} // 涓烘瘡涓憚鍍忔満鍖哄煙濉厖鏁版嵁 areaMap.CountAreaObjs(arg) - log.Println("-------areaMap鐨勫唴瀹�",areaMap) arg.AreaMapList = append(arg.AreaMapList, areaMap) - log.Println("-------AreaMapList鐨勫唴瀹�",arg.AreaMapList) } } @@ -217,7 +215,6 @@ linkTask(args, ruleList[i], taskId) } else { // 鐙珛浠诲姟鐨勫鐞� - log.Println("----------------------------------------64鎽勫儚鏈哄叆鍏�") RunRule(args, ruleList[i], taskId) } } @@ -227,13 +224,16 @@ } } func RunRule(args *SdkDatas, groupRule *protomsg.GroupRule, taskId string) bool { + defer func() { + if err := recover(); err != nil { + fmt.Println("姣斿瑙勫垯鏈夎", err.(string)) + } + + }() resultSplice := []*LittleRuleResult{} // 鍏堣繃瀹屾潯浠惰鍒� for j := 0; j < len(groupRule.Rules); j++ { for _, sdkData := range args.Sdkdata { - if sdkData.SdkId == "812b674b-2375-4589-919a-5c1c3278a975" { - log.Println("鍏ヤ镜鐨勭畻娉曟暟鎹�", sdkData) - } for _, areaMap := range sdkData.AreaMapList { ruleResult := filterRule(groupRule.Rules[j], &areaMap) if ruleResult.Result != "" { @@ -293,8 +293,12 @@ completeFormula = completeFormula + va.Result } if completeFormula != "" { + log.Println("鐪嬬湅鍏紡-----------锛�", completeFormula) expression, _ := govaluate.NewEvaluableExpression(completeFormula) - result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋� + result, err := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋� + if err != nil { + panic("寰楀埌鐨勬暟瀛﹀叕寮忎笉鍙В鏋�") + } if result.(bool) { // 缁欒繖甯ф暟鎹墦涓婅鍒欑粍鏍囩 //args.RuleResult = append(args.RuleResult, Result{TaskId: taskId, RuleGroupId: groupRule.GroupId}) @@ -371,7 +375,7 @@ // 杩欐瑕佸榻愯〃杈惧紡閲屾墍闇�瑕佺殑鎵�鏈夊弬鏁� 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.ThftRes, obj.Liker} - log.Println("鏀捐繘鍘荤殑arg锛�-------", arg1) + //log.Println("鏀捐繘鍘荤殑arg锛�-------", arg1) a.args = append(a.args, arg1) a.filterData = append(a.filterData, arg1) } @@ -521,7 +525,7 @@ for _, obj := range am.filterData { for index := 0; index < len(obj.Liker); { // 灏嗚揪涓嶅埌闃堝�肩殑鐩镐技鑰呬粠鐩镐技鑰呮暟缁勪腑鍒犻櫎 - if obj.Liker[index].Score < argValue { + if float64(obj.Liker[index].CompareScore) < argValue { // Go 璇█涓垏鐗囧垹闄ゅ厓绱犵殑鏈川鏄細浠ヨ鍒犻櫎鍏冪礌涓哄垎鐣岀偣锛屽皢鍓嶅悗涓や釜閮ㄥ垎鐨勫唴瀛橀噸鏂拌繛鎺ヨ捣鏉ャ�備笉鐢ㄦ��鐤戯紝鏁扮粍鍒犻櫎鍏冪礌灏辫繖涔堝潙鐖� obj.Liker = append(obj.Liker[:index], obj.Liker[index+1:]...) } else { @@ -589,9 +593,9 @@ } } else { // 澶勭悊鐨勯兘鏄痽olo鏁版嵁 - log.Println("瑙勫垯涓殑sdkId涓猴細", rule.SdkId, "--鍖哄煙鏁版嵁闆嗗悎涓殑sdkId涓猴細", am.sdkId, "--瑙勫垯涓殑鍖哄煙Id涓猴細", rule.PolygonId, "--鍖哄煙鏁版嵁闆嗗悎涓殑鍖哄煙Id涓猴細", am.areaId, ) if rule.SdkId == am.sdkId && rule.PolygonId == am.areaId { // 棣栧厛杩欐潯瑙勫垯寰楁槸杩欎釜绠楁硶鐨勮鍒欙紝鍏舵瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓� if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔� + log.Println("----------褰撳墠鏉′欢瑙勫垯锛�---------",rule) var args []Arg if rule.RuleWithPre == "&&" { args = am.filterData @@ -709,7 +713,8 @@ } func timeRuleResult(rule *protomsg.Rule, am *AreaMap) LittleRuleResult { if rule.PolygonId == am.areaId { // 棣栧厛瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓� - if rule.SdkArgAlias == "time" { // 鍒ゆ柇鏄惁绗﹀悎鏃堕棿瑙勫垯 + if rule.SdkArgAlias == "time_rule" { // 鍒ゆ柇鏄惁绗﹀悎鏃堕棿瑙勫垯 + log.Println("----------褰撳墠鏃堕棿瑙勫垯锛�---------",rule) // 鏍规嵁鏀惧�煎瓧娈甸噷瀛樼殑鏃堕棿瑙勫垯鐨刬d鍘诲彟涓�涓〃閲屾煡闇�瑕佹瘮瀵圭殑鏃堕棿娈碉紙姣斿褰撳墠鏃堕棿鏄懆涓夛紝搴旀牴鎹尯鍩焛d鏌ュ嚭鍏跺懆涓夌殑鍑犱釜甯冮槻鏃堕棿娈碉紝鏁扮粍锛� //fmt.Println("鏃堕棿瑙勫垯鐨勬祴璇�") now := time.Now() -- Gitblit v1.8.0