From 37a64e6972df2b705670774047c65f9a0ce60ac1 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期三, 03 七月 2024 16:15:10 +0800
Subject: [PATCH] 月度统计定时任务按设定的时间查询相应数据&修复若干bug

---
 service/system_config.go |   33 +++++++++++++++++++++++++++++++--
 1 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/service/system_config.go b/service/system_config.go
index daab2d6..e11412e 100644
--- a/service/system_config.go
+++ b/service/system_config.go
@@ -2,6 +2,7 @@
 
 import (
 	"errors"
+	"fmt"
 	"github.com/spf13/cast"
 	"gorm.io/gorm"
 	"strings"
@@ -65,9 +66,37 @@
 
 func (slf SystemConfigService) GetInventoryCutOffPoint() (day int, timeStr string, err error) {
 	config, err := models.NewSystemConfigSearch().SetConfigType(constvar.SystemConfigTypeInventoryCutOffPoint).First()
-	if err != nil {
-		err = errors.New("搴撳瓨缁撶畻鏃堕棿鐐规湭閰嶇疆")
+	if err == gorm.ErrRecordNotFound {
+		config = &models.SystemConfig{
+			Val: "01-00:01",
+		}
+	}
+	if err != nil && err != gorm.ErrRecordNotFound {
 		return
 	}
 	return slf.CheckInventoryCutOffPoint(config.Val)
 }
+
+func (slf SystemConfigService) GetInventoryCutOffTime() (beginTime, endTime time.Time, err error) {
+	day, timeStr, err := slf.GetInventoryCutOffPoint()
+	// 鍋囪褰撳墠鏃堕棿
+	currentTime := time.Now()
+	// 瑙f瀽缁欏畾鐨勬椂闂村瓧绗︿覆涓� time 瀵硅薄
+	parsedTime, err := time.Parse("15:04", timeStr)
+	if err != nil {
+		fmt.Println("鏃堕棿瑙f瀽閿欒:", err)
+		return
+	}
+
+	// 鍒涘缓涓�涓棩鏈熸椂闂村璞★紝鍋囪鍦ㄥ綋鍓嶆湀鐨勭粰瀹氭棩鍜屾椂闂�
+	endTime = time.Date(currentTime.Year(), currentTime.Month(), day, parsedTime.Hour(), parsedTime.Minute(), 0, 0, currentTime.Location())
+
+	// 濡傛灉缁欏畾鐨勬棩鏈熸椂闂村湪褰撳墠鏃堕棿涔嬪悗锛屾垜浠渶瑕佸洖鍒颁笂涓湀
+	if endTime.After(currentTime) {
+		lastMonth := currentTime.AddDate(0, -1, 0)
+		endTime = time.Date(lastMonth.Year(), lastMonth.Month(), day, parsedTime.Hour(), parsedTime.Minute(), 0, 0, currentTime.Location())
+	}
+	lastMonth := endTime.AddDate(0, -1, 0)
+	beginTime = time.Date(lastMonth.Year(), lastMonth.Month(), day, parsedTime.Hour(), parsedTime.Minute(), 0, 0, currentTime.Location())
+	return beginTime, endTime, nil
+}

--
Gitblit v1.8.0