wms
第一部分 WMS?
——夜里十点,仓库的灯比白天更亮,像一台加班的冰箱,

发光但不发热。
WMS 就蹲在那团冷光里,没人喊它名字,它也不主动报身份证;
它只负责在货架与货架之间,把“有货”翻译成“有地方”,把“没货”翻译成“有理由”。
01 命名
WMS 三个字母,念出来像“我们慢死”,其实它想说的是:
Warehouse——地方大,Management——规矩更多,System——谁不守规矩,谁就被系统拉黑。

名字里没提到“人”,因为人被它算作了移动货架,编号比名字好用。

02 业务
它每天只做四件事:收、存、拣、发。
听起来像情感博主给失恋者的建议,实际上它连失恋的时间都不给:
收货——把别人的期待改成自己的库存;
存储——把库存改成坐标;
拣货——把坐标改成速度;
发运——把速度改成“已签收”。
四步走完,故事结束,连遗憾都登记在日志里,方便复盘。
03 通用
它最狡猾的一点是:看起来像在谈恋爱,其实在做相亲平台。
你做海外仓,它陪你算关税;
你做冷链仓,它帮你把温度写进批次属性;
你做电商仓,它给你的爆款留一条VIP通道;
你做制造仓,它把原料和成品隔开,防止它们互相看不上。
行业换来换去,它连头像都不换,依旧高冷在线。
04 迁移
经验像旧塑料袋,换了新仓库还能套上去:
今天你在深圳贴条码,明天去洛杉矶贴条码,系统只认条码,不认你;
今天你给家具写长宽高,明天给蓝牙耳机写长宽高,字段还是那几个字段,单位还是那个单位;
WMS 说:我不在乎你搬去哪,只要你的库位编码别让我迷路。
于是你顿悟——跳槽带得走的,除了公积金,还有WMS的字段定义。
05 边界
它也有洁癖:
只到仓库门口,不到海关心里;
只到货位边缘,不到客户客厅;
只算库存盈亏,不算人生得失。
一旦你想让它管运费、管客服、管感情生活,它就弹窗:
“越界操作,是否强制保存?”——保存也白保存,它不负责售后。
06 画面感
如果你闭上眼想象WMS,别想蓝色大屏,也别想无人驾驶叉车,
想一张Excel,冻住最后一行公式,那就是它的灵魂:
行——是库位;
列——是SKU;
公式——是先进先出;
冻窗——是锁定库存;
你改一个数,整张表重新计算,但它从不保存你的指纹。
它只留批注:
“货在哪,数才对;数不对,人背锅。”
07 温度
有人说系统冰冷,
WMS 把“冰”字收下,把“冷”字退回去——
它说自己只是恒温,
恒温在“既不热情,也不心寒”的那一度,
方便货物长眠,也方便数据永生。
人想取暖,请去空调区,
那里不统计库存,只统计加班时长。
08 彩蛋
它偶尔也讲冷笑话:
“为什么库存总是不准?”
“因为总有人把‘我以为’当成‘系统以为’。”
笑话讲完,它自动生成一张盘点单,
把“我以为”改成“系统以为”,
再把差异数甩回给人类,
人类看完,笑不出来——
原来自己才是BUG,系统只是复现。
09 备注
下次再有人问你WMS是什么,
你别背定义,
你就说:
“它像极夜,不黑,只是不亮;
它像冰箱,不冷,只是不热;
它像前任,不爱你,也不放过你——
它负责让你认清坐标,
但不负责让你认清自己。”
说完补一句:
“想认清自己,去ERP,那里报表多。”
——灯灭,仓库关门,WMS 还在跑批,
它从不睡觉,
它只是把“晚安”写成“库存已冻结”,
然后继续发光,
像一台加班的冰箱,
发光,但不发热。
第二部分 WMS的入库功能

——夜·22:15,集装箱到港,像迟到的快递,把“漂洋过海”四个字贴在箱唛上。
WMS 站在月台边,不说话,只递给对方一张 ASN:
“想进门,先扫码,别指望我给你写情书。”

01 预报
ASN 是仓库的门票,也是 container 的简历。
它写清:谁发的、发多少、怎么装、何时到。
不写——默认你“放弃面试”,仓库拒收,连托盘都进不了门。
海外仓的人工贵到按秒计费,没人陪你玩“猜猜我是谁”。
02 箱唛
早年按 SKU 预报,结果同一批货分三次到,
仓库数到怀疑人生,以为 SKU 会分身。
后来学乖:以箱为粒度,每箱贴唯一箱唛。
箱唛就是集装箱的身份证,
扫一下,就知道里面住着哪位 SKU、几口人、保质期到哪天。
仓库收货像酒店前台,刷身份证就发房卡,
谁还用手写登记,那是上个世纪的浪漫。
03 收货
海外仓的收货逻辑只有一句:
“先收进来,再谈对错。”
集装箱千里迢迢躲过海盗、台风、美国海关,
你一句“包装皱了”就拒收,物流商能拿提单砸你。
于是破损也收,少件也收,
差异写进系统,留给客服去哭,
仓库只负责把实物先拖进冷库——
人命关天,货也关钱。
04 两种姿势

PDA 收货:扫描箱唛 → 系统自动弹出 SKU → 输入实收 → 提交。
纸单收货:打印 ASN List → 人工点数 → 回去录系统 → 祈祷不要录错。
仓库主管说:

(纸单)

(pda)
“纸单容易丢,PDA 容易碎,
选哪个都别选拖延症。”
于是大家还是选 PDA,
毕竟丢数据比丢纸环保。
05 质检
海外仓的质检常被省略,
不是不想检,是人工贵到按“看一眼”计费。
客户若坚持检,就要接受“拍照+抽查”套餐,
不良品直接上架到“坏孩子区”,
等攒够一托盘再退回国内,
来回运费够买半台 iPhone,
所以多数客户选择“先卖再祈祷”。
06 上架


上架不是搬家,是拼桌。
系统先问:目标库位让不让你混放?
再问:批次同不同?货主同不同?料区同不同?
都通过,才发通行证;
否则给你指条远路:去隔壁巷道,那里有空位。
仓库说:
“不是我不近人情,是库位也有社交恐惧。”

(单据的状态流转)
07 数量对齐

