From 3ae20ae9165dd9f3f3fedbcbfe192e74528e4066 Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期四, 11 七月 2019 13:31:56 +0800 Subject: [PATCH] --- --- ruleserver/ruleToformula.go | 273 ++++++++++++++++++++++++++---------------------------- 1 files changed, 133 insertions(+), 140 deletions(-) diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go index 91ef679..ad10e89 100644 --- a/ruleserver/ruleToformula.go +++ b/ruleserver/ruleToformula.go @@ -2,7 +2,6 @@ import ( "encoding/json" - "fmt" "ruleprocess/cache" "ruleprocess/logger" "sort" @@ -11,6 +10,7 @@ "time" bigCache "basic.com/pubsub/cache.git" + "basic.com/pubsub/cache.git/esutil" "basic.com/pubsub/protomsg.git" "github.com/knetic/govaluate" ) @@ -163,28 +163,18 @@ // 鏍规嵁鎽勫儚鏈篿d鎷垮埌鎽勫儚鏈烘墍鏈夊尯鍩� func GetPolygons(cameraId string) []protomsg.CameraPolygon { - //var api dbapi.CameraApi - //data := api.FindAllPolygons() - ////logger.Info("鏌ュ埌鐨勬墍鏈夊尯鍩燂細", data) - //// 鏍规嵁id浠巑ap涓嬁鍒板尯鍩� var cameraPolygons []protomsg.CameraPolygon - //for _, item := range data { - // if item.CameraId == cameraId && item.Type != "line" { - // // 闇�瑕佹牴鎹瘮渚嬫妸鍓嶅彴鐢荤殑鍖哄煙鐨勫潗鏍囪浆鍖栦负鐩稿簲鎽勫儚鏈烘媿鎽勭殑鍥惧儚鐨勫ぇ灏� x鍧愭爣鍒嗗埆*image.width/椤甸潰鍖哄煙瀹� y鍧愭爣鍒嗗埆*image.height/椤甸潰鍖哄煙楂� - // // 鍓嶅彴瀹介珮鍥哄畾 - // //logger.Println("------------绗﹀悎鏉′欢鐨勫尯鍩燂細",item) - // cameraPolygons = append(cameraPolygons, item) - // } - //} cameraPolygons = cache.GetPolygonsByCameraId(cameraId) - //logger.Println("鏍规嵁鎽勫儚鏈篿d鏌ュ埌鐨勫尯鍩�", cameraPolygons, "--鍖哄煙鏁伴噺涓猴細", len(cameraPolygons)) return cameraPolygons } // 鎶妔dk浠庢暟鎹抚涓婃彁鍙栫殑鎸夌収鍖哄煙鍒嗙被褰掔疆 func SdkDataFormat(cameraId string, arg *SdkData, cameraPolygons []protomsg.CameraPolygon) { - logger.Info("--------鐪嬬湅瑙f瀽鍑烘潵鐨勬暟鎹�---", *arg) + logger.Info("==================================鏈瑂dkData涓В鍑烘潵鐨勭洰鏍囨暟鎹�=======================================") + for _, photo := range arg.Photo { + logger.Info("--------鐪嬬湅瑙f瀽鍑烘潵鐨勬暟鎹�---", cameraId, arg.IpcId, photo.Rects, photo.Score) + } for _, polygon := range cameraPolygons { //logger.Println("++++++鍦ㄨ繖鍎跨湅涓�涓嬪尯鍩熷晩:", polygon.Polygon) areaMap := AreaMap{cameraId: cameraId, areaId: polygon.Id, areaJson: polygon.Polygon, triggerLine: polygon.TriggerLine, directionLine: polygon.DirectionLine} @@ -194,7 +184,7 @@ } } -// 瀵瑰崟甯у浘鍍忕殑鍒ゆ柇 鏄垗寮冿紙鎴栬�呰瀵逛簬鏌愪簺闇�姹傚彲浠ユ斁ES鏁版嵁搴撲竴浠斤級杩樻槸杩斿洖 +// 瀵瑰崟甯у浘鍍忕殑鍒ゆ柇 thisSdkDatas 褰撳墠浼犲叆鐨勮繖甯ф暟鎹紝cacheSdkData 瀹氭椂鍣ㄩ噷缂撳瓨鐨勪竴甯ф暟鎹� 娌℃湁灏辫繑鍥瀗il (thisSdkDatas SdkDatas, cacheSdkDatas SdkDatas) func Judge(args *SdkDatas) { if len(args.Sdkdata) > 0 { // 鎷垮埌鏈憚鍍忔満鐨勫尯鍩� @@ -233,43 +223,76 @@ } } func Compare(args *SdkDatas, groupRule *protomsg.GroupRule) { - compareFlag := false + compareFlag := 0 + tableIds := "" // 鐪嬬湅鏄惁鏈夊彧閰嶄汉鑴告瘮瀵圭畻娉曚絾娌℃湁閰嶅姣斿簱鐨勮鍒欙紝濡傛灉鏈夛紝鍒欐瘮瀵瑰璞′负鍏ㄩ儴搴曞簱 for j := 0; j < len(groupRule.Rules); j++ { if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" { // 閰嶄簡浜鸿劯姣斿 - if groupRule.Rules[j].SdkArgAlias == "compareBase" { // 閰嶄簡姣斿鐨勫簳搴� - compareFlag = true + if groupRule.Rules[j].SdkArgAlias == "compareBase" && groupRule.Rules[j].SdkArgValue != "" { // 閰嶄簡姣斿搴曞簱鐨勫弬鏁颁絾娌℃湁閰嶅叏閮ㄥ簳搴� + compareFlag = 2 + tableIds = groupRule.Rules[j].SdkArgValue + "," // 鏈�鍚庝細澶氫竴涓猼ableId锛屽垏鍑烘潵鐨勬暟缁勫彇len-1灏卞彲浠� + } + if groupRule.Rules[j].SdkArgAlias == "compareBase" && groupRule.Rules[j].SdkArgValue == "" { // 閰嶇殑鍙傛暟鏄瘮瀵瑰叏閮ㄥ簳搴� + compareFlag = 1 } } } - if compareFlag { - logger.Info("閰嶇疆浜嗗姣斿簳搴撳弬鏁�") - } else { + // 涓轰簡娴嬭瘯浣滀笅寮婏紝鐩存帴璁╁叾姣斿鍏ㄩ儴搴曞簱 + compareFlag = 1 + if compareFlag == 0 { logger.Info("娌℃湁閰嶇疆瀵规瘮搴曞簱鍙傛暟") + return } for j := 0; j < len(groupRule.Rules); j++ { - // 鍙湁鏄汉鑴稿姣斿苟涓旈厤缃殑鍙傛暟鏄姣斿簳搴撴墠璧帮紙鑻ラ厤鐨勫姣旈槇鍊煎垯涓嶈蛋锛� - if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && groupRule.Rules[j].SdkArgAlias == "compareBase" { + if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" { for _, sdkData := range args.Sdkdata { - if sdkData.IpcId == "812b674b-2375-4589-919a-5c1c3278a97e" { // 鎼滅储鍒颁汉鑴告娴嬬殑sdkdata 鐜板湪鍏充簬浜鸿劯鐨勫彧鏈変粬涓�涓猻dk锛屽叏鎵句粬 + if sdkData.IpcId == "A8B73405-373D-4F23-CED2-A617EBD7EC55" { // 鎼滅储鍒颁汉鑴告娴嬬殑sdkdata 鐜板湪鍏充簬浜鸿劯鐨勫彧鏈変粬涓�涓猻dk锛屽叏鎵句粬 + logger.Info("============================================绗竴鍏�") for _, areaMap := range sdkData.AreaMapList { // 鎷垮尯鍩熶腑姣忎釜浜鸿劯鐗瑰緛鍊煎幓瀵规瘮锛屽~鍏呭叾liker if groupRule.Rules[j].PolygonId == areaMap.areaId { for _, arg := range areaMap.args { - bytes := bigCache.Getdbpersonmsg("", arg.Feature, true) - var m map[string]float32 - err1 := json.Unmarshal(bytes, &m) - if err1 != nil { - logger.Error("getBaseInfo瑙e帇閿欒", err1) + 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) + } } - for key, val := range m { - fmt.Println(key) - baseinfo := protomsg.Baseinfo{} - baseinfo.CompareScore = val - arg.Liker = append(arg.Liker, &baseinfo) + 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) + } + } } - logger.Info("-------------------鎴愬姛缁檒iker璧嬪�硷細", arg.Liker) + logger.Info("-------------------鎴愬姛缁檒iker璧嬪��,闀垮害涓猴細", len(arg.Liker)) } + areaMap.filterData = areaMap.args + logger.Info("----------------------绗簩娆$湅args锛�",areaMap.filterData) } } } @@ -283,7 +306,7 @@ logger.Error("姣斿瑙勫垯鏈夎", err.(string)) } }() - logger.Info("+++++++++++瑙勫垯寮�濮嬭繍琛�+++++++++++++++++褰撳墠瑙勫垯--锛�", *groupRule) + logger.Info("+++++++++++瑙勫垯寮�濮嬭繍琛�+++++++++++++++++褰撳墠澶ц鍒�--锛�", *groupRule) Compare(args, groupRule) resultSplice := []*LittleRuleResult{} sdkNames := "" @@ -297,13 +320,15 @@ } ipcId := sdk.IpcId sdkName := sdk.SdkName + logger.Info("瑙勫垯鐨刬pcId涓巗dkData鐨処pcId:",ipcId,"===",sdkData.IpcId) if ipcId == sdkData.IpcId { + logger.Info("褰撳墠璧扮殑瑙勫垯鐨勭畻娉曟槸--锛�", sdkName, "---") for _, areaMap := range sdkData.AreaMapList { ruleResult := filterRule(groupRule.Rules[j], &areaMap) if ruleResult.Result != "" { logger.Info("鏉′欢瑙勫垯缁撴灉锛�", ruleResult.Result) // 濡傛灉姝ょ粨鏋滀负鐪熶笖褰撳墠杩囩殑鏄痽olo绠楁硶锛屽簲璁颁笅姝よ鍒欐墍瀵瑰簲鐨剆dkName,鍙﹀锛岃繕瑕佸幓閲� - if ruleResult.Result == "true" && ipcId == "" && !strings.Contains(sdkNames, sdkName) { + if ruleResult.Result == "true" && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) { sdkNames = sdkName + "," } resultSplice = append(resultSplice, &ruleResult) @@ -328,7 +353,7 @@ ruleResult := transferParameters(groupRule.Rules[j], &areaMap) if ruleResult.Result != "" { logger.Info("鏁伴噺瑙勫垯缁撴灉锛�", ruleResult.Result) - if ruleResult.Result == "true" && ipcId == "" && !strings.Contains(sdkNames, sdkName) { + if ruleResult.Result == "true" && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) { sdkNames = sdkName + "," } resultSplice = append(resultSplice, &ruleResult) @@ -351,7 +376,7 @@ ruleResult := timeRuleResult(groupRule.Rules[j], &areaMap) if ruleResult.Result != "" { logger.Info("鏃堕棿瑙勫垯缁撴灉锛�", ruleResult.Result) - if ruleResult.Result == "true" && ipcId == "" && !strings.Contains(sdkNames, sdkName) { + if ruleResult.Result == "true" && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) { sdkNames = sdkName + "," } resultSplice = append(resultSplice, &ruleResult) @@ -370,7 +395,8 @@ ipcId := sdk.IpcId if ipcId == sdkData.IpcId { for _, areaMap := range sdkData.AreaMapList { - duration(groupRule.Rules[j], &areaMap) + // 鍘诲紑鍚竴涓畾鏃跺櫒 + duration(groupRule.Rules[j], groupRule.GroupId, &areaMap, args) } } } @@ -406,63 +432,54 @@ // 缁欒繖甯ф暟鎹墦涓婅鍒欑粍鏍囩 //args.RuleResult = append(args.RuleResult, Result{TaskId: taskId, RuleGroupId: groupRule.GroupId}) for k, timeEle := range TimeEleList { - if strings.Contains(k, taskId) { + if strings.Contains(k, groupRule.GroupId) { timeEle.N = timeEle.InitN // 閲嶇疆瀹氭椂鍣� } } - logger.Info("-------------------閲嶇疆瀹氭椂鍣ㄥ苟杩斿洖false---------------") + logger.Info("-------------------閲嶇疆鐩稿叧鐨勫畾鏃跺櫒骞惰繑鍥瀎alse---------------") return false } else { - // 鏈�鍚庢垚鍔熸姤璀︽墠鎶婄鍚堟潯浠剁殑浜鸿劯鏁版嵁濉炶繘缁撴灉鏍囩閲� - faces := []Arg{} - for _, sdkData := range args.Sdkdata { - for _, areaMap := range sdkData.AreaMapList { - for j := 0; j < len(groupRule.Rules); j++ { - faces = append(faces, putFaceToResult(groupRule.Rules[j], &areaMap)...) - } - } - } - // 閰嶄簡浜鸿劯鐨勭畻娉曟墠鎶婁汉鑴哥殑鏁版嵁鐢╁嚭鏉ユ墦鏍囩 - flag11 := false - for j := 0; j < len(groupRule.Rules); j++ { - if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" { - flag11 = true - } - } - if flag11 { - args.RuleResult["face"] = faces - } - // 鍘荤湅姹犲瓙閲屾槸鍚︽湁涓庢湰甯ф暟鎹湁鍏崇殑瀹氭椂鍣紝濡傛灉鏈夛紝鐪嬫鏃舵槸鍚﹁蛋鍒�0锛屾病鏈夋瀹氭椂鍣ㄦ垨鏈夊畾鏃跺櫒璧板埌0鐨勮瘽杩斿洖鎴愬姛鎶ヨ + // 鍒ゆ柇鎸佺画鏃堕棿鏉′欢锛屽幓鐪嬫睜瀛愰噷鏄惁鏈変笌鏈抚鏁版嵁鏈夊叧鐨勫畾鏃跺櫒锛屽鏋滄湁锛岀湅姝ゆ椂鏄惁璧板埌0锛屾病鏈夋瀹氭椂鍣ㄦ垨鏈夊畾鏃跺櫒璧板埌0鐨勮瘽杩斿洖鎴愬姛鎶ヨ var flag bool = true for k, timeEle := range TimeEleList { - if strings.Contains(k, taskId) { - if timeEle.N != 0 { // 璺熻繖涓换鍔℃湁鍏崇殑瀹氭椂鍣ㄨ鍏ㄩ儴绛変簬0 + if strings.Contains(k, groupRule.GroupId) { + if timeEle.N != 0 { // 杩欑粍瑙勫垯鐨勫畾鏃跺櫒瑕佸叏閮ㄧ瓑浜�0 logger.Info("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��-------------涓嶅啢锛屼綘鏄瀹氭椂鍣ㄦ墦璐ョ殑锛�") flag = false } } } if flag { + // 鏈�鍚庢垚鍔熸姤璀︽墠鎶婄鍚堟潯浠剁殑浜鸿劯鏁版嵁濉炶繘缁撴灉鏍囩閲� + // 閰嶄簡浜鸿劯鐨勭畻娉曟墠鎶婁汉鑴哥殑鏁版嵁鐢╁嚭鏉ユ墦鏍囩 + logger.Info("------------------------------鏈�鍚庝竴鍏�") + faces := []Arg{} + faceFlag := false + for j := 0; j < len(groupRule.Rules); j++ { + if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" { + faceFlag = true + } + } + 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)...) + } + } + } + if faceFlag { + args.RuleResult["face"] = faces + } logger.Warn("___________________________________________________________________________缁堜簬璧板畬涓囬噷闀垮緛") // 鎶婁粬浠殑浣嶇疆鏁版嵁涔熶紶涓嬪幓 locations := []Rect{} for _, sdkData := range args.Sdkdata { - for _, areaMap := range sdkData.AreaMapList { - for j := 0; j < len(groupRule.Rules); j++ { - locations = append(locations, putYolosToResult(groupRule.Rules[j], &areaMap)...) + if sdkData.IpcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && sdkNames != "" { // 鎶妝olo鏁版嵁鐨勫悇涓洰鏍囩殑鍧愭爣杈撳嚭鏂逛究鍚庨潰鐢绘 + for _, areaMap := range sdkData.AreaMapList { + locations = append(locations, putYolosToResult(&areaMap)...) } } } - //// 閰嶄簡浜鸿劯鐨勭畻娉曟墠鎶婁汉鑴哥殑鏁版嵁鐢╁嚭鏉ユ墦鏍囩 - //flag11 := false - //for j := 0; j < len(groupRule.Rules); j++ { - // if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a971" { - // flag11 = true - // } - //} - //if flag11 { - // args.RuleResult["face"] = faces - //} if sdkNames != "" { args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkNames, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, locations}) logger.Info("-------------------yolo缁撴灉鏍囩", args.RuleResult["yolo"].([]Result)) @@ -479,27 +496,41 @@ return false } } - -func putFaceToResult(rule *protomsg.Rule, am *AreaMap) []Arg { - faces := []Arg{} - if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a972" { - if len(am.filterData) > 0 { - for _, data := range am.filterData { - faces = append(faces, data) +func TimerAlarm(groupId string) (int){ + var flagTime int = 0 + for k, timeEle := range TimeEleList { + if strings.Contains(k, groupId) { + if timeEle.N == 0 && !timeEle.AlarmFlag { // 杩欑粍瑙勫垯鐨勫畾鏃跺櫒瑕佸叏閮ㄧ瓑浜�0 鏆備笖璁や负涓�缁勮鍒欏彧鏈変竴涓畾鏃跺櫒 + logger.Info("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��-------------棣栨绗﹀悎鎸佺画鏃堕棿瑙勫垯骞舵姤璀�") + flagTime = 1 + timeEle.AlarmFlag = true + } + if timeEle.N == 0 && timeEle.AlarmFlag { + logger.Info("-------------------------绗﹀悎鎸佺画鏃堕棿瑙勫垯浣嗗苟涓嶆槸棣栨锛屼笉鎶ヨ") + flagTime = 2 } } } + return flagTime +} + +func putFaceToResult(am *AreaMap) []Arg { + faces := []Arg{} + if len(am.filterData) > 0 { + for _, data := range am.filterData { + faces = append(faces, data) + } + } + //logger.Println("-----------------------------------------------鍚浣犳槸绌虹殑锛�",faces) return faces } -func putYolosToResult(rule *protomsg.Rule, am *AreaMap) []Rect { +func putYolosToResult(am *AreaMap) []Rect { locations := []Rect{} - if rule.SdkId != "812b674b-2375-4589-919a-5c1c3278a97e" && rule.SdkId != "812b674b-2375-4589-919a-5c1c3278a972" { - if len(am.filterData) > 0 { - for _, data := range am.filterData { - locations = append(locations, data.Location) - } + if len(am.filterData) > 0 { + for _, data := range am.filterData { + locations = append(locations, data.Location) } } //logger.Println("-----------------------------------------------鍚浣犳槸绌虹殑锛�",faces) @@ -517,12 +548,6 @@ areaPoints := Json2points(a.areaJson) widthScale := float64(arg.ImageWidth / 960) heigthScale := float64(arg.ImageHeight / 540) - // for _, sdkInfo := range arg.SdkMessage.Tasklab.Sdkinfos { - // if sdkInfo.Sdktype == "yolo" { - // //sdkInfo.Sdkdata. - // } - - // } for _, obj := range arg.Photo { //logger.Info("------------------鐪嬬湅sdkData:", arg.SdkName, "鐨凱hoto鏁版嵁----------------", obj, "----椤轰究鐪嬬湅鍗犳瘮-----锛�", PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale)) if threshold <= obj.Score && size <= float64(obj.Rects.Width*obj.Rects.Height) && intersectionper <= PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale) { @@ -560,17 +585,6 @@ // 浠ユ憚鍍忔満id鏌ュ嚭璺熷叾鐩稿叧鐨勬墍鏈変换鍔′笅鐨勬墍鏈夎鍒欑粍 func GetRuleGroup(cameraId string) []*protomsg.TaskGroupArgs { - // 鏌ヨ鏁版嵁搴� - // 绗竴姝ユ煡鍑鸿窡杩欎釜鎽勫儚鏈虹浉鍏崇殑group_id(澶ц鍒�) - //var api dbapi.CameraTaskArgsApi - // - ////logger.Info("鎵�鏈夎鍒�:", all) - //var taskArgs []*protomsg.TaskGroupArgs - //for _, camArg := range all { - // if camArg.CameraId == cameraId { - // taskArgs = camArg.TaskArgs - // } - //} all := cache.GetCameraTaskRulesByCameraId(cameraId) return all } @@ -640,9 +654,9 @@ if result.(bool) { logger.Info("___________________________________________________________________鑱斿姩浠诲姟鎶ヨ") args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, "", groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, []Rect{}}) - logger.Info("-------------------yolo缁撴灉鏍囩", args.RuleResult["yolo"].([]Result)) + logger.Info("-------------------yolo缁撴灉鏍囩鏈夊嚑涓�", len(args.RuleResult["yolo"].([]Result))) if args.RuleResult["face"] != nil { - logger.Info("-------------------face缁撴灉鏍囩", args.RuleResult["face"].([]Arg)) + logger.Info("-------------------face缁撴灉鏍囩鏈夊嚑涓�", len(args.RuleResult["face"].([]Arg))) } //os.Exit(0) } @@ -654,7 +668,7 @@ logger.Info("杩欏抚鍥惧儚鍦ㄤ换鍔′笅鐨勪竴鏁存潯瑙勫垯涓嬶紙鑱斿姩浠诲姟涓嬪氨鏄窡鏈憚鍍忔満鍍忕浉鍏崇殑灏忚鍒欙級鐨勫垽鏂粨鏋滀负false") // 鎵�浠ヤ篃瑕佸幓缁撴灉鏁扮粍閲屾斁鍊兼垨鏇存柊 for _, va := range timeEle.RuleResults { - if args.CameraId != "" && va.CameraId == args.CameraId { // arg.CameraId 闅忎究鎵句竴涓暟鎹� + if args.CameraId != "" && va.CameraId == args.CameraId { va.Result = strconv.FormatBool(isOk) } } @@ -670,7 +684,7 @@ if rule.PolygonId == am.areaId { // 绠楁硶鍜屽尯鍩熼兘寰楀鐨勪笂 if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && rule.SdkArgAlias != "time_rule" { - // 鍙渶瑕佽繃婊ら槇鍊硷紝杩囨护瀹屽悗鏁扮粍闀垮害澶т簬0鍗充负鎶ヨ锛屼絾瑕佽�冭檻濡備綍瀵规瘡涓�寮犻兘鎶ヨ鍛� + // 鍙渶瑕佽繃婊ら槇鍊硷紝杩囨护瀹屽悗鏁扮粍闀垮害澶т簬0鍗充负鎶ヨ argValue, err := strconv.ParseFloat(rule.SdkArgValue, 64) if err != nil { logger.Error("瑙勫垯閰嶇疆鐨勯槇鍊奸潪娉�") @@ -709,6 +723,7 @@ if rule.Operator == "==" || rule.Operator == ">=" || rule.Operator == "<=" || rule.Operator == "<" || rule.Operator == ">" || rule.Operator == "!=" { // 濡傛灉鏄笉瑙勭煩鐨勮繛鎺ョ缁熺粺杩斿洖false 瑙勫垯涔熷彧鑳藉垽鏂汉鑴哥殑鐩镐技搴︼紝鎵�浠ヤ笉瀛樺湪鍒殑杩炴帴绗� if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔� + logger.Info("--------------------缁堜簬绛夊埌浣犵殑涓嬫枃") var args []Arg if rule.RuleWithPre == "&&" { args = am.filterData @@ -717,6 +732,7 @@ } // 鍏堟竻绌鸿繃婊ゅ悗鐨勬暟鎹紝鍐嶅線閲屽鏈杩囨护鍚庣殑鏁版嵁 am.filterData = am.filterData[0:0] + //logger.Info("-----------------------浜鸿劯杩囨护鐨刟rgs锛�", args) for _, arg := range args { var formula string if rule.SdkArgAlias == "score" { @@ -800,14 +816,14 @@ } } -// 閮借繃婊ゅ畬鏉′欢涔嬪悗鐪嬬湅鏄惁瑕佸垱寤轰竴涓畾鏃跺櫒鍏冪礌 鍒涘缓瀹氭椂鍣ㄧ殑鏉′欢锛氭槸鍚︽湁闈犲彸琛岋紝涓綋闈欐绛夎嚜甯﹀畾鏃跺櫒鍚箟鐨勭畻娉曚互鍙婃槸鍚︽湁鎸佺画鏃堕棿 -func duration(rule *protomsg.Rule, am *AreaMap) { +// 濡傛灉鏈夋寔缁椂闂存潯浠剁淮鎶ゅ紑鍚竴涓畾鏃跺櫒 +func duration(rule *protomsg.Rule, groupId string, am *AreaMap, args *SdkDatas) { if rule.PolygonId == am.areaId { // 棣栧厛瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓� 閰嶇疆鐨勭畻娉曡瀵圭殑涓� if rule.SdkArgAlias == "duration" { // // 鍏堢湅鐪嬪畾鏃跺櫒鍏冪礌闃熷垪涓槸鍚︽湁杩欎釜鎽勫儚鏈鸿繖涓尯鍩熺殑瀹氭椂鍣�,濡傛灉鏈夊氨涓嶈兘鍐嶆鍒涘缓浜� var flag bool = true for k, _ := range TimeEleList { - if k == am.taskId+" "+am.sdkId+" "+am.areaId { + if k == groupId+" "+rule.Id { flag = false // 鏈夊氨缃负false logger.Info("鏈夎繖涓畾鏃跺櫒锛屼笉鍐嶅垱寤轰簡锛�") } @@ -815,29 +831,14 @@ if flag { timeLength, _ := strconv.Atoi(rule.SdkArgValue) - timeEle := TimeElement{N: timeLength, InitN: timeLength} // 鎵旇繘鍘讳竴涓畾鏃跺櫒鍏冪礌 + timeEle := TimeElement{N: timeLength, InitN: timeLength, AlarmFlag: false, CacheSdkData: *args} // 鎵旇繘鍘讳竴涓畾鏃跺櫒鍏冪礌锛堝苟缂撳瓨褰撳墠鐢婚潰甯ф暟鎹級 //TimeEleList = make(map[string]timeElement) - TimeEleList[am.taskId+" "+am.sdkId+" "+am.areaId] = &timeEle // 瀹氭椂鍣ㄥ厓绱犱互鎽勫儚鏈篿d鎷兼帴鍖哄煙id涓洪敭 + TimeEleList[groupId+" "+rule.Id] = &timeEle // 瀹氭椂鍣ㄥ厓绱犱互鎽勫儚鏈篿d鎷兼帴鍖哄煙id涓洪敭 logger.Info("鍒涘缓浜嗚鏁板櫒骞朵笖璁℃暟鍣ㄩ泦鍚堜负锛�", TimeEleList) } } } } - -//// 鍐椾綑鎷兼帴涓�涓洰鏍囨暟閲忓ぇ浜�0 -//func splice1(am *AreaMap) string { -// var num int = 0 -// for _, data := range am.filterData { -// if data.isYolo { -// num++ -// } -// } -// logger.Println("鐪嬬湅鍖哄煙鍐呯鍚堟潯浠剁殑鐩爣鏁伴噺锛�----------", num) -// formula := strconv.Itoa(num) + " " + ">" + "0" -// expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡 -// result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋� -// return strconv.FormatBool(result.(bool)) -//} // 缁欐暟鎹簱鐨勮鍒欒〃杈惧紡浠e弬 args: 涓�鏉″瓙瑙勫垯锛屽尯鍩熸暟鎹� func transferParameters(rule *protomsg.Rule, am *AreaMap) LittleRuleResult { @@ -954,14 +955,6 @@ // 鍙栧嚭鏌愪釜鏃堕棿瑙勫垯鐨勭鍑犲ぉ鐨勮鍒欐闆嗗悎 func GetTimeById(id string, index int) []TimeRange { - //var cameraTimeRule protomsg.CameraTimerule - //var api dbapi.CameraApi - //_, rules := api.FindAllTimeRules() - //for _, rule := range rules { - // if rule.Id == id { - // cameraTimeRule = rule - // } - //} _, cameraTimeRule := cache.GetTimeRuleById(id) var timeRangeList []day err := json.Unmarshal([]byte(cameraTimeRule.TimeRule), &timeRangeList) -- Gitblit v1.8.0