lishihai
2024-07-03 18a4bf8f0c9aa66ef105e5e4ccf67a5afee51048
导入物料/产品->新模版格式
1个文件已修改
81 ■■■■ 已修改文件
service/material.go 81 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/material.go
@@ -19,6 +19,7 @@
    }
    mapExistMaterial := make(map[string]bool)
    mapAttribute := make(map[string]uint)
    mapProductCategory := make(map[string]int)
    for _, v := range existMaterials {
        mapExistMaterial[v.ID] = true
    }
@@ -26,8 +27,15 @@
    if err != nil {
        return 0, err
    }
    productCategory, err := models.NewProductCategorySearch().FindNotTotal()
    if err != nil {
        return 0, err
    }
    for _, v := range attributes {
        mapAttribute[v.Name] = v.ID
    }
    for _, v := range productCategory {
        mapProductCategory[v.Name] = v.Id
    }
    f, err := excelize.OpenReader(file)
    if err != nil {
@@ -56,7 +64,7 @@
    for index, insert := range inserts {
        errMsg := ""
        if len(insert) < 4 || insert[0] == "" || insert[1] == "" || insert[2] == "" || insert[3] == "" {
        if len(insert) < 5 || insert[0] == "" || insert[1] == "" || insert[2] == "" || insert[3] == "" || insert[4] == "" {
            errMsg = "第" + strconv.Itoa(index+2) + "行,没有填写必填项项"
            return 0, errors.New(errMsg)
        }
@@ -82,18 +90,22 @@
        case string(constvar.MaterialModeOther):
            material.Model = constvar.MaterialModeOther
        default:
            errMsg = "第" + strconv.Itoa(index+2) + "行,产品编码:" + insert[0] + ",无法识别物料类型"
            return 0, errors.New(errMsg)
        }
        if mapProductCategory[strings.Trim(insert[3], " ")] == 0 {
            errMsg = "第" + strconv.Itoa(index+2) + "行,产品编码:" + insert[0] + ",无法识别该产品类别"
            return 0, errors.New(errMsg)
        }
        if len(insert) > 4 && insert[3] != "" {
        material.CategoryId = mapProductCategory[strings.Trim(insert[3], " ")]
        if len(insert) > 5 && insert[4] != "" {
            //errMsg = "第" + strconv.Itoa(index+1) + "行,产品编码:" + insert[0] + ",未填写单位"
            //return 0, errors.New(errMsg)
            material.Unit = insert[3]
            material.Unit = insert[4]
        }
        var moreUnit = true
        if len(insert) > 5 && insert[4] != "" {
        if len(insert) > 6 && insert[5] != "" {
            material.MoreUnit = &moreUnit
            var ut models.UnitItems
            ut.Unit = insert[4]
@@ -113,7 +125,7 @@
            }
            material.MoreUnitList = append(material.MoreUnitList, ut)
        }
        if len(insert) > 6 && insert[5] != "" {
        if len(insert) > 7 && insert[6] != "" {
            material.MoreUnit = &moreUnit
            var ut models.UnitItems
            ut.Unit = insert[5]
@@ -133,65 +145,14 @@
            }
            material.MoreUnitList = append(material.MoreUnitList, ut)
        }
        if len(insert) > 7 && insert[6] != "" {
            material.Specs = insert[6] //规格
        }
        if len(insert) > 8 && insert[7] != "" {
            material.Type = insert[7] //型号
            material.Specs = insert[7] //规格
        }
        {
            /*
                if len(insert) > 9 && insert[8] != "" {
                    if mapAttribute[insert[8]] == 0 {
                        errMsg = "第" + strconv.Itoa(index+2) + "行,产品编码:" + insert[0] + ",未能识别材质属性,请先添加该属性"
                        return 0, errors.New(errMsg)
            material.Type = insert[8] //型号
                    }
                    //material.Quality = insert[8] //材质
                    attributeValue1 := new(models.AttributeValue)
                    attributeValue1.EntityID = material.ID
                    attributeValue1.AttributeID = mapAttribute[insert[8]]
                    attributeValue1.Value = insert[8]
                    attributeValueList = append(attributeValueList, attributeValue1)
                }
                if len(insert) > 10 && insert[9] != "" {
                    if mapAttribute[insert[9]] == 0 {
                        errMsg = "第" + strconv.Itoa(index+2) + "行,产品编码:" + insert[0] + ",未能识别品牌属性,请先添加该属性"
                        return 0, errors.New(errMsg)
                    }
                    //material.Brand = insert[9]   //品牌
                    attributeValue2 := new(models.AttributeValue)
                    attributeValue2.EntityID = material.ID
                    attributeValue2.AttributeID = mapAttribute[insert[9]]
                    attributeValue2.Value = insert[9]
                    attributeValueList = append(attributeValueList, attributeValue2)
                }
                if len(insert) > 11 && insert[10] != "" {
                    if mapAttribute[insert[10]] == 0 {
                        errMsg = "第" + strconv.Itoa(index+2) + "行,产品编码:" + insert[0] + ",未能识别等级属性,请先添加该属性"
                        return 0, errors.New(errMsg)
                    }
                    //material.Level = insert[10]  //等级
                    attributeValue3 := new(models.AttributeValue)
                    attributeValue3.EntityID = material.ID
                    attributeValue3.AttributeID = mapAttribute[insert[10]]
                    attributeValue3.Value = insert[10]
                    attributeValueList = append(attributeValueList, attributeValue3)
                }
                if len(insert) > 12 && insert[11] != "" {
                    if mapAttribute[insert[11]] == 0 {
                        errMsg = "第" + strconv.Itoa(index+2) + "行,产品编码:" + insert[0] + ",未能识别庄口属性,请先添加该属性"
                        return 0, errors.New(errMsg)
                    }
                    //material.From = insert[11]   //庄口
                    attributeValue4 := new(models.AttributeValue)
                    attributeValue4.EntityID = material.ID
                    attributeValue4.AttributeID = mapAttribute[insert[11]]
                    attributeValue4.Value = insert[11]
                    attributeValueList = append(attributeValueList, attributeValue4)
                }
            */
            materialList = append(materialList, material)
        }
        //保存动态属性
        for _, attributesColumn := range attributesColumns {