From 72025bc1118c62acb57bba645ed142faddc410a7 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期四, 01 八月 2024 17:41:54 +0800 Subject: [PATCH] 注释掉已不用的盘点接口 --- service/month_forms.go | 222 +++++++++++++++++++++++++++++++++--------------------- 1 files changed, 135 insertions(+), 87 deletions(-) diff --git a/service/month_forms.go b/service/month_forms.go index 4bde4dc..34a9cc5 100644 --- a/service/month_forms.go +++ b/service/month_forms.go @@ -1,10 +1,13 @@ package service import ( + "encoding/json" "fmt" + "github.com/shopspring/decimal" "github.com/xuri/excelize/v2" "strconv" "time" + "wms/constvar" "wms/models" "wms/pkg/logx" "wms/request" @@ -64,110 +67,53 @@ return "", err } - // 璁剧疆琛ㄥご - f.SetCellValue("Sheet1", "A1", "浜у搧缂栫爜") - f.SetCellValue("Sheet1", "B1", "浜у搧鍚嶇О") - f.SetCellValue("Sheet1", "C1", "鏈熷垵搴撳瓨") - f.MergeCell("Sheet1", "C1", "F1") // 鍚堝苟鍗曞厓鏍� - f.SetCellValue("Sheet1", "G1", "鏈湀鍏ュ簱") - f.MergeCell("Sheet1", "G1", "J1") // 鍚堝苟鍗曞厓鏍� - f.SetCellValue("Sheet1", "K1", "鏈湀鍑哄簱") - f.MergeCell("Sheet1", "K1", "N1") // 鍚堝苟鍗曞厓鏍� - f.SetCellValue("Sheet1", "O1", "鏈熸湯搴撳瓨") - f.MergeCell("Sheet1", "O1", "R1") // 鍚堝苟鍗曞厓鏍� + unitData, unitIndexMap := GetAllUnits() + unitLen := len(unitData) - unitData := []string{"浠�", "鍖�", "绫�", "閲嶉噺"} - for i, header := range unitData { - cell := getColumnAlphabet(i+3) + "2" - f.SetCellValue("Sheet1", cell, header) - } - for i, header := range unitData { - cell := getColumnAlphabet(i+7) + "2" - f.SetCellValue("Sheet1", cell, header) - } - for i, header := range unitData { - cell := getColumnAlphabet(i+11) + "2" - f.SetCellValue("Sheet1", cell, header) - } - for i, header := range unitData { - cell := getColumnAlphabet(i+15) + "2" - f.SetCellValue("Sheet1", cell, header) - } - - // 璁剧疆琛ㄥご鏍峰紡 - style := &excelize.Style{ - Border: nil, - Fill: excelize.Fill{ - Type: "pattern", - Pattern: 1, - Shading: 0, - }, - Font: &excelize.Font{ - Bold: true, - }, - Alignment: &excelize.Alignment{ - Horizontal: "center", - }, - } - titleStyle, err := f.NewStyle(style) + // 鑷畾涔夎〃澶� + headers := []interface{}{"浜у搧缂栫爜", "浜у搧鍚嶇О", map[string][]string{"鏈熷垵搴撳瓨": unitData}, map[string][]string{"鏈湀鍏ュ簱": unitData}, map[string][]string{"鏈湀鍑哄簱": unitData}, map[string][]string{"鏈熸湯搴撳瓨": unitData}} + lastColumnNumber, err := SetExcelHeaders(headers, f) if err != nil { - return + return "", err } - f.SetCellStyle("Sheet1", "A1", "R2", titleStyle) + + f.MergeCell("Sheet1", "A1", "A2") // 鍚堝苟鍗曞厓鏍� + f.MergeCell("Sheet1", "B1", "B2") // 鍚堝苟鍗曞厓鏍� + + titleStyle, err := SetHeaderStyle(f) + if err != nil { + return "", err + } + + lastColumn := getColumnAlphabet(lastColumnNumber) + f.SetCellStyle("Sheet1", "A1", lastColumn+"2", titleStyle) // 璁剧疆鍒楀 f.SetColWidth("Sheet1", "A", "B", 30) - f.SetColWidth("Sheet1", "C", "R", 15) + f.SetColWidth("Sheet1", "C", lastColumn, 15) for i, v := range dataList { - column := strconv.Itoa(i + 3) - f.SetCellValue("Sheet1", "A"+column, v.ProductId) - f.SetCellValue("Sheet1", "B"+column, v.ProductName) - f.SetCellValue("Sheet1", "C"+column, v.BeginAmount) + row := strconv.Itoa(i + 3) + f.SetCellValue("Sheet1", "A"+row, v.ProductId) + f.SetCellValue("Sheet1", "B"+row, v.ProductName) + + v.BeginMoreUnitsArr = append(v.BeginMoreUnitsArr, models.UnitItems{Amount: v.BeginAmount, Unit: v.Unit}) for _, v := range v.BeginMoreUnitsArr { - switch v.Unit { - case "浠�": - f.SetCellValue("Sheet1", "D"+column, v.Amount) - case "鍖�": - f.SetCellValue("Sheet1", "E"+column, v.Amount) - case "绫�": - f.SetCellValue("Sheet1", "F"+column, v.Amount) - } + f.SetCellValue("Sheet1", getColumnAlphabet(3+unitIndexMap[v.Unit])+row, v.Amount) } - f.SetCellValue("Sheet1", "G"+column, v.InputAmount) + v.InputMoreUnitsArr = append(v.InputMoreUnitsArr, models.UnitItems{Amount: v.InputAmount, Unit: v.Unit}) for _, v := range v.InputMoreUnitsArr { - switch v.Unit { - case "浠�": - f.SetCellValue("Sheet1", "H"+column, v.Amount) - case "鍖�": - f.SetCellValue("Sheet1", "I"+column, v.Amount) - case "绫�": - f.SetCellValue("Sheet1", "J"+column, v.Amount) - } + f.SetCellValue("Sheet1", getColumnAlphabet(3+unitLen*1+unitIndexMap[v.Unit])+row, v.Amount) } - f.SetCellValue("Sheet1", "K"+column, v.OutputAmount) + v.OutputMoreUnitsArr = append(v.OutputMoreUnitsArr, models.UnitItems{Amount: v.OutputAmount, Unit: v.Unit}) for _, v := range v.OutputMoreUnitsArr { - switch v.Unit { - case "浠�": - f.SetCellValue("Sheet1", "L"+column, v.Amount) - case "鍖�": - f.SetCellValue("Sheet1", "M"+column, v.Amount) - case "绫�": - f.SetCellValue("Sheet1", "N"+column, v.Amount) - } + f.SetCellValue("Sheet1", getColumnAlphabet(3+unitLen*2+unitIndexMap[v.Unit])+row, v.Amount) } - f.SetCellValue("Sheet1", "O"+column, v.EndAmount) + v.EndMoreUnitsArr = append(v.EndMoreUnitsArr, models.UnitItems{Amount: v.EndAmount, Unit: v.Unit}) for _, v := range v.EndMoreUnitsArr { - switch v.Unit { - case "浠�": - f.SetCellValue("Sheet1", "P"+column, v.Amount) - case "鍖�": - f.SetCellValue("Sheet1", "Q"+column, v.Amount) - case "绫�": - f.SetCellValue("Sheet1", "R"+column, v.Amount) - } + f.SetCellValue("Sheet1", getColumnAlphabet(3+unitLen*3+unitIndexMap[v.Unit])+row, v.Amount) } } @@ -178,3 +124,105 @@ return fileName, nil } + +func GetCurrentStats(date string, productIds []string) (statRecords []*models.MonthStats, err error) { + //鏈湀鏈熷垵鏁伴噺/涓婃湀缁撲綑鏁伴噺 + groupSumList, err := models.NewLocationProductAmountSearch().SetProductIds(productIds).GroupSum("product_id", "amount") + productIds = make([]string, 0, len(groupSumList)) + for _, groupSum := range groupSumList { + productIds = append(productIds, groupSum.Class) + } + products, err := models.NewMaterialSearch().SetFields("id, name, unit, weight, more_unit, more_unit_value").SetIDs(productIds).FindNotTotal() + if err != nil { + logx.Errorf("MonthStats GetCurrentStats get products err:%v", err) + return + } + productMap := models.MaterialMap(products) + + //鎸夐厤缃彇寮�濮嬫椂闂村拰缁撴潫鏃堕棿 + beginTime, endTime, err := NewSystemConfigService().GetInventoryCutOffTime() + if err != nil { + logx.Errorf("MonthStats GetCurrentStats get GetInventoryCutOffTime err:%v", err) + return + } + inputMap, err := GetStatsByOperationType(beginTime, endTime, constvar.BaseOperationTypeIncoming) + if err != nil { + logx.Errorf("MonthStats GetStatsByOperationType input err:%v", err) + return + } + + outputMap, err := GetStatsByOperationType(beginTime, endTime, constvar.BaseOperationTypeOutgoing) + if err != nil { + logx.Errorf("MonthStats GetStatsByOperationType output err:%v", err) + return + } + + for _, groupSum := range groupSumList { + productId := groupSum.Class + if productMap[productId] == nil { + continue + } + product := productMap[productId] + amount := groupSum.Sum + record := models.MonthStats{ + ProductId: productId, + ProductName: product.Name, + Unit: product.Unit, + Weight: product.Weight.Mul(amount), + Date: date, + } + + var ( + moreUnits string + inputMoreUnits string + outputMoreUnits string + ) + if *product.MoreUnit { + moreValueArr := make([]models.UnitItems, 0, len(product.MoreUnitList)) + inputMoreValueArr := make([]models.UnitItems, 0, len(product.MoreUnitList)) + outputMoreValueArr := make([]models.UnitItems, 0, len(product.MoreUnitList)) + if !amount.IsZero() { + moreValueArr = CreateMoreUnit(amount, product.MoreUnitList) + } + if !inputMap[productId].IsZero() { + inputMoreValueArr = CreateMoreUnit(inputMap[productId], product.MoreUnitList) + } + + if !outputMap[productId].IsZero() { + outputMoreValueArr = CreateMoreUnit(outputMap[productId], product.MoreUnitList) + } + bys, _ := json.Marshal(moreValueArr) + moreUnits = string(bys) + bys, _ = json.Marshal(inputMoreValueArr) + inputMoreUnits = string(bys) + bys, _ = json.Marshal(outputMoreValueArr) + outputMoreUnits = string(bys) + } + + record.InputAmount = inputMap[productId] + record.InputMoreUnits = inputMoreUnits + record.OutputAmount = outputMap[productId] + record.OutputMoreUnits = outputMoreUnits + record.EndAmount = amount + record.EndMoreUnits = moreUnits + statRecords = append(statRecords, &record) + } + + return +} + +func GetStatsByOperationType(beginTime, endTime time.Time, operationType constvar.BaseOperationType) (m map[string]decimal.Decimal, err error) { + operationIds, err := models.NewOperationSearch().SetBaseOperationType(operationType).SetFields("id").SetTimeBetween(beginTime, endTime).FindIds() + if err != nil { + return + } + groupSumList, err := models.NewOperationDetailsSearch().SetOperationIds(operationIds).SetFields("product_id, amount").GroupSum("product_id", "amount") + if err != nil { + return + } + m = make(map[string]decimal.Decimal, len(groupSumList)) + for _, v := range groupSumList { + m[v.Class] = v.Sum + } + return +} -- Gitblit v1.8.0