package task import ( "github.com/go-co-op/gocron" "time" "wms/pkg/logx" "wms/service" ) var dynamicScheduler *gocron.Scheduler func init() { dynamicScheduler = gocron.NewScheduler(time.Local) } func Init() error { return StartDynamicTask() } func StartDynamicTask() (err error) { sysCfgService := service.NewSystemConfigService() day, timeStr, _ := sysCfgService.GetInventoryCutOffPoint() if day != 0 && timeStr != "" { _, err = dynamicScheduler.Every(1).Month(day).At(timeStr).Do(MonthStats) //每月初执行一次 if err != nil { logx.Errorf("init task err:%v", err) return err } _, err = dynamicScheduler.Every(1).Month(day).At(timeStr).Do(WarehouseMonthStats) //每月初执行一次 if err != nil { logx.Errorf("init task err:%v", err) return err } } if dynamicScheduler.Len() == 0 { return } dynamicScheduler.StartAsync() return nil } func RestartDynamicTask() error { if dynamicScheduler != nil { dynamicScheduler.Stop() dynamicScheduler.Clear() } return StartDynamicTask() }