收货 120,上架 118,
那 2 个被叉车碾成沉默成本。
WMS 不允许账面长期沉默,
于是强制按收货数上架,
实物少了走盘亏,多了走盘盈,
总之不能让数字裸奔,
财务月底要看报表,
少一个 SKU 都能把毛利啃出血。
08 新品维护
第一次入仓的 SKU,
要先量三围:长、宽、高、重,
数据留给计费模块当筹码。
仓库大叔拿尺子像给新兵体检,
量完还不忘吐槽:
“这么轻,运费都比你贵。”
SKU 红着脸被贴上“LT-20250618-BN001”,
从此在系统里有了户口,
哪怕只呆三天,也要交仓租。
09 批次号
批次号不是诗意,是日期+流水,
像“20250618-001”,
读出来都像“爱你爱我一路发”。
但它只爱先进先出,
不爱就让你一直呆在库位底层,
直到临期警报响起,
才被紧急抽调去跳楼大甩卖,
生命倒计时,比爱情还准。
10 小结
入库流程走完,
集装箱变成空壳,
ASN 变成收货日志,
SKU 变成库位坐标,
人变成打卡记录。
WMS 站在月台,
像一台加班的冰箱,
发光但不发热,
它把“欢迎光临”写成“库存已增加”,
然后关上门,
第三部分 WMS的出库功能
——夜·23:05,波次像最后一班地铁,把订单塞进车厢,关门之前,WMS 提醒:
“先扫条码再上车,逃票的下架。”


两种不同的出库设计方式(toc or tob)
01 出站检票
出库单推过来,像一张电子车票。

系统先验真:SKU 有没有、够不够、能不能卖;
再验人:客户额度、黑名单、信用余额;
最后验时间:承诺时效、物流截单、上帝也改不了的航班。
三关过完,才在票面上盖个“锁定”章,
意味着这批货从“大家的”变成“你的”,
其余人只能看,不能摸。
02 分波
订单多了,排队显得寒酸,于是搞“波次”——

把同目的港、同承运商、同客户、同单品单件的订单,
像拼网约车一样塞进同一辆货柜。
海外仓人少,算法太高级会吓坏操作员,
于是手动分波当 MVP:
鼠标一圈,回车一敲,
系统说“已生成波次 20250623-001”,
听起来像给台风命名,
其实只是把十几张订单绑去一起私奔。

(分波要决定对应处理的策略)
03 库存预占
波次生完,系统去做“先波后分”——
先锁定 SKU 总量,再拆到库位-批次。
锁定动作像给库存戴一次性手环:
“你已被预定,禁止二次销售。”
若库存不够,系统翻脸比翻书快,
直接把订单踢回 OMS,
留下一句“库存不足,建议忽悠客户换款”。
04 拣货路径

(单据的pdf,由系统生成给仓库人员)
库位被锁定后,系统开始给拣货员排旅游路线:

(库位基础信息维护)
从 A01 到 B05 再到 C03,
不走回头路,不逛纪念品商店,
距离最短,弯腰次数最少,
连去饮水机补水都算违规。
拣货员像被导航的 NPC,
PDA 一响,就得百米冲刺,
否则系统在后边喊:
“您已偏离最优路径,是否原地扣绩效?”

(注意库位,是有相关需求的)
05 边拣边分 · 先拣后分
订单少、SKU 多,用边拣边分,
拣货车自带九宫格,
边走边把货扔进对应格口,
像自助餐拿菜,只是不能偷吃。
订单多、SKU 少,用先拣后分,
一口气把货撸进大箱,
回到播种墙再二次分拣,

(播种的业务流程)

(播种墙)
像考完试分卷子,
只是不及格也得发出去。
06 复核

(原型)

(业务流程)
播种完,订单被打包成盲盒,
复核员像验尸官:
扫码、核对、称重、拍照,
确保没把 iPhone 发成 iPhone 壳,
也没把赠品发成仓库钥匙。
一旦重量偏差 5 克,
系统立刻弹窗:
“疑似多放说明书,是否拆包检讨?”
07 称重

(原型)
称重秤是仓库的审判席,
理论重量 vs 实际重量,
差距超过阈值,自动回退,
像高考查分,
多一分少一分都要写说明。
称重通过,打印物流面单,
面单像签证,贴在包裹上,
从此它可出境,不可回头。
08 集货
同一渠道的包裹排排坐,
被塞进邮袋或航空箱,
像拼团旅游,
路上不孤单,丢也一起丢。
邮袋封口前,系统扫最后一下:
“容器已封签,丢失概不认领,
请对上帝投保,别对我撒娇。”
09 拦截
客户忽然说“不要了”,
订单在库内开始跑死亡障碍:
分波前→直接解散;
拣货中→扫描枪提示“已取消,放回货架”;
打包后→拆包,返库上架;
交到物流→写检讨,发异常邮件。
拦截成功,系统记一笔“挽救成本”,
拦截失败,客服祭出“赔偿+道歉”套餐,
仓库只负责发,不负责哄。
10 尾程差异
B2C 小包裹,尾程看邮政脸色;
B2B 大货,尾程看卡车司机心情。
海外仓管不到最后一公里,
只能管到“交给物流”这一米。
于是系统把“已交接”当毕业照,
之后包裹是失恋还是失踪,
都写进 KPI 的“异常率”里,
供人类深夜痛哭。
11 小结
出库流程跑完,
波次变成物流轨迹,
SKU 变成签收记录,
人变成加班时长。
WMS 站在月台,
像一台加班的冰箱,
发光但不发热,
它把“一路顺风”写成“库存已扣减”,
然后合上舱门,
第四部分 WMS的拣货业务
——凌晨 0:08,波次像末班地铁,把订单塞进车厢,关门之前,WMS 提醒:
“先扫条码再上车,逃票的下架。”

(波次和捡货关系)
01 身份
拣货员在仓库里的职称,官方叫“Order Picker”,
私下叫“步数贡献者”。
每天三万步,微信运动封神的代价,
是脚底板与叉车共享同一条丝绸之路。
系统记录他们的 KPI,不记汗水,
汗水属于“异常损耗”,找不到字段。
02 派单
波次生成那一刻,订单们被拉进一个微信群,
系统当群主,@所有人:
“今晚 12 点前,必须把自己从货架上领走。”
拣货员扫码进群,
PDA 弹出一句冷到结冰的欢迎语:
“恭喜,你已抢到 87 个 SKU,步数预估 2.8 公里,
请在下班前完成配送版的‘马拉松’。”
03 路径

路径算法像渣男,永远说“我为你规划了最短”,
实际却把拣货员带去见前任——
上一次拣货时走过的最远巷道。
A01→B05→C03→Z12,
字母和数字随机组 CP,
唯一不变的是:
永远要走到尽头,才发现缺货。
系统安慰:
“缺货不算步数作废,算你额外附赠‘找货彩蛋’。”
拣货路径多种设计如下
1、

WMS是信息化系统,它需要兼容多个仓库,多种业务模式,所以肯定是用系统去适配实际的业务场景的,而不能反过来让仓库去改自己的布局来适配WMS2、

