From 61c76d09c574cbd308294dae7a2e9115d1ce5004 Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期四, 30 五月 2024 13:42:08 +0800 Subject: [PATCH] 调整进出异常过滤 置在数据段 --- db/repository.go | 1 db/elastic.go | 26 ++++++++++++- db/models.go | 1 rule/service.go | 29 ++++++++++++-- task/engine.go | 4 +- 5 files changed, 51 insertions(+), 10 deletions(-) diff --git a/db/elastic.go b/db/elastic.go index de9734d..2f0f9d3 100644 --- a/db/elastic.go +++ b/db/elastic.go @@ -34,7 +34,8 @@ return captureInfos, nil } -func QueryTimesByDocNumberDays(days int, docNumber string) (int, error) { +func QueryTimesByDocNumberDays(docNumber string, communityId string, cameraIds []string, days int) (int, error) { + cameraIdsStr := strings.Replace(strings.Trim(fmt.Sprint(cameraIds), "[]"), " ", "\",\"", -1) esURL := "http://" + config.Elastic.Host + ":" + config.Elastic.Port + "/" + config.Elastic.Index + "/_search" queryDSL := `{ "query": { @@ -50,6 +51,16 @@ { "term": { "documentNumber": "` + docNumber + `" + } + }, + { + "term": { + "communityId": "` + communityId + `" + } + }, + { + "terms": { + "cameraId": ["` + cameraIdsStr + `"] } } ] @@ -68,7 +79,8 @@ return total, nil } -func QueryLastIdByDayRange(dayGte, dayLt int) (map[string]string, error) { +func QueryLastIdByDayRange(communityId string, cameraIds []string, dayGte, dayLt int) (map[string]string, error) { + cameraIdsStr := strings.Replace(strings.Trim(fmt.Sprint(cameraIds), "[]"), " ", "\",\"", -1) esURL := "http://" + config.Elastic.Host + ":" + config.Elastic.Port + "/" + config.Elastic.Index + "/_search" queryDSL := `{ "query": { @@ -81,6 +93,16 @@ "lt": "now-` + strconv.Itoa(dayLt) + `d/d" } } + }, + { + "term": { + "communityId": "` + communityId + `" + } + }, + { + "terms": { + "cameraId": ["` + cameraIdsStr + `"] + } } ] } diff --git a/db/models.go b/db/models.go index 9348dda..d6125f2 100644 --- a/db/models.go +++ b/db/models.go @@ -43,6 +43,7 @@ type Device struct { DeviceCode string `gorm:"column:deviceCode" json:"deviceCode" example:"J83762"` //璁惧缂栫爜 + AreaID string `json:"areaID" gorm:"index;column:communityID;type:varchar(299);"` //甯镐綇灏忓尯 domain unit ID BuildingType BuildingType `gorm:"column:building_type;type:tinyint(1);not null;default:0" json:"buildingType"` //妤煎畤绫诲瀷 MaxBuildingFloor int `gorm:"column:max_building_floor;type:tinyint(1);not null;default:0" json:"maxBuildingFloor"` //鏈�楂樻ゼ灞傚彿 } diff --git a/db/repository.go b/db/repository.go index afa5a12..48b4757 100644 --- a/db/repository.go +++ b/db/repository.go @@ -28,7 +28,6 @@ if result.Error != nil { return nil, result.Error } - return device, nil } diff --git a/rule/service.go b/rule/service.go index 2a476d2..5fac3c6 100644 --- a/rule/service.go +++ b/rule/service.go @@ -3,6 +3,7 @@ import ( "basic.com/valib/logger.git" "fmt" + "ruleModelEngine/cache" "ruleModelEngine/config" "ruleModelEngine/data" "ruleModelEngine/db" @@ -29,8 +30,7 @@ // return true //} -// 鎵ц绋嬪簭鍏ュ彛 -func ExecuteTask() { +func executeEnteringButNotLeaving(communityId string) { //杩涘嚭寮傚父甯冩帶浠诲姟锛屾殏鏃跺綊绫诲埌鏍囩璁$畻閮ㄥ垎 //fmt.Println("杩涘嚭寮傚父寮�濮嬪叆鍙o紒锛侊紒锛侊紒锛�") tasks, err := db.GetAllTaskData() @@ -44,17 +44,31 @@ tkInfo.Name = taskInfo.Name } } + //fmt.Println("tkInfo: ", tkInfo) + //fmt.Println("docNumIdMap: ", len(docNumIdMap)) + //鑾峰彇鍟嗕綇妤糲ameraid + + cameraIds := make([]string, 0) + for _, deviceInfo := range cache.Device { + if deviceInfo.AreaID == communityId && deviceInfo.BuildingType == db.BuildingTypeMixedUse { + cameraIds = append(cameraIds, deviceInfo.DeviceCode) + } + } + if len(cameraIds) == 0 { + logger.Info("涓嶅瓨鍦ㄥ晢浣忔ゼ璁惧锛�", cameraIds) + return + } + //鏌ヨ寰呭垽鏂繘鍑哄紓甯搁璀︽。妗� days := config.Api.AInterval - docNumIdMap, err := db.QueryLastIdByDayRange(days, days-1) + docNumIdMap, err := db.QueryLastIdByDayRange(communityId, cameraIds, days, days-1) if err != nil { logger.Error("QueryByDayRange err: ", err) } - //fmt.Println("docNumIdMap: ", len(docNumIdMap)) for docNumber, id := range docNumIdMap { //fmt.Println(docNumber, id) alarmRules := make([]db.AlarmRule, 0) - flag := task.EnteringButNotLeaving(docNumber, days) + flag := task.EnteringButNotLeaving(docNumber, communityId, cameraIds, days) if flag == true { alarmRules = append(alarmRules, db.AlarmRule{RuleId: strconv.Itoa(tkInfo.Id), RuleText: tkInfo.Name, AlarmLevel: "0"}) } @@ -67,7 +81,10 @@ logger.Info("AddAlarmRules success: ", id) } } +} +// 鎵ц绋嬪簭鍏ュ彛 +func ExecuteTask() { //return ruleInfo, err := db.GetAllData() if err != nil { @@ -85,11 +102,13 @@ } //fmt.Println(labeManage) for _, communityID := range communityIDs { + executeEnteringButNotLeaving(communityID) //涓囧叏绀惧尯 //if communityID != "50010101010000001001" { // continue //} fmt.Println("communityID: ", communityID) + //continue //鏌ヨ绀惧尯鍐呬汉鍛樻。妗堬紝鏂逛究鏁版嵁鏇存柊 personStatusList, err := db.QueryPersonStatusWithPagination(communityID, 30) if err != nil { diff --git a/task/engine.go b/task/engine.go index 53c59c2..c3b1452 100644 --- a/task/engine.go +++ b/task/engine.go @@ -49,8 +49,8 @@ return false } -func EnteringButNotLeaving(docNumber string, days int) bool { - total, err := db.QueryTimesByDocNumberDays(days-1, docNumber) +func EnteringButNotLeaving(docNumber string, communityId string, cameraIds []string, days int) bool { + total, err := db.QueryTimesByDocNumberDays(docNumber, communityId, cameraIds, days-1) if err != nil { logger.Error("QueryTimesByDocNumberDays err: ", err) } -- Gitblit v1.8.0