From 155f70979af20ca520a55b89c6ec8cd46c43f8a5 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期三, 31 七月 2024 15:47:33 +0800
Subject: [PATCH] 产品流水表增加多单位存储

---
 service/location_forms.go |   73 ++++++++++++------------------------
 1 files changed, 24 insertions(+), 49 deletions(-)

diff --git a/service/location_forms.go b/service/location_forms.go
index 52d0c9e..28d686d 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)
@@ -46,10 +46,11 @@
 }
 
 func (slf *LocationFormsService) BuildSearch(params request.GetLocationForms) (search *models.LocationProductAmountSearch, err error) {
-	ids := make([]int, 0)
+	ids := params.LocationIds
 	if params.LocationId != 0 {
 		ids = append(ids, params.LocationId)
-	} else {
+	}
+	if len(ids) == 0 {
 		//鏌ヨ浣嶇疆
 		locations, err := models.NewLocationSearch().SetJointName(params.WareHouseCode).SetType(3).FindAll()
 		if err != nil {
@@ -100,61 +101,35 @@
 	var fileName string
 	f := excelize.NewFile()
 
+	unitData, unitIndexMap := GetAllUnits()
 	// 鑷畾涔夎〃澶�
-	headers := []interface{}{"浣嶇疆", "浜у搧", "浜у搧绫诲埆", map[string][]string{"鍦ㄥ簱鏁伴噺": {"浠�", "鍖�", "绫�", "閲嶉噺"}}, "浠峰��"}
-
-	// 璁剧疆琛ㄥご
-	var i int
-	for _, h := range headers {
-		if v, ok := h.(string); ok {
-			f.SetCellValue("Sheet1", getColumnAlphabet(i)+"1", v)
-			i++
-		} else if childHeaders, ok := h.(map[string][]string); ok {
-			for title, list := range childHeaders {
-				f.SetCellValue("Sheet1", getColumnAlphabet(i)+"1", title)
-				err = f.MergeCell("Sheet1", getColumnAlphabet(i)+"1", getColumnAlphabet(i-1+len(list))+"1") // 鍚堝苟鍗曞厓鏍�
-				for _, t := range list {
-					f.SetCellValue("Sheet1", getColumnAlphabet(i)+"2", t)
-					i++
-				}
-			}
-		}
-	}
-
-	// 璁剧疆琛ㄥご鏍峰紡
-	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}, "浠峰��"}
+	lastColumnNumber, err := SetExcelHeaders(headers, f)
 	if err != nil {
-		return
+		return "", err
+	}
+	f.MergeCell("Sheet1", "A1", "A2") // 鍚堝苟鍗曞厓鏍�
+	f.MergeCell("Sheet1", "B1", "B2") // 鍚堝苟鍗曞厓鏍�
+	f.MergeCell("Sheet1", "C1", "C2") // 鍚堝苟鍗曞厓鏍�
+
+	titleStyle, err := SetHeaderStyle(f)
+	if err != nil {
+		return "", err
 	}
 
-	lastColumn := getColumnAlphabet(i)
+	lastColumn := getColumnAlphabet(lastColumnNumber)
 	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"))

--
Gitblit v1.8.0