更新记录

1.0.0(2026-11-03)

首个版本:交期倒排与正排。按工作日历(周末 / 节假日 / 调休 / 五天制六天制)逐道工序推最晚开工与完工;良率从后往前放大投产数,正排倒排共用同一份入量;每日产能 = 工时 × 效率 × 并行工位数;汇总给出最早开工、需用工期、合计工时、交期余量、瓶颈工序与工时占比;体检覆盖来不及、余量不足、交期非工作日、良率偏低、工时缺失;导出工序计划 CSV(带 BOM)。日期用 Howard Hinnant 日序号算法,时区无关。UTS→Kotlin 编译通过(index.kt 与 classes.dex 已生成),126 项回归测试全部通过;真机未执行(adb devices 为空),市场截图为 H5 渲染并标注示例数据。


平台兼容性

uni-app

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× √ × × √ × √ × ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

工序交期倒排与瓶颈识别

给做生产计划、车间排产、业务跟单的人用:给一张工艺路线和一个交期,算出每道工序最晚哪天必须开工。

一张路线进去,四样东西出来:工序倒排表(每道工序的投产数、工时、占用天数、最晚开工与完工日)、瓶颈工序、交期余量(还剩几个工作日,或已经晚了几天)、工序计划 CSV。

购买前必读

  1. 只支持 Android(minSdkVersion 23,Android 6.0 起)。iOS 与鸿蒙本版本未实现,市场平台声明里已标不支持。
  2. 按「天」排,不按「小时」排。同一道工序一天干不完就占多天,但不会给你排出「上午十点开工」这种精度。要做班次内的分钟级排产,这是另一类系统。
  3. 不做有限产能平衡。本插件算的是「这道工序需要几天」,不检查同一台设备上两张订单抢不抢产能。多单抢产能要自己做资源分配。
  4. 工序默认串行:上一道在前一个工作日完工,下一道第二天开工。要交叉作业(同日衔接)把 gapDays 设成 0。
  5. 日历按企业自己的排:workWeekdays 默认周一至周六,节假日与调休要显式传。日历配错,算出来的开工日就是错的——这是最常见的使用事故。

解决什么问题

计划员每天要答三个问题,手工算都会错:

  • 「这张单最晚什么时候必须开工?」 从交期往前一道一道减,碰上周日、碰上国庆就得多退一天,手算容易漏;
  • 「良率 98%,到底要投多少?」 要交 1000 支,末道 99%、前道 98%,投产数不是 1000 而是 1032——差 32 支的工时就是半天;
  • 「按今天算还来得及吗?」 最晚开工日已经过去了才被发现,是最常见的交期事故。

与同类的边界

你可能已有的 它做什么 本插件做什么
多级 BOM 展开(本店 szhzy-bom-explode) 一台成品要备多少料 一道工序要几天、哪天开工
报价核算(本店 szhzy-quote-cost) 单件成本与报价(工时也折成钱) 工时折成日期,不折成钱
装箱分箱(本店 szhzy-carton-pack) 出货要打多少箱 生产什么时候能做完
ERP 的 MRP / APS 全厂产能平衡、多单抢设备 单张订单的工序倒推,离线、可嵌入自己的 App

APS 类产品公开报价从一次性 2.5 万美元起(EDGEBIC)到 5 万美元以上/月(大型平台),实施周期以月计;本插件只做「一张单一套工艺」这一段,装进你自己的 App 里,不需要实施。

快速上手

import { schedulePlan, exportSchedule } from '@/uni_modules/szhzy-process-schedule'

const r = schedulePlan({
  csv: `序号,工序,工作中心,单件工时,准备工时,良率,并行
10,贴片,SMT-1,0.5,30,98,2
20,组装,装配线,1.2,20,99,4
30,老化,老化房,0.3,0,100,1
40,包装,包装线,0.4,10,100,2`,
  qty: 1000,
  dueDate: '2026-11-20',
  today: '2026-11-16',
  hoursPerDay: 8,
  efficiency: 0.9,
  workWeekdays: '1,2,3,4,5,6',
  gapDays: 1,
  bufferDays: 2,
  direction: 'backward'
})

r.summary.startDate      // '2026-11-17'
r.summary.totalDays      // 4
r.summary.bottleneck     // '组装'
r.summary.slackDays      // 0
r.plans[0].startDate     // 首道工序最晚开工日
r.warnings               // TIGHT / LATE / DUE_OFFDAY / LOW_YIELD…
r.csv                    // 工序计划 CSV

正排(回客户用):

