更新记录

1.0.0(2026-11-12)

首个版本:板面减遮蔽/禁涂净面积,支持单双面和多道;干膜=湿膜×混合固体份,按体积固体份与稀释比拆分原漆/稀释剂。转移效率与施工损耗两种口径互斥;试板用量实测优先并展示理论偏差,单片实测时间或实测流量反算工时。整板规则计算首次补料、计划容器、补料损耗和缺料,最后罐不多补;班次扣准备、换板和补料并逐班结转余量。Node 22 实跑 327 项断言全部通过,同时由 core 生成三组演示 JSON;通用 preflight 的 10 个发布文件全部通过。HBuilderX launch --compile true 真编译通过,index.kt 792 行并含 planOf/shiftCapacity/planCsv;Android 真机未执行(ADB 无设备);H5 真实渲染截图 3 张已生成并逐图检查。


平台兼容性

uni-app

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

三防漆涂覆与班次补料

给三防漆涂覆操作员、工艺员与班组长的离线计划插件:从板面扣除遮蔽和插件禁涂面积,按材料 TDS 与本厂试板实测计算湿膜、原漆、稀释剂、整板补料时点和班次缺口。

差异化闭环是「净面积 → 道数/干膜 → 体积固体份与稀释 → 理论配比 → 本厂实测校准 → 批次、班次与补料时点」。不止做理论湿干膜换算,也不内置通用材料库。

能算什么

  • 净涂覆面积:矩形板长宽减多个遮蔽、禁涂区域的合计面积;支持 coatedFaces=1/2 和每面多道 coatCount;净面积小于等于 0 直接拒绝。
  • 湿膜与理论混合液:每道干膜、原漆体积固体份、稀释剂/原漆体积比共同确定混合固体份、每道湿膜与理论净膜体积。
  • 两种施工口径互斥:transfer 使用理论量÷转移效率,loss 使用理论量×(1+施工损耗率),不会把两者叠乘。
  • 本厂实测优先:成对传入 trialBoards + trialUsedMixedMl 反算单片实际混合液、隐含沉积比和实测对理论施工估算的偏差;有实测时批量采用实测,理论值仍保留供对比。
  • 原漆/稀释剂 BOM:按给定稀释比拆分本批混合液消耗,并拆分缺料;原漆+稀释剂与混合液守恒。
  • 整板补料:以当前余量开始,新罐先扣每次补料/清洗损耗;当前罐不足以完成下一整板时才补料,输出首次补料板号、计划容器数、补料次数和计划余量,最后罐不多补。
  • 缺料与班次:备用整罐不足时给出缺罐数、缺混合液及原漆/稀释剂;班次真实扣除准备、换板和补料时间,并逐班结转罐内余量。
  • CSV 单文件 BOM:UTF-8 单 BOM,包含消耗量与整板计划供料两套口径,默认写 Android 应用外部私有目录,零系统权限。

计算口径

1. 净面积与道数

单面净面积 Aface = boardLengthMm × boardWidthMm − maskedAreaMm2 − excludedAreaMm2
总净涂覆面积 A = Aface × coatedFaces × coatCount
累计干膜 = dryFilmUm × coatCount

maskedAreaMm2 是多个遮蔽区域去重后的合计,excludedAreaMm2 是连接器、插座等插件禁涂区域去重后的合计。若遮蔽与禁涂相互重叠,调用方也应先去重,避免重复扣减。插件只处理矩形板与面积合计,不做视觉识别和喷涂路径。

2. 固体份、湿膜与理论混合液

混合体积固体份 Smix = volumeSolidFraction ÷ (1 + thinnerRatio)
每道湿膜 WFT = dryFilmUm ÷ Smix
理论净膜混合液/板 Vnet = A × WFT ÷ 1000000

面积单位为 mm²、膜厚单位为 µm,所以体积商为 mL。dryFilmUm 是每道干膜,面数已计入总面积,道数同时计入总面积和累计膜厚。

