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