package service import ( "git.huangwc.com/pig/pig-farm-controller/internal/infra/models" "git.huangwc.com/pig/pig-farm-controller/internal/infra/repository" ) // MonitorService 定义了监控相关的业务逻辑服务接口 type MonitorService interface { ListSensorData(opts repository.SensorDataListOptions, page, pageSize int) ([]models.SensorData, int64, error) ListDeviceCommandLogs(opts repository.DeviceCommandLogListOptions, page, pageSize int) ([]models.DeviceCommandLog, int64, error) ListPlanExecutionLogs(opts repository.PlanExecutionLogListOptions, page, pageSize int) ([]models.PlanExecutionLog, int64, error) ListTaskExecutionLogs(opts repository.TaskExecutionLogListOptions, page, pageSize int) ([]models.TaskExecutionLog, int64, error) ListPendingCollections(opts repository.PendingCollectionListOptions, page, pageSize int) ([]models.PendingCollection, int64, error) ListUserActionLogs(opts repository.UserActionLogListOptions, page, pageSize int) ([]models.UserActionLog, int64, error) ListRawMaterialPurchases(opts repository.RawMaterialPurchaseListOptions, page, pageSize int) ([]models.RawMaterialPurchase, int64, error) ListRawMaterialStockLogs(opts repository.RawMaterialStockLogListOptions, page, pageSize int) ([]models.RawMaterialStockLog, int64, error) ListFeedUsageRecords(opts repository.FeedUsageRecordListOptions, page, pageSize int) ([]models.FeedUsageRecord, int64, error) ListMedicationLogs(opts repository.MedicationLogListOptions, page, pageSize int) ([]models.MedicationLog, int64, error) ListPigBatchLogs(opts repository.PigBatchLogListOptions, page, pageSize int) ([]models.PigBatchLog, int64, error) ListWeighingBatches(opts repository.WeighingBatchListOptions, page, pageSize int) ([]models.WeighingBatch, int64, error) ListWeighingRecords(opts repository.WeighingRecordListOptions, page, pageSize int) ([]models.WeighingRecord, int64, error) ListPigTransferLogs(opts repository.PigTransferLogListOptions, page, pageSize int) ([]models.PigTransferLog, int64, error) ListPigSickLogs(opts repository.PigSickLogListOptions, page, pageSize int) ([]models.PigSickLog, int64, error) ListPigPurchases(opts repository.PigPurchaseListOptions, page, pageSize int) ([]models.PigPurchase, int64, error) ListPigSales(opts repository.PigSaleListOptions, page, pageSize int) ([]models.PigSale, int64, error) ListNotifications(opts repository.NotificationListOptions, page, pageSize int) ([]models.Notification, int64, error) } // monitorService 是 MonitorService 接口的具体实现 type monitorService struct { sensorDataRepo repository.SensorDataRepository deviceCommandLogRepo repository.DeviceCommandLogRepository executionLogRepo repository.ExecutionLogRepository pendingCollectionRepo repository.PendingCollectionRepository userActionLogRepo repository.UserActionLogRepository rawMaterialRepo repository.RawMaterialRepository medicationRepo repository.MedicationLogRepository pigBatchRepo repository.PigBatchRepository pigBatchLogRepo repository.PigBatchLogRepository pigTransferLogRepo repository.PigTransferLogRepository pigSickLogRepo repository.PigSickLogRepository pigTradeRepo repository.PigTradeRepository notificationRepo repository.NotificationRepository } // NewMonitorService 创建一个新的 MonitorService 实例 func NewMonitorService( sensorDataRepo repository.SensorDataRepository, deviceCommandLogRepo repository.DeviceCommandLogRepository, executionLogRepo repository.ExecutionLogRepository, pendingCollectionRepo repository.PendingCollectionRepository, userActionLogRepo repository.UserActionLogRepository, rawMaterialRepo repository.RawMaterialRepository, medicationRepo repository.MedicationLogRepository, pigBatchRepo repository.PigBatchRepository, pigBatchLogRepo repository.PigBatchLogRepository, pigTransferLogRepo repository.PigTransferLogRepository, pigSickLogRepo repository.PigSickLogRepository, pigTradeRepo repository.PigTradeRepository, notificationRepo repository.NotificationRepository, ) MonitorService { return &monitorService{ sensorDataRepo: sensorDataRepo, deviceCommandLogRepo: deviceCommandLogRepo, executionLogRepo: executionLogRepo, pendingCollectionRepo: pendingCollectionRepo, userActionLogRepo: userActionLogRepo, rawMaterialRepo: rawMaterialRepo, medicationRepo: medicationRepo, pigBatchRepo: pigBatchRepo, pigBatchLogRepo: pigBatchLogRepo, pigTransferLogRepo: pigTransferLogRepo, pigSickLogRepo: pigSickLogRepo, pigTradeRepo: pigTradeRepo, notificationRepo: notificationRepo, } } // ListSensorData 负责处理查询传感器数据列表的业务逻辑 func (s *monitorService) ListSensorData(opts repository.SensorDataListOptions, page, pageSize int) ([]models.SensorData, int64, error) { return s.sensorDataRepo.List(opts, page, pageSize) } // ListDeviceCommandLogs 负责处理查询设备命令日志列表的业务逻辑 func (s *monitorService) ListDeviceCommandLogs(opts repository.DeviceCommandLogListOptions, page, pageSize int) ([]models.DeviceCommandLog, int64, error) { return s.deviceCommandLogRepo.List(opts, page, pageSize) } // ListPlanExecutionLogs 负责处理查询计划执行日志列表的业务逻辑 func (s *monitorService) ListPlanExecutionLogs(opts repository.PlanExecutionLogListOptions, page, pageSize int) ([]models.PlanExecutionLog, int64, error) { return s.executionLogRepo.ListPlanExecutionLogs(opts, page, pageSize) } // ListTaskExecutionLogs 负责处理查询任务执行日志列表的业务逻辑 func (s *monitorService) ListTaskExecutionLogs(opts repository.TaskExecutionLogListOptions, page, pageSize int) ([]models.TaskExecutionLog, int64, error) { return s.executionLogRepo.ListTaskExecutionLogs(opts, page, pageSize) } // ListPendingCollections 负责处理查询待采集请求列表的业务逻辑 func (s *monitorService) ListPendingCollections(opts repository.PendingCollectionListOptions, page, pageSize int) ([]models.PendingCollection, int64, error) { return s.pendingCollectionRepo.List(opts, page, pageSize) } // ListUserActionLogs 负责处理查询用户操作日志列表的业务逻辑 func (s *monitorService) ListUserActionLogs(opts repository.UserActionLogListOptions, page, pageSize int) ([]models.UserActionLog, int64, error) { return s.userActionLogRepo.List(opts, page, pageSize) } // ListRawMaterialPurchases 负责处理查询原料采购记录列表的业务逻辑 func (s *monitorService) ListRawMaterialPurchases(opts repository.RawMaterialPurchaseListOptions, page, pageSize int) ([]models.RawMaterialPurchase, int64, error) { return s.rawMaterialRepo.ListRawMaterialPurchases(opts, page, pageSize) } // ListRawMaterialStockLogs 负责处理查询原料库存日志列表的业务逻辑 func (s *monitorService) ListRawMaterialStockLogs(opts repository.RawMaterialStockLogListOptions, page, pageSize int) ([]models.RawMaterialStockLog, int64, error) { return s.rawMaterialRepo.ListRawMaterialStockLogs(opts, page, pageSize) } // ListFeedUsageRecords 负责处理查询饲料使用记录列表的业务逻辑 func (s *monitorService) ListFeedUsageRecords(opts repository.FeedUsageRecordListOptions, page, pageSize int) ([]models.FeedUsageRecord, int64, error) { return s.rawMaterialRepo.ListFeedUsageRecords(opts, page, pageSize) } // ListMedicationLogs 负责处理查询用药记录列表的业务逻辑 func (s *monitorService) ListMedicationLogs(opts repository.MedicationLogListOptions, page, pageSize int) ([]models.MedicationLog, int64, error) { return s.medicationRepo.ListMedicationLogs(opts, page, pageSize) } // ListPigBatchLogs 负责处理查询猪批次日志列表的业务逻辑 func (s *monitorService) ListPigBatchLogs(opts repository.PigBatchLogListOptions, page, pageSize int) ([]models.PigBatchLog, int64, error) { return s.pigBatchLogRepo.List(opts, page, pageSize) } // ListWeighingBatches 负责处理查询批次称重记录列表的业务逻辑 func (s *monitorService) ListWeighingBatches(opts repository.WeighingBatchListOptions, page, pageSize int) ([]models.WeighingBatch, int64, error) { return s.pigBatchRepo.ListWeighingBatches(opts, page, pageSize) } // ListWeighingRecords 负责处理查询单次称重记录列表的业务逻辑 func (s *monitorService) ListWeighingRecords(opts repository.WeighingRecordListOptions, page, pageSize int) ([]models.WeighingRecord, int64, error) { return s.pigBatchRepo.ListWeighingRecords(opts, page, pageSize) } // ListPigTransferLogs 负责处理查询猪只迁移日志列表的业务逻辑 func (s *monitorService) ListPigTransferLogs(opts repository.PigTransferLogListOptions, page, pageSize int) ([]models.PigTransferLog, int64, error) { return s.pigTransferLogRepo.ListPigTransferLogs(opts, page, pageSize) } // ListPigSickLogs 负责处理查询病猪日志列表的业务逻辑 func (s *monitorService) ListPigSickLogs(opts repository.PigSickLogListOptions, page, pageSize int) ([]models.PigSickLog, int64, error) { return s.pigSickLogRepo.ListPigSickLogs(opts, page, pageSize) } // ListPigPurchases 负责处理查询猪只采购记录列表的业务逻辑 func (s *monitorService) ListPigPurchases(opts repository.PigPurchaseListOptions, page, pageSize int) ([]models.PigPurchase, int64, error) { return s.pigTradeRepo.ListPigPurchases(opts, page, pageSize) } // ListPigSales 负责处理查询猪只销售记录列表的业务逻辑 func (s *monitorService) ListPigSales(opts repository.PigSaleListOptions, page, pageSize int) ([]models.PigSale, int64, error) { return s.pigTradeRepo.ListPigSales(opts, page, pageSize) } // ListNotifications 负责处理查询通知列表的业务逻辑 func (s *monitorService) ListNotifications(opts repository.NotificationListOptions, page, pageSize int) ([]models.Notification, int64, error) { return s.notificationRepo.List(opts, page, pageSize) }