背景
最近工作中做了一个盘点的需求,突然想到盘点本质就是核对信息的正确性然后修正错误的信息,而这与对账本质上是一样的。
今天这篇文章是工作中有感而发,另一方面也是说明抽象总结的重要性。
什么是盘点
盘点:定期或临时对库存商品进行清查、清点,从操作角度来说就是核对仓库现有实际数量和保管账上的数量。
在企业运行过程中由于实际操作经常会有货损(比如客户买了2件商品但是可能实际库存扣了3件或者商品报废等等),为了了解货物的流向且不让实际货物与账上数量差距越来越大就需要定期盘点。
怎么盘点
盘点时候需要比对仓库和账目上的商品状态,如下图所示:
所谓状态就包含 无/有(有多少),所以我们需要分别从两边触发进行比对,从上图场景来看意味着我们即要从仓库角度比对账目数据,同时也要从账目角度比对仓库。为什么要这样,其原因是如果只从仓库去比对账户,那么[d:7]这个条目是无法比对出来的。
关于对账
几年前做过对账系统,由于网络不可靠性我们需要核对 交易双方的订单的状态。比如支付系统与银行可能也会产生 (支付系统有银行没有)和(银行有而支付系统没有的情况),从状态角度来说,我们要比对状态就需要比对0/1-...N的情况,而0这种状态使我们考虑问题经常忽略的。
说在后面的画
盘点本身比较简单,但是我更想说当我们考虑状态问题的时候一定要对0这个状态有敏感度。
比如一个服务没有起来,变量没有传过来都是属于0这个状态。由于0状态无法把信息传递给对方,所以需要对方考虑这种容错情况。