From 9b60ddba27ef778419da5089e3b30ebe173afd7d Mon Sep 17 00:00:00 2001
From: yinbentan <yinbentan@live.com>
Date: 星期五, 28 六月 2024 14:24:35 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jialian' into jialian

---
 task/tasklist.go |   41 ++++++++++++++++++++++++++++++++---------
 1 files changed, 32 insertions(+), 9 deletions(-)

diff --git a/task/tasklist.go b/task/tasklist.go
index 755558d..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.UTC)
+	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