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()
|
}
|