zhangqian
2024-07-31 155f70979af20ca520a55b89c6ec8cd46c43f8a5
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
   })