更新记录

1.0.0(2026-11-12)

首个版本:当前余盘先用,不足下一整板才在板间接料;输出逐料号净需求、每板供料、理论需求与理论盘数、全部接料板号、计划盘数、已有盘数、缺盘、计划末盘实际可用余量和当前供给缺口。YIELD与ALLOWANCE分别计算,作业准备损耗优先扣当前盘并只结转一次,装盘损耗逐只新盘扣减。Node 22实跑236项断言全部通过,通用preflight的10个发布文件全部通过。HBuilderX launch --compile true真编译通过,index.kt 595行并含planOf/reelCsv/YIELD/ALLOWANCE;Android真机未执行(ADB无设备);H5真实渲染截图4张已生成并逐图检查。


平台兼容性

uni-app

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

SMT余盘与接料计划

给 SMT 操作员、物料员与生产计划人员 的离线计算插件:按多料号当前余盘、整盘毛容量、每板用量与明确损耗,提前定位所有板间接料节点,算清计划盘数、缺盘和末盘实际可用余量。

计算链路是「当前余盘先用 → 不足下一整板才接料 → 新整盘逐盘扣损耗 → 缺盘单独列出」。理论总量与整板计划分开,不用总需求简单除毛盘量代替节点推演。

能算什么

  • 多料号完整计划:一次输入整批板数和多个料号,重复料号直接拒绝。
  • 两种损耗口径:YIELD 按抛料数/总取料数计算;ALLOWANCE 按净用量上的管理宽放计算。
  • 理论需求与理论盘数:批量需求只在总量处向上取整一次,不逐板重复向上取整。
  • 全部接料板号:当前余盘先用,不足下一整板才在板间接料;首块前需要新盘也会列出,最后一块后不多接。
  • 固定损耗边界:jobSetupLoss 每料号每批只一次;reelLoadLoss 每只新整盘各一次;当前余盘不重复扣装盘损耗。
  • 盘数与缺口:分别给计划盘数、计划新整盘、已有盘数、缺盘、当前供给可完成板数与缺口。缺盘不会截断完整计划。
  • 末盘实际余量:按实际供给减实际损耗和计划供料逐段计算;库存不足时该字段按补足后的计划口径返回。
  • 审计 CSV:导出汇总、逐料号和逐节点的单 BOM CSV,UTF-8 单 BOM,默认写 Android 应用外部私有目录。

计算口径

设每板净用量为 q=perBoard,损耗比例为 p=lossPct:

YIELD:     每板供料 = q ÷ (1 − p),0 ≤ p < 1
ALLOWANCE: 每板供料 = q × (1 + p),0 ≤ p ≤ 1
理论需求 = ceil(boards × 每板供料 + jobSetupLoss)
新整盘实际可用 = fullReelQty − reelLoadLoss

currentRemaining 是当前盘已经扣完既往损耗后的可用余量。准备损耗优先从当前盘扣;当前盘不足时,只有第一只新整盘承担结转部分,后续新盘不重复承担准备损耗。

计划按完整板逐盘推演:当前盘或本只新盘足以完成下一块就继续,不足才在下一块板号前接料。plannedReels 含参与本批的当前盘,plannedNewReels 只含新整盘,shortageReels=max(0, plannedNewReels−spareReels)。

理论盘数按理论总量、当前可用余量与新盘实际可用量估算;计划盘数按完整板节点推演,两者保留独立字段。

快速接入

import { reelPlan, reelExport, reelVersion } from '@/uni_modules/szhzy-reel-plan'

const input = {
  boards: 240,
  items: [{
    materialCode: 'R-0402-10K',
    perBoard: 8,
    lossMode: 'YIELD',
    lossPct: 0.02,
    jobSetupLoss: 12,
    reelLoadLoss: 6,
    currentRemaining: 96,
    fullReelQty: 500,
    spareReels: 1
  }]
}
const result = reelPlan(input)
// result.items[0].firstChangeBoard = 11
// result.items[0].nodes = 第 11 / 71 / 131 / 191 板前
// result.items[0].plannedReels = 5,plannedNewReels = 4
// result.items[0].shortageReels = 3
// result.items[0].plannedLastReelRemaining = 85.836735

const exported = reelExport(input)
const version = reelVersion()

Android 真机需使用包含本插件的自定义基座,标准基座不含三方 UTS 插件。

