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

---
 service/material.go |   45 +++++++++++++++++++++++++++++++++++++--------
 1 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/service/material.go b/service/material.go
index c753e21..bd1a62e 100644
--- a/service/material.go
+++ b/service/material.go
@@ -158,10 +158,10 @@
 			}
 			material.MoreUnitList = append(material.MoreUnitList, ut)
 		}
-		if len(insert) > 9 && insert[8] != "" {
+		if len(insert) > 8 && insert[8] != "" {
 			material.Specs = insert[8] //瑙勬牸
 		}
-		if len(insert) > 10 && insert[9] != "" {
+		if len(insert) > 9 && insert[9] != "" {
 			material.Type = insert[9] //鍨嬪彿
 		}
 
@@ -184,14 +184,43 @@
 		return 0, errors.New("鐗╂枡鏁版嵁涓虹┖")
 	}
 	err = models.WithTransaction(func(db *gorm.DB) error {
-		if err := models.NewMaterialSearch().SetOrm(db).CreateBatch(materialList); err != nil {
-			return err
-		}
-		if len(attributeValueList) != 0 {
-			if err := models.NewAttributeValueSearch().SetOrm(db).CreateBatch(attributeValueList); err != nil {
-				return err
+		for i := 0; i < len(materialList); i += 500 {
+			end := i + 500
+			if end > len(materialList) {
+				end = len(materialList)
+			}
+			arr := materialList[i:end]
+			if len(arr) != 0 {
+				if err := models.NewMaterialSearch().SetOrm(db).CreateBatch(arr); err != nil {
+					return err
+				}
 			}
 		}
+		for i := 0; i < len(attributeValueList); i += 500 {
+			end := i + 500
+			if end > len(attributeValueList) {
+				end = len(attributeValueList)
+			}
+			arr := attributeValueList[i:end]
+			if len(arr) != 0 {
+				if err := models.NewAttributeValueSearch().SetOrm(db).CreateBatch(arr); err != nil {
+					return err
+				}
+				if err != nil { //鎵归噺鎻掑叆澶辫触锛堝彲鑳藉凡缁忓瓨鍦ㄥ�硷級锛屽垎寮�涓�鏉′竴鏉℃彃鍏ラ噸澶嶇殑涓嶆彃鍏�
+					for _, avl := range arr {
+						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
 	})
 

--
Gitblit v1.8.0