更新记录
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/resultsJSON,并标注「H5 预览 · 示例数据」,不代表插件支持 Web。
验证状态
- Node 核心回归:327 项通过,0 项失败;含净面积手算、单双面/多道、湿膜、稀释、两种损耗口径、配比守恒、试板反算、流量/时间、整板补料、最后罐、缺料、逐班余量结转、非法输入和 CSV。
- 演示 JSON:由上述测试加载同一份
core.uts实际生成main / shortage / estimate三组输入与结果。 - 通用发布前校验:10 个发布文件全部通过(清单、价格、编码、权限、零依赖与敏感信息)。
- UTS→Kotlin 真编译:已执行;目标项目先导入,再由
cli launch app-android --compile true编译成功,index.kt792 行,含planOf/shiftCapacity/planCsv。 - Android 真机与设备端 CSV:未执行(ADB 无在线设备),不声称真机通过。
- 市场截图:3 张 H5 真实渲染图,分别呈现首屏闭环、理论/实测与配比、缺料与班次;已逐图检查且 SHA-256 互不相同,不代表插件支持 Web。
- 插件市场发布:本版本在门禁通过后提交,最终状态以公开页与交付发布清单为准。
购买前必读
仅支持 Android,最低 Android 6.0(minSdkVersion 23)。iOS、鸿蒙、小程序和 Web 均未实现。插件不内置材料库,不做视觉路径,不管理固化与适用期,不替代首件膜厚检验和安全规范。请使用本厂 TDS、试板、实测流量与容器记录完成验收,再用于生产计划。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 13
赞赏 0
下载 12761289
赞赏 1959
赞赏
京公网安备:11010802035340号