API

函数 返回
reelPlan(options) 多料号余盘、全部接料节点、盘数、缺盘与末盘余量
reelExport(options) 计算并导出「SMT余盘与接料计划.csv」,返回路径与字节数
reelVersion() 版本字符串,当前为 1.0.0

计算与导出统一返回 { ok, code, message, ... },失败时 ok=false,不向业务层抛计算异常。reelVersion() 只返回版本字符串。

输入字段

字段 单位与约束 缺省
boards 板,整数 [1,100000] 必填
items 料号数组,1 到 100 项,料号不可重复 必填
materialCode 1 到 64 个字符,首尾空白会去除 必填
perBoard 颗/板,整数 [1,1000000] 必填
lossMode 只能为 YIELD 或 ALLOWANCE 必填
lossPct 小数比例;YIELD 为 [0,1),ALLOWANCE 为 [0,1] 必填
jobSetupLoss 颗/料号/批,整数 [0,1000000000] 0
reelLoadLoss 颗/新整盘,整数,且小于整盘毛容量 0
currentRemaining 当前盘可用颗数,整数 [0,1000000000];0 表示未上余盘 0
fullReelQty 新整盘毛容量,整数 [1,1000000000] 必填
spareReels 已有新整盘库存,整数 [0,1000000] 0
dir 仅 reelExport 使用的输出目录 应用外部私有目录

关键计算拒绝 NaN、Infinity、非法小数和超上限输入。ALLOWANCE 的 1 表示 100% 管理宽放,不是 1%。

主要输出字段

分组 字段
需求 netDemand、boardSupply、theoreticalDemand、theoreticalReels
当前盘 currentRemaining、currentFullBoards
节点 firstChangeBoard、nodes[{changeIndex,boardNumber}]
盘数 plannedReels、plannedNewReels、reelChanges、availableReels、shortageReels
余量与缺口 plannedLastReelRemaining、currentSupplyBoards、currentSupplyGapBoards
汇总 summary.earliestMaterialCode、summary.earliestChangeBoard、summary.totalShortageReels、summary.hint

无接料时 firstChangeBoard=0、nodes=[]。currentFullBoards 是当前盘自身的完整板能力,可能大于本批板数;currentSupplyBoards 则不超过本批板数,并且只使用当前盘与已有新整盘。

工程与隐私

  • core.uts 是纯逻辑层:无平台 import、无异常语句、无正则、无可选链,不读时钟、文件或网络。
  • Android 公开层只负责 UTSJSONObject 转换;文件层只负责 CSV 落盘。
  • 无三方依赖,不申请系统权限,不采集、上传或记录业务数据。
  • 演示工程 Android 走真实插件;H5 仅展示由同一核心层实际计算的内存结果,并标注「示例数据」,不代表插件支持 Web。

验证状态

  • Node 22 核心回归:236 项通过,0 项失败;覆盖两种损耗、批量一次取整、准备损耗结转、逐新盘装盘损耗、完整节点、缺盘、末盘余量、非法输入与 CSV。
  • 通用发布前校验:10 个发布文件全部通过,包括清单、价格、UTF-8 无 BOM、LF、零依赖、权限与敏感信息检查。
  • H5 预览:构建成功,4 张真实浏览器页面截图已生成并逐张检查;不代表插件支持 Web。
  • UTS→Kotlin 真编译:已执行;目标项目先导入,再由 cli launch app-android --compile true 编译成功,index.kt 595 行,含 planOf、reelCsv、YIELD、ALLOWANCE。
  • Android 真机与设备端 CSV:未执行(ADB 无在线设备),不声称设备端通过。
  • 插件市场发布:本版本在门禁通过后提交,最终状态以公开页与交付发布清单为准。

购买前必读

仅支持 Android,最低 Android 6.0(minSdkVersion 23)。iOS、鸿蒙、小程序和 Web 均未实现。计算结果是生产计划估算,实际以现场盘点与工艺规范为准。请在自己的项目中完成验收后再用于生产。

隐私、权限声明

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

无系统权限。导出文件写到应用外部私有目录,不需要存储权限。

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

插件不采集、不上传任何数据,不访问网络,不写日志。板数、料号、余盘、整盘容量与损耗参数只在内存中计算;CSV由调用方主动导出,默认写应用外部私有目录。

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

无

暂无用户评论。