实现关闭计划

This commit is contained in:
2025-09-22 15:17:54 +08:00
parent bd2d1c6b63
commit 4096499d28
5 changed files with 138 additions and 3 deletions

View File

@@ -1,6 +1,8 @@
package repository
import (
"errors"
"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
"gorm.io/gorm"
)
@@ -24,6 +26,10 @@ type ExecutionLogRepository interface {
// FindIncompletePlanExecutionLogs 查找所有未完成的计划执行日志
FindIncompletePlanExecutionLogs() ([]models.PlanExecutionLog, error)
// FindInProgressPlanExecutionLogByPlanID 根据 PlanID 查找正在进行的计划执行日志
FindInProgressPlanExecutionLogByPlanID(planID uint) (*models.PlanExecutionLog, error)
// FindIncompleteTaskExecutionLogsByPlanLogID 根据计划日志ID查找所有未完成的任务日志
FindIncompleteTaskExecutionLogsByPlanLogID(planLogID uint) ([]models.TaskExecutionLog, error)
}
// gormExecutionLogRepository 是使用 GORM 的具体实现。
@@ -114,3 +120,26 @@ func (r *gormExecutionLogRepository) FindIncompletePlanExecutionLogs() ([]models
err := r.db.Where("status = ?", models.ExecutionStatusStarted).Find(&logs).Error
return logs, err
}
// FindInProgressPlanExecutionLogByPlanID 根据 PlanID 查找正在进行的计划执行日志
func (r *gormExecutionLogRepository) FindInProgressPlanExecutionLogByPlanID(planID uint) (*models.PlanExecutionLog, error) {
var log models.PlanExecutionLog
err := r.db.Where("plan_id = ? AND status = ?", planID, models.ExecutionStatusStarted).First(&log).Error
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
// 未找到不是一个需要上报的错误,代表计划当前没有在运行
return nil, nil
}
// 其他数据库错误
return nil, err
}
return &log, nil
}
// FindIncompleteTaskExecutionLogsByPlanLogID 根据计划日志ID查找所有未完成的任务日志
func (r *gormExecutionLogRepository) FindIncompleteTaskExecutionLogsByPlanLogID(planLogID uint) ([]models.TaskExecutionLog, error) {
var logs []models.TaskExecutionLog
err := r.db.Where("plan_execution_log_id = ? AND (status = ? OR status = ?)",
planLogID, models.ExecutionStatusWaiting, models.ExecutionStatusStarted).Find(&logs).Error
return logs, err
}