zhangqian
2024-06-27 80c8e74c7428329f06d1aa3b70b95b46da732b0a
保存库存结算时间点重启定时任务
3个文件已修改
50 ■■■■ 已修改文件
controllers/system_config.go 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.go 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
task/tasklist.go 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/system_config.go
@@ -9,6 +9,7 @@
    "wms/pkg/structx"
    "wms/request"
    "wms/service"
    "wms/task"
)
type SystemConfigController struct{}
@@ -54,6 +55,11 @@
        }
    }
    if err := task.RestartDynamicTask(); err != nil {
        util.ResponseFormat(c, code.SaveFail, "重启定时任务失败")
        return
    }
    util.ResponseFormat(c, code.Success, "保存成功")
}
main.go
@@ -78,7 +78,10 @@
    go service.InitHistoryReportData()
    //定时任务初始化
    task.Init()
    if err := task.Init(); err != nil {
        logx.Errorf("task init error: %v", err.Error())
        return
    }
    //钉钉机器人初始化
    dingtalkrobot.Init(conf.DingTalkConf.AlarmKey, conf.DingTalkConf.AlarmUrl)
task/tasklist.go
@@ -4,19 +4,42 @@
    "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, err := sysCfgService.GetInventoryCutOffPoint()
    if err != nil {
        return
    }
    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
        }
    }
    if dynamicScheduler.Len() == 0 {
        return
    }
    dynamicScheduler.StartAsync()
    return nil
}
func RestartDynamicTask() error {
    if dynamicScheduler != nil {
        dynamicScheduler.Stop()
        dynamicScheduler.Clear()
    }
    return StartDynamicTask()
}