设备和区域主控删除时清除对应区域阈值告警或设备阈值告警任务

This commit is contained in:
2025-11-10 21:14:36 +08:00
parent 9dc47ec7ad
commit 30880f8c30
6 changed files with 123 additions and 31 deletions

View File

@@ -4,6 +4,7 @@ import (
"context"
"fmt"
"git.huangwc.com/pig/pig-farm-controller/internal/domain/alarm"
"git.huangwc.com/pig/pig-farm-controller/internal/domain/device"
"git.huangwc.com/pig/pig-farm-controller/internal/domain/notify"
"git.huangwc.com/pig/pig-farm-controller/internal/domain/plan"
@@ -28,6 +29,7 @@ type taskFactory struct {
deviceService device.Service
notificationService notify.Service
alarmService alarm.AlarmService
}
func NewTaskFactory(
@@ -37,6 +39,7 @@ func NewTaskFactory(
alarmRepo repository.AlarmRepository,
deviceService device.Service,
notifyService notify.Service,
alarmService alarm.AlarmService,
) plan.TaskFactory {
return &taskFactory{
ctx: ctx,
@@ -45,6 +48,7 @@ func NewTaskFactory(
alarmRepo: alarmRepo,
deviceService: deviceService,
notificationService: notifyService,
alarmService: alarmService,
}
}
@@ -60,6 +64,10 @@ func (t *taskFactory) Production(ctx context.Context, claimedLog *models.TaskExe
return NewFullCollectionTask(logs.AddCompName(baseCtx, CompNameFullCollectionTask), claimedLog, t.deviceRepo, t.deviceService)
case models.TaskTypeAlarmNotification:
return NewAlarmNotificationTask(logs.AddCompName(baseCtx, CompNameAlarmNotification), claimedLog, t.notificationService, t.alarmRepo)
case models.TaskTypeDeviceThresholdCheck:
return NewDeviceThresholdCheckTask(logs.AddCompName(baseCtx, "DeviceThresholdCheckTask"), claimedLog, t.sensorDataRepo, t.alarmService)
case models.TaskTypeAreaCollectorThresholdCheck:
return NewAreaThresholdCheckTask(logs.AddCompName(baseCtx, "AreaCollectorThresholdCheckTask"), claimedLog, t.sensorDataRepo, t.deviceRepo, t.alarmService)
default:
// TODO 这里直接panic合适吗? 不过这个场景确实不该出现任何异常的任务类型
logger.Panicf("不支持的任务类型: %s", claimedLog.Task.Type)
@@ -89,6 +97,10 @@ func (t *taskFactory) CreateTaskFromModel(ctx context.Context, taskModel *models
return NewFullCollectionTask(logs.AddCompName(baseCtx, CompNameFullCollectionTask), tempLog, t.deviceRepo, t.deviceService), nil
case models.TaskTypeAlarmNotification:
return NewAlarmNotificationTask(logs.AddCompName(baseCtx, CompNameAlarmNotification), tempLog, t.notificationService, t.alarmRepo), nil
case models.TaskTypeDeviceThresholdCheck:
return NewDeviceThresholdCheckTask(logs.AddCompName(baseCtx, "DeviceThresholdCheckTask"), tempLog, t.sensorDataRepo, t.alarmService), nil
case models.TaskTypeAreaCollectorThresholdCheck:
return NewAreaThresholdCheckTask(logs.AddCompName(baseCtx, "AreaCollectorThresholdCheckTask"), tempLog, t.sensorDataRepo, t.deviceRepo, t.alarmService), nil
default:
return nil, fmt.Errorf("不支持为类型 '%s' 的任务创建模型实例", taskModel.Type)
}