From 5c99ff747583a0b927cd0a56a9d70ed1ffda9a97 Mon Sep 17 00:00:00 2001 From: huang <1724659546@qq.com> Date: Wed, 26 Nov 2025 22:56:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=9F=E6=96=99=E5=A2=9E=E5=8A=A0=E6=9C=80?= =?UTF-8?q?=E5=A4=A7=E6=B7=BB=E5=8A=A0=E9=87=8F=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/presets-data/nutrient.json | 243 ++++++++++++------ .../infra/database/seeder/nutrient_seeder.go | 25 +- 2 files changed, 180 insertions(+), 88 deletions(-) diff --git a/config/presets-data/nutrient.json b/config/presets-data/nutrient.json index ff53a59..fb53fbb 100644 --- a/config/presets-data/nutrient.json +++ b/config/presets-data/nutrient.json @@ -1741,327 +1741,408 @@ "raw_materials": { "DL-蛋氨酸98": { "descriptions": "饲料级合成蛋氨酸,几乎100%可利用,是猪限制性氨基酸补充的首选来源,可显著提高生长速度和饲料转化率。", - "unit_price": 21.50 + "unit_price": 21.50, + "max_ratio": 0.008 }, "L-色氨酸98": { "descriptions": "饲料级合成色氨酸,猪的第四限制性氨基酸,缺乏时严重影响采食量和生长,补充可提升猪只食欲和免疫力。", - "unit_price": 68.00 + "unit_price": 68.00, + "max_ratio": 0.003 }, "L-苏氨酸98": { "descriptions": "饲料级合成苏氨酸,猪的第三限制性氨基酸,主要影响蛋白沉积和免疫器官发育,仔猪阶段尤为重要。", - "unit_price": 10.80 + "unit_price": 10.80, + "max_ratio": 0.010 }, "L-赖氨酸HCl 98": { "descriptions": "饲料级赖氨酸盐酸盐,猪的第一限制性氨基酸,低蛋白日粮配方核心,降低氮排放的同时维持生长性能。", - "unit_price": 11.20 + "unit_price": 11.20, + "max_ratio": 0.020 }, "乳清粉": { "descriptions": "仔猪最优质的乳源蛋白和乳糖来源,提高采食量、促进肠道发育、缓解断奶应激,是教槽料和保育料黄金原料。", - "unit_price": 6.50 + "unit_price": 6.50, + "max_ratio": 0.30 }, "兔肉粉": { "descriptions": "高蛋白高消化率动物蛋白源,氨基酸平衡好,适口性佳,适合高档仔猪料和母猪料使用。", - "unit_price": 11.50 + "unit_price": 11.50, + "max_ratio": 0.15 }, "全株玉米青贮": { "descriptions": "粗饲料来源,提供有效纤维,调节成年母猪肠道健康,降低便秘,价格低廉。", - "unit_price": 0.45 + "unit_price": 0.45, + "max_ratio": 0.15 }, "双低菜籽粕": { "descriptions": "双低菜粕,硫甙和异硫氰酸酯含量低,可部分替代豆粕使用,但仍需注意赖氨酸利用率和甲状腺影响。", - "unit_price": 2.40 + "unit_price": 2.40, + "max_ratio": 0.20 }, "向日葵籽": { "descriptions": "高油分能量原料,富含亚油酸,但纤维高,猪的利用率一般,多用于母猪料。", - "unit_price": 5.80 + "unit_price": 5.80, + "max_ratio": 0.10 }, "啤酒糟干": { "descriptions": "高蛋白高纤维副产品,适口性好,可用于生长肥育猪和母猪料,注意霉菌毒素风险。", - "unit_price": 1.90 + "unit_price": 1.90, + "max_ratio": 0.20 }, "啤酒花渣": { "descriptions": "啤酒副产物,湿态使用时适口性好,可降低母猪便秘,但干物质低、易发霉。", - "unit_price": 0.60 + "unit_price": 0.60, + "max_ratio": 0.10 }, "国产鱼粉60": { "descriptions": "中等品质鱼粉,蛋白高但新鲜度一般,挥发性盐基氮和组胺需关注,仔猪料谨慎使用。", - "unit_price": 9.50 + "unit_price": 9.50, + "max_ratio": 0.10 }, "土豆蛋白": { "descriptions": "高消化率植物浓缩蛋白,氨基酸平衡好,是优质替代血浆和鱼粉的原料之一。", - "unit_price": 8.50 + "unit_price": 8.50, + "max_ratio": 0.10 }, "大豆油": { "descriptions": "高能量油脂,猪利用率极高,用于提高日粮能量浓度,改善皮毛光亮度。", - "unit_price": 8.20 + "unit_price": 8.20, + "max_ratio": 0.08 }, "大豆粕44": { "descriptions": "普通豆粕,蛋白43.8%左右,抗营养因子较高,需关注脲酶和KOH溶解度。", - "unit_price": 3.05 + "unit_price": 3.05, + "max_ratio": 0.50 }, "大豆粕46": { "descriptions": "优质豆粕,蛋白更高,抗营养因子更低,是猪料最常用蛋白原料。", - "unit_price": 3.25 + "unit_price": 3.25, + "max_ratio": 0.50 }, "大豆粕48": { "descriptions": "高蛋白豆粕,抗营养因子最低,低蛋白日粮配方的理想蛋白源。", - "unit_price": 3.60 + "unit_price": 3.60, + "max_ratio": 0.50 }, "大麦": { "descriptions": "能量稍低于玉米,纤维较高,可部分替代玉米,注意DON毒素风险。", - "unit_price": 2.10 + "unit_price": 2.10, + "max_ratio": 0.40 }, "小苏打": { "descriptions": "缓冲剂和钠源,缓解热应激、改善母猪泌乳期酸中毒。", - "unit_price": 1.60 + "unit_price": 1.60, + "max_ratio": 0.02 }, "小麦": { "descriptions": "能量与玉米接近,但黏性大,易导致肠道问题,仔猪料慎用。", - "unit_price": 2.55 + "unit_price": 2.55, + "max_ratio": 0.40 }, "小麦次粉": { "descriptions": "小麦加工副产品,蛋白和磷较高,但DON和ZEN风险高,限量使用。", - "unit_price": 2.20 + "unit_price": 2.20, + "max_ratio": 0.15 }, "小麦麸": { "descriptions": "高纤维原料,用于母猪料促进肠道蠕动,降低便秘。", - "unit_price": 1.75 + "unit_price": 1.75, + "max_ratio": 0.20 }, "木薯干": { "descriptions": "高能量淀粉源,几乎不含蛋白,价格低廉,但需搭配优质蛋白。", - "unit_price": 2.05 + "unit_price": 2.05, + "max_ratio": 0.30 }, "杂交构树叶粉": { "descriptions": "新型蛋白饲料资源,蛋白中等,富含黄酮,但单宁和草酸高,需限量并配合脱毒处理。", - "unit_price": 2.20 + "unit_price": 2.20, + "max_ratio": 0.05 }, "构树叶粉(老叶高纤维)": { "descriptions": "老叶构树粉,纤维更高,适合母猪粗饲料使用。", - "unit_price": 1.50 + "unit_price": 1.50, + "max_ratio": 0.10 }, "柠檬酸渣": { "descriptions": "湿态副产品,适口性好,可用于母猪料降低成本。", - "unit_price": 0.50 + "unit_price": 0.50, + "max_ratio": 0.05 }, "棉籽粕": { "descriptions": "蛋白较高,但游离棉酚严重影响公猪生育力和生长,需严格限量或脱毒。", - "unit_price": 2.80 + "unit_price": 2.80, + "max_ratio": 0.03 }, "棕榈油": { "descriptions": "饱和脂肪酸高,能量高,但熔点高,冬季易凝固,仔猪利用率稍差。", - "unit_price": 8.50 + "unit_price": 8.50, + "max_ratio": 0.08 }, "棕榈粕": { "descriptions": "高纤维高脂肪副产品,能量一般,多用于母猪料。", - "unit_price": 1.60 + "unit_price": 1.60, + "max_ratio": 0.10 }, "椰子粕": { "descriptions": "蛋白和能量中等,适口性好,可部分替代豆粕。", - "unit_price": 2.30 + "unit_price": 2.30, + "max_ratio": 0.15 }, "燕麦": { "descriptions": "能量和脂肪较高,适口性佳,但价格贵,一般少用。", - "unit_price": 3.20 + "unit_price": 3.20, + "max_ratio": 0.10 }, "燕麦草": { "descriptions": "粗饲料,母猪用以增加饱腹感和肠道健康。", - "unit_price": 2.60 + "unit_price": 2.60, + "max_ratio": 0.10 }, "猪肺粉": { "descriptions": "优质动物蛋白,消化率高,适口性极佳,适合高档仔猪料。", - "unit_price": 9.00 + "unit_price": 9.00, + "max_ratio": 0.10 }, "玉米": { "descriptions": "猪最主要的能量原料,淀粉消化率高,毒素风险需关注。", - "unit_price": 2.30 + "unit_price": 2.30, + "max_ratio": 0.85 }, "玉米DDGS": { "descriptions": "高蛋白高脂肪玉米副产品,磷利用率高,适合生长肥育猪和母猪。", - "unit_price": 2.15 + "unit_price": 2.15, + "max_ratio": 0.30 }, "玉米油": { "descriptions": "优质植物油,富含不饱和脂肪酸,能量最高油脂之一。", - "unit_price": 9.50 + "unit_price": 9.50, + "max_ratio": 0.08 }, "玉米胚芽粕": { "descriptions": "蛋白和脂肪较高,磷利用率好,可部分替代豆粕和油。", - "unit_price": 2.05 + "unit_price": 2.05, + "max_ratio": 0.15 }, "玉米蛋白粉60": { "descriptions": "高蛋白高蛋氨酸,色素来源,用于改善猪皮红毛亮。", - "unit_price": 4.80 + "unit_price": 4.80, + "max_ratio": 0.10 }, "玉米青贮": { "descriptions": "粗饲料,母猪用以调节肠道,降低饲料成本。", - "unit_price": 0.40 + "unit_price": 0.40, + "max_ratio": 0.15 }, "瓜子粕": { "descriptions": "葵花籽粕的别称,蛋白较高,纤维也高。", - "unit_price": 2.10 + "unit_price": 2.10, + "max_ratio": 0.15 }, "甜菜粕": { "descriptions": "高可溶性纤维,母猪极佳的防便秘原料。", - "unit_price": 1.95 + "unit_price": 1.95, + "max_ratio": 0.15 }, "石粉": { "descriptions": "最常用的钙源,价格低廉,注意粒度影响吸收率。", - "unit_price": 0.18 + "unit_price": 0.18, + "max_ratio": 0.05 }, "碎米": { "descriptions": "能量接近玉米,蛋白稍低,适口性好。", - "unit_price": 2.80 + "unit_price": 2.80, + "max_ratio": 0.40 }, "磷酸氢钙": { "descriptions": "猪最常用磷钙来源,有效磷高。", - "unit_price": 3.20 + "unit_price": 3.20, + "max_ratio": 0.05 }, "稻草粉": { "descriptions": "最廉价粗纤维来源,母猪限量使用防便秘。", - "unit_price": 0.60 + "unit_price": 0.60, + "max_ratio": 0.10 }, "稻谷": { "descriptions": "带壳稻子,能量低于玉米,纤维高。", - "unit_price": 1.90 + "unit_price": 1.90, + "max_ratio": 0.20 }, "稻谷糠": { "descriptions": "米糠的一种,高脂肪高磷,需注意酸败。", - "unit_price": 1.60 + "unit_price": 1.60, + "max_ratio": 0.10 }, "米糠": { "descriptions": "高能量高磷副产品,注意黄曲霉毒素和酸败。", - "unit_price": 1.85 + "unit_price": 1.85, + "max_ratio": 0.15 }, "米糠粕": { "descriptions": "脱脂米糠,蛋白较高,能量降低。", - "unit_price": 1.95 + "unit_price": 1.95, + "max_ratio": 0.15 }, "红薯干": { "descriptions": "高淀粉低蛋白能量原料,类似木薯。", - "unit_price": 2.20 + "unit_price": 2.20, + "max_ratio": 0.30 }, "肉粉": { "descriptions": "普通肉粉,蛋白和灰分波动大,质量不稳定。", - "unit_price": 4.50 + "unit_price": 4.50, + "max_ratio": 0.10 }, "肉骨粉50": { "descriptions": "含骨较高,钙磷比例好,但蛋白较低。", - "unit_price": 4.20 + "unit_price": 4.20, + "max_ratio": 0.10 }, "脱脂奶粉": { "descriptions": "优质乳蛋白源,仔猪料黄金原料。", - "unit_price": 22.00 + "unit_price": 22.00, + "max_ratio": 0.15 }, "膨化全脂大豆": { "descriptions": "经过高温膨化的全脂大豆,抗营养因子破坏彻底,仔猪可用。", - "unit_price": 4.10 + "unit_price": 4.10, + "max_ratio": 0.20 }, "芝麻粕": { "descriptions": "蛋白高,蛋氨酸丰富,但草酸高,需限量。", - "unit_price": 2.90 + "unit_price": 2.90, + "max_ratio": 0.10 }, "花生秧粉": { "descriptions": "粗饲料,母猪用。", - "unit_price": 0.85 + "unit_price": 0.85, + "max_ratio": 0.10 }, "花生粕": { "descriptions": "蛋白高,但黄曲霉毒素风险极高,猪场慎用。", - "unit_price": 3.70 + "unit_price": 3.70, + "max_ratio": 0.05 }, "苜蓿草块": { "descriptions": "优质粗饲料,富含维生素和未知生长因子,母猪和仔猪都适用。", - "unit_price": 2.40 + "unit_price": 2.40, + "max_ratio": 0.10 }, "苜蓿草粉": { "descriptions": "蛋白较高,但皂苷和香豆素可能影响采食。", - "unit_price": 2.50 + "unit_price": 2.50, + "max_ratio": 0.10 }, "苹果渣": { "descriptions": "湿态副产品,适口性好,母猪喜欢。", - "unit_price": 0.55 + "unit_price": 0.55, + "max_ratio": 0.10 }, "菜籽粕": { "descriptions": "普通菜粕,硫甙高,对甲状腺影响大,猪限量使用。", - "unit_price": 2.30 + "unit_price": 2.30, + "max_ratio": 0.08 }, "葡萄糖": { "descriptions": "快速能量源,教槽料常用,缓解应激。", - "unit_price": 3.80 + "unit_price": 3.80, + "max_ratio": 0.15 }, "葵花籽粕": { "descriptions": "高纤维蛋白源,赖氨酸低,需补充赖氨酸。", - "unit_price": 2.10 + "unit_price": 2.10, + "max_ratio": 0.15 }, "蔗糖": { "descriptions": "高能量碳水,教槽料诱食用。", - "unit_price": 6.50 + "unit_price": 6.50, + "max_ratio": 0.10 }, "虾粉": { "descriptions": "优质动物蛋白,含虾青素,改善体色。", - "unit_price": 6.00 + "unit_price": 6.00, + "max_ratio": 0.10 }, "蚕蛹粉": { "descriptions": "高蛋白高脂肪,氨基酸平衡好,但脂肪易氧化。", - "unit_price": 8.00 + "unit_price": 8.00, + "max_ratio": 0.10 }, "蚕豆": { "descriptions": "蛋白较高,淀粉消化率好,但含抗营养因子。", - "unit_price": 3.40 + "unit_price": 3.40, + "max_ratio": 0.20 }, "蟹粉": { "descriptions": "高蛋白高灰分动物蛋白,钙磷丰富。", - "unit_price": 4.50 + "unit_price": 4.50, + "max_ratio": 0.10 }, "血浆蛋白粉": { "descriptions": "仔猪断奶料黄金功能性蛋白,IgG高,促进肠道发育和免疫。", - "unit_price": 45.00 + "unit_price": 45.00, + "max_ratio": 0.05 }, "血粉": { "descriptions": "赖氨酸极高,但适口性差,需喷涂使用。", - "unit_price": 6.50 + "unit_price": 6.50, + "max_ratio": 0.05 }, "豆磷脂": { "descriptions": "高能量乳化剂,促进脂肪消化,改善皮毛。", - "unit_price": 6.80 + "unit_price": 6.80, + "max_ratio": 0.01 }, "豌豆": { "descriptions": "蛋白中等,淀粉消化好,可部分替代玉米和豆粕。", - "unit_price": 3.50 + "unit_price": 3.50, + "max_ratio": 0.30 }, "豌豆蛋白": { "descriptions": "豌豆浓缩蛋白,蛋白高,抗营养因子低。", - "unit_price": 9.50 + "unit_price": 9.50, + "max_ratio": 0.15 }, "进口鱼粉65": { "descriptions": "高品质鱼粉,新鲜度好,仔猪和母猪料优质蛋白源。", - "unit_price": 12.80 + "unit_price": 12.80, + "max_ratio": 0.15 }, "食盐": { "descriptions": "提供钠和氯,调节电解质平衡。", - "unit_price": 0.50 + "unit_price": 0.50, + "max_ratio": 0.01 }, "饲料酵母粉": { "descriptions": "富含核苷酸和小肽,促进肠道健康和免疫。", - "unit_price": 6.50 + "unit_price": 6.50, + "max_ratio": 0.10 }, "高粱": { "descriptions": "能量接近玉米,但单宁高影响消化率,需选低单宁品种。", - "unit_price": 2.20 + "unit_price": 2.20, + "max_ratio": 0.30 }, "鱼油": { "descriptions": "富含DHA和EPA,促进脑发育和抗炎,母猪和仔猪推荐。", - "unit_price": 18.00 + "unit_price": 18.00, + "max_ratio": 0.03 }, "鸡肉粉": { "descriptions": "优质陆基动物蛋白,消化率高,适口性好。", - "unit_price": 7.50 + "unit_price": 7.50, + "max_ratio": 0.15 }, "鸭肉粉": { "descriptions": "与鸡肉粉类似,脂肪稍高。", - "unit_price": 7.20 + "unit_price": 7.20, + "max_ratio": 0.12 }, "鹅肉粉": { "descriptions": "蛋白和脂肪中等,质量稳定。", - "unit_price": 7.00 + "unit_price": 7.00, + "max_ratio": 0.12 } }, "nutrients": { diff --git a/internal/infra/database/seeder/nutrient_seeder.go b/internal/infra/database/seeder/nutrient_seeder.go index 8eb9f3b..db337be 100644 --- a/internal/infra/database/seeder/nutrient_seeder.go +++ b/internal/infra/database/seeder/nutrient_seeder.go @@ -14,10 +14,11 @@ import ( "gorm.io/gorm" ) -// rawMaterialInfo 用于临时存储解析后的原料描述和价格信息。 +// rawMaterialInfo 用于临时存储解析后的原料描述、价格和最大添加量信息。 type rawMaterialInfo struct { Description string UnitPrice float32 + MaxRatio float32 } // SeedNutrients 先严格校验JSON源文件,然后以“有则跳过”的模式播种数据。 @@ -45,11 +46,12 @@ func SeedNutrients(ctx context.Context, tx *gorm.DB, jsonData []byte) error { nutrientDescriptions := make(map[string]string) if descriptionsNode.Exists() { - // 解析 raw_materials 描述和价格 + // 解析 raw_materials 描述、价格和最大添加量 descriptionsNode.Get("raw_materials").ForEach(func(key, value gjson.Result) bool { rawMaterialInfos[key.String()] = rawMaterialInfo{ Description: value.Get("descriptions").String(), UnitPrice: float32(value.Get("unit_price").Float()), + MaxRatio: float32(value.Get("max_ratio").Float()), } return true }) @@ -65,15 +67,16 @@ func SeedNutrients(ctx context.Context, tx *gorm.DB, jsonData []byte) error { rawMaterialName := rawMaterialKey.String() var rawMaterial models.RawMaterial - // 获取原料的描述和价格信息 + // 获取原料的描述、价格和最大添加量信息 info := rawMaterialInfos[rawMaterialName] - // 将 Description 和 ReferencePrice 放入 Create 对象中 + // 将 Description, ReferencePrice 和 MaxAdditionRatio 放入 Create 对象中 err = tx.Where(models.RawMaterial{Name: rawMaterialName}). FirstOrCreate(&rawMaterial, models.RawMaterial{ - Name: rawMaterialName, - Description: info.Description, - ReferencePrice: info.UnitPrice, + Name: rawMaterialName, + Description: info.Description, + ReferencePrice: info.UnitPrice, + MaxAdditionRatio: info.MaxRatio, }).Error if err != nil { // 返回 false 停止 ForEach 遍历 @@ -187,6 +190,14 @@ func validateAndParseNutrientJSON(jsonData []byte) error { if _, ok := t.(json.Number); !ok { return fmt.Errorf("期望原料 '%s' 的 'unit_price' 值是数字, 但实际得到的类型是 %T, 值为 '%v'", rawMaterialName, t, t) } + case "max_ratio": + t, err = decoder.Token() + if err != nil { + return fmt.Errorf("解析原料 '%s' 的 'max_ratio' 值失败: %w", rawMaterialName, err) + } + if _, ok := t.(json.Number); !ok { + return fmt.Errorf("期望原料 '%s' 的 'max_ratio' 值是数字, 但实际得到的类型是 %T, 值为 '%v'", rawMaterialName, t, t) + } default: // 忽略其他未知字段,但仍需读取其值以继续解析 if _, err := decoder.Token(); err != nil {