From d5785f7ecec215960c4d100bf129e1abeca9d5cb Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 30 七月 2024 20:11:03 +0800
Subject: [PATCH] 位置报表多单位使用动态表头及相应数据调整(数据使用存储的多单位数据,并展示在对应单位下面)
---
service/inventory_report_forms.go | 26 +++++++-----
service/history_forms.go | 6 ++-
service/more_units.go | 13 +-----
service/location_forms.go | 22 +++++-----
4 files changed, 33 insertions(+), 34 deletions(-)
diff --git a/service/history_forms.go b/service/history_forms.go
index 906354e..075317a 100644
--- a/service/history_forms.go
+++ b/service/history_forms.go
@@ -137,8 +137,10 @@
var fileName string
f := excelize.NewFile()
+ unitData, unitIndexMap := GetAllUnits()
+
// 鑷畾涔夎〃澶�
- headers := []interface{}{"鏃ユ湡", "鍗曞彿", "浜у搧", "浜у搧缂栫爜", "涓氬姟绫诲瀷", "浠�", "鑷�", map[string][]string{"鏁伴噺": {"浠�", "鍖�", "绫�", "閲嶉噺"}}, "鍗曚綅", "閲嶉噺"}
+ headers := []interface{}{"鏃ユ湡", "鍗曞彿", "浜у搧", "浜у搧缂栫爜", "涓氬姟绫诲瀷", "浠�", "鑷�", map[string][]string{"鏁伴噺": unitData}, "鍗曚綅", "閲嶉噺"}
// 璁剧疆琛ㄥご
if err := SetExcelHeader(headers, f); err != nil {
@@ -166,7 +168,7 @@
f.SetCellValue("Sheet1", "F"+column, v.FromLocation)
f.SetCellValue("Sheet1", "G"+column, v.ToLocation)
f.SetCellValue("Sheet1", "H"+column, v.Amount)
- FillMoreUnitToExcel(v.Amount, v.AmountMoreUnits, 7, i+3, f)
+ FillMoreUnitToExcel(v.AmountMoreUnits, 7, i+3, unitIndexMap, f)
f.SetCellValue("Sheet1", "L"+column, v.Unit)
f.SetCellValue("Sheet1", "M"+column, v.Weight)
}
diff --git a/service/inventory_report_forms.go b/service/inventory_report_forms.go
index 694cfaa..5775cc8 100644
--- a/service/inventory_report_forms.go
+++ b/service/inventory_report_forms.go
@@ -213,6 +213,7 @@
var fileName string
f := excelize.NewFile()
+ unitData, unitIndexMap := GetAllUnits()
// 鑷畾涔夎〃澶�
headers := []string{"浜у搧", "浜у搧绫诲埆", "鍗曚綅鎴愭湰", "鎬讳环鍊�", "鍦ㄥ簱", "鍙敤搴撳瓨", "鍏ュ簱", "鍑哄簱"}
// 璁剧疆琛ㄥご
@@ -221,12 +222,12 @@
f.SetCellValue("Sheet1", cell, header)
}
- f.SetCellValue("Sheet1", getColumnAlphabet(0)+"1", "浜у搧")
- f.SetCellValue("Sheet1", getColumnAlphabet(1)+"1", "浜у搧绫诲埆")
- f.SetCellValue("Sheet1", getColumnAlphabet(2)+"1", "鍗曚綅鎴愭湰")
- f.SetCellValue("Sheet1", getColumnAlphabet(3)+"1", "鎬讳环鍊�")
- f.SetCellValue("Sheet1", getColumnAlphabet(4)+"1", "鍦ㄥ簱")
- f.MergeCell("Sheet1", getColumnAlphabet(4)+"1", getColumnAlphabet(7)+"1") // 鍚堝苟鍗曞厓鏍�
+ f.SetCellValue("Sheet1", getColumnAlphabet(1)+"1", "浜у搧")
+ f.SetCellValue("Sheet1", getColumnAlphabet(2)+"1", "浜у搧绫诲埆")
+ f.SetCellValue("Sheet1", getColumnAlphabet(3)+"1", "鍗曚綅鎴愭湰")
+ f.SetCellValue("Sheet1", getColumnAlphabet(4)+"1", "鎬讳环鍊�")
+ f.SetCellValue("Sheet1", getColumnAlphabet(5)+"1", "鍦ㄥ簱")
+ f.MergeCell("Sheet1", getColumnAlphabet(5)+"1", getColumnAlphabet(7)+"1") // 鍚堝苟鍗曞厓鏍�
f.SetCellValue("Sheet1", getColumnAlphabet(8)+"1", "鍙敤搴撳瓨")
f.MergeCell("Sheet1", getColumnAlphabet(8)+"1", getColumnAlphabet(11)+"1") // 鍚堝苟鍗曞厓鏍�
f.SetCellValue("Sheet1", getColumnAlphabet(12)+"1", "鍏ュ簱")
@@ -234,7 +235,6 @@
f.SetCellValue("Sheet1", getColumnAlphabet(16)+"1", "鍑哄簱")
f.MergeCell("Sheet1", getColumnAlphabet(16)+"1", getColumnAlphabet(19)+"1") // 鍚堝苟鍗曞厓鏍�
- unitData := []string{"浠�", "鍖�", "绫�", "閲嶉噺"}
for i, header := range unitData {
f.SetCellValue("Sheet1", getColumnAlphabet(i+4)+"2", header)
f.SetCellValue("Sheet1", getColumnAlphabet(i+8)+"2", header)
@@ -276,16 +276,20 @@
f.SetCellValue("Sheet1", getColumnAlphabet(3)+column, v.Value)
f.SetCellValue("Sheet1", getColumnAlphabet(4)+column, v.Amount)
- FillMoreUnitToExcel(v.Amount, v.AmountMoreUnits, 5, i+3, f)
+ v.AmountMoreUnits = append(v.AmountMoreUnits, models.UnitItems{Amount: v.Amount, Unit: v.Unit})
+ FillMoreUnitToExcel(v.AmountMoreUnits, 5, i+3, unitIndexMap, f)
f.SetCellValue("Sheet1", getColumnAlphabet(8)+column, v.AvailableNumber)
- FillMoreUnitToExcel(v.AvailableNumber, v.AvailableNumberMoreUnits, 9, i+3, f)
+ v.AvailableNumberMoreUnits = append(v.AvailableNumberMoreUnits, models.UnitItems{Amount: v.AvailableNumber, Unit: v.Unit})
+ FillMoreUnitToExcel(v.AvailableNumberMoreUnits, 9, i+3, unitIndexMap, f)
f.SetCellValue("Sheet1", getColumnAlphabet(12)+column, v.In)
- FillMoreUnitToExcel(v.In, v.AmountMoreUnits, 13, i+3, f)
+ v.InMoreUnits = append(v.InMoreUnits, models.UnitItems{Amount: v.In, Unit: v.Unit})
+ FillMoreUnitToExcel(v.InMoreUnits, 13, i+3, unitIndexMap, f)
f.SetCellValue("Sheet1", getColumnAlphabet(16)+column, v.Out)
- FillMoreUnitToExcel(v.Out, v.AmountMoreUnits, 17, i+3, f)
+ v.OutMoreUnits = append(v.OutMoreUnits, models.UnitItems{Amount: v.Out, Unit: v.Unit})
+ FillMoreUnitToExcel(v.OutMoreUnits, 17, i+3, unitIndexMap, f)
}
fileName = fmt.Sprintf("搴撳瓨鎶ヨ〃%s.xlsx", time.Now().Format("2006-01-02-1504"))
diff --git a/service/location_forms.go b/service/location_forms.go
index 27932a2..262fa59 100644
--- a/service/location_forms.go
+++ b/service/location_forms.go
@@ -36,7 +36,7 @@
moreUnit := amount.Product.MoreUnit
if moreUnit != nil && *moreUnit {
- resp.AmountMoreUnits = CreateMoreUnit(resp.Amount, amount.Product.MoreUnitList)
+ resp.AmountMoreUnits = amount.MoreUnitList
}
result = append(result, resp)
@@ -101,11 +101,12 @@
var fileName string
f := excelize.NewFile()
+ unitData, unitIndexMap := GetAllUnits()
// 鑷畾涔夎〃澶�
- headers := []interface{}{"浣嶇疆", "浜у搧", "浜у搧绫诲埆", map[string][]string{"鍦ㄥ簱鏁伴噺": {"浠�", "鍖�", "绫�", "閲嶉噺"}}, "浠峰��"}
+ headers := []interface{}{"浣嶇疆", "浜у搧", "浜у搧绫诲埆", map[string][]string{"鍦ㄥ簱鏁伴噺": unitData}, "浠峰��"}
// 璁剧疆琛ㄥご
- var i int
+ i := 1
for _, h := range headers {
if v, ok := h.(string); ok {
f.SetCellValue("Sheet1", getColumnAlphabet(i)+"1", v)
@@ -146,16 +147,15 @@
f.SetCellStyle("Sheet1", "A1", lastColumn+"2", titleStyle)
// 璁剧疆鍒楀
f.SetColWidth("Sheet1", "A", "C", 30)
- f.SetColWidth("Sheet1", "D", lastColumn, 15)
for i, v := range dataList {
- column := strconv.Itoa(i + 3)
- f.SetCellValue("Sheet1", "A"+column, v.LocationName)
- f.SetCellValue("Sheet1", "B"+column, v.ProductName)
- f.SetCellValue("Sheet1", "C"+column, v.ProductTypeName)
- f.SetCellValue("Sheet1", "D"+column, v.Amount)
- FillMoreUnitToExcel(v.Amount, v.AmountMoreUnits, 4, i+2, f)
- f.SetCellValue("Sheet1", "H"+column, v.Value)
+ row := strconv.Itoa(i + 3)
+ f.SetCellValue("Sheet1", "A"+row, v.LocationName)
+ f.SetCellValue("Sheet1", "B"+row, v.ProductName)
+ f.SetCellValue("Sheet1", "C"+row, v.ProductTypeName)
+ v.AmountMoreUnits = append(v.AmountMoreUnits, models.UnitItems{Amount: v.Amount, Unit: v.Unit})
+ FillMoreUnitToExcel(v.AmountMoreUnits, 4, i+3, unitIndexMap, f)
+ f.SetCellValue("Sheet1", getColumnAlphabet(4+len(unitData))+row, v.Value)
}
fileName = fmt.Sprintf("浣嶇疆鎶ヨ〃%s.xlsx", time.Now().Format("2006-01-02-1504"))
diff --git a/service/more_units.go b/service/more_units.go
index 7343b9b..6982f4e 100644
--- a/service/more_units.go
+++ b/service/more_units.go
@@ -67,17 +67,10 @@
return moreValueArr
}
-func FillMoreUnitToExcel(amount decimal.Decimal, units []models.UnitItems, startIndex int, column int, f *excelize.File) {
- columnStr := strconv.Itoa(column)
+func FillMoreUnitToExcel(units []models.UnitItems, startIndex int, row int, unitIndexMap map[string]int, f *excelize.File) {
+ rowStr := strconv.Itoa(row)
for _, v := range units {
- switch v.Unit {
- case "鍖�":
- f.SetCellValue("Sheet1", getColumnAlphabet(startIndex)+columnStr, v.Amount.Mul(amount))
- case "绫�":
- f.SetCellValue("Sheet1", getColumnAlphabet(startIndex+1)+columnStr, v.Amount.Mul(amount))
- case "閲嶉噺":
- f.SetCellValue("Sheet1", getColumnAlphabet(startIndex+2)+columnStr, v.Amount.Mul(amount))
- }
+ f.SetCellValue("Sheet1", getColumnAlphabet(startIndex+unitIndexMap[v.Unit])+rowStr, v.Amount)
}
return
}
--
Gitblit v1.8.0