From 98d8fba819eab8683ea9fa54b8978cde4c7e07ff Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期五, 05 七月 2024 18:19:10 +0800
Subject: [PATCH] 两个月度统计下载如果下载的是当前月,取实时数据 & 修复若干bug

---
 controllers/report_forms_controller.go |  120 +++++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 75 insertions(+), 45 deletions(-)

diff --git a/controllers/report_forms_controller.go b/controllers/report_forms_controller.go
index 334e1d7..fac922e 100644
--- a/controllers/report_forms_controller.go
+++ b/controllers/report_forms_controller.go
@@ -345,38 +345,41 @@
 		return
 	}
 
-	now := time.Now().Local()
-	today := now.Day()
-	nowMonth := now.Format("2006-01")
-
-	day, dateStr, _ := service.NewSystemConfigService().GetInventoryCutOffPoint()
-	if nowMonth == params.Date && today < day || today == day && now.Format("15:04") < dateStr { //鏈湀鏈嚦缁撶畻鏃堕棿鐐�
-		productIds := make([]string, 0, len(result))
-		for _, item := range result {
-			productIds = append(productIds, item.ProductId)
-		}
-		statsRecords, err := service.GetCurrentStats(params.Date, productIds)
+	nowMonth := time.Now().Local().Format("2006-01")
+	if nowMonth == params.Date { //瀹炴椂鏌ヨ
+		result, err = MonthStatsReplaceRealtimeOperation(result, params.Date)
 		if err != nil {
-			util.ResponseFormat(c, code.InternalError, "鍐呴儴閿欒")
+			util.ResponseFormat(c, code.InternalError, "鏌ヨ澶辫触")
 			return
 		}
-		statsMap := models.MonthStatsMap(statsRecords)
-		for k, v := range result {
-			if statsMap[v.ProductId] == nil {
-				continue
-			}
-
-			result[k].OutputAmount = statsMap[v.ProductId].OutputAmount
-			result[k].OutputMoreUnits = statsMap[v.ProductId].OutputMoreUnits
-			result[k].EndAmount = statsMap[v.ProductId].EndAmount
-			result[k].EndMoreUnits = statsMap[v.ProductId].EndMoreUnits
-			result[k].InputAmount = statsMap[v.ProductId].InputAmount
-			result[k].InputMoreUnits = statsMap[v.ProductId].InputMoreUnits
-		}
-
 	}
 
 	util.ResponseFormatList(c, code.Success, result, int(total))
+}
+
+func MonthStatsReplaceRealtimeOperation(result []*models.MonthStats, date string) ([]*models.MonthStats, error) {
+	productIds := make([]string, 0, len(result))
+	for _, item := range result {
+		productIds = append(productIds, item.ProductId)
+	}
+	statsRecords, err := service.GetCurrentStats(date, productIds)
+	if err != nil {
+		return nil, err
+	}
+	statsMap := models.MonthStatsMap(statsRecords)
+	for k, v := range result {
+		if statsMap[v.ProductId] == nil {
+			continue
+		}
+
+		result[k].OutputAmount = statsMap[v.ProductId].OutputAmount
+		result[k].OutputMoreUnits = statsMap[v.ProductId].OutputMoreUnits
+		result[k].EndAmount = statsMap[v.ProductId].EndAmount
+		result[k].EndMoreUnits = statsMap[v.ProductId].EndMoreUnits
+		result[k].InputAmount = statsMap[v.ProductId].InputAmount
+		result[k].InputMoreUnits = statsMap[v.ProductId].InputMoreUnits
+	}
+	return result, nil
 }
 
 // DownloadMonthStats
@@ -401,6 +404,16 @@
 		util.ResponseFormat(c, code.InternalError, "鏌ヨ澶辫触")
 		return
 	}
+
+	nowMonth := time.Now().Local().Format("2006-01")
+	if nowMonth == params.Date { //瀹炴椂鏌ヨ
+		list, err = MonthStatsReplaceRealtimeOperation(list, params.Date)
+		if err != nil {
+			util.ResponseFormat(c, code.InternalError, "鏌ヨ澶辫触")
+			return
+		}
+	}
+
 	filename, err := monthFormsService.Export(list)
 	if err != nil {
 		logx.Errorf("DownloadMonthStats Export err:%v", err)
@@ -482,28 +495,11 @@
 
 	nowMonth := time.Now().Local().Format("2006-01")
 	if nowMonth == params.Date {
-		productIds := make([]string, 0, len(result))
-		for _, item := range result {
-			productIds = append(productIds, item.ProductId)
-		}
-		statsRecords, err := service.GetCurrentWarehouseStats(params.Date, params.WarehouseID, productIds, true)
+		result, err = WarehouseMonthStatsReplaceRealtimeOperation(result, params.Date, params.WarehouseID)
 		if err != nil {
-			util.ResponseFormat(c, code.InternalError, "鍐呴儴閿欒")
+			util.ResponseFormat(c, code.InternalError, "鏌ヨ澶辫触")
 			return
 		}
-		statsMap := models.WarehouseMonthStatsMap(statsRecords)
-		for k, v := range result {
-			if statsMap[v.ProductId] == nil {
-				continue
-			}
-
-			result[k].OutputAmount = statsMap[v.ProductId].OutputAmount
-			result[k].EndAmount = statsMap[v.ProductId].EndAmount
-			result[k].InputAmount = statsMap[v.ProductId].InputAmount
-			result[k].InputItems = statsMap[v.ProductId].InputItems
-			result[k].OutputItems = statsMap[v.ProductId].OutputItems
-		}
-
 	}
 
 	util.ResponseFormatList(c, code.Success, result, int(total))
@@ -561,6 +557,16 @@
 		util.ResponseFormat(c, code.InternalError, "鏌ヨ澶辫触")
 		return
 	}
+
+	nowMonth := time.Now().Local().Format("2006-01")
+	if nowMonth == params.Date {
+		list, err = WarehouseMonthStatsReplaceRealtimeOperation(list, params.Date, params.WarehouseID)
+		if err != nil {
+			util.ResponseFormat(c, code.InternalError, "鏌ヨ澶辫触")
+			return
+		}
+	}
+
 	filename, err := monthFormsService.Export(list)
 	if err != nil {
 		logx.Errorf("DownloadMonthStats Export err:%v", err)
@@ -574,3 +580,27 @@
 	c.File(filename)
 	defer os.Remove(filename)
 }
+
+func WarehouseMonthStatsReplaceRealtimeOperation(list []*models.WarehouseMonthStats, date string, warehouseId int) (newList []*models.WarehouseMonthStats, err error) {
+	productIds := make([]string, 0, len(list))
+	for _, item := range list {
+		productIds = append(productIds, item.ProductId)
+	}
+	statsRecords, err := service.GetCurrentWarehouseStats(date, warehouseId, productIds, true)
+	if err != nil {
+		return nil, err
+	}
+	statsMap := models.WarehouseMonthStatsMap(statsRecords)
+	for k, v := range list {
+		if statsMap[v.ProductId] == nil {
+			continue
+		}
+
+		list[k].OutputAmount = statsMap[v.ProductId].OutputAmount
+		list[k].EndAmount = statsMap[v.ProductId].EndAmount
+		list[k].InputAmount = statsMap[v.ProductId].InputAmount
+		list[k].InputItems = statsMap[v.ProductId].InputItems
+		list[k].OutputItems = statsMap[v.ProductId].OutputItems
+	}
+	return list, nil
+}

--
Gitblit v1.8.0