From fca319958029fa924308e50cb61202d7d6ff5008 Mon Sep 17 00:00:00 2001 From: zhaoqingang <zhaoqg0118@163.com> Date: 星期三, 19 二月 2025 13:33:37 +0800 Subject: [PATCH] 暂停聚集模型 --- db/task.go | 78 +++++++++++++++++++++++++++------------ 1 files changed, 54 insertions(+), 24 deletions(-) diff --git a/db/task.go b/db/task.go index 7f21a2a..cc22131 100644 --- a/db/task.go +++ b/db/task.go @@ -1,46 +1,55 @@ package db import ( + "encoding/json" "fmt" - "gorm.io/gorm" "strings" "time" + + "gorm.io/gorm" ) type ( ModelTask struct { BaseModel - Name string `gorm:"type:varchar(255)" json:"name"` //浠诲姟鍚嶇О - ModelID string `gorm:"type:varchar(255)" json:"modelID"` //妯″瀷ID - BeginTime time.Time //宸ヤ綔鏃堕棿寮�濮� - EndTime time.Time //鍏鏃堕棿缁撴潫 - DomainUnitIds []string `gorm:"-" json:"domainUnitIds"` //鍖哄煙id鍒楄〃 - DomainIds string `gorm:"type:varchar(1000)" json:"-"` - Building string `gorm:"type:varchar(255)" json:"building"` //妤兼爧 - Floor string `gorm:"type:varchar(255)" json:"floor"` //妤煎眰 - AlarmType AlarmType `gorm:"type:varchar(255);" json:"alarmType"` //棰勮鏂瑰紡 - PersonType string `gorm:"type:varchar(255);" json:"personType"` //浜哄憳绫诲瀷 - GatherPersons int `gorm:"type:int;" json:"gatherPersons"` //鑱氶泦浜烘暟 - AppearInterval int `gorm:"type:int;" json:"appearInterval"` //鍑虹幇闂撮殧锛屽崟浣嶄负绉� - DaysWindow int `gorm:"type:int;" json:"daysWindow" ` //杩戝嚑澶╁唴 - Threshold int `gorm:"type:int;" json:"threshold" ` //杈惧嚑娆� + Name string `gorm:"type:varchar(255)" json:"name"` // 浠诲姟鍚嶇О + ModelID string `gorm:"type:varchar(255)" json:"modelID"` // 妯″瀷ID + BeginTime time.Time `json:"beginTime"` // 宸ヤ綔鏃堕棿寮�濮� + EndTime time.Time `json:"endTime"` // 宸ヤ綔鏃堕棿缁撴潫 + DomainUnitIds []string `gorm:"-" json:"domainUnitIds"` // 鍖哄煙id鍒楄〃 + DomainIds string `gorm:"type:varchar(1000)" json:"-"` + Building string `gorm:"type:varchar(255)" json:"building"` // 妤兼爧 + Floor string `gorm:"type:varchar(255)" json:"floor"` // 妤煎眰 + AlarmType AlarmType `gorm:"type:varchar(255);" json:"alarmType"` // 棰勮鏂瑰紡 + PersonType string `gorm:"type:varchar(255);" json:"personType"` // 浜哄憳绫诲瀷 + PersonLabel string `gorm:"type:varchar(255);" json:"personLabel"` // 浜哄憳鏍囩 + IdentityType string `gorm:"type:varchar(255);" json:"identityType"` // 韬唤鏍囩, 闄岀敓浜�, 璁垮, 浣忔埛 + AlarmLevel string `gorm:"type:varchar(255);" json:"alarmLevel"` // 棰勮绾у埆 + GatherPersons int `gorm:"type:int;" json:"gatherPersons"` // 鑱氶泦浜烘暟 + AppearInterval int `gorm:"type:int;" json:"appearInterval"` // 鍑虹幇闂撮殧锛屽崟浣嶄负绉� + DaysWindow int `gorm:"type:int;" json:"daysWindow" ` // 杩戝嚑澶╁唴 + Threshold int `gorm:"type:int;" json:"threshold" ` // 杈惧嚑娆� + Enabled bool `json:"enabled"` // 鏄惁寮�鍚� + RuleSet string `gorm:"type:text" json:"-"` // 瀛樺偍妯″瀷浠诲姟璁剧疆鐨勮鍒欏弬鏁� + Rules []ModelRuleSet `gorm:"-" json:"rules"` // 瑙勫垯閰嶇疆 } ModelTaskSearch struct { ModelTask - Orm *gorm.DB - PageNum int - PageSize int - Keyword string - ModelIDs []string + Orm *gorm.DB + ModelIDs []string + Unexpired bool + PageNum int + PageSize int + Keyword string } ) type AlarmType string const ( - AlarmTypeSave AlarmType = "save" //浠呬繚瀛� - AlarmTypeSendMessage AlarmType = "message" //鍙戞秷鎭� + AlarmTypeSave AlarmType = "save" // 浠呬繚瀛� + AlarmTypeSendMessage AlarmType = "message" // 鍙戞秷鎭� ) func (slf *ModelTask) TableName() string { @@ -75,6 +84,13 @@ func (slf *ModelTask) AfterFind(db *gorm.DB) (err error) { if slf.DomainIds != "" { slf.DomainUnitIds = strings.Split(slf.DomainIds, ",") + } + if slf.DomainIds != "" { + slf.DomainUnitIds = strings.Split(slf.DomainIds, ",") + } + + if slf.RuleSet != "" { + _ = json.Unmarshal([]byte(slf.RuleSet), &slf.Rules) } return nil } @@ -113,8 +129,13 @@ return slf } -func (slf *ModelTaskSearch) SetEnabled(kw string) *ModelTaskSearch { - slf.Keyword = kw +func (slf *ModelTaskSearch) SetEnabled(enabled bool) *ModelTaskSearch { + slf.Enabled = enabled + return slf +} + +func (slf *ModelTaskSearch) SetUnexpired() *ModelTaskSearch { + slf.Unexpired = true return slf } @@ -138,6 +159,15 @@ db = db.Where("name like ?", kw) } + if slf.Enabled { + db = db.Where("enabled = ?", slf.Enabled) + } + + if slf.Unexpired { + now := time.Now() + db = db.Where("begin_time <= ?", now).Where("end_time >= ?", now) + } + return db } -- Gitblit v1.8.0