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 +++++++++++++++++++++++++---------------
 service/warehouse_month_forms.go       |    8 +-
 2 files changed, 79 insertions(+), 49 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
+}
diff --git a/service/warehouse_month_forms.go b/service/warehouse_month_forms.go
index 9af8677..09ccfe6 100644
--- a/service/warehouse_month_forms.go
+++ b/service/warehouse_month_forms.go
@@ -99,8 +99,8 @@
 		f.SetCellValue("Sheet1", "E"+column, v.Unit)
 		f.SetCellValue("Sheet1", "F"+column, v.SalePrice)
 
-		slf.FillDealerTypeToExcel(v.InputItems, inputStart, i+3, inputTypes, f)
-		slf.FillDealerTypeToExcel(v.OutputItems, outputStart, i+3, outputTypes, f)
+		slf.FillDealerTypeToExcel(v.InputItems, inputStart, i+3, inputTypes, f, constvar.InputTotalHeader)
+		slf.FillDealerTypeToExcel(v.OutputItems, outputStart, i+3, outputTypes, f, constvar.OutPutTotalHeader)
 	}
 
 	fileName := fmt.Sprintf("%s鏈堝害缁熻鎶ヨ〃%s.xlsx", "浠撳簱", time.Now().Format("2006-01-02-1504"))
@@ -139,7 +139,7 @@
 	return sum
 }
 
-func (slf *WarehouseMonthFormsService) FillDealerTypeToExcel(items []*models.WarehouseStatsItems, startIndex int, column int, dealerTypes []string, f *excelize.File) {
+func (slf *WarehouseMonthFormsService) FillDealerTypeToExcel(items []*models.WarehouseStatsItems, startIndex int, column int, dealerTypes []string, f *excelize.File, totalHeader string) {
 	columnStr := strconv.Itoa(column)
 	sum := slf.SumItems(items)
 	detailMap := models.WarehouseStatsItemMap(items)
@@ -154,7 +154,7 @@
 		var amount decimal.Decimal
 		if detailMap[dealerTypes[i]] != nil {
 			amount = detailMap[dealerTypes[i]].Amount
-		} else if dealerTypes[i] == constvar.InputTotalHeader {
+		} else if dealerTypes[i] == totalHeader {
 			amount = sum
 		}
 		f.SetCellValue("Sheet1", getColumnAlphabet(startIndex+i)+columnStr, amount)

--
Gitblit v1.8.0