这里的稀释公式是调用方明确采用“稀释剂/原漆体积比”时的理论配比口径,不声称任意材料、温湿度下体积都可加,也不把理论效率外推到其他材料、设备或环境。实际配比、粘度和适用期以 TDS 与本厂工艺为准。

3. 转移效率或施工损耗,二选一

lossMode = transfer:Vestimate = Vnet ÷ transferEfficiency
lossMode = loss:    Vestimate = Vnet × (1 + lossFraction)

transferEfficiency 在 (0,1] 内;lossFraction 不小于 0。两种口径只选择一种,不混用。理论原漆与稀释剂分别按 V/(1+thinnerRatio) 和 V×thinnerRatio/(1+thinnerRatio) 拆分。

4. 试板实测校准

实测单片混合液 Vtrial = trialUsedMixedMl ÷ trialBoards
隐含沉积比 = Vnet ÷ Vtrial
实测偏差 = (Vtrial − Vestimate) ÷ Vestimate

两个试板字段必须成对填写。未填写时明确使用 Vestimate,不会用默认试板数量伪造实测。填写后,本批 batchMixedMl = quantity × Vtrial,理论净膜量和理论施工估算仍分别输出。

隐含沉积比只用于解释本批面积、干膜与试板记录;大于 1 时会提示复核,不把它当成可跨温湿度复用的转移效率。

5. 单片时间与批次工时

  • 显式 trialSeconds 优先,含义是单片完整喷涂秒数;未传时用 unitMixedMl / measuredFlowMlMin × 60 计算。
  • 有试板用量时,流量反算也使用实测单片量;无试板时使用理论施工估算量。
  • 批次换板发生在相邻整板之间,boardChangeCount = quantity − 1。
  • 批次连续生产总工时 = 一次准备 + 单片喷涂×板数 + 换板耗时 + 计划补料耗时。

6. 整板补料与缺料

当前罐可完成板数 = floor(currentRemainingMl ÷ 单片混合液)
新罐可完成板数 = floor((containerUsableMl − refillLossMl) ÷ 单片混合液)

当前罐能完成下一整板就不补;不足时在下一整板前补料。每个新罐先扣一次 refillLossMl,剩余不足一整板的部分不能在板中拼接使用。firstRefillBoard=0 表示全批无需补料。

  • batchMixedMl 是本批实际/估算消耗量。
  • plannedSupplyMl = currentRemainingMl + plannedRefills × containerUsableMl 是整板规则下的计划供料量,含末罐剩余,不等于消耗量。
  • plannedUsableSupplyMl 另扣补料/清洗损耗,plannedRemainderMl 是计划末罐及当前余量结转后的剩余。
  • plannedContainerCount 包含有余量的当前容器和计划新罐;theoreticalFullContainers 只是总消耗÷单罐可用量向上取整,未计当前余量、补料损耗和整板残余。
  • shortageContainers = max(0, plannedRefills − spareContainers);缺料毫升同时计入计划补料损耗,再按稀释比拆成原漆与稀释剂。

如果新罐扣除补料/清洗损耗后仍不能完成一整板,返回 BOARD_EXCEEDS_CONTAINER,不会假设板中停喷续料。

7. 班次与余量结转

每班按独立生产段计一次 setupSec,通过二分查找求不超过 shiftMinutes 的最大完整板数;每段扣除实际换板和补料时间。首班从 currentRemainingMl 起算,后续班次使用上一班结束时的罐内余量,不重置成新罐。

perShiftBoards 是首班最大完整板数,lastShiftBoards 是完成本批时末班实际板数,requiredShifts 由逐班模拟得到,availableCapacity 是给定班次的累计完整产能。物料不足不阻止工时估算,但会单独标记缺料;一班连一板也无法完成时 shiftBlocked=true、requiredShifts=0。

