化妆品生产制造模块
对齐 Odoo 19 Manufacturing Order 闭环 — 从配方到完工的完整执行链路
1. 模块总览
架构分层
| 层 | 核心组件 | 说明 |
|---|---|---|
| 页面层 | ProductionOrderList / Detail / WorkOrderExecution / WorkOrderList / WorkOrderDispatchBoard / WeighingStation | 用户操作入口 |
| 服务层 | MrpProductionService · MrpWorkorderService · MrpAvailabilityService · QualityCheckService | 业务逻辑 |
| 数据层 | MrpProduction · MrpWorkorder · MrpBom · MrpRouting · MrpWorkcenter · StockLot · QualityCheck · QualityAlert | 领域模型 |
| 种子数据层 | CosmeticMESSeedData | 演示数据库初始化 |
| API层 | /api/v1/manufacturing/* | 外部 ERP 对接 |
关键文件清单
| 文件 | 职责 |
|---|---|
Data/ShopFloor/MrpProduction.cs | 生产工单实体 + 11 状态枚举 + 辅助状态枚举 |
Data/ShopFloor/MrpWorkorder.cs | 工序工单实体(含拆分、质检阻塞、让步放行) |
Services/ShopFloor/MrpProductionService.cs | 核心服务,13 个生命周期方法 |
Services/ShopFloor/IMrpProductionService.cs | 接口 + DTO 定义 |
Components/Pages/ShopFloor/ProductionOrderList.razor | 生产订单列表 — 看板式 + 快捷操作 |
Components/Pages/ShopFloor/ProductionOrderDetail.razor | 生产订单详情 — 逐步推进 + 版本冻结 + 工序管理 |
Components/Pages/ShopFloor/WorkOrderExecution.razor | 工单执行页 |
Components/Pages/Manufacturing/ManufacturingExtensions.razor | 拆解单 / 委外单 / 返工桥接 |
2. 生产工单状态机
Draft → Confirmed → (VersionFrozen) → MaterialPreparing
→ MaterialReady → InProgress → ToQC → ToRelease → Done
特殊状态: OnHold(挂起) / Cancelled(取消) / Blocked(阻断)11 种状态枚举
| 值 | 状态 | 中文 | 可进入的前置状态 |
|---|---|---|---|
| 0 | Draft | 草稿 | — |
| 1 | Confirmed | 已确认 | Draft |
| 2 | Planned | 已排产 | Confirmed / Draft |
| 3 | MaterialPreparing | 备料中 | Confirmed / VersionFrozen / Planned / OnHold |
| 4 | MaterialReady | 待开工 | MaterialPreparing / Confirmed / Planned |
| 5 | InProgress | 生产中 | MaterialReady / Confirmed / Planned / OnHold |
| 6 | ToQC | 待质检 | InProgress / MaterialReady |
| 7 | ToRelease | 待放行 | ToQC |
| 8 | Done | 已完成 | InProgress / ToQC / ToRelease / MaterialReady |
| 9 | Cancelled | 已取消 | Done 之前任意状态 |
| 10 | OnHold | 已挂起 | InProgress / MaterialReady |
3. 完整操作流程
- 前置条件
—- 操作结果
- Draft
- 关键动作
- 选产品/输批号,自动生成编号
- 前置条件
Status == Draft- 操作结果
- Confirmed
- 关键动作
- 物料可用性检查(Odoo 对标)
- 前置条件
Status ∈ {Confirmed, Planned, VersionFrozen}- 操作结果
- VersionFrozen
- 关键动作
- BOM/工艺/质检 JSON 快照锁定
- 前置条件
Status ∉ {Done, Cancelled}- 操作结果
- → MrpWorkorder 列表
- 关键动作
- 从 BOM.Processes 创建,自动关联批记录和质检任务
- 前置条件
Status ∈ {Confirmed, VersionFrozen, Planned, OnHold}- 操作结果
- MaterialPreparing
- 关键动作
- 称量=Pending
- 前置条件
Status ∈ {MaterialPreparing, Confirmed, Planned}- 操作结果
- MaterialReady
- 关键动作
- 预留=FullyReserved, 称量=Approved
- 前置条件
Status ∈ {MaterialReady, Confirmed, Planned, OnHold}- 操作结果
- InProgress
- 关键动作
- ActualStartTime 记录,批记录=InProgress
- 前置条件
已有派生工序- 操作结果
- Ready→InProgress→Done
- 关键动作
- 暂停/报废/拆分/质检阻塞/让步放行
- 前置条件
Status ∈ {InProgress, MaterialReady}- 操作结果
- ToQC
- 关键动作
- Quality=PendingInspection
- 前置条件
Status == ToQC- 操作结果
- ToRelease(通过校验时)
- 关键动作
- 5 项校验:工序/批记录/质检/偏差。失败→Blocked
- 前置条件
QA && Status == ToRelease- 操作结果
- Released
- 关键动作
- 记录放行人/时间
- 前置条件
Status ∈ {InProgress, ToQC, ToRelease, MaterialReady}- 操作结果
- Done
- 关键动作
- ActualEndTime, FinishedGoodsMove=Pending
4. 页面导航指南
📋 生产订单列表
路由:/shopfloor/production-orders
功能:
- 看板式统计(待推进 / 待放行 / 阻断异常 / 已完工)
- 快捷操作:开始(Draft → InProgress)、完工(InProgress → Done)
- 按状态/批号/工单号筛选
适用角色:生产主管、车间主任
📝 生产订单详情
路由:/shopfloor/production-orders/details
功能:
- 逐步操作:确认 → 备料 → 齐套 → 开工 → 提交质检 → 提交放行 → QA放行 → 完工
- 版本冻结、工序管理、偏差跟踪
适用角色:生产主管、QA
⚙ 工单执行
路由:/shopfloor/workorders/execute
- 开工/暂停/报废/质检/让步放行
- 工时记录/表单填写
角色:操作员
📊 工单列表
路由:/shopfloor/workorders
- 工序工单一览
- 按状态/工作中心筛选
角色:生产主管
🔧 制造扩展
路由:/manufacturing/extensions
- 拆解单/分包/返工/日历
角色:工艺工程师
⚖ 称量站
路由:/shopfloor/weighing
- 线边称量配料
- 扫码校验/偏差记录
🛑 工单派工板
路由:/shopfloor/workorder-dispatch
- 按工作中心/技能分配
- 产能负载可视化
📅 生产排程
路由:/shopfloor/production-schedule
- 周/月排程计划管理
- 生产订单甘特图视图
角色:计划员
🧾 物料消耗
路由:/shopfloor/material-consumption
- 投料记录追溯
- 计划vs实际用量对比
角色:配料员
📈 产量收率
路由:/shopfloor/yield-records
- 生产收率追踪
- 投入/产出/报废/返工统计
角色:生产主管
🧼 清洁记录
路由:/shopfloor/cleaning
- GMP设备清洁验证
- 批间/品种更换/深度清洁
角色:清洁操作员、QA
🌡️ 环境监控
路由:/shopfloor/environment
- 洁净区温湿度/压差/粒子
- C级/D级洁净度分级监测
角色:环境监测员
🔗 追溯查询
路由:/shopfloor/traceability
- 正向追溯(成品→原料)
- 反向追溯(原料→成品)
角色:QA、质量受权人
📅 排班日历
路由:/manufacturing/workcenter-calendar
- 工作中心出勤/休假管理
- 班次与产能规划关联
角色:生产主管
5. 快捷操作路径
演示环境一键完工
内部自动串行:ConfirmProduction → StartProduction → SubmitToQc → SubmitToRelease → ReleaseProduction → CompleteProduction。若无质检标准/批记录模板,对应校验自动跳过。
6. 常见问题与排查
❓ 点击 [完工] 报错 [提交放行前置校验未通过] 怎么办?
检查:① 工序全 Done;② 批记录已批准(如有);③ 质检 Passed;④ 无未关闭偏差。未配置质检标准时自动跳过校验。
❓ 为什么没有生成质检任务?
在派生工序时自动创建。前提:① 存在适用的 QualityPoints;② 工单有 LotNumber。通过 /settings/setup 导入演示数据获得预配置质检标准。
❓ 工序从哪里来?
从 BOM.Processes 按 StepNumber 自动派生。需在配方设计器中关联 MrpRouting。无工艺步骤时提示 [未配置可派生的工艺步骤]。
❓ 工单可以跳步骤吗?
允许跨状态跳转(如 Confirmed 直跳 InProgress)。但 SubmitToRelease 严格校验——工序和质检必须先完成。
❓ 工艺参数在哪里记录?
在 WorkOrderExecution 工序执行页中记录温度/转速/真空度等工艺参数。
❓ 如何拆分生产工单?
① 详情页 Draft 状态点 [拆分子单](多级 BOM);② WorkOrderExecution 中拆分单个工序。
❓ 备料和称量的关系?
备料设称量=Pending;物料齐套后称量→Approved。实际称量在 /shopfloor/weighing 称量站操作。
❓ 批记录列表为空怎么办?
需通过 /settings/setup → 「MES 全部演示数据」导入模板和演示批记录实例。导入后可看到「待填写」「待复核」「草稿」三种状态的批记录。
❓ 自定义表单模板和运行时实例有什么区别?
模板定义字段、规则和工作流(设计时),运行时实例是操作员按模板填写的具体记录(运行时)。一个模板可创建无数实例。
BlazorFactory MES — 化妆品行业制造执行系统
对齐 Odoo 19 Manufacturing | 版本 1.0