const f = schedulePlan({ csv, qty: 1000, startDate: '2026-11-17', dueDate: '2026-11-20', direction: 'forward' })
f.summary.finishDate   // 预计完工
f.summary.late         // true 表示赶不上交期

导出:

exportSchedule({ csv, qty: 1000, dueDate: '2026-11-20', fileName: 'SO-2026-1108-工序计划.csv' })

工艺路线列

列 说明
序号 工序顺序,按 CSV 行序排;填了也不排序
工序 工序名称
工作中心 设备 / 产线 / 车间,仅用于展示与对账
单件工时 每件加工分钟数
准备工时 每批一次的换线 / 调机分钟数
良率 98 / 98% / 0.98 都按 98% 处理;缺省 100%
并行 并行工位或设备台数,缺省 1;小于 1 按 1 处理

列名别名:工序名 = 工序名称 = 名称,工时 = 单件工时,换线工时 = 准备工时,工位数 = 台数 = 并行数。分隔符逗号与制表符都认。

排程口径

每日产能 = hoursPerDay × 60 × efficiency × 并行。

工序占用天数 = ceil((准备工时 + 单件工时 × 投产数) / 每日产能),最少 1 天。

投产数从成品数量反推:末道投产 = 订单数量,每往前一道除以该道良率并向上取整。要交 1000 支、组装良率 99% → 组装投 1011 支;贴片良率 98% → 贴片投 1032 支。

倒排:末道最晚完工 = 交期(交期是休息日则前移到最近工作日),逐道往前推,上一道最晚完工 = 本道最晚开工的前 gapDays 个工作日。

API

方法 用途
schedulePlan(options) 一次算完:工序表、汇总、提示、纯文本、CSV
stepList(options) 只要工序表与汇总(列表页刷新用)
exportSchedule(options) 导出工序计划 CSV 到应用私有目录
workdayInfo({date,workWeekdays,holidays}) 某个日期是不是工作日,前后最近的工作日
scheduleDefaults() 默认参数与输出目录

全部返回统一信封 { ok, code, message, ... }。ok=false 时看 code:EMPTY 路线为空、NO_STEP 没有工序行、TOO_LARGE 工序超 200 道、BAD_DATE 交期无法识别、BAD_QTY 数量为 0、READ_FAILED 读文件失败。

提示(warnings)

kind 含义 处理建议
LATE 最晚开工日已经早于今天 加班、加人、或与客户改期
TIGHT 交期前余量低于 bufferDays 提前投料,或缩短准备工时
DUE_OFFDAY 交期落在休息日,倒排已前移 确认客户认可新交期
LOW_YIELD 良率低于 80%,前道要多投很多 核实际良率,别用标准值
ZERO_HOURS 单件与准备工时都为 0 补工时,否则按 1 天占位
BAD_NUM 工序行无法识别 该行已跳过

能力边界与已知限制

  • 工序数上限 200 道,路线文件上限 12 MB;
  • 只按天排,不支持一天内多班次细排;
  • 不做产能冲突检测(同设备多单抢产能请自行分配);
  • 不读 ERP/BOM,物料齐套要先用 szhzy-bom-explode 算;
  • 良率按「每道独立损失」处理,不建模返工回流。

验证状态

  • 纯逻辑回归测试:126 项全部通过(dev-tools-uts/verify/process-schedule/run-tests.mjs),覆盖公历日序号往返、星期推算(以 2024-01-01 周一、2026-11-20 周五为独立锚点核对)、日期文本解析、工作日历(周末 / 节假日 / 调休 / 五天制与六天制)、倒排与正排、良率放大、余量与超期、瓶颈识别、CSV 输出;
  • Kotlin 编译:cli launch app-android --compile true 输出「编译成功」,产物 index.kt 与 classes.dex 已生成(过了 Kotlin 类型检查,不是只做转写);
  • 真机:未执行。开发机 adb devices 为空,平台层文件读写未在真机上跑过。市场截图来自 H5 渲染,页面标注「示例数据」,不是真机截图。
  • iOS / 鸿蒙:未实现。

授权

普通授权与源码授权两档,源码版含 utssdk/ 全部实现与演示工程。商用请遵守 license.md。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无系统权限。读取调用方用系统文件选择器交过来的文件(路径或 content:// 授权),写出走应用外部私有目录。

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集、不上传任何数据,不访问网络,不写日志。工序路线与订单参数只在本机内存中解析与计算;工序计划由调用方决定是否落盘,默认写应用外部私有目录。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

暂无用户评论。