所有结果都是生产计划估算,实际以材料 TDS、工艺规范和本厂试板记录为准。

快速接入

import { coatingPlan, coatingExport, coatingVersion } from '@/uni_modules/szhzy-coating-plan'

const input = {
  batchName: 'A线双面涂覆',
  boardLengthMm: 200,
  boardWidthMm: 100,
  maskedAreaMm2: 2000,
  excludedAreaMm2: 1000,
  coatedFaces: 2,
  coatCount: 2,
  dryFilmUm: 30,
  volumeSolidFraction: 0.5,
  thinnerRatio: 0.25,
  lossMode: 'transfer',
  transferEfficiency: 0.6,
  trialBoards: 10,
  trialUsedMixedMl: 100,
  trialSeconds: 24,
  quantity: 120,
  setupSec: 300,
  boardChangeSec: 8,
  containerUsableMl: 250,
  currentRemainingMl: 240,
  spareContainers: 4,
  refillLossMl: 10,
  refillSec: 90,
  shiftMinutes: 30,
  availableShifts: 2
}
const result = coatingPlan(input)
// result.netAreaPerFaceMm2 = 17000
// result.wetFilmPerCoatUm = 75,result.unitMixedMl = 10
// result.firstRefillBoard = 25,result.requiredShifts = 3
// result.capacityGap = 35,hint 由核心层生成

const exported = coatingExport(input)
const version = coatingVersion()

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

API

函数 返回
coatingPlan(options) 净面积、膜厚、理论/实测用量、BOM、整板补料、缺料与班次完整结果
coatingExport(options) 重新计算并导出「三防漆涂覆批次BOM.csv」,返回路径与字节数
coatingVersion() 版本字符串,当前为 1.0.0

计算与导出统一返回 { ok, code, message, ... },失败时 ok=false,不向业务层抛计算异常。coatingVersion() 只返回版本字符串。核心行动提示统一由 hint 返回,Android 与 H5 不需要各自拼接。

输入字段

字段 单位与约束 缺省
batchName 批次标识,导出 CSV 时转义 涂覆批次
boardLengthMm / boardWidthMm mm,(0,1000000] 必填
maskedAreaMm2 去重后的遮蔽面积合计 mm²,≥0 0
excludedAreaMm2 去重后的插件禁涂面积合计 mm²,≥0 0
coatedFaces 涂覆面数,明确为 1 或 2 1
coatCount 每面道数,整数 [1,100] 1
dryFilmUm 每道干膜 µm,(0,10000] 必填
volumeSolidFraction 原漆体积固体份小数,(0,1],按 TDS 输入 必填
thinnerRatio 稀释剂/原漆体积比,[0,100] 0
lossMode transfer 或 loss transfer
transferEfficiency 转移效率,(0,1];仅 transfer 使用 该模式必填
lossFraction 施工损耗率,[0,100];仅 loss 使用 该模式必填
trialBoards 试板数,整数 [1,100000] 与试板用量成对可选
trialUsedMixedMl 试板混合液总消耗 mL,>0 与试板数成对可选
trialSeconds 单片完整喷涂秒数,(0,86400] 未传则走实测流量
measuredFlowMlMin 本厂实测混合液流量 mL/min,>0 未传实测秒数时必填
quantity 批量板数,整数 [1,100000] 必填
setupSec 每批或每班准备秒数,[0,86400] 0
boardChangeSec 相邻整板上下料/换板秒数,[0,86400] 0
containerUsableMl 单容器可用混合液 mL,>0 必填
currentRemainingMl 当前容器余量 mL,[0,containerUsableMl] 0
spareContainers 备用整罐数,整数 [0,100000] 0
refillLossMl 每个新罐补料/清洗损耗 mL,[0,containerUsableMl] 0
refillSec 每次补料/清洗秒数,[0,86400] 0
shiftMinutes 每班可用分钟,(0,1440] 必填
availableShifts 可用班次,整数 [1,366] 1
dir 仅 coatingExport 使用的输出目录 应用外部私有目录

