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