From 303fadd07629048d091862e09f4e67c2b98e4ecd Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 23 七月 2024 10:44:00 +0800
Subject: [PATCH] Merge branch 'jialian' of http://192.168.5.5:10010/r/aps/WMS into jialian
---
service/material.go | 44 +++++++++++++++++++++++++++++++-------------
pkg/slicex/slicex.go | 10 ++++++++++
2 files changed, 41 insertions(+), 13 deletions(-)
diff --git a/pkg/slicex/slicex.go b/pkg/slicex/slicex.go
index 874c433..7132e33 100644
--- a/pkg/slicex/slicex.go
+++ b/pkg/slicex/slicex.go
@@ -12,3 +12,13 @@
}
return result
}
+
+// SplitSlice 鍒嗗壊娉涘瀷鍒囩墖
+func SplitSlice[T any](slice []T, size int) [][]T {
+ var result [][]T
+ for size < len(slice) {
+ slice, result = slice[size:], append(result, slice[0:size:size])
+ }
+ result = append(result, slice)
+ return result
+}
diff --git a/service/material.go b/service/material.go
index 0841f43..61d5786 100644
--- a/service/material.go
+++ b/service/material.go
@@ -184,20 +184,38 @@
return 0, errors.New("鐗╂枡鏁版嵁涓虹┖")
}
err = models.WithTransaction(func(db *gorm.DB) error {
- if err := models.NewMaterialSearch().SetOrm(db).CreateBatch(materialList); 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
+ }
+ }
}
- if len(attributeValueList) != 0 {
- 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
+ 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
+ }
}
}
}
--
Gitblit v1.8.0