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