package scheduler import ( "context" "eta/eta_mini_bridge/models" "eta/eta_mini_bridge/utils" "fmt" "strconv" "strings" "github.com/beego/beego/v2/task" ) func InitJob() { fmt.Println("定时任务开启。。。") // 每天凌晨12点10分检测, 发送消息 tk1 := task.NewTask("UpdateReportClassify", "0 */1 * * * *", UpdateReportClassify) task.AddTask("UpdateReportClassify", tk1) task.StartTask() } func UpdateReportClassify(ctx context.Context) (err error) { reportPdfClassifys, err := models.GetReportPdfClasssify() if err != nil { return } classifyList, err := models.GetClassifyList() if err != nil { return } updateReportOriginClassifyName(reportPdfClassifys, classifyList) classifyIdFirsts := make([]int, 0) classifyIdSeconds := make([]int, 0) for _, v := range reportPdfClassifys { if v.ClassifyIdFirst == 0 { utils.FileLog.Info("分类id错误,获取失败,错误pdf研报id:" + fmt.Sprintf("%d", v.ReportPdfId)) continue } if v.ClassifyIdThird == 0 && v.ClassifyIdSecond == 0 { classifyIdFirsts = append(classifyIdFirsts, v.ClassifyIdFirst) } else if v.ClassifyIdThird == 0 { classifyIdSeconds = append(classifyIdSeconds, v.ClassifyIdSecond) } } updateReportClassify(reportPdfClassifys, classifyIdFirsts, 1) updateReportClassify(reportPdfClassifys, classifyIdSeconds, 2) return nil } // updateReportOriginClassifyName 更新原始的pdf报告的分类 func updateReportOriginClassifyName(reportList []*models.ReportPdf, classifyList []*models.ClassifyView) (err error) { classifyMap := make(map[int]*models.ClassifyView) for _, v := range classifyList { classifyMap[v.Id] = v } modifyReportPdfList := make([]*models.ReportPdf, 0) var isModify bool for _, v := range reportList { isModify = false if v.ClassifyIdFirst != 0 { firstName := classifyMap[v.ClassifyIdFirst].ClassifyName if v.ClassifyNameFirst != firstName { v.ClassifyNameFirst = firstName isModify = true } } if v.ClassifyIdSecond != 0 { secondName := classifyMap[v.ClassifyIdSecond].ClassifyName if v.ClassifyNameSecond != secondName { v.ClassifyNameSecond = secondName isModify = true } } if v.ClassifyIdThird != 0 { thirdName := classifyMap[v.ClassifyIdThird].ClassifyName if v.ClassifyNameThird != thirdName { v.ClassifyNameThird = thirdName isModify = true } } if isModify { modifyReportPdfList = append(modifyReportPdfList, v) } } err = models.MultiUpdateReportPdfClassify(modifyReportPdfList) if err != nil { utils.FileLog.Warn("研报更新分类失败") } if len(modifyReportPdfList) > 0 { var reportIds []string for _, v := range modifyReportPdfList { reportIds = append(reportIds, strconv.Itoa(v.ReportPdfId)) } utils.FileLog.Info(fmt.Sprintf("更新分类成功,更新研报为:%s", strings.Join(reportIds, ","))) } return } // updateReportClassify 更新增加分类pdf报告 func updateReportClassify(reportList []*models.ReportPdf, classifyList []int, level int) (err error) { modifyReportList := make([]*models.ReportPdf, 0) preClassifyList, err := models.GetClassifyListByIds(classifyList) if err != nil { utils.FileLog.Info("获取一级分类失败,错误分类id:" + fmt.Sprintf("%v", classifyList)) } if len(preClassifyList) > 0 { tmpClassifyIds := make([]int, 0) for _, v := range preClassifyList { if v.HasChild == 1 { tmpClassifyIds = append(tmpClassifyIds, v.Id) } } childClassify, err := models.GetChildClassifyListByIds(tmpClassifyIds) if err != nil { utils.FileLog.Info("获取二级分类失败,错误分类id:" + fmt.Sprintf("%v", tmpClassifyIds)) } var isModify bool for _, v := range reportList { isModify = false for _, vv := range childClassify { switch level { case 1: if v.ClassifyIdFirst == vv.ParentId { v.ClassifyIdSecond = vv.Id v.ClassifyNameSecond = vv.ClassifyName isModify = true } case 2: if v.ClassifyIdSecond == vv.ParentId { v.ClassifyIdThird = vv.Id v.ClassifyNameThird = vv.ClassifyName isModify = true } } } if isModify { modifyReportList = append(modifyReportList, v) } } err = models.MultiUpdateReportPdfClassify(modifyReportList) if err != nil { utils.FileLog.Warn("研报更新分类失败") } if len(modifyReportList) > 0 { var reportIds []string for _, v := range modifyReportList { reportIds = append(reportIds, strconv.Itoa(v.ReportPdfId)) } utils.FileLog.Info(fmt.Sprintf("更新分类成功,更新研报为:%s", strings.Join(reportIds, ","))) } } return }