From 73b6baf6af3d88cdcb0e2df7932a9bd96b0b85c5 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期一, 01 七月 2024 22:32:34 +0800
Subject: [PATCH] 月度统计出入库按类型汇总报表定时任务和手动跑任务接口

---
 task/tasklist.go |   40 +++++++++++++++++++++++++++++++++++-----
 1 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/task/tasklist.go b/task/tasklist.go
index d2063b0..1a787a1 100644
--- a/task/tasklist.go
+++ b/task/tasklist.go
@@ -3,15 +3,45 @@
 import (
 	"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() {
-	s.Every(1).Month().Do(MonthStats) //姣忔湀鍒濇墽琛屼竴娆�
+func Init() error {
+	return StartDynamicTask()
+}
 
-	s.StartAsync()
+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()
 }

--
Gitblit v1.8.0