package fwhQueueOld import ( "context" "fmt" "fwh-toolbox-server/domain" "fwh-toolbox-server/jobs" "fwh-toolbox-server/logger" "fwh-toolbox-server/repositories" "go.mongodb.org/mongo-driver/bson/primitive" "go.uber.org/zap" ) var ( TaskTypeShutdownStatistics = "task_ShutdownStatistics" ) func handleTaskShutdownStatistics(ctx context.Context, payload domain.TaskShutdownStatistics) error { fmt.Printf("开始执行任务 %v\n", payload) err := executeTaskShutdownStatistics(ctx, payload) // 记录任务执行结果 if err != nil { fmt.Printf("任务执行失败 %s\n", err.Error()) } else { fmt.Println("任务执行成功") } return err } func analysisShutdownSite(sn string, date string) (*primitive.ObjectID, error) { // 读取已完成或正在进行的站点分析 queryTimePeriod := [2]string{date, date} queryTrigger := domain.TriggerAuto res, err := repositories.GetSiteAnalysisManageList(1, 1000, &sn, &queryTimePeriod, nil, &queryTrigger) if err != nil { return nil, err } if res == nil { return nil, fmt.Errorf("GetSiteAnalysisManageList查询结过为空") } queryInfoList := res.Data // 判断是否有相同的分析数据 if len(queryInfoList) > 0 { // 站点分析已存在,返回第一个数据的ID return &queryInfoList[0].Id, nil } writeConfig := domain.SiteAnalysisConfigWrite{ Sn: sn, Description: fmt.Sprintf("Shutdown站点分析 %s", date), TimePeriod: [2]string{date, date}, Options: domain.SiteAnalysisOptions{ EnableTimeline: true, EnableRuntime: true, }, } id, err := repositories.InsertSiteAnalysisConfig(writeConfig, true) if err != nil { return nil, err } EnqueueSiteAnalysisTask(domain.TaskSiteAnalysis{ Id: id, Sn: writeConfig.Sn, TimePeriod: writeConfig.TimePeriod, Options: domain.SiteAnalysisOptions{ EnableTimeline: writeConfig.Options.EnableTimeline, EnableRuntime: writeConfig.Options.EnableRuntime, }, }, true) return &id, nil } var executeTaskShutdownStatistics = func(ctx context.Context, payload domain.TaskShutdownStatistics) error { executeDate := payload.Date records, err := repositories.QuerySiteShutdownList(executeDate, 0) // 请求所有设备 if err != nil { return err } // 分析Shutdown统计数据,并将结果写入数据库 fmt.Println("分析Shutdown统计数据,并将结果写入数据库") err = jobs.StatisticsShutdown(executeDate, records, analysisShutdownSite) if err != nil { zap.L().Error("Shutdown统计数据分析失败", zap.String("date", payload.Date)) return err } return nil } func EnqueueShutdownStatisticsTask(payload domain.TaskShutdownStatistics) error { p := TaskPayload[domain.TaskShutdownStatistics]{ TaskPayloadBase: TaskPayloadBase{ Type: TaskTypeShutdownStatistics, }, Payload: payload, } if err := EnqueueTask[domain.TaskShutdownStatistics](p); err != nil { logger.Std.Printf("EnqueueShutdownStatisticsTask - %s : %s\n", payload.Id, err.Error()) return err } return nil }