| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- package taskQueue
- 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
- }
|