除了U型的拣货防止之外,也可以让拣货员在货架的通道内同时拣两个货架的货物

为了能达到这种软件层面控制硬件的效果,我们在创建库位的时候需要维护好相关的优先级字段,这样在生成拣货路径的时候才可以参考这个优先级输出合适的拣货路径。
04 FIFO
先进先出,听起来像排队买奶茶,
实际上是把上个月的情人节巧克力先扔出去,
免得再过一个月变成“清明限定”。
批次号就是生产日期刺青,
早一秒都算老,晚一秒都算新,
老批次躺在库位底层,
像前任的聊天记录,
你得翻到底,才能把它彻底删除。
05 缺货

(系统是推荐去A01库位拣货2个A001产品,但是拣货员到了之后发现A01库位上只有1个产品,另一个怎么都找不到,这个时候就是属于“库位缺货”了。此时拣货员可以在PDA上标记缺货,然后PDA会重新分配新的库位)

走到 A01-03-05,系统说应有 12 件,
现场只有 1 件,
另外 11 件可能去抽烟,也可能从未存在。
拣货员在 PDA 上点“标记缺货”,
系统立刻把库存从 12 改成 1,
动作快到像拉黑,
连“分手快乐”都懒得说。
剩下 1 件被重新推荐到隔壁巷道,
于是你继续走,
把“错过”走成“过错”,
步数+300,心情-1。

06 容器
拣货车是九宫格,也是临时公寓,
每个格口住着一个订单,
订单里可能住着一个 SKU,
也可能住着十个 SKU,
像合租,彼此不熟,但共用一个门牌。
拣货员边拣边分,
把商品像信投进格口,
投错——恭喜,
下一位复核员将收到“惊喜盲盒”。
07 库存扣减
拣货完成那一刻,
LocationBatchInventory 表里的实际库存-1,锁定库存-1,
像双重否定句,
最终意思是:
“你终于失去我了。”
SKUInventorySummary 表同步-1,
像朋友圈共同好友点赞,
告诉你:
“失去的不止一个库位,还有总库存。”
10 异常返库
订单突然取消,
已拣的货要回家,
系统生成“返库上架”任务,
像前任归还钥匙,
你得亲手把它送回原来的库位,
还得保证批次号、数量、库位号一模一样,
否则下次再来,它找不到床。
返库完成,PDA 提示:
“感谢您的配合,步数+500,绩效-0。”
你看着空掉的拣货车,
突然明白:
“原来错过一次,要多走 500 步才能原谅自己。”
8 小结
拣货流程跑完,
波次变成已完成任务,
SKU 变成已下架记录,
人变成步数排行榜首。
WMS 站在播种墙边,
像一台加班的冰箱,
发光但不发热,
它把“辛苦了”写成“任务已清零”,
然后关灯,
第五部分 WMS的库存模块
——凌晨 1:00,服务器风扇比白天更吵,像一台永不断电的油烟机,把“库存不准”的油烟吸进去,再吐出“账实相符”的冷空气。
WMS 坐在内存里,不开灯,只开事务,
它说:库存不是数出来的,是锁出来的。
01 维度


库存被切成四块魔方:
SKU 维度——看总量,像看城市人口;
库位维度——看地址,像看街道办;
批次维度——看生日,像看星座;
库位-批次维度——看精确到门牌号的生日,

像查你身份证背面到底住几楼。
魔方转错一面,报表就能多一行“差异”,
差异多了,财务就会把你当魔方拆了重拼。
02 双层账本
上层:SKUInventorySummary,
只记“宏观八卦”——谁有多少、被谁锁、还剩多少。
下层:LocationBatchInventory,
记“微观罪证”——哪一格、哪一批、被谁拣、被谁占。
上层负责快速回答“能不能卖”,
下层负责事后追查“到底在哪”。
两层之间用事务黏合,
要么一起生,要么一起死,
中间没有“我以为”的缝隙。
03 实际库存
实际库存像冰箱里的鸡蛋,
你以为还有 12 颗,
其实被室友煮了 2 颗,
所以系统永远先扣实物,再谈理想。
谁要是先改理想不改实物,
审计就会让他把理想吃下去。
04 锁定库存
锁定像给鸡蛋贴“明天早餐”便签,
贴了就不能换标签,
除非订单取消,
便签撕掉,鸡蛋回归公共冰箱。
锁定分两级:
SKU 层锁定——先占个座,防止超卖;
库位-批次锁定——再占个椅,防止跑空。
两级之间隔着一条“分波”算法,
算法翻车时,现场就会上演
“有座没椅,客户蹲着吃饭”的惨剧。
05 可用库存
可用库存是职场里的“可安排时间”:
名义上有,老板一个电话就没了。
公式简单粗暴:
可用 = 实际 − 锁定 − 冻结,
冻结可能是质检、可能是盘点、
也可能是财务突然“我觉得你不行”。
所以可用库存永远带一点玄学,
像前任的朋友圈——
看起来单身,其实早被预占。
06 流水

每一次增减都叫流水,
流水不腐,差异才臭。
流水表像仓库的日记,
谁、在什么时间、因为哪张单据、
把哪批货的哪一格数量改成多少,
通通写进“库存的口供”。
审计来时,流水就是物证;
审计不来,流水就是墓志铭:
“此处曾有一货,今已发往地球另一端。”
07 批次
批次号像身份证号,
但只代表“同一时刻同一状态的一群人”。
日期、供应商、生产批号,
有一个不同就换号,
换号意味着新档案、新库位、新命运。
先进先出就是按生日排队,
谁老谁先走,
除非你是茅台——
越老越值钱,
系统就让你“先进后出”,
在库位里慢慢变成陈酿。
08 调整
盘点发现多了一颗蛋,
系统立刻记“盘盈”,
少了一颗,就记“盘亏”。
调整单像仓库的忏悔录,
写清:
“我数错了,我搬错了,我被人偷了。”
每一张调整单都配一条流水,
保证错误也能被追溯,
毕竟错误也是数据,
数据需要尊严。
09 移库
移库像搬家,
从 A-01-03 搬到 B-05-07,
实物挪一寸,系统写两行:
源库位扣减,目标库位增加,
中间夹着一条“移位原因”——
可能是“优化拣货路径”,
也可能是“领导看着不顺眼”。
移库不产生盈亏,只产生坐标,
坐标变了,报表的经纬度就得重算。
10 小结
库存模块跑完一天,
魔方归位,账本对齐,
风扇还在转,
像一台加班的冰箱,
发光但不发热。
它把“晚安”写成“库存已平衡”,
然后继续锁、扣、增、释——
直到下一个夜班,
直到下一个差异,
直到下一个
“我以为”被事务回滚。

