taskShutdownStatistics.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package taskQueue
  2. import (
  3. "context"
  4. "fmt"
  5. "fwh-toolbox-server/domain"
  6. "fwh-toolbox-server/jobs"
  7. "fwh-toolbox-server/logger"
  8. "fwh-toolbox-server/repositories"
  9. "go.mongodb.org/mongo-driver/bson/primitive"
  10. "go.uber.org/zap"
  11. )
  12. var (
  13. TaskTypeShutdownStatistics = "task_ShutdownStatistics"
  14. )
  15. func handleTaskAlarmStatistics(ctx context.Context, payload domain.TaskShutdownStatistics) error {
  16. fmt.Printf("开始执行任务 %v\n", payload)
  17. err := executeTaskAlarmStatistics(ctx, payload)
  18. // 记录任务执行结果
  19. if err != nil {
  20. fmt.Printf("任务执行失败 %s\n", err.Error())
  21. } else {
  22. fmt.Println("任务执行成功")
  23. }
  24. return err
  25. }
  26. func analysisShutdownSite(sn string, date string) (*primitive.ObjectID, error) {
  27. writeConfig := domain.SiteAnalysisConfigWrite{
  28. Sn: sn,
  29. Description: fmt.Sprintf("Shutdown站点分析 %s", date),
  30. TimePeriod: [2]string{date, date},
  31. Options: domain.SiteAnalysisOptions{
  32. EnableTimeline: true,
  33. EnableRuntime: true,
  34. },
  35. }
  36. id, err := repositories.InsertSiteAnalysisConfig(writeConfig)
  37. if err != nil {
  38. return nil, err
  39. }
  40. EnqueueSiteAnalysisTask(domain.TaskSiteAnalysis{
  41. Id: id,
  42. Sn: writeConfig.Sn,
  43. TimePeriod: writeConfig.TimePeriod,
  44. Options: domain.SiteAnalysisOptions{
  45. EnableTimeline: writeConfig.Options.EnableTimeline,
  46. EnableRuntime: writeConfig.Options.EnableRuntime,
  47. },
  48. })
  49. return &id, nil
  50. }
  51. var executeTaskAlarmStatistics = func(ctx context.Context, payload domain.TaskShutdownStatistics) error {
  52. executeDate := payload.Date
  53. records, err := repositories.QuerySiteShutdownList(executeDate, 0) // 请求所有设备
  54. if err != nil {
  55. return err
  56. }
  57. // 分析告警统计数据,并将结果写入数据库
  58. fmt.Println("分析告警统计数据,并将结果写入数据库")
  59. err = jobs.StatisticsShutdown(executeDate, records, analysisShutdownSite)
  60. if err != nil {
  61. zap.L().Error("告警统计数据分析失败", zap.String("date", payload.Date))
  62. return err
  63. }
  64. return nil
  65. }
  66. func EnqueueShutdownStatisticsTask(payload domain.TaskShutdownStatistics) error {
  67. p := TaskPayload[domain.TaskShutdownStatistics]{
  68. TaskPayloadBase: TaskPayloadBase{
  69. Type: TaskTypeShutdownStatistics,
  70. },
  71. Payload: payload,
  72. }
  73. if err := EnqueueTask[domain.TaskShutdownStatistics](p); err != nil {
  74. logger.Std.Printf("EnqueueShutdownStatisticsTask - %s : %s\n", payload.Id, err.Error())
  75. return err
  76. }
  77. return nil
  78. }