✨ 系列第60篇|从零开始搭建标准ERP架构
👣 接续第59天“半自动零件排程”,今天我们进入 生产执行层的核心模块:APS排程建模
🔧 目标:基于“交期倒推+工序顺序”,实现“简单但有效”的拉式排程
🎯 关键点:工艺顺序判断 + 前置期设定 + 开完工日期计算 + 甘特图可视化
💡 核心价值:把“看不见的时间”变成“看得见的任务条”
🔍 回顾:我们已经做了什么?
在前几篇中,我们完成了:
- 建立了完整的 零件工艺分解体系
- 实现了 成本估算与工时计算
- 完成了 工序负荷预判与瓶颈识别
- 构建了 “一键下达排程”的自动化流程
现在,所有任务都已具备“时间属性”和“经济属性”。但问题来了:
❓ 每道工序该什么时候开始?
❓ 如何确保不耽误交期?
❓ 是否可以实现“按顺序、按周期”的倒推排程?
答案是:引入“工序顺序+前置期”的倒推规则!
⚠️ 注意:这不是“推式排程”,而是“拉式排程”(根据交期倒推)
✅ 步骤一:新增统计字段 → 确定“工艺顺序”
✅ 新增统计字段:工艺顺序
- 数据源:
零件排程计划表 - 统计字段:
A 生产任务号 - 统计方式:计数
- 统计条件:
A 生产任务号= 当前行A 生产任务号编号≤ 当前行编号
✅ 逻辑说明:
对同一任务号下的所有记录进行排序
按“编号”升序排列,得到每条记录的“工艺顺序”
✅ 作用:
明确每道工序在整个流程中的位置
为后续倒推提供依据

✅ 步骤二:新增统计字段 → 设置“工序前置期”
✅ 新增统计字段:工序前置期(1天)
- 数据源:
零件排程计划表 - 统计方式:计数
- 统计条件:
A 生产任务号= 当前行A 生产任务号编号≥ 当前行编号
✅ 逻辑说明:
计算当前工序之后还有多少道工序
每道工序需提前1天准备(假设前置期为1天)
所以“前置期 = 后续工序数量”
✅ 作用:
保证每道工序都有足够准备时间
实现“T-n”倒推机制

✅ 步骤三:新建公式字段 → 计算“排程完工日期”
✅ 新增公式字段:排程完工日期
✅ 逻辑说明:
最终交期减去后续工序所需天数
即:最后一道工序必须在交期当天完成
倒数第二道必须提前1天完成……以此类推
✅ 示例:
交期:2026/03/28
前置期:3 → 完工日期 = 2026/03/25
前置期:2 → 完工日期 = 2026/03/26
前置期:1 → 完工日期 = 2026/03/27
前置期:0 → 完工日期 = 2026/03/28
✅ 作用:
明确每道工序的最晚完成时间
避免延误交期

✅ 步骤四:新建公式字段 → 计算“排程开工日期”
✅ 新增公式字段:排程开工日期
✅ 逻辑说明:
工序用时单位为“小时”,需转换为“天”
例如:4小时 = 4/24 ≈ 0.17天
开工日期 = 完工日期 – 工序耗时
若工序用时为整数天,则结果为整数日
✅ 示例:
完工日期:2026/03/25
工序用时:4小时 → 开工日期 = 2026/03/25 – 0.17 ≈ 2026/03/24
✅ 作用:
明确每道工序的最早开始时间
支持甘特图展示

✅ 步骤五:配置甘特图视图 → 可视化排程结果
✅ 新建视图:APS排程视图
🔹 视图类型:甘特图
🔹 配置参数:
- 开始日期字段:
排程开工日期 - 结束日期字段:
排程完工日期 - 分组字段:
A 生产任务号
✅ 效果:
每个任务显示为一条横条
条形长度代表持续时间
不同任务之间可并行或串行
支持拖拽调整(未来可扩展)
✅ 用户体验提升:
一眼看出“哪个任务卡住了”
能直观看到“是否重叠”、“是否有空档”

📊 实际效果演示(以图为例)

🛠️ 为什么这样设计?背后逻辑解析
| 设计点 | 原因 |
| 使用“统计字段”而非手动输入 | 提高准确性,避免人为错误 |
| “工序前置期”设为1天 | 符合多数离散制造场景(如换模、准备等) |
| 倒推排程 | 更符合JIT理念,减少库存压力 |
| 公式字段自动计算 | 无需人工干预,实时更新 |
| 甘特图可视化 | 提升管理效率,便于沟通 |
✅ 这套模型,其实就是一个 微型“APS排程系统”!
