From 79aef24a785581d95343ccd99e9cb362b2bc9c97 Mon Sep 17 00:00:00 2001
From: yinbentan <yinbentan@live.com>
Date: 星期六, 06 七月 2024 21:31:59 +0800
Subject: [PATCH] 调整库存商品位置错误

---
 service/warehouse_month_forms.go |   46 +++++++++++++++++++++++++++++++++-------------
 1 files changed, 33 insertions(+), 13 deletions(-)

diff --git a/service/warehouse_month_forms.go b/service/warehouse_month_forms.go
index a4d4838..09ccfe6 100644
--- a/service/warehouse_month_forms.go
+++ b/service/warehouse_month_forms.go
@@ -10,7 +10,6 @@
 	"wms/models"
 	"wms/pkg/logx"
 	"wms/request"
-	"wms/utils"
 )
 
 type WarehouseMonthFormsService struct{}
@@ -26,7 +25,8 @@
 }
 
 func (slf *WarehouseMonthFormsService) BuildSearch(params request.GetMonthStats) (search *models.WarehouseMonthStatsSearch) {
-	search = models.NewWarehouseMonthStatsSearch().SetKeyword(params.Keyword).SetDate(params.Date)
+	search = models.NewWarehouseMonthStatsSearch().
+		SetKeyword(params.Keyword).SetDate(params.Date).SetWarehouseId(params.WarehouseID)
 	if params.Preload {
 		search = search.SetPreload(true)
 	}
@@ -88,8 +88,8 @@
 	f.SetColWidth("Sheet1", "A", "F", 30)
 	f.SetColWidth("Sheet1", "G", getColumnAlphabet(headerLen), 15)
 
-	inputStart := 7
-	outputStart := 7 + len(inputTypes)
+	inputStart := 6
+	outputStart := 6 + len(inputTypes)
 	for i, v := range dataList {
 		column := strconv.Itoa(i + 3)
 		f.SetCellValue("Sheet1", "A"+column, v.ProductId)
@@ -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,16 +139,22 @@
 	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)
+	for k := range detailMap {
+		if k == "" {
+			detailMap["鍏朵粬"] = detailMap[k]
+			delete(detailMap, k)
+		}
+	}
 
 	for i := 0; i < len(dealerTypes); i++ {
 		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)
@@ -156,7 +162,7 @@
 	return
 }
 
-func GetCurrentWarehouseStats(date string, warehouseId int, productIds []string) (statRecords []*models.WarehouseMonthStats, err error) {
+func GetCurrentWarehouseStats(date string, warehouseId int, productIds []string, realTime bool) (statRecords []*models.WarehouseMonthStats, err error) {
 	//鏈湀鏈熷垵鏁伴噺/涓婃湀缁撲綑鏁伴噺
 	groupSumList, err := models.NewLocationProductAmountSearch().SetProductIds(productIds).GroupSum("product_id", "amount")
 	productIds = make([]string, 0, len(groupSumList))
@@ -170,7 +176,16 @@
 	}
 	productMap := models.MaterialMap(products)
 
-	beginTime, endTime := utils.GetLastMonthPeriod()
+	//鎸夐厤缃彇寮�濮嬫椂闂村拰缁撴潫鏃堕棿
+	beginTime, endTime, err := NewSystemConfigService().GetInventoryCutOffTime()
+	if realTime {
+		beginTime = endTime
+		endTime = time.Now()
+	}
+	if err != nil {
+		logx.Errorf("MonthStats GetCurrentStats get GetInventoryCutOffTime err:%v", err)
+		return
+	}
 	inputMap, err := GetStatsMulti(beginTime, endTime, constvar.BaseOperationTypeIncoming, warehouseId)
 	if err != nil {
 		logx.Errorf("MonthStats GetStatsByOperationType input err:%v", err)
@@ -199,9 +214,9 @@
 			SalePrice:    product.SalePrice,
 			EndAmount:    amount,
 			InputAmount:  SumMapAmount(inputMap[productId]),
-			InputItems:   GetDealerItems(inputMap[productId]),
+			InputItems:   GetDealerItems(inputMap[productId], models.MonthStatsItemsTypeInput),
 			OutputAmount: SumMapAmount(outputMap[productId]),
-			OutputItems:  GetDealerItems(outputMap[productId]),
+			OutputItems:  GetDealerItems(outputMap[productId], models.MonthStatsItemsTypeOutput),
 			Date:         date,
 		}
 		statRecords = append(statRecords, &record)
@@ -211,11 +226,15 @@
 }
 
 func GetStatsMulti(beginTime, endTime time.Time, operationType constvar.BaseOperationType, warehouseId int) (m map[string]map[string]decimal.Decimal, err error) {
+	m = make(map[string]map[string]decimal.Decimal)
 	operationIds, err := models.NewOperationSearch().SetBaseOperationType(operationType).
 		SetFields("id").SetTimeBetween(beginTime, endTime).
 		SetWarehouseId(warehouseId).
 		FindIds()
 	if err != nil {
+		return
+	}
+	if len(operationIds) == 0 {
 		return
 	}
 	groupSumList, err := models.NewOperationDetailsSearch().SetOperationIds(operationIds).
@@ -241,13 +260,14 @@
 	return
 }
 
-func GetDealerItems(m map[string]decimal.Decimal) (items []*models.WarehouseStatsItems) {
+func GetDealerItems(m map[string]decimal.Decimal, tp models.MonthStatsItemsType) (items []*models.WarehouseStatsItems) {
 	for k, v := range m {
 		name := k
 		if name == "" {
 			name = "鍏朵粬"
 		}
 		items = append(items, &models.WarehouseStatsItems{
+			Type:   tp,
 			Name:   name,
 			Amount: v,
 		})

--
Gitblit v1.8.0