From ff396526ff1762d6672414dfe5dc241bc0fa8e60 Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期六, 22 六月 2019 12:41:53 +0800 Subject: [PATCH] -- --- ruleserver/ruleToformula.go | 55 ++++++++++++++++++++++++++++--------------------------- 1 files changed, 28 insertions(+), 27 deletions(-) diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go index 6eaf1c1..ca5f321 100644 --- a/ruleserver/ruleToformula.go +++ b/ruleserver/ruleToformula.go @@ -88,14 +88,14 @@ // 浠庨�氶亾涓幏鍙栫殑sdk杈撳嚭鐨勫浘鍍忔暟鎹�(鐩墠涓昏鏄痽olo绠楁硶鐨勬暟鎹�) type ArgsFromSdk struct { - Photo []PhotoMap CameraId string TaskId string - KeepRight bool // 鏄惁闈犲彸琛� 绠楁硶鍒ゆ柇鐨勪笌涓婁竴甯у浘鍍忕殑姣旇緝缁撴灉 - IsStatic bool // 鏄惁闈欐 - ImageWidth int // 鎽勫儚鏈烘媿鎽勭殑鍥惧儚瀹� 鍍忕礌 - ImageHeight int // 鎽勫儚鏈烘媿鎽勭殑鍥惧儚楂� 鍍忕礌 - RuleResult []Result // 杩囧畬瑙勫垯鍚庢墦鐨勬爣绛� + Photo []PhotoMap // yolo绠楁硶缁撴瀯锛屼篃鍙互瀛樹汉鑴哥殑鏁版嵁锛屾瘯绔熶汉鑴镐腑鑳界敤瑙勫垯鏉ユ祴鐨勮繕鏄偅浜涘弬鏁� + KeepRight bool // 鏄惁闈犲彸琛� 绠楁硶鍒ゆ柇鐨勪笌涓婁竴甯у浘鍍忕殑姣旇緝缁撴灉 + IsStatic bool // 鏄惁闈欐 + ImageWidth int // 鎽勫儚鏈烘媿鎽勭殑鍥惧儚瀹� 鍍忕礌 + ImageHeight int // 鎽勫儚鏈烘媿鎽勭殑鍥惧儚楂� 鍍忕礌 + RuleResult []Result // 杩囧畬瑙勫垯鍚庢墦鐨勬爣绛� } // 灏嗕紶閫掕繃鏉ョ殑鍙傛暟杞寲涓� @@ -110,22 +110,14 @@ type Result struct { TaskId string // 浠诲姟id RuleGroupId string // 瑙勫垯缁刬d + AlarmLevel int32 // 鎶ヨ绛夌骇 + RuleText string // 鏂囧瓧鐗堣鍒欑粍 } // 鍖呭惈N鏉¤鍒欏厓绱犵殑涓�鏁存潯瑙勫垯 type CompleteRule struct { rule string } - -// 鎽勫儚鏈哄尯鍩� 璺熸暟鎹簱鏄犲皠鐨� -// type CameraPolygon struct { -// Id string `json:"id"` -// CameraId string `json:"camera_id"` -// Name string `json:"name"` -// Polygon string `json:"polygon"` // 鍧愭爣鐐瑰尯鍩� -// TriggerLine string `json:"trigger_line"` -// DirectionLine string `json:"direction_line"` -// } // 鏍规嵁鎽勫儚鏈篿d鎷垮埌鎽勫儚鏈烘墍鏈夊尯鍩� func GetPolygons(cameraId string) []protomsg.CameraPolygon { @@ -146,7 +138,7 @@ } // 瑙勫垯涓诲嚱鏁板叆鍙� -func (arg *ArgsFromSdk) MainJudge() { +func MainJudge(arg *ArgsFromSdk) { cameraPolygons := GetPolygons(arg.CameraId) list := AreaMapList{} for _, polygon := range cameraPolygons { @@ -257,7 +249,7 @@ // 鏍规嵁cameraId鍘绘洿鏂版垨鑰呮彃鍏ョ粨鏋�,鐒跺悗鍒ゆ柇鏄惁鏁扮粍鏄惁鍙互寰楀嚭鎶ヨ鐨勭粨璁� // 寰�鑱斿姩浠诲姟鐨勭粨鏋滄暟缁勯噷鏀惧�兼垨鏇存柊 for _, va := range timeEle.RuleResults { - if aml.areaMapList[0].cameraId != "" && va.CameraId == aml.areaMapList[0].cameraId { + if arg.CameraId != "" && va.CameraId == arg.CameraId { va.Result = strconv.FormatBool(isOk) } } @@ -291,7 +283,7 @@ fmt.Println("杩欏抚鍥惧儚鍦ㄤ换鍔′笅鐨勪竴鏁存潯瑙勫垯涓嬶紙鑱斿姩浠诲姟涓嬪氨鏄窡鏈憚鍍忔満鍍忕浉鍏崇殑灏忚鍒欙級鐨勫垽鏂粨鏋滀负false") // 鎵�浠ヤ篃瑕佸幓缁撴灉鏁扮粍閲屾斁鍊兼垨鏇存柊 for _, va := range timeEle.RuleResults { - if aml.areaMapList[0].cameraId != "" && va.CameraId == aml.areaMapList[0].cameraId { // aml.areaMapList[0].cameraId 闅忎究鎵句竴涓暟鎹� + if arg.CameraId != "" && va.CameraId == arg.CameraId { // arg.CameraId 闅忎究鎵句竴涓暟鎹� va.Result = strconv.FormatBool(isOk) } } @@ -355,7 +347,7 @@ if flag { fmt.Println("瀹氭椂鍣ㄦ姤璀︿簡") // 杩囧畬瑙勫垯鍚庢墦涓爣绛撅紝鍛婅瘔璋冪敤鑰呮湰甯ф暟鎹拡瀵瑰摢涓换鍔″摢缁勮鍒欐姤璀︿簡 - arg.RuleResult = append(arg.RuleResult, Result{TaskId: taskId, RuleGroupId: groupRule.GroupId}) + arg.RuleResult = append(arg.RuleResult, Result{taskId, groupRule.GroupId,groupRule.AlarmLevel,groupRule.GroupText}) return true } else { return false @@ -369,7 +361,7 @@ // 瀵瑰崟甯у浘鍍忕殑鍒ゆ柇 鏄垗寮冿紙鎴栬�呰瀵逛簬鏌愪簺闇�姹傚彲浠ユ斁ES鏁版嵁搴撲竴浠斤級杩樻槸杩斿洖 func judge(aml *AreaMapList, arg *ArgsFromSdk) { // 寰楀埌灞炰簬璇ユ憚鍍忔満鐨勮嫢骞茬粍浠诲姟鐨勫畬鏁磋鍒欙紙璺熸瘡涓�鏉″畬鏁磋鍒欐瘮杈冧箣鍚庡緱鍑烘湰寮犲浘鍍忓浜庢煇涓鍒欐槸鍚︽姤璀︾殑缁撴灉銆傛斁杩沵ap锛屾瘮濡傛湰甯у浘鍍忕殑id锛屾墍纰版挒鎴愬姛鐨勮鍒檌d锛� - taskRuleList := GetRuleGroup(aml.areaMapList[0].cameraId) + taskRuleList := GetRuleGroup(arg.CameraId) if len(taskRuleList) > 0 { for _, taskRule := range taskRuleList { ruleList := taskRule.GroupRules // 鑾峰彇鐨勬槸task涓嬮潰鐨勪换鍔$粍 @@ -377,9 +369,11 @@ for i := 0; i < len(ruleList); i++ { temp := ruleList[i].Rules // temp涓轰竴缁勫畬鏁磋鍒� 鍦ㄦ闇�瑕佸垽鏂鍒欐槸鍚︽槸鑱斿姩瑙勫垯 if len(temp) > 0 { - if strings.Contains(ruleList[i].GroupId, "link") { // groupId涓惈鏈塴ink鍒欎负鑱斿姩浠诲姟 + if strings.Contains(ruleList[i].GroupId, "link") { + // groupId涓惈鏈塴ink鍒欎负鑱斿姩浠诲姟 linkTask(aml, arg, ruleList[i], taskId) - } else { // 鐙珛浠诲姟鐨勫鐞� + } else { + // 鐙珛浠诲姟鐨勫鐞� singleTask(aml, arg, ruleList[i], taskId) } } @@ -388,7 +382,7 @@ } } -// 杩囨护瑙勫垯鍏堢瓫閫変汉鏁� +// 杩囨护瑙勫垯鍏堢瓫閫夊嚭绗﹀悎鏉′欢鐨勭洰鏍囨暟閲� func filterRule(rule *protomsg.Rule, am *AreaMap) { if rule.PolygonId == am.areaId { // 棣栧厛瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓� if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔� @@ -449,7 +443,7 @@ // 缁欐暟鎹簱鐨勮鍒欒〃杈惧紡浠e弬 args: 涓�鏉″瓙瑙勫垯锛屽尯鍩熸暟鎹� func transferParameters(rule *protomsg.Rule, am *AreaMap) string { if rule.PolygonId == am.areaId { // 棣栧厛瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓� - if rule.SdkArgAlias == "targetNum" { // 濡傛灉鍙傛暟鏄鍖哄煙鍐呯洰鏍囨暟閲� + if rule.SdkArgAlias == "targetNum" { // 濡傛灉鍙傛暟鏄鍖哄煙鍐呯洰鏍囨暟閲� 鍗硑olo //fmt.Println("寰楀嚭缁撴灉闃舵", "姣旇緝鐨勮鍒欐槸锛�", rule) if rule.Operator == "" { return strconv.Itoa(am.targetNum) // 濡傛灉鍚庨潰涓嶈窡鎿嶄綔绗﹀氨鐩存帴杩斿洖鏁伴噺 姣斿瑕佽窡涓嬩竴涓尯鍩熸瘮杈冩暟閲忕殑灏辩洿鎺ヨ繑鍥炴湰鍖哄煙鐨勬暟閲� @@ -460,18 +454,25 @@ result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋� return strconv.FormatBool(result.(bool)) // 鍔犱笂鍏充簬绠楁硶鐨勫垽鏂潯浠讹紝涓嶈兘鍙湁鍏充簬瑙勫垯鐨勶紝鏈夌殑绠楁硶鏈韩灏辨槸涓�涓鍒欙紝濡備釜浣撻潤姝紝闈犲彸琛�,鎵�浠ワ紝鎷垮埌褰撳墠瀛愯鍒欑殑sdkid鏉ュ垽鏂槸鍚︽槸閭d簺鐗规畩鐨勮鍒� - } else if rule.SdkId == "涓綋闈欐" { // 鏆傛椂鐢ㄦ眽瀛椾唬鏇垮暒锛屾櫄浜涙浛鎹㈡垚姝e紡鐨刬d + } else if rule.SdkId == "IsStatic" { // 闈欐绠楁硶 if am.isStatic { return "true" } else { return "false" } - } else if rule.SdkId == "闈犲彸琛�" { // 鏆傛椂鐢ㄦ眽瀛椾唬鏇垮暒锛屾櫄浜涙浛鎹㈡垚姝e紡鐨刬d + } else if rule.SdkId == "KeepRight" { // 闈犲彸琛岀畻娉� if am.keepRight { return "true" } else { return "false" } + } else if rule.SdkId == "FaceDetect" { // 浜鸿劯妫�娴� + if rule.Operator == "==" || rule.Operator == ">=" || rule.Operator == "<=" || rule.Operator == "<" || rule.Operator == ">" || rule.Operator == "!=" { + // 濡傛灉鏄笉瑙勭煩鐨勮繛鎺ョ缁熺粺杩斿洖false 瑙勫垯涔熷彧鑳藉垽鏂汉鑴哥殑鐩镐技搴︼紝鎵�浠ヤ笉瀛樺湪鍒殑杩炴帴绗� + return "false" + } else { + return "false" + } } } -- Gitblit v1.8.0