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