(库存操作的核心功能)
第六部分 WMS的盘点功能
——凌晨 2:00,仓库熄灯,像被拔了电源的冰箱,只剩应急灯亮着,
像冷冻室那格一直不肯融化的雪。
WMS 把盘点单塞进雪里,说:
“别急着融化,先把你数清楚。”

(盘盈、亏、平的区别)

(整体业务流程)
01 盘点的前戏
差异像床底的灰,
平时装作不存在,
月底财务一敲盆,
灰就飞起来,呛得老板咳嗽。
于是盘点被发明,
让每一粒灰都有自己的编号。
明盘、暗盘、静态、动态、循环、动碰、指定……
名字比香水还多,
本质只有一句:
“实物与账面,到底谁撒谎。”
02 明盘 vs 暗盘
明盘——系统把账面数写在盘点单上,
像开卷考试,答案就在右上角,
你只需抄,抄错算你瞎。
暗盘——系统把账面数藏进黑箱,
像闭卷考试,
你数完才知道自己多天真。
仓库说:
“开卷考速度,闭卷考诚实,
速度给加班费,诚实给心灵鸡汤。”
03 静态 vs 动态
静态——仓库先停工,再点数,
像给跑步机按下急停,
跑带不转,人转:
拣货员临时改行做会计,
叉车司机改做搬运工,
大家都在演“安静的美男子”。
动态——边作业边盘点,
像在高速路上换轮胎,
数到第三箱,叉车呼啸而过,
你抬头,发现刚才那箱被拖走,
于是你在盘点单上写:
“曾有一箱,路过人间。”
04 循环盘点
A 类每周、B 类每月、C 类每季度,
像给 SKU 排课表,
学霸(A)天天点名,
学渣(C)期末见,
学渣若考砸,老师补一句:
“明年升 A,让你天天见我。”
循环的尽头不是毕业,
是转班,永不停课。
05 初盘 → 复盘 → 终盘
初盘——第一次数,
手速快,眼神飘,
心里想着夜宵,
结果写错一位,
系统记一笔“差异”。
复盘——第二次数,
心里骂着第一次的自己,
眼神聚焦,手指哆嗦,
若还对不上,就记“差异的差异”,
差异也开始分裂,像细胞。
终盘——领导说:
“再数一次,若还错,
就把差异入账,
让财务去哭。”
于是差异有了户口,
叫“盘盈”或“盘亏”,
从此合法生活在账上。
06 盘点锁定
动态盘点最怕“飞来横货”,
数到一半,上游突然收货,
库存从 100 变 101,
你怀疑自己多数一颗,
于是系统说:
“锁定吧,让时间暂停。”
锁定像给 SKU 戴手铐,
别人不能动,只能看你数,
数完解锁,
若发现差异,就把手铐转戴到自己手上,
名曰“责任人”。
07 差异处理
盘盈——账面少,实物多,
像钱包里突然多出一张钞票,
你心虚地交给财务,
财务说:
“入账,叫营业外收入,
明年利润就靠它。”
盘亏——账面多,实物少,
像手机电量从 20% 瞬间归零,
你哭着写说明,
领导签字,
财务写“管理费用”,
明年预算里扣掉你奖金。
盘平——罕见事件,
像前任说“我还爱你”,
你激动地点确认,
系统却弹窗:
“无差异,无需处理,
请继续怀疑人生。”
08 产品边界
盘点能做多复杂,
取决于你想多早下班。
PDA、纸质、Excel、多人协同、
红外扫码、RFID、无人机……
功能列出来像双十一购物车,
全选之后,
开发问:
“你确定仓库真会用?”
你沉默三秒,
把“无人机”删掉,
只留下“PDA+纸质”,
因为仓库大叔说:
“无人机飞进来,
我怕拿它当苍蝇拍。”
09 任务单

(单据设计)

(单据关系)
国内 WMS 爱把盘点拆成任务,
张三盘 A 区,李四盘 B 区,
像给学霸分组,
组长背锅,组员摸鱼。
海外仓说:
“人少,别整花活,
一张单,一支笔,
全仓一起数,
数完去喝酒。”
于是任务单被简化成“备注”,
备注里写:
“今晚数不完,明早继续,
酒先存冰箱。”

(核心流程)
10 小结
盘点结束,
差异被入账,
灰被拍干净,
冰箱重新插电,
库存像冻好的冰块,
晶莹剔透,
直到下月财务再敲盆。
WMS 站在黑暗里,
像一台加班的冰箱,
发光但不发热,
它把“辛苦了”写成“差异已调整”,
然后继续制冷,
等下一次
“你以为”被数字拆穿。
第七部分 WMS的移库功能
——凌晨 3:00,叉车像失眠的鲨鱼,在货架巷道里慢速游弋,
货叉举起托盘那一刻,WMS 把“移动”写成“事务”,
然后冷冷提醒:
“货可以走,数据别想溜。”
01 定义

(原型)
移库,就是把库存从 A 地址赶到 B 地址,
不报关、不过境、不坐飞机,
只过“系统”这道海关。
海外仓的移库很纯粹:
没有浪漫,没有远方,
只有“源库位减、目标库位加”
像转账,只是不收手续费,
收的是步数、时间、以及夜班工人的颈椎病。
02 简易版

PDA 扫一下源库位——“减”;
再扫一下目标库位——“加”;
系统问三句:
货主同不同?料区同不同?混放策略同不同?
都通过,就放行;
不通过,弹窗一句:
“禁止越界,请原地反思。”
整个流程比便利店买酸奶还快,
只是酸奶不会报错,库存会。
03 复杂版

如果仓库有钱、有人、有 KPI,
就走“两步移库”:
第一步——下架,生成“移库下架任务”;
第二步——上架,生成“移库上架任务”;
中间还能插入“质检”“换标”“属性转换”,
像转机航班,
行李要重新托运,
货也要重新安检。
系统因此多出两张单据,
开发很开心,
因为 KPI 也分两行。
04 货主与料区
货主不同,不能放一起,
怕你把张三的 iPhone 发给李四的安卓;
料区不同,也不能放一起,
怕你把“良品”塞进“残次品”的冷宫。
系统把“隔离”写进算法,
像把前任拉黑,
物理上还能见,
逻辑上永不相逢。
05 混放策略
商品混放——SKU 能不能同居;
批次混放——不同生日能不能同床;
系统当房东,
先查身份证,再查星座,
只要有一个不合,
就拒绝入住,
并提示:
“请换房,本公寓不接收渣男。”
06 数量/体积限制
库位也有胃口,
最大容量像裤腰,
超一格就报警,
系统弹窗:
“再吃就爆,
请节食或换大号。”
叉车司机只能把托盘放回通道,
像把行李塞回高铁行李架,
动作不优雅,
但符合物理定律。
07 快速移位 vs 单据移位
快速移位——不写情书,
扫码就搬,适合救火;
单据移位——先写申请,
再批流程,适合背锅。
仓库说:
“能救火就救火,
救不了就写检讨,
检讨还能算 KPI,
火没救成算事故。”
下面坑点汇总了其他文章
08 踩坑一:只盯移库

