| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- package taskQueue
- import (
- "context"
- "fmt"
- "fwh-toolbox-server/domain"
- "fwh-toolbox-server/jobs"
- "fwh-toolbox-server/logger"
- "fwh-toolbox-server/repositories"
- "time"
- "go.mongodb.org/mongo-driver/bson/primitive"
- "go.uber.org/zap"
- )
- var (
- TaskTypeAlarmStatistics = "task_AlarmStatistics"
- )
- func handleTaskAlarmStatistics(ctx context.Context, payload domain.TaskAlarmStatistics) error {
- fmt.Printf("开始执行任务 %v\n", payload)
- err := executeTaskAlarmStatistics(ctx, payload)
- // 记录任务执行结果
- if err != nil {
- fmt.Printf("任务执行失败 %s\n", err.Error())
- } else {
- fmt.Println("任务执行成功")
- }
- return err
- }
- func analysisAlarmSite(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("告警站点分析 %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 executeTaskAlarmStatistics = func(ctx context.Context, payload domain.TaskAlarmStatistics) error {
- // 分析告警统计数据,并将结果写入数据库
- fmt.Println("分析告警统计数据,并将结果写入数据库")
- err := jobs.StatisticsAlarm(analysisAlarmSite)
- if err != nil {
- zap.L().Error("告警统计数据分析失败", zap.String("date", time.Now().Format(time.DateTime)))
- return err
- }
- return nil
- }
- func EnqueueAlarmStatisticsTask(payload domain.TaskAlarmStatistics) error {
- p := TaskPayload[domain.TaskAlarmStatistics]{
- TaskPayloadBase: TaskPayloadBase{
- Type: TaskTypeAlarmStatistics,
- },
- Payload: payload,
- }
- if err := EnqueueTask[domain.TaskAlarmStatistics](p); err != nil {
- logger.Std.Printf("EnqueueAlarmStatisticsTask - %s : %s\n", payload.Id, err.Error())
- return err
- }
- return nil
- }
|