化妆品生产制造模块
对齐 Odoo 19 Manufacturing Order 闭环 — 从配方到完工的完整执行链路
1. 模块总览
架构分层
| 层 | 核心组件 | 说明 |
|---|---|---|
| 页面层 | ProductionOrderList / Detail / WorkOrderExecution / WorkOrderList / WorkOrderDispatchBoard / WeighingStation | 用户操作入口 |
| 服务层 | MrpProductionService · MrpWorkorderService · MrpAvailabilityService · MesStudioRuntimeService · QualityCheckService | 业务逻辑 |
| 数据层 | MrpProduction · MrpWorkorder · MrpBom · MrpRouting · MrpWorkcenter · StockLot · QualityCheck · QualityAlert | 领域模型 |
| 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
- 按工作中心/技能分配
- 产能负载可视化
5. 快捷操作路径
演示环境一键完工
内部自动串行:ConfirmProduction → StartProduction → SubmitToQc → SubmitToRelease → ReleaseProduction → CompleteProduction。若无质检标准/批记录模板,对应校验自动跳过。
6. 常见问题与排查
❓ 点击 [完工] 报错 [提交放行前置校验未通过] 怎么办?
检查:① 工序全 Done;② 批记录已批准(如有);③ 质检 Passed;④ 无未关闭偏差。未配置质检标准时自动跳过校验。
❓ 为什么没有生成质检任务?
在派生工序时自动创建。前提:① 存在适用的 QualityPoints;② 工单有 LotNumber。通过 /settings/setup 导入演示数据获得预配置质检标准。
❓ 工序从哪里来?
从 BOM.Processes 按 StepNumber 自动派生。需在配方设计器中关联 MrpRouting。无工艺步骤时提示 [未配置可派生的工艺步骤]。
❓ 工单可以跳步骤吗?
允许跨状态跳转(如 Confirmed 直跳 InProgress)。但 SubmitToRelease 严格校验——工序和质检必须先完成。
❓ 批记录在哪里填写?
MES Studio 动态表单,在 WorkOrderExecution 中自动加载。也可通过 /shopfloor/batchrecords 进入。
❓ 如何拆分生产工单?
① 详情页 Draft 状态点 [拆分子单](多级 BOM);② WorkOrderExecution 中拆分单个工序。
❓ 备料和称量的关系?
备料设称量=Pending;物料齐套后称量→Approved。实际称量在 /shopfloor/weighing 称量站操作。
BlazorFactory MES — 化妆品行业制造执行系统
对齐 Odoo 19 Manufacturing | 版本 1.0