From 7cb7884e4bd7f27d811474d4e95f29eebac845cd Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期二, 12 十一月 2019 17:56:54 +0800 Subject: [PATCH] 保存一下个体静止算法 --- algorithm/personUnsual/personUnsual.go | 78 +++++++++++++++++++-------------------- 1 files changed, 38 insertions(+), 40 deletions(-) diff --git a/algorithm/personUnsual/personUnsual.go b/algorithm/personUnsual/personUnsual.go index d110d6f..dc2f0bc 100644 --- a/algorithm/personUnsual/personUnsual.go +++ b/algorithm/personUnsual/personUnsual.go @@ -9,10 +9,10 @@ ) // 浜哄憳寮傚父绠楁硶 -func Entrance(rule *protomsg.Rule, am *structure.AreaMap) structure.LittleRuleResult { +func Entrance(rule *protomsg.Rule, am *structure.AreaMap,lable *structure.Others,args *structure.SdkDatas,message *protomsg.SdkMessage) structure.LittleRuleResult { if rule.PolygonId == am.AreaId { // 棣栧厛杩欐潯瑙勫垯寰楁槸杩欎釜绠楁硶鐨勮鍒欙紝鍏舵瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓� logger.Debug("---------璧颁簡浜哄憳寮傚父绠楁硶",rule.Id,rule.SdkArgAlias,rule.Operator,rule.SdkArgValue,am.AreaId) - if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔� + if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" || rule.SdkArgAlias == "" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔� return filterRule(rule, am) } else if rule.SdkArgAlias == "objCount" { return transferParameters(rule, am) @@ -27,48 +27,46 @@ // 杩囨护瑙勫垯鍏堢瓫閫夊嚭绗﹀悎鏉′欢鐨勭洰鏍囨暟閲� func filterRule(rule *protomsg.Rule, am *structure.AreaMap) structure.LittleRuleResult { // 澶勭悊鐨勯兘鏄痽olo鏁版嵁 - if rule.PolygonId == am.AreaId { // 棣栧厛杩欐潯瑙勫垯寰楁槸杩欎釜绠楁硶鐨勮鍒欙紝鍏舵瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓� - if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔� - var args []*structure.Arg - if rule.RuleWithPre == "&&" { - args = am.FilterData + if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔� + var args []*structure.Arg + if rule.RuleWithPre == "&&" { + args = am.FilterData + } else { + args = am.Args + } + // 鍏堟竻绌鸿繃婊ゅ悗鐨勬暟鎹紝鍐嶅線閲屽鏈杩囨护鍚庣殑鏁版嵁 + am.FilterData = am.FilterData[0:0] + //logger.Debug("鐪嬬湅args锛氾細锛氾細锛�", args) + for _, arg := range args { + var formula string + if rule.SdkArgAlias == "score" { + formula = strconv.FormatFloat(arg.Score, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮� + logger.Info("褰撳墠鐩镐技搴﹀皬鍏紡锛�", formula) + } else if rule.SdkArgAlias == "proportion" { + formula = strconv.FormatFloat(arg.Proportion, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮� + logger.Info("褰撳墠鍗犳瘮灏忓叕寮忥細", formula) } else { - args = am.Args + formula = strconv.FormatFloat(arg.Size, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮� + logger.Info("褰撳墠灏哄灏忓叕寮忥細", formula) } - // 鍏堟竻绌鸿繃婊ゅ悗鐨勬暟鎹紝鍐嶅線閲屽鏈杩囨护鍚庣殑鏁版嵁 - am.FilterData = am.FilterData[0:0] - //logger.Debug("鐪嬬湅args锛氾細锛氾細锛�", args) - for _, arg := range args { - var formula string - if rule.SdkArgAlias == "score" { - formula = strconv.FormatFloat(arg.Score, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮� - logger.Info("褰撳墠鐩镐技搴﹀皬鍏紡锛�", formula) - } else if rule.SdkArgAlias == "proportion" { - formula = strconv.FormatFloat(arg.Proportion, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮� - logger.Info("褰撳墠鍗犳瘮灏忓叕寮忥細", formula) - } else { - formula = strconv.FormatFloat(arg.Size, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮� - logger.Info("褰撳墠灏哄灏忓叕寮忥細", formula) - } - expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡 - result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋� - if result.(bool) { - am.FilterData = append(am.FilterData, arg) // 寰楀埌绗﹀悎鏉′欢鐨勮繃婊ゆ暟鎹� - } + expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡 + result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋� + if result.(bool) { + am.FilterData = append(am.FilterData, arg) // 寰楀埌绗﹀悎鏉′欢鐨勮繃婊ゆ暟鎹� } - am.TargetNum = len(am.FilterData) // 鎶婄鍚堟潯浠剁殑鐩爣鏁伴噺鏇存柊鍒皌argetNum瀛楁 - if am.TargetNum > 0 { - return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "true", rule.Sort} - } else { - return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "false", rule.Sort} - } + } + am.TargetNum = len(am.FilterData) // 鎶婄鍚堟潯浠剁殑鐩爣鏁伴噺鏇存柊鍒皌argetNum瀛楁 + if am.TargetNum > 0 { + return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "true", rule.Sort} + } else { + return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "false", rule.Sort} + } - } else if rule.SdkArgAlias == "" { - if am.TargetNum > 0 { - return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "true", rule.Sort} - } else { - return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "false", rule.Sort} - } + } else if rule.SdkArgAlias == "" { + if am.TargetNum > 0 { + return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "true", rule.Sort} + } else { + return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "false", rule.Sort} } } return structure.LittleRuleResult{} -- Gitblit v1.8.0