新手把移库当独立模块,
给源库位写离别信,
给目标库位写欢迎词,
结果逻辑写成长篇小说,
开发读到第二章就失忆。
老鸟提醒:
“移库就是换地址的上架,
上架策略抄一遍就行,
别自作多情。”
09 踩坑二:多 SKU 上架

一次想搬五个 SKU,
系统却提示“商品不混放”,
像五个人抢一间单人间,
前台说:
“请分开住,或者分开搬。”
于是只好拆成五次,
每次扫十次码,
效率低到叉车都想辞职。
结论:
“搬家别拼团,拼团遭雷劈。”
10 踩坑三:源库位思维

有人想先比对源库位策略,
再决定能不能移,
结果比对逻辑写到哭,
still 漏掉“目标库位已满”的极端。
一句话拍死:
“上架策略只盯目标,
源库位只是过客,
过客不需要政审。”
瞬间省掉两千行代码,
以及一个程序员的头发。
11 事务
移库事务像结婚登记,
要么一起签字,
一起领证,
要么一起回滚,
当谁都没来过。
中间若断网,
系统会自动撕证,
让库存回到单身,
防止出现“重婚”——
源库位少了,目标库位没加,
实物在叉车上,
像被拐卖的儿童,
去向不明。
12 小结
移库完成,
叉车把托盘放下,
像放下一段旧情,
系统把数量从 A 划到 B,
像把前任的备注改成“同学”。
WMS 站在巷道尽头,
像一台加班的冰箱,
发光但不发热,
它把“辛苦了”写成“移库已成功”,
然后继续制冷,
等下一次
“想搬”被事务允许。
第八部分 WMS的批次管理
——凌晨 4:00,服务器比白天更冷,像一台永不断电的冷柜,
批次号躺在字段里,像被速冻的条形码,
WMS 站在内存里,不开灯,只开事务:
“别急着过期,我先把你溯源。”
01 命名
批次,听起来像“一次恋爱”,
其实是“同一属性的一群库存谈恋爱”。
批次号就是恋爱编号,
LT-20250618-001,
读作“老坛 2025 年 6 月 18 日第一次心动”,
系统却冷漠地叫它:内部批次号。
恋爱可以重名,批次号不能重复,
否则库存会出轨,先进先出就绿成先进后出。
02 批次属性

决定“恋爱质量”的属性有:
入库日期——第一次见面;
生产日期——出生证明;
失效日期——死亡通知书;
供应商——媒人;
采购单号——相亲平台订单号。
只要其中一个属性变,
系统就判你“换对象”,
重新发编号,
旧爱留在原地,新爱另开一行,
数据库比人类更拒绝海王。
03 批号 ≠ 批次号

批号是厂家写在外包装上的“出生证”,
一般由数字组成,像 220520,
读作“二二零五二零”,听起来像表白,
其实是“2022 年 5 月 20 日生产”。
批次号是 WMS 自己生成的“身份证号”,
一般前缀 LT(Lot)或 BN(Batch),
用来在仓库内部调遣,
对外低调,对内高冷,
像公司花名,只许自己叫。
04 粒度

(颗粒度最细)
库存可以按“货主+SKU”粗养,
也可以按“货主+SKU+批次”精养,
再狠一点按“货主+SKU+批次+SN”单养,
粒度越细,成本越高,
像养宠物:
粗养是猫粮随便倒,
精养是按克喂,按天称,
单养是给每只猫开抖音账号。
海外仓多半选精养,
因为猫少,喂得起,
真遇到大户,再退回到粗养,
系统允许你“降级恋爱”,不降 KPI。
06 库龄

(不同的方式计算库零)
批次号自带“年龄属性”,
每天凌晨系统跑批,
给每个批次 +1 岁,
像微信运动给步数 +1,
只不过步数可以刷,库龄刷不动。
仓租按库龄阶梯收费,
0-30 天便宜,31-60 天小贵,
61-90 天抢钱,
90 天以上——
系统提示:
“是否考虑销毁,或转赠博物馆?”
08 批次追溯
召回事件发生时,批次号像子弹编号,
能快速定位哪一批、哪条线、哪个供应商,
像警方查枪,
不用把所有 SKU 都关起来,
只抓“20250618-001”这一个黑帮。
客户只需提供批次号,

系统就能拉出库存流水、出入记录、在库余量,
比明星公关发声明还快,
因为批次号从不撒谎,
除非人类先改了属性。
09 库位-批次绑定

上架那一步,系统给批次写地址:
“你住 A-01-03,直到被拣走。”
如果批次不同,还想硬塞,
系统就把库位锁死,
像酒店前台说:
“这间房已入住,请换隔壁。”
绑定成功,
FIFO 才能按门牌找人,
否则先进先出会变成“先进迷路”。
11 批次号生成规则
别再用纯日期当批次号,
一旦规则改号,排序全乱,
FIFO 会瞬间变 FOMO(怕错过)。
正确姿势:
日期 + 流水 + SKU 尾缀,
或者干脆用雪花算法(看公司),
保证每个批次号都唯一、递增、不可回滚,
像感情,一旦给出,就收不回来。
12 小结
批次跑完一生,
从“出生证”到“死亡证”,
从“上架”到“下架”,
从“先进”到“先出”,
都在系统里留下一条流水,
像墓志铭:
“我曾是 LT-20250618-001,
在库 92 天,
被拣走于 2025-09-18 03:44:27,
死因:客户下单。”
WMS 站在冷柜里,
像一台加班的冰箱,
发光但不发热,
它把“永别”写成“批次已出库”,
然后继续制造下一批号码,
第九部分 WMS的唯一码与效期管理
——凌晨 4:30,仓库的日光灯比白天更冷,像给 SKU 打了一束追光,
唯一码和失效日期并肩站在光里,
一个怕被扫错,一个怕过期。
WMS 把扫码枪当麦克风,说:
“请依次报上名来,过期者自动退场。”

01 唯一码是什么

(产品原型)
不是哲学意义上的“我是谁”,
而是物理层面上的“我就是我,不是他”。
IMEI、SN、溯源码,
都是厂商刻在机身或盒底的纹身,
全球只此一份,
丢了就再也找不到替身。
仓库的任务:
把每一只纹身登记在案,
防止有人拿山寨货来骗保、骗退、骗感情。
02 唯一码的价值

