WMS 高速扫码时,怎么避免同一个条码重复提交?

3 阅读1分钟

仓库实际使用 PDA 和开发测试完全是两个场景。

开发时:

扫一下

等接口回来

再扫一下

仓库工作人员可能是:

哒哒哒哒哒

连续高速扫码。

这时候很容易出现:

扫码事件

调用接口

接口还没返回

下一次扫码又来了

如果没有做保护,就可能产生:

· 重复入库;

· 重复出库;

· 重复扣库存;

· 重复生成记录。

所以扫码系统最好至少考虑三层保护。

第一层:扫码层去重

例如:

相同条码

300ms 内

只返回一次

第二层:页面提交锁

例如:

submitting = true

当前业务还在处理时,根据业务规则决定:

忽略后续扫码

或者:

加入扫码队列

第三层:后端幂等

前端再怎么防,也不能完全替代服务端。

例如使用:

业务单号

barcode

operation

生成幂等键。

即使客户端真的请求两次,服务端也不能重复扣库存。

我现在的做法是:

SL-ScanBridge 负责设备输入与基础扫码防抖,业务页面负责业务锁,服务端负责最终幂等。

这三个层级最好不要混在一起。 插件地址:ext.dcloud.net.cn/plugin?id=2…