| | |
| | | "github.com/go-co-op/gocron" |
| | | "time" |
| | | "wms/pkg/logx" |
| | | "wms/service" |
| | | ) |
| | | |
| | | var s *gocron.Scheduler |
| | | var dynamicScheduler *gocron.Scheduler |
| | | |
| | | func init() { |
| | | s = gocron.NewScheduler(time.Local) |
| | | dynamicScheduler = gocron.NewScheduler(time.Local) |
| | | } |
| | | func Init() { |
| | | _, err := s.Every(1).Month(1).Do(MonthStats) //每月初执行一次 |
| | | if err != nil { |
| | | logx.Errorf("init task err:%v", err) |
| | | panic(err) |
| | | } |
| | | func Init() error { |
| | | return StartDynamicTask() |
| | | } |
| | | |
| | | s.StartAsync() |
| | | 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() |
| | | } |