From ae97356a9d0e190ad39513e913ed20eae306e28f Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期三, 31 七月 2024 17:16:01 +0800
Subject: [PATCH] 库存报表支持动态多单位,优化,样式调整

---
 service/inventory_report_forms.go |   84 ++++++++++++++----------------------------
 1 files changed, 28 insertions(+), 56 deletions(-)

diff --git a/service/inventory_report_forms.go b/service/inventory_report_forms.go
index 5775cc8..eac7252 100644
--- a/service/inventory_report_forms.go
+++ b/service/inventory_report_forms.go
@@ -215,81 +215,53 @@
 
 	unitData, unitIndexMap := GetAllUnits()
 	// 鑷畾涔夎〃澶�
-	headers := []string{"浜у搧", "浜у搧绫诲埆", "鍗曚綅鎴愭湰", "鎬讳环鍊�", "鍦ㄥ簱", "鍙敤搴撳瓨", "鍏ュ簱", "鍑哄簱"}
+	headers := []interface{}{"浜у搧", "浜у搧绫诲埆", "鍗曚綅鎴愭湰", "鎬讳环鍊�",
+		map[string][]string{"鍦ㄥ簱": unitData},
+		map[string][]string{"鍙敤搴撳瓨": unitData},
+		map[string][]string{"鍏ュ簱": unitData},
+		map[string][]string{"鍑哄簱": unitData}}
+
 	// 璁剧疆琛ㄥご
-	for i, header := range headers {
-		cell := getColumnAlphabet(i) + "1"
-		f.SetCellValue("Sheet1", cell, header)
-	}
-
-	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", "鍏ュ簱")
-	f.MergeCell("Sheet1", getColumnAlphabet(12)+"1", getColumnAlphabet(15)+"1") // 鍚堝苟鍗曞厓鏍�
-	f.SetCellValue("Sheet1", getColumnAlphabet(16)+"1", "鍑哄簱")
-	f.MergeCell("Sheet1", getColumnAlphabet(16)+"1", getColumnAlphabet(19)+"1") // 鍚堝苟鍗曞厓鏍�
-
-	for i, header := range unitData {
-		f.SetCellValue("Sheet1", getColumnAlphabet(i+4)+"2", header)
-		f.SetCellValue("Sheet1", getColumnAlphabet(i+8)+"2", header)
-		f.SetCellValue("Sheet1", getColumnAlphabet(i+12)+"2", header)
-		f.SetCellValue("Sheet1", getColumnAlphabet(i+16)+"2", 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)
+	lastColumnNumber, err := SetExcelHeaders(headers, f)
 	if err != nil {
 		return
 	}
 
-	lastColumn := getColumnAlphabet(19)
+	titleStyle, err := SetHeaderStyle(f)
+	if err != nil {
+		return
+	}
+
+	lastColumn := getColumnAlphabet(lastColumnNumber)
 	f.SetCellStyle("Sheet1", "A1", lastColumn+"2", titleStyle)
 	// 璁剧疆鍒楀
 	f.SetColWidth("Sheet1", "A", "D", 30)
 	f.SetColWidth("Sheet1", "E", lastColumn, 15)
 
+	for i := 1; i <= 4; i++ {
+		column := getColumnAlphabet(i)
+		f.MergeCell("Sheet1", column+"1", column+"2") // 鍚堝苟鍗曞厓鏍�
+	}
+
 	for i, v := range dataList {
-		column := strconv.Itoa(i + 3)
-		f.SetCellValue("Sheet1", getColumnAlphabet(0)+column, v.ProductName)
-		f.SetCellValue("Sheet1", getColumnAlphabet(1)+column, v.ProductType)
-		f.SetCellValue("Sheet1", getColumnAlphabet(2)+column, v.Cost)
-		f.SetCellValue("Sheet1", getColumnAlphabet(3)+column, v.Value)
+		rowNumber := i + 3
+		column := strconv.Itoa(rowNumber)
+		f.SetCellValue("Sheet1", getColumnAlphabet(1)+column, v.ProductName)
+		f.SetCellValue("Sheet1", getColumnAlphabet(2)+column, v.ProductType)
+		f.SetCellValue("Sheet1", getColumnAlphabet(3)+column, v.Cost)
+		f.SetCellValue("Sheet1", getColumnAlphabet(4)+column, v.Value)
 
-		f.SetCellValue("Sheet1", getColumnAlphabet(4)+column, v.Amount)
 		v.AmountMoreUnits = append(v.AmountMoreUnits, models.UnitItems{Amount: v.Amount, Unit: v.Unit})
-		FillMoreUnitToExcel(v.AmountMoreUnits, 5, i+3, unitIndexMap, f)
+		FillMoreUnitToExcel(v.AmountMoreUnits, 5, rowNumber, unitIndexMap, f)
 
-		f.SetCellValue("Sheet1", getColumnAlphabet(8)+column, v.AvailableNumber)
 		v.AvailableNumberMoreUnits = append(v.AvailableNumberMoreUnits, models.UnitItems{Amount: v.AvailableNumber, Unit: v.Unit})
-		FillMoreUnitToExcel(v.AvailableNumberMoreUnits, 9, i+3, unitIndexMap, f)
+		FillMoreUnitToExcel(v.AvailableNumberMoreUnits, 5+len(unitData), rowNumber, unitIndexMap, f)
 
-		f.SetCellValue("Sheet1", getColumnAlphabet(12)+column, v.In)
 		v.InMoreUnits = append(v.InMoreUnits, models.UnitItems{Amount: v.In, Unit: v.Unit})
-		FillMoreUnitToExcel(v.InMoreUnits, 13, i+3, unitIndexMap, f)
+		FillMoreUnitToExcel(v.InMoreUnits, 5+len(unitData)*2, rowNumber, unitIndexMap, f)
 
-		f.SetCellValue("Sheet1", getColumnAlphabet(16)+column, v.Out)
 		v.OutMoreUnits = append(v.OutMoreUnits, models.UnitItems{Amount: v.Out, Unit: v.Unit})
-		FillMoreUnitToExcel(v.OutMoreUnits, 17, i+3, unitIndexMap, f)
+		FillMoreUnitToExcel(v.OutMoreUnits, 5+len(unitData)*3, rowNumber, unitIndexMap, f)
 	}
 
 	fileName = fmt.Sprintf("搴撳瓨鎶ヨ〃%s.xlsx", time.Now().Format("2006-01-02-1504"))

--
Gitblit v1.8.0