使用plan service 替换子领域
This commit is contained in:
		@@ -84,7 +84,7 @@ func (app *Application) Start() error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 3. 启动后台工作协程
 | 
						// 3. 启动后台工作协程
 | 
				
			||||||
	app.Domain.PlanExecutionManager.Start()
 | 
						app.Domain.planService.Start()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 4. 启动 API 服务器
 | 
						// 4. 启动 API 服务器
 | 
				
			||||||
	app.API.Start()
 | 
						app.API.Start()
 | 
				
			||||||
@@ -106,7 +106,7 @@ func (app *Application) Stop() error {
 | 
				
			|||||||
	app.API.Stop()
 | 
						app.API.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 关闭任务执行器
 | 
						// 关闭任务执行器
 | 
				
			||||||
	app.Domain.PlanExecutionManager.Stop()
 | 
						app.Domain.planService.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 断开数据库连接
 | 
						// 断开数据库连接
 | 
				
			||||||
	if err := app.Infra.Storage.Disconnect(); err != nil {
 | 
						if err := app.Infra.Storage.Disconnect(); err != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -127,6 +127,7 @@ type DomainServices struct {
 | 
				
			|||||||
	taskFactory             plan.TaskFactory
 | 
						taskFactory             plan.TaskFactory
 | 
				
			||||||
	PlanExecutionManager    plan.ExecutionManager
 | 
						PlanExecutionManager    plan.ExecutionManager
 | 
				
			||||||
	AnalysisPlanTaskManager plan.AnalysisPlanTaskManager
 | 
						AnalysisPlanTaskManager plan.AnalysisPlanTaskManager
 | 
				
			||||||
 | 
						planService             plan.Service
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// initDomainServices 初始化所有的领域服务。
 | 
					// initDomainServices 初始化所有的领域服务。
 | 
				
			||||||
@@ -147,12 +148,12 @@ func initDomainServices(cfg *config.Config, infra *Infrastructure, logger *logs.
 | 
				
			|||||||
		infra.Lora.Comm,
 | 
							infra.Lora.Comm,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 计划任务管理器
 | 
					 | 
				
			||||||
	analysisPlanTaskManager := plan.NewAnalysisPlanTaskManager(infra.Repos.PlanRepo, infra.Repos.PendingTaskRepo, infra.Repos.ExecutionLogRepo, logger)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// 任务工厂
 | 
						// 任务工厂
 | 
				
			||||||
	taskFactory := task.NewTaskFactory(logger, infra.Repos.SensorDataRepo, infra.Repos.DeviceRepo, generalDeviceService)
 | 
						taskFactory := task.NewTaskFactory(logger, infra.Repos.SensorDataRepo, infra.Repos.DeviceRepo, generalDeviceService)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 计划任务管理器
 | 
				
			||||||
 | 
						analysisPlanTaskManager := plan.NewAnalysisPlanTaskManager(infra.Repos.PlanRepo, infra.Repos.PendingTaskRepo, infra.Repos.ExecutionLogRepo, logger)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 任务执行器
 | 
						// 任务执行器
 | 
				
			||||||
	planExecutionManager := plan.NewPlanExecutionManager(
 | 
						planExecutionManager := plan.NewPlanExecutionManager(
 | 
				
			||||||
		infra.Repos.PendingTaskRepo,
 | 
							infra.Repos.PendingTaskRepo,
 | 
				
			||||||
@@ -168,6 +169,9 @@ func initDomainServices(cfg *config.Config, infra *Infrastructure, logger *logs.
 | 
				
			|||||||
		cfg.Task.NumWorkers,
 | 
							cfg.Task.NumWorkers,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 计划管理器
 | 
				
			||||||
 | 
						planService := plan.NewPlanService(planExecutionManager, analysisPlanTaskManager, logger)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return &DomainServices{
 | 
						return &DomainServices{
 | 
				
			||||||
		PigPenTransferManager:   pigPenTransferManager,
 | 
							PigPenTransferManager:   pigPenTransferManager,
 | 
				
			||||||
		PigTradeManager:         pigTradeManager,
 | 
							PigTradeManager:         pigTradeManager,
 | 
				
			||||||
@@ -177,6 +181,7 @@ func initDomainServices(cfg *config.Config, infra *Infrastructure, logger *logs.
 | 
				
			|||||||
		AnalysisPlanTaskManager: analysisPlanTaskManager,
 | 
							AnalysisPlanTaskManager: analysisPlanTaskManager,
 | 
				
			||||||
		taskFactory:             taskFactory,
 | 
							taskFactory:             taskFactory,
 | 
				
			||||||
		PlanExecutionManager:    planExecutionManager,
 | 
							PlanExecutionManager:    planExecutionManager,
 | 
				
			||||||
 | 
							planService:             planService,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -141,7 +141,7 @@ func (app *Application) initializePendingTasks() error {
 | 
				
			|||||||
	planRepo := app.Infra.Repos.PlanRepo
 | 
						planRepo := app.Infra.Repos.PlanRepo
 | 
				
			||||||
	pendingTaskRepo := app.Infra.Repos.PendingTaskRepo
 | 
						pendingTaskRepo := app.Infra.Repos.PendingTaskRepo
 | 
				
			||||||
	executionLogRepo := app.Infra.Repos.ExecutionLogRepo
 | 
						executionLogRepo := app.Infra.Repos.ExecutionLogRepo
 | 
				
			||||||
	analysisPlanTaskManager := app.Domain.AnalysisPlanTaskManager
 | 
						planService := app.Domain.planService
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	logger.Info("开始初始化待执行任务列表...")
 | 
						logger.Info("开始初始化待执行任务列表...")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -235,7 +235,7 @@ func (app *Application) initializePendingTasks() error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// 阶段三:初始刷新
 | 
						// 阶段三:初始刷新
 | 
				
			||||||
	logger.Info("阶段三:开始刷新待执行列表...")
 | 
						logger.Info("阶段三:开始刷新待执行列表...")
 | 
				
			||||||
	if err := analysisPlanTaskManager.Refresh(); err != nil {
 | 
						if err := planService.RefreshPlanTriggers(); err != nil {
 | 
				
			||||||
		return fmt.Errorf("刷新待执行任务列表失败: %w", err)
 | 
							return fmt.Errorf("刷新待执行任务列表失败: %w", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	logger.Info("阶段三:待执行任务列表初始化完成。")
 | 
						logger.Info("阶段三:待执行任务列表初始化完成。")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,12 +12,6 @@ type Service interface {
 | 
				
			|||||||
	Stop()
 | 
						Stop()
 | 
				
			||||||
	// RefreshPlanTriggers 刷新计划触发器,同步数据库中的计划状态和待执行队列中的触发器任务。
 | 
						// RefreshPlanTriggers 刷新计划触发器,同步数据库中的计划状态和待执行队列中的触发器任务。
 | 
				
			||||||
	RefreshPlanTriggers() error
 | 
						RefreshPlanTriggers() error
 | 
				
			||||||
	// CreateOrUpdateTrigger 为给定的 planID 创建其关联的触发任务。
 | 
					 | 
				
			||||||
	// 如果触发器已存在,会根据计划类型更新其执行时间。
 | 
					 | 
				
			||||||
	CreateOrUpdateTrigger(planID uint) error
 | 
					 | 
				
			||||||
	// EnsureAnalysisTaskDefinition 确保计划的分析任务定义存在于 tasks 表中。
 | 
					 | 
				
			||||||
	// 如果不存在,则会自动创建。此方法不涉及待执行队列。
 | 
					 | 
				
			||||||
	EnsureAnalysisTaskDefinition(planID uint) error
 | 
					 | 
				
			||||||
	// TODO: 在这里添加其他与计划相关的领域服务方法
 | 
						// TODO: 在这里添加其他与计划相关的领域服务方法
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -58,17 +52,3 @@ func (s *planServiceImpl) RefreshPlanTriggers() error {
 | 
				
			|||||||
	s.logger.Infof("PlanService 正在刷新计划触发器...")
 | 
						s.logger.Infof("PlanService 正在刷新计划触发器...")
 | 
				
			||||||
	return s.taskManager.Refresh()
 | 
						return s.taskManager.Refresh()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
// CreateOrUpdateTrigger 为给定的 planID 创建其关联的触发任务。
 | 
					 | 
				
			||||||
// 如果触发器已存在,会根据计划类型更新其执行时间。
 | 
					 | 
				
			||||||
func (s *planServiceImpl) CreateOrUpdateTrigger(planID uint) error {
 | 
					 | 
				
			||||||
	s.logger.Infof("PlanService 正在为计划 %d 创建或更新触发器...", planID)
 | 
					 | 
				
			||||||
	return s.taskManager.CreateOrUpdateTrigger(planID)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// EnsureAnalysisTaskDefinition 确保计划的分析任务定义存在于 tasks 表中。
 | 
					 | 
				
			||||||
// 如果不存在,则会自动创建。此方法不涉及待执行队列。
 | 
					 | 
				
			||||||
func (s *planServiceImpl) EnsureAnalysisTaskDefinition(planID uint) error {
 | 
					 | 
				
			||||||
	s.logger.Infof("PlanService 正在确保计划 %d 的分析任务定义...", planID)
 | 
					 | 
				
			||||||
	return s.taskManager.EnsureAnalysisTaskDefinition(planID)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user