售后——证明“这手机是我卖的”,
不是“隔壁拼多多甩的”;
防串货——证明“这手机只能卖北美”,
不是“你拿去印度刷机”;
追溯——证明“这手机出生在深圳某条线”,
不是“某黑作坊贴牌”。
三点价值,翻译成一个 KPI:
降低赔偿,降低罚款,降低品牌哭晕在厕所的概率。
03 采集姿势
标准姿势:逐 PCS 扫描,
一只手机一个码,
扫到手腕抽筋,
扫到“扫码腱鞘炎”进工伤群。
省钱姿势:工厂把整箱唯一码合成一张二维码,
外箱一贴,
到仓一扫,
一次性带出 50 个 IMEI,
像批量打卡,
效率翻番,工伤减半。
非标准姿势:
仓库大叔肉眼对编号,
对到眼花,
对出“0 和 O 不分”,
差异写成“人类视觉疲劳”,
系统默默记一笔“盘亏”。
04 格式校验
魅族盒底 5 个码,
谁才是 IMEI?
谁才是 SN?
谁只是广告二维码?
扫错一次,
售后链条全乱,
客服哭到“您好,请提供正确码”时,
客户已差评。
解法:提前在系统配正则,
IMEI 必 15 位纯数字,
SN 必 12 位字母数字混排,
扫错立刻弹窗:
“格式不符,请重新扫,别再拿成广告。”
05 多仓策略
A 仓人工贵,入库不扫,只出库扫;
B 仓人工便宜,出入都扫;
C 仓政策奇葩,扫一半留一半。
系统要支持“SKU+仓库”级策略,
否则 A 仓操作员看到“请扫 IMEI”会掀桌:
“我 3 倍时薪你让我扫码玩?”
策略错位,
唯一码就变成“唯一不扫”。
06 退货场景
客户退一部手机,
仓库收货先扫 IMEI,
系统反问:
“这码我曾见过,是否原配?”
对上——原配,允许上架,继续卖;
对不上——陌生码,
可能山寨,可能串货,
先关“异常区”,
等客户提交出生证明(发票),
再放行。
唯一码在此扮演“前任识别器”,
防止“前任”变“现男友”继续骗保。
07 关闭再开启
唯一码一旦关闭,
历史数据就躺平,
再开启时,
系统会翻旧账:
“这些库存当初没扫码,现在无法校验,
是否强制放行?”
强制——可能放山寨进来;
不强制——库存被冻结,
客户跳起来:
“我合法货为何不能卖?”
结论:
开关需谨慎,
一旦关灯,
再亮可能发现床上多了陌生人。

(整体流程如上)
08 效期是什么

唯一码回答“我是谁”,
效期回答“我还能活多久”。
保健品、奶粉、化妆品、电子烟,
印在外盒的“EXP 2025-12”
就是死亡通知书,
过了这天,
库存从“良品”自动降级为“毒品”,
谁发谁坐牢,
系统要先下手为强。
09 效期采集
英式日期 日/月/年,
美式日期 月/日/年,
还有只写“生产批号+保质期 24M”的,
需要人工口算。
仓库大叔掰手指:
“2024 年 6 月生产,24 个月,
那就是 2026 年 6 月到期?”
算完写进 PDA,
系统立刻回显:
“距离过期 710 天,允许入库。”
算错一天,
可能把临期当远期卖,
客户吃完拉肚子,
赔偿够买 710 箱新货。
10 效期策略
临期先出(FEFO)——
死期近的优先被拣,
像医院先救重伤;
先进先出(FIFO)——
谁早出生谁先走,
适合普通快消;
固定批次出——
客户指定“我要 20250618 批”,
系统只认批次号,
不认死期,
哪怕明天就过期,
也给你发,
谁让客户是上帝,
上帝想自爆,仓库只能递火。
11 库位混放禁令
同 SKU 不同效期,
禁止同库位混居,
怕拣货员一次拿错两批,
把远期当临期发,
客户吃成免疫战士。
系统给库位贴“效期专一”标签,
硬塞就报警:
“混放违规,请换巷道,
否则记大过,扣绩效,写检讨。”
12 冻结与销毁
距离 EXP 90 天,系统黄灯预警;
距离 EXP 30 天,红灯锁定,
禁止分配,禁止拣货,
只能走“销毁”或“打折清仓”。
销毁——拍照、称重、签字、视频,
证明你确实把货送进粉碎机,
而不是送进“隔壁拼多多”。
打折——自动推“临期特惠”,
价格腰斩,
像临终关怀,
让库存死得有尊严,
也死得有点回款。

(效期核心流程)
13 小结
唯一码与效期,
一个证明“我是我”,
一个证明“我快不是我”。
仓库在凌晨扫完最后一码,
把“身份”与“死期”同时写进数据库,
像给每只 SKU 发了一张身份证,
也发了一张死亡证明。
WMS 站在冷光灯下,
像一台加班的冰箱,
发光但不发热,
它把“永别”写成“唯一码已出库,效期已校验”,
然后继续制冷,
等下一只扫码枪响起,
等下一张死亡通知书到期。
第十部分 WMS中“暂存库位”的功能和作用
——凌晨 5:00,仓库最后一颗灯熄灭,像被拔了电源的冷柜,
只剩“暂存库位”还亮着虚拟光标,
它把“过渡”两个字贴在胸口,
对 WMS 说:
“我不存货,我只货过渡,
像机场中转,不办签证,只提供等待。”

