| | |
| | | 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 |
| | | } |
| | | } |
| | | } |
| | | } |