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

---
 service/inventory_report_forms.go |   49 ++++++++++++++++++++++++++++++-------------------
 1 files changed, 30 insertions(+), 19 deletions(-)

diff --git a/service/inventory_report_forms.go b/service/inventory_report_forms.go
index 4409d83..5775cc8 100644
--- a/service/inventory_report_forms.go
+++ b/service/inventory_report_forms.go
@@ -87,7 +87,9 @@
 		data.Cost = material.Cost
 		data.Unit = material.Unit
 		data.Value = material.Amount.Mul(material.Cost)
-		data.ProductType = material.CategoryName
+		data.ProductCategory = material.CategoryName
+		data.ProductType = material.Type
+		data.ProductSpecs = material.Specs
 		for _, amount := range productAmounts {
 			if material.ID == amount.ProductId {
 				data.Amount = data.Amount.Add(amount.Amount)
@@ -130,8 +132,11 @@
 	err error) {
 	productAmounts = make([]*models.LocationProductAmount, 0)
 	locationSearch := models.NewLocationSearch()
-	if params.WarehouseCode != "" {
-		locationSearch.SetJointName(params.WarehouseCode)
+	//if params.WarehouseCode != "" {
+	//	locationSearch.SetJointName(params.WarehouseCode)
+	//}
+	if params.WarehouseId > 0 {
+		locationSearch.SetWarehouseId(params.WarehouseId)
 	}
 
 	locations, err := locationSearch.FindNotTotal()
@@ -154,9 +159,9 @@
 
 	//鏌ヨ浜у搧
 	search = models.NewMaterialSearch()
-	search.Orm = search.Orm.Model(&models.Material{}).
-		Select(`material.id, material.name, material.cost, material.amount, material.unit, material.more_unit, material.more_unit_value, wms_product_category.name as category_name `).
-		Joins("left join wms_product_category on material.category_id = wms_product_category.id")
+	search.Orm = search.Orm.Model(&models.Material{}). // material
+								Select(`material.id, material.name, material.cost, material.amount, material.unit, material.more_unit, material.more_unit_value, wms_product_category.name as category_name `).
+								Joins("left join wms_product_category on material.category_id = wms_product_category.id")
 	if len(params.CategoryIds) > 0 {
 		search.Orm.Where("material.category_id in (?)", params.CategoryIds)
 	}
@@ -208,6 +213,7 @@
 	var fileName string
 	f := excelize.NewFile()
 
+	unitData, unitIndexMap := GetAllUnits()
 	// 鑷畾涔夎〃澶�
 	headers := []string{"浜у搧", "浜у搧绫诲埆", "鍗曚綅鎴愭湰", "鎬讳环鍊�", "鍦ㄥ簱", "鍙敤搴撳瓨", "鍏ュ簱", "鍑哄簱"}
 	// 璁剧疆琛ㄥご
@@ -216,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", "鍏ュ簱")
@@ -229,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)
@@ -271,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"))
@@ -295,7 +304,9 @@
 func getColumnAlphabet(index int) string {
 	const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 	if index <= 26 {
-		return string(alphabet[index])
+		return string(alphabet[index-1])
 	}
-	return getColumnAlphabet((index)/26) + getColumnAlphabet((index)%26+1)
+	quotient := (index - 1) / 26
+	remainder := (index - 1) % 26
+	return getColumnAlphabet(quotient) + getColumnAlphabet(remainder+1)
 }

--
Gitblit v1.8.0