01 中转概念
暂存库位,英文名 Stage Location,
也有人叫它“过渡库位”“临时库位”“虚拟库位”,
本质一句话:
“货不在主线流程里,却在系统视线内。”
收货时,它叫 RCV_AREA,
拣货时,它叫 STAGE-PICK,
移库时,它叫 STAGE-MOVE,
名字随流程换,身份永远是“过客”。
像打车软件里的“拼车点”,
人不在起点,也不在终点,
但司机看得见,系统算得到。
02 存在意义
没有暂存库位,
收货上架必须一步到位,
像飞机没有候机厅,
落地就得直接进市区,
遇到月台堵车,
全仓库一起原地爆炸。
有了暂存库位,
收货可以先“落地签”,
慢慢排队等上架;
拣货可以先“下架暂存”,
等复核打包再出库;
移库可以先“下架过渡”,
等叉车有空再搬过去。
一句话:
给实物一条缓冲带,
给系统一条审计链,
给人类一口喘息。
03 收货场景
货柜半夜到,
员工没齐,月台满了,
先把托盘拖进“RCV_AREA”,
系统记:
“SKU123,数量 100,定位 RCV_AREA,状态:已收货未上架。”
第二天人力到位,
再慢慢从 RCV_AREA 搬到 A-01-03、B-02-05……
每条搬动都生成两条流水:
RCV_AREA 减,目标库位加,
像银行转账,
A 账户划到 B 账户,
中间留着转账记录,
方便差异吵架时甩证据。
04 拣货场景
波次拣完,
不会直接塞进快递袋,
先放进“STAGE-PICK-001”塑料筐,
筐在系统里就是虚拟库位,
筐动,库存动;筐飞,库存飞。
复核完,再从筐里掏出来打包,
系统再记:
“STAGE-PICK-001 减,包裹加。”
如果订单突然取消,
只需把筐里货倒回原始库位,
流水反向冲销,
像微信撤回,
只要两分钟之内,
世界就当没发生。
05 移库场景
两步移库法,
第一步下架到“STAGE-MOVE”,
第二步从 STAGE-MOVE 上架到目标库位。
中间可以插播“质检”“换标”“拍照”,
像转机航班可以顺路逛免税。
暂存库位就是行李转盘,
货在上面转,
等你办完手续再来认领,
转丢了,系统还能查转盘编号,
不至于满世界贴寻物启事。
06 库存维度
暂存库位在数据库里
跟真实库位共用同一张表,
只是 locationType = 'STAGE',
像酒店里“维修房”,
房号存在,但不住客,
前台能看见,客人订不到。
查询库存时,
可以把它算“在库”,
也可以算“不可用”,
取决于你想让老板看到
“库存充足”还是“可用充足”。
07 展示方案
方案一:隐藏
只在“库位-批次”维度显示,
“SKU 总库存”里看不见,
老板问“为什么库存够却卖不了”,
你回答:
“它们在缓冲区排队安检。”
方案二:透出
单独列“暂存数量”,
标灰,写“不可用”,
让老板一眼明白:
“这些货还在候车室,没上高铁。”
方案三:混合
参考富勒,

把暂存拆成“待上架、待移入、待移出、待调整”,
像给候车室再分 VIP、商务、经济舱,
精细到令人发指,
适合 KPI 过剩的团队。
08 流水痕迹
每一条暂存操作,
都生成一对流水:
“源库位减,暂存库位加”
“暂存库位减,目标库位加”
像地铁进出站刷卡,
两次滴声,
形成完整行程,
差异排查时,
可逐站回放,
不怕货在哪一站失踪,
只怕你不查刷卡记录。
09 性能权衡
暂存库位多了,
库存表行数翻倍,
查询变慢,索引叹气,
像朋友圈照片太多,
滑到 2019 年需要拇指抽筋。
解决方式:
定期把“暂存余额为 0”的行归档,
像清理微信缓存,
让数据库继续保持
高冷且苗条的身材。
10 小结
暂存库位跑完一生,
从不留货,只留记录,
像机场中转不过夜,
却给每张登机牌盖戳。
WMS 站在服务器里,
像一台加班的冰箱,
发光但不发热,
它把“过渡”写成“暂存已扣减”,
然后继续制冷,
等下一次
“我还没到终点,但已被系统看见”。
第十一部分 拆解WMS入库单据的3种设计方式
——凌晨 1:30,一封 EDI 报文漂洋过海,像电子信鸽落在仓库网关,
为什么asn 不是 入库单?
WMS 拆开信封,抬头看见三个字母:ASN。
它冷冷地说:
“我不是入库单,我只是提前告诉你——
你的货要来,但还没来,
别急着把库位腾出来,
也别急着写欢迎词。”

01 命名考古
ASN,Advanced Shipping Notice,
中文爱称“预先发货通知”,
听起来像快递小哥的“您的包裹已装车”,
实则是一段 XML,
比情书更结构化,
比发票更提前。
历史要追溯到上世纪 EDI 酒吧,

北美混圈用 X12-856,欧洲用 EDIFACT-DESADV,
酒保规定:
“发货前先发报文,
否则货到门口也不给开门。”
于是 ASN 成了入场券,
不是入库单,
是“我要来了”的预告片,
不是“我已经到了”的结婚证。

02 不叫入库单的三大理由
第一:出生地不同
入库单出生在仓库,ASN 出生在供应商 ERP;
一个土著,一个外籍,
签证类型不一样。
第二:法律身份不同
ASN 是“通知”,不具备物权转移效力,
入库单是“凭证”,财务可入账,
一个像朋友圈定位,一个像房产证。
第三:时间节点不同
ASN 在物流途中,入库单在月台卸完货,
一个还在高速,一个已经进收费站,
不能混为一谈,
否则审计会把你当超速拍照。
03 单据家谱
ASN → 收货单(GRN)→ 上架单(Putaway List)
祖孙三代,血统清晰:
ASN 负责预告,GRN 负责记录,上架单负责安排床位。
有人把 ASN 和 GRN 合并,叫“两单制”,
有人再插一张质检单,叫“四单制”,
像家庭结构:丁克、核心、三代同堂,
选哪种,取决于你敢不敢要孩子。
04 方案一:一单到底

ASN 收货 + 上架写在同一张单据,
像闪婚,见面就领证,
适合SKU 少、节奏快、无质检的海外轻量仓,
鼠标一点,
收货数量=上架数量,
系统爽,员工更爽,
差异只能靠“事后复盘”硬吞。
爽点:开发周期短,UI 只有一页,
痛点:一旦质检不过,
你要把已上架的货再搬下来,
像新婚第二天发现对方已婚,
离婚还得先办房本更名。
05 方案二:两单制

ASN → 上架单,跳过 GRN,
像谈恋爱跳过订婚直接办酒,
收货动作在 ASN 界面完成,
系统自动生成上架任务,
适合“我信任供应商,但我更信任自己”的中型仓。
爽点:少一张 UI,少一次点击,
痛点:收货数据没有正式凭证,
财务想入账只能扒 ASN,
ASN 瞬间变“准发票”,
身份尴尬,像穿礼服去菜市场。
06 方案三:三单制

ASN → GRN → 上架单,
完整走鹊桥,每一步都留痕,
适合 SKU 多、质检严、需要背锅的大型电商仓。
ASN 预告,GRN 记录实收,
质检插在 GRN 与上架之间,
不良品先关“小黑屋”,
良品才发“床位号”。
爽点:流程清晰,审计开心,
痛点:界面多、点击多、
员工下班时间从 22:00 拖到 23:00,
加班费比差异更贵。

