From 80c8e74c7428329f06d1aa3b70b95b46da732b0a Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期四, 27 六月 2024 20:09:03 +0800 Subject: [PATCH] 保存库存结算时间点重启定时任务 --- main.go | 5 ++++- controllers/system_config.go | 6 ++++++ task/tasklist.go | 41 ++++++++++++++++++++++++++++++++--------- 3 files changed, 42 insertions(+), 10 deletions(-) diff --git a/controllers/system_config.go b/controllers/system_config.go index 60b2523..7c73191 100644 --- a/controllers/system_config.go +++ b/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, "淇濆瓨鎴愬姛") } diff --git a/main.go b/main.go index 99e764c..a2ea7c2 100644 --- a/main.go +++ b/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) diff --git a/task/tasklist.go b/task/tasklist.go index e4ddd4b..ec6298b 100644 --- a/task/tasklist.go +++ b/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() } -- Gitblit v1.8.0