实现根据区域ID或设备ID清空对应阈值告警任务

This commit is contained in:
2025-11-10 20:37:07 +08:00
parent 2cc4135b28
commit 9dc47ec7ad
4 changed files with 176 additions and 11 deletions

View File

@@ -87,6 +87,8 @@ type PlanRepository interface {
StopPlanTransactionally(ctx context.Context, planID uint) error
// UpdatePlanStateAfterExecution 更新计划执行后的状态(计数和状态)
UpdatePlanStateAfterExecution(ctx context.Context, planID uint, newCount uint, newStatus models.PlanStatus) error
// ListTasksByDeviceID 根据设备ID获取关联任务列表
ListTasksByDeviceID(ctx context.Context, deviceID uint) ([]*models.Task, error)
}
// gormPlanRepository 是 PlanRepository 的 GORM 实现
@@ -878,3 +880,19 @@ func (r *gormPlanRepository) FindTaskByID(ctx context.Context, id int) (*models.
}
return &task, nil
}
func (r *gormPlanRepository) ListTasksByDeviceID(ctx context.Context, deviceID uint) ([]*models.Task, error) {
repoCtx := logs.AddFuncName(ctx, r.ctx, "ListTasksByDeviceID")
tasks := []*models.Task{}
// 使用 Joins 方法来连接 tasks 表和 device_tasks 关联表,
// 然后通过 Where 子句筛选出与指定 deviceID 关联的所有任务。
err := r.db.WithContext(repoCtx).Joins("JOIN device_tasks ON device_tasks.task_id = tasks.id").
Where("device_tasks.device_id = ?", deviceID).
Find(&tasks).Error
if err != nil {
return nil, err
}
return tasks, nil
}