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