07 暂存库位的插播
无论几单制,
只要卸货后不能立刻上架,
就要拉“暂存库位”当临时旅馆:
ASN 收货→暂存库位→上架单,
像机场转机,行李先下转盘,
等人办完手续再重新托运。
暂存库位在数据库里只是 locationType='STAGE',
却能让差异减少 30%,
让审计闭嘴 100%,
代价是多两次流水,
DBA 夜晚加班指数 +1。
08 数据对偶
一单制:收货即上架,库存流水只有“加”
两单制:收货→暂存,流水“加→转移”
三单制:收货→暂存→上架,流水“加→转移→再转移”
流水行数与加班费成正比,
与审计追问次数成反比,
选哪种,取决于你想让谁熬夜。
09 命名自由
ASN 可以叫“预到货通知”,也可以叫“送货单”,
GRN 可以叫“收货结果”,也可以叫“收货执行单”,
上架单可以叫“上架任务”,也可以叫“入库明细”,
只要团队内部统一,
叫“小张”也行,
但别让审计听见,
否则他会写“命名不规范,风险极高”,
然后罚你写说明写到凌晨 2 点。
10 选型口诀
SKU 少、节奏快、无质检 → 一单到底
SKU 中、要记录、轻质检 → 两单制
SKU 多、质检严、要背锅 → 三单制
网络差、人工贵、差异容忍低 → 加暂存库位
口诀背完,
记得再加一句:
“方案没有银弹,只有背锅的人。”
11 小结
ASN 继续当预告片,
入库单继续当结婚证,
暂存库位继续当候车室,
你继续当产品经理,
在会议室里拍桌子:
“三单制,两单制,还是一单到底?”
声音回荡,
第十二部分 OMS与WMS:一套库存还是各玩各的?
——凌晨 2:00,数据中心比仓库还冷,
OMS 与 WMS 隔着 12 个时区对视,
像一对异地恋人,
中间隔着太平洋、防火墙、
以及财务总监的灵魂拷问:
“你俩到底共用一张床,还是各养各的猫?”

01 背景
客户在中国,仓库在全球,
OMS 要汇总给卖家看,
WMS 要本地给工人点,
一个负责“账面浪漫”,
一个负责“实物搬砖”。
于是问题被翻译成 KPI:
库存到底是一套,还是两套?
答案不选“对”,只选“适合”,
否则审计会让你把差异吃进损益,
吃到明年。
02 一套库存(统一模型)

做法:OMS 与 WMS 同一张表,
要么总部数据库,要么分布式强一致,
像合租一间公寓,
锅碗瓢盆共享,
谁多谁少实时刷新。
优点:
数据强一致,
老板随时打开仪表盘,
都能看到“零差异”的乌托邦,
审计点头,财务微笑,
大家提前下班。
缺点:
网络延迟 300ms,
拣货员扫码后原地蹦迪 0.3 秒,
高峰并发时,
事务锁像早高峰地铁,
谁都出不来,
仓库从“高效”变“高塞”。
结论:
仓库少、网络好、差异零容忍,
可以一套,
否则就是“用爱发电”,
电没了,差异就燎原。
03 两套库存(分离模型)

做法:OMS 记逻辑账,WMS 记物理账,
两边用单据对账,
像异地恋,每天发“今日流水”报平安,
差异靠“明天再对”来原谅。
优点:
WMS 本地数据库,毫秒响应,
叉车像 F1,扫码像开挂;
OMS 自己玩汇总,
想怎么汇总就怎么汇总,
不用担心锁表。
缺点:
单据同步若掉链子,
差异就像前任的未读消息,
越积越多,
直到月底爆发成“盘亏惊喜”。
结论:
仓库多、网络烂、性能要秒回,
就选两套,
但要接受“最终一致”的恋爱观,
别问“为什么你账上还有 100,
我仓库只剩 90”,
问就是“还在路上”。
04 同步机制
统一模型靠事务,
分离模型靠单据:
入库单、出库单、调整单,
三张单像三餐,
少吃一顿就饿差异。
单据必须幂等,
否则重试一次,
库存就多出 100,
财务会把你当“重复收款”处理。
消息队列要重试、要监控、要对账,
像异地恋的每日定位,
少发一条,
对方就怀疑你在“差异”别人。
05 一致性的代价
统一模型:延迟换一致,
延迟高到拣货员开始数心跳,
老板就拍桌子:
“我要毫秒!”
分离模型:差异换速度,
差异多到财务开始数眼泪,
老板又拍桌子:
“我要零差异!”
产品经理夹在中间,
像婚姻调解师,
只能劝:
“要么忍延迟,要么忍差异,
两头都忍,那是上帝。”
06 批次与序列号
统一模型下,
OMS 能直接指定“我要 LT-20250618-001 批次”,
像点名道姓要前任复合;
分离模型下,
OMS 只能喊“我要 SKU123 100 件”,
批次由 WMS 随机分配,
像盲盒恋爱,
开到谁是谁。
若客户非要指定批次,
需额外接口回查,
查不到就人工协调,
协调失败就——
“亲爱的,批次已售罄,
要不要试试新款?”
07 对账
分离模型必须日对账,
对账脚本像深夜闹钟,
每天 04:00 叮一声,
把 OMS 与 WMS 的余额拉通比对,
差异大于 0.1%,
自动发邮件:
“今日差异 87 件,请自查。”
自查不出来,
就写“说明”:
“疑似昨日单据回传失败,
已补推,已调整,已写检讨。”
检讨写多了,
就会变成 SOP:
“差异常有,而解释不常有。”
08 选型口诀
仓库 < 5,网络专线,差异零容忍 → 统一模型
仓库 > 5,跨国公网,性能优先 → 分离模型
业务简单,批次无所谓 → 统一模型
业务复杂,指定批次成性 → 分离模型 + 批次回查接口
技术团队强,DBA 成群 → 统一模型
技术团队弱,DevOps 靠运气 → 分离模型
把口诀背完,
再加一句:
“没有银弹,只有背锅,
选好之后,
差异和延迟,
总有一个陪你熬夜。”
09 小结
OMS 与 WMS 继续对视,
一个说“我爱你账面”,
一个说“我爱你实物”,
中间隔着差异、延迟、
以及一张“日对账报表”。
他们最终握手,
像一台加班的冰箱,
发光但不发热,
把“晚安”写成“今日库存已对齐”,
然后继续制冷,
等下一次
“为什么你少了一千件?”
等下一次
“因为爱情有时差。”
.preview-wrapper pre::before { position: absolute; top: 0; right: 0; color: #ccc; text-align: center; font-size: 0.8em; padding: 5px 10px 0; line-height: 15px; height: 15px; font-weight: 600; } .hljs.code__pre > .mac-sign { display: flex; } .code__pre { padding: 0 !important; } .hljs.code__pre code { display: -webkit-box; padding: 0.5em 1em 1em; overflow-x: auto; text-indent: 0; } h2 strong { color: inherit !important; }
本文使用 文章同步助手 同步