From c950586b718ae6fc198bedf424609a4ac94cb5d1 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期四, 04 七月 2024 18:16:07 +0800
Subject: [PATCH] 增加根据位置或仓库查询产品及库存列表

---
 service/material.go |  100 +++++++++++++++++++++++++++++++-------------------
 1 files changed, 62 insertions(+), 38 deletions(-)

diff --git a/service/material.go b/service/material.go
index f4f302c..0841f43 100644
--- a/service/material.go
+++ b/service/material.go
@@ -64,7 +64,7 @@
 
 	for index, insert := range inserts {
 		errMsg := ""
-		if len(insert) < 5 || insert[0] == "" || insert[1] == "" || insert[2] == "" || insert[3] == "" || insert[4] == "" {
+		if len(insert) < 6 || insert[0] == "" || insert[1] == "" || insert[2] == "" || insert[3] == "" || insert[4] == "" || insert[5] == "" {
 			errMsg = "绗�" + strconv.Itoa(index+2) + "琛岋紝娌℃湁濉啓蹇呭~椤归」"
 			return 0, errors.New(errMsg)
 		}
@@ -98,47 +98,40 @@
 			return 0, errors.New(errMsg)
 		}
 		material.CategoryId = mapProductCategory[strings.Trim(insert[3], " ")]
-		if len(insert) > 5 && insert[4] != "" {
-			//errMsg = "绗�" + strconv.Itoa(index+1) + "琛岋紝浜у搧缂栫爜锛�" + insert[0] + "锛屾湭濉啓鍗曚綅"
-			//return 0, errors.New(errMsg)
-			material.Unit = insert[4]
+		purchaseTypeList := make([]int, 0)
+		purchaseTypes := strings.Split(strings.Trim(insert[4], " "), "/")
+		for _, v := range purchaseTypes {
+			switch strings.Trim(v, " ") {
+			case "閲囪喘":
+				purchaseTypeList = append(purchaseTypeList, int(constvar.PurchaseTypeOutSource))
+			case "鑷埗":
+				purchaseTypeList = append(purchaseTypeList, int(constvar.PurchaseTypeSelf))
+			case "濮斿":
+				purchaseTypeList = append(purchaseTypeList, int(constvar.PurchaseTypeEntrust))
+			default:
+				errMsg = "绗�" + strconv.Itoa(index+2) + "琛岋紝浜у搧缂栫爜锛�" + insert[0] + "锛屾棤娉曡瘑鍒噰璐被鍨�"
+				return 0, errors.New(errMsg)
+			}
+
 		}
+		material.PurchaseTypeList = purchaseTypeList
+		material.Unit = insert[5]
 
 		var moreUnit = true
-		if len(insert) > 6 && insert[5] != "" {
-			material.MoreUnit = &moreUnit
-			var ut models.UnitItems
-			ut.Unit = insert[4]
-			if len(insert) < 13 || insert[12] == "" {
-				errMsg = "绗�" + strconv.Itoa(index+2) + "琛岋紝浜у搧缂栫爜锛�" + insert[0] + "锛岃濉啓涓庤緟璁¢噺鍗曚綅1鐩稿叧鐨勫崟浣嶆崲绠楁瘮渚�1"
-				return 0, errors.New(errMsg)
-			}
-			ut.Amount = decimal.RequireFromString(insert[12])
-			if len(insert) < 14 || insert[13] == "" {
-				errMsg = "绗�" + strconv.Itoa(index+2) + "琛岋紝浜у搧缂栫爜锛�" + insert[0] + "锛岃濉啓涓庤緟璁¢噺鍗曚綅1鐩稿叧鐨勬槸鍚︽诞鍔ㄦ崲绠�1"
-				return 0, errors.New(errMsg)
-			}
-			if strings.Trim(insert[13], " ") == "鏄�" {
-				ut.Floating = true
-			} else {
-				ut.Floating = false
-			}
-			material.MoreUnitList = append(material.MoreUnitList, ut)
-		}
 		if len(insert) > 7 && insert[6] != "" {
 			material.MoreUnit = &moreUnit
 			var ut models.UnitItems
-			ut.Unit = insert[5]
+			ut.Unit = insert[6]
+			if len(insert) < 14 || insert[13] == "" {
+				errMsg = "绗�" + strconv.Itoa(index+2) + "琛岋紝浜у搧缂栫爜锛�" + insert[0] + "锛岃濉啓涓庤緟璁¢噺鍗曚綅1鐩稿叧鐨勫崟浣嶆崲绠楁瘮渚�1"
+				return 0, errors.New(errMsg)
+			}
+			ut.Amount = decimal.RequireFromString(insert[13])
 			if len(insert) < 15 || insert[14] == "" {
-				errMsg = "绗�" + strconv.Itoa(index+2) + "琛岋紝浜у搧缂栫爜锛�" + insert[0] + "锛岃濉啓涓庤緟璁¢噺鍗曚綅2鐩稿叧鐨勫崟浣嶆崲绠楁瘮渚�2"
+				errMsg = "绗�" + strconv.Itoa(index+2) + "琛岋紝浜у搧缂栫爜锛�" + insert[0] + "锛岃濉啓涓庤緟璁¢噺鍗曚綅1鐩稿叧鐨勬槸鍚︽诞鍔ㄦ崲绠�1"
 				return 0, errors.New(errMsg)
 			}
-			ut.Amount = decimal.RequireFromString(insert[14])
-			if len(insert) < 16 || insert[15] == "" {
-				errMsg = "绗�" + strconv.Itoa(index+2) + "琛岋紝浜у搧缂栫爜锛�" + insert[0] + "锛岃濉啓涓庤緟璁¢噺鍗曚綅2鐩稿叧鐨勬槸鍚︽诞鍔ㄦ崲绠�2"
-				return 0, errors.New(errMsg)
-			}
-			if strings.Trim(insert[15], " ") == "鏄�" {
+			if strings.Trim(insert[14], " ") == "鏄�" {
 				ut.Floating = true
 			} else {
 				ut.Floating = false
@@ -146,10 +139,30 @@
 			material.MoreUnitList = append(material.MoreUnitList, ut)
 		}
 		if len(insert) > 8 && insert[7] != "" {
-			material.Specs = insert[7] //瑙勬牸
+			material.MoreUnit = &moreUnit
+			var ut models.UnitItems
+			ut.Unit = insert[7]
+			if len(insert) < 16 || insert[15] == "" {
+				errMsg = "绗�" + strconv.Itoa(index+2) + "琛岋紝浜у搧缂栫爜锛�" + insert[0] + "锛岃濉啓涓庤緟璁¢噺鍗曚綅2鐩稿叧鐨勫崟浣嶆崲绠楁瘮渚�2"
+				return 0, errors.New(errMsg)
+			}
+			ut.Amount = decimal.RequireFromString(insert[15])
+			if len(insert) < 17 || insert[16] == "" {
+				errMsg = "绗�" + strconv.Itoa(index+2) + "琛岋紝浜у搧缂栫爜锛�" + insert[0] + "锛岃濉啓涓庤緟璁¢噺鍗曚綅2鐩稿叧鐨勬槸鍚︽诞鍔ㄦ崲绠�2"
+				return 0, errors.New(errMsg)
+			}
+			if strings.Trim(insert[16], " ") == "鏄�" {
+				ut.Floating = true
+			} else {
+				ut.Floating = false
+			}
+			material.MoreUnitList = append(material.MoreUnitList, ut)
 		}
 		if len(insert) > 9 && insert[8] != "" {
-			material.Type = insert[8] //鍨嬪彿
+			material.Specs = insert[8] //瑙勬牸
+		}
+		if len(insert) > 10 && insert[9] != "" {
+			material.Type = insert[9] //鍨嬪彿
 		}
 
 		materialList = append(materialList, material)
@@ -175,15 +188,26 @@
 			return err
 		}
 		if len(attributeValueList) != 0 {
-			if err := models.NewAttributeValueSearch().SetOrm(db).CreateBatch(attributeValueList); err != nil {
-				return err
+			err = models.NewAttributeValueSearch().SetOrm(db).CreateBatch(attributeValueList)
+			if err != nil { //鎵归噺鎻掑叆澶辫触锛堝彲鑳藉凡缁忓瓨鍦ㄥ�硷級锛屽垎寮�涓�鏉′竴鏉℃彃鍏ラ噸澶嶇殑涓嶆彃鍏�
+				for _, avl := range attributeValueList {
+					first, err2 := models.NewAttributeValueSearch().SetAttributeID(avl.AttributeID).SetEntityID(avl.EntityID).First()
+					if err2 == nil && first != nil { //琛ㄧず宸茬粡瀛樺湪鍔ㄦ�佸睘鎬�
+						continue
+					}
+					err2 = models.NewAttributeValueSearch().SetOrm(db).Create(avl)
+					if err2 != nil {
+						return err
+					}
+				}
 			}
 		}
+
 		return nil
 	})
 
 	if err != nil {
-		return 0, errors.New("瀵煎叆澶辫触")
+		return 0, errors.New("瀵煎叆澶辫触:" + err.Error())
 	}
 	return len(inserts), err
 }

--
Gitblit v1.8.0