# 需求

饲料配方管理及自动生成配方

## issue

http://git.huangwc.com/pig/pig-farm-controller/issues/66

# 开发计划

1. 原料营养价值管理
    - 增删改查
    - 内置60+条常用原料（玉米、豆粕43、豆粕46、发酵豆粕、麸皮、次粉、DDGS、乳清粉、鱼粉、膨化大豆、各种氨基酸、预混料、油脂等）
    - 每种原料固定营养值（消化能、粗蛋白、赖氨酸、钙、磷等15项左右）

2. 饲料库存管理（代替批次）
    - 字段：饲料名、当前原料种类、当前剩余量（吨）、上次入料日期、保质期剩余天数（手动填）、是否发酵料（勾选）
    - 发酵料塔额外字段：
        - 发酵状态（未发酵 / 正在发酵 / 已发酵可用）
        - 发酵开始日期
        - 发酵几天（默认3～7天）
        - 水分增加比例（默认+10～20%）
        - 营养折损系数（可调，粗蛋白-5%、能量-3%之类）

3. 猪只阶段营养需求管理
    - 预设10个常用阶段（教槽、仔猪、小猪、中猪、大猪、后备、怀孕前中后、哺乳）
    - 每个阶段维护营养需求上下限（消化能、粗蛋白、赖氨酸、钙、有效磷等12项）

4. 配方管理
    - 按阶段建配方
    - 支持增删改查 + 复制上个配方快速新建
    - 配方明细：原料 + 配比（%）

5. 自动生成配方（核心功能）
    - 选择阶段 → 点击“自动计算最低成本配方”
    - 自动读取当前所有料塔的：
        - 剩余量（不够的原料自动降配比）
        - 保质期剩余天数（越快过期的优先用，权重×1.5）
        - 发酵料塔如果状态是“已发酵可用”则按发酵后营养值参与计算
    - 输出：总成本、营养达标情况、发酵料占比、即将过期原料使用提示

6. 配方下发与记录
    - 一键下发到喂料站/料线（生成下料曲线）
    - 自动记录今天用了哪个配方

7. 简单查看功能
    - 两个配方对比页面（营养+成本对比）

# 实现总结

## 实现内容

实现库存和原料和营养和猪营养需求的管理, 支持根据库存和已录入原料和猪营养需求生成配方

## TODO

1. 发酵料管理考虑到发酵目前没有自动化流程, 不好追踪, 遂暂时不做
2. 目前的价格是根据原料的参考价设置的, 后续应当实现一个在服务供平台采集参考价, 以及使用原料采购价计算
3. 原料应该加上膨润土等, 比如膨润土的黄曲霉素含量应该是负数以表示减少饲料里的含量
4. 饲料保质期考虑到批次间管理暂时不方便, 等可以实现同一原料先进先出后再实现
5. 暂时不支持指定原料列表然后自动生成, 也不支持告诉用户当前生成不出是为什么, 等以后再做

# 完成事项

1. 定义原料表, 营养表, 原料营养表, 原料库存变更表
2. 迁移配置文件, 实现从json文件中读取原材料营养预设值, 并自动写入数据库
3. 定义配方领域, 实现营养元素的增删改查
4. 实现原材料的增删改查和仓库层的原料库存记录表增查
5. 定义猪的模型和营养需求模型
6. 实现从json读取猪营养需求并写入数据库
7. 实现配方领域关于猪模型和营养需求的增删改查
8. 实现配方领域的web接口
9. 实现修改原料营养信息
10. 实现修改猪营养需求
11. 配方模型定义和仓库层增删改查方法
12. 配方领域层方法
13. 重构配方领域
14. 配方增删改查服务层和控制器
15. 实现库存管理相关逻辑
16. 实现配方生成器
17. 实现使用系统中所有可用的原料一键生成配方
18. 实现优先使用库存的配方一键生成