所有容器均按已混合可喷涂液体等效 mL输入;插件不管理原漆与稀释剂分别混配的适用期,也不把原漆罐容积直接当成可用混合液。关键计算拒绝 NaN、Infinity、小数板数、非法面数/道数和非正净面积。

主要输出字段

分组 字段
面积与膜厚 grossAreaPerFaceMm2、netAreaPerFaceMm2、totalNetAreaMm2、totalDryFilmUm、mixedSolidFraction、wetFilmPerCoatUm、totalWetFilmUm
理论与实测 theoreticalMixedMlPerBoard、estimatedMixedMlPerBoard、trialMixedMlPerBoard、unitMixedMl、usageSource、impliedTransferFraction、calibrationDeviationFraction
单片配比 theoreticalOriginalMlPerBoard、theoreticalThinnerMlPerBoard、estimatedOriginalMlPerBoard、estimatedThinnerMlPerBoard
批量 BOM theoreticalBatchMixedMl、estimatedBatchMixedMl、batchMixedMl、batchOriginalMl、batchThinnerMl
时间 timeSource、unitSpraySeconds、batchSprayMinutes、setupMinutes、boardChangeCount、boardChangeMinutes、refillMinutes、totalMinutes
补料 boardsBeforeFirstRefill、boardsPerFullContainer、firstRefillBoard、plannedRefills、plannedContainerCount、theoreticalFullContainers、totalRefillLossMl
计划供料 plannedSupplyMl、plannedUsableSupplyMl、plannedRemainderMl、availableMixedMl
缺料 supplyEnough、shortageContainers、shortageMixedMl、shortageOriginalMl、shortageThinnerMl
班次 perShiftBoards、lastShiftBoards、requiredShifts、availableCapacity、capacityGap、shiftBlocked
建议 level、hint

usageSource 为 trial 或 estimate;timeSource 为 trialSeconds 或 flow。体积输出保留 3 或 6 位小数,比例保留 6 位小数,板数、罐数和次数均为整数。

工程与隐私

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

验证状态

  • Node 核心回归:327 项通过,0 项失败;含净面积手算、单双面/多道、湿膜、稀释、两种损耗口径、配比守恒、试板反算、流量/时间、整板补料、最后罐、缺料、逐班余量结转、非法输入和 CSV。
  • 演示 JSON:由上述测试加载同一份 core.uts 实际生成 main / shortage / estimate 三组输入与结果。
  • 通用发布前校验:10 个发布文件全部通过(清单、价格、编码、权限、零依赖与敏感信息)。
  • UTS→Kotlin 真编译:已执行;目标项目先导入,再由 cli launch app-android --compile true 编译成功,index.kt 792 行,含 planOf / shiftCapacity / planCsv。
  • Android 真机与设备端 CSV:未执行(ADB 无在线设备),不声称真机通过。
  • 市场截图:3 张 H5 真实渲染图,分别呈现首屏闭环、理论/实测与配比、缺料与班次;已逐图检查且 SHA-256 互不相同,不代表插件支持 Web。
  • 插件市场发布:本版本在门禁通过后提交,最终状态以公开页与交付发布清单为准。

购买前必读

仅支持 Android,最低 Android 6.0(minSdkVersion 23)。iOS、鸿蒙、小程序和 Web 均未实现。插件不内置材料库,不做视觉路径,不管理固化与适用期,不替代首件膜厚检验和安全规范。请使用本厂 TDS、试板、实测流量与容器记录完成验收,再用于生产计划。

隐私、权限声明

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

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

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

插件不采集、不上传任何数据,不访问网络,不写日志。板面、TDS、试板、容器与班次参数只在内存中计算;CSV 由调用方主动导出,默认写应用外部私有目录。

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

无

暂无用户评论。