wms数据库设计「微服务模块划分」
今天给大家普及一下wms数据库设计「微服务模块划分」相关知识,最近很多在问wms数据库设计「微服务模块划分」,希望能帮助到您。
编辑导语:设计WMS系统时,第一步就是在基础信息进行规划的设计,而WMS的基础信息主要就是对库区、货架、货位进行维护。本文作者从这些方面对WMS的基础信息模块设计进行了分析,一起来看一下吧。
在设计WMS系统时第一步就是在基础信息进行规划的设计,它非常简单,但是特别重要。
WMS的基础信息主要就是对库区、货架、货位进行维护,再次之前就需要先了解一下整个仓库的分布图。
上图是仓库的平面图,我们可以了解仓库的空间信息,但是仓库的基础信息包括空间信息、用户信息、商品信息。
空间信息主要包括:仓库、库存、货架、货位、容器、设备、月台用户信息主要包括:角色、用户、功能权限、数据权限商品信息主要包括:商品基本信息、包材一、空间信息1. 仓库仓库模块主要是对仓库信息进行维护,这一块的功能比较简单,具体仓库的基本信息如下(仅供参考):
在仓库信息中最终好的就是仓库地址和详细地址,这2个地址一般会作为商家的发货或者退货地址,具体的处理逻辑如下:
仓库地址一般具体到省市区街道,如:广东省广州市越秀区东山街道详细地址:这个控件一般是文本,由用户自行填写,填写的内容一般是具体到楼栋,门牌号然后系统将会将上述2个地址进行拼接,仓库地址 详细地址,作为商家的发货或者退货地址。
若业务比较复杂,可能需要新增一个“仓库类型”字段,将不同仓库按照自身属性进行区分,如:常温仓、低温仓、成品仓、半成品仓。
常温仓、低温仓在生鲜行业比较常见,但是具体将一个仓库作为常温和低温划分,这种情况比较少见,大部分就是一个仓库,将常温和低温按照库区划分。
2. 库区仓库的库区就是对仓库进行区域的划分,在不同的区域进行不同的作业。所以库区的信息维护相对仓库来说更加复杂一点,需要与仓库进行关联;同时库区按照自身属性,也分为不同的类型。库区信息维护如下(仅供参考):
常见的库区类型有:备货区、拣货区、暂存区、活动区、次品区。
成功添加库区的信息后不能编辑库区的类型和所属仓库2个字段的内容,因为仓库的进销存与这2个信息紧密关联,如:将拣货区修改成次品区,那么整个拣货区的产品都会变为次品,这样就会影响整个仓库的库存计算,出入库策略的受到影响,在销售端也会因为库存的影响销售(影响范围太广,个人建议不支持修改这2处信息)。
有同学就要问了,那么我不小心添加错了怎么办呢?个人建议做一个删除功能,可以对库区进行删除,删除需要判断该库区是否有产品,若有则不能删除。同时删除功能有一个用处就是,若仓库的库区面积重新划分,可以对原来的库区进行删除,然后重新添加。
根据公司业务可以考虑,是否需要“所属区域”字段,有些仓库有二楼、三楼,可以通过“所属区域”字段进行标准库区所在的楼层,后续在入库任务或者拣货任务时,可以根据该字段进行任务的划分,如:出库任务的产品分别在一楼和二楼,这样就可以通过该字段进行任务的拆分,分别派送给一二楼的拣货员。
一些WMS的产品,在添加库区时有“商品混放”、“ABC分类”等字段,如下图(大宝WMS):
“商品混放”、“ABC分类”这些规则,个人的建议是这些信息可以放到“货位”中进行维护,因为货位是库区中的最小单位,每个公司的业务又不相同,可能会出现这种场景:在同一个库区的不同货位,A货位支持商品混放,B货位不支持商品混放。
库区的排序字段这里根据个人的经验,可以和大佬做一个分享,方案可能并不成熟。
库区的排序字段主要用于“指引”,如:仓库有三个拣货区,且有N个拣货员负责这3个库区的拣货,公司希望拣货员都有1库区开始拣货,拣货完成后再到2库区进行拣货。这时系统就可以通过库区的排序字段来实现。
3. 货架仓库会在库区中放一些货架用来存放产品,不同货架的属性不同,作用也不同,如:专门用来拣货的拣货货架,用来存放的暂存货架,整个货架的信息维护如下图所示(仅供参考):
货架类型有拣货货架、暂存货架、次品货架、中转货架等等。在仓库中最常见的就是拣货货架,以拣货货架为例,货架的三维图如下所示:
拣货货架中的货位比较小,有的公司用纸箱代替,而暂存货架的货位通常比较大,可以用来存放较多的产品。
货架还可以与仓库中的巷道进行关联,标记货架所在的巷道,这样根据巷道、货架,可以画出库区的平面图,如下图所示:
如上图所示,一些货架会关联一条巷道,其他货架会关联2条巷道,所以根据货架所在的位置标注上和下的巷道。
4. 货位在所有基础信息中,最复杂的就是货架的信息维护,货位的基本信息如下(仅供参考):
货位的平面图如下:
货位的命名在行业内有一定的标准,命名规则为:库区-货架-层-库位,如:A-1-001-001。在此基础上命名规则可做一些微调,如:将货位所在的巷道加入命名规则。
货位中的一些信息说明:
1)ABC分类
各行各业都遵循28定律,电商同样如此,80%的销量由20%的产品产生,所以将这些产品归为A类,集中放在一个区域,减少拣货的路径;如何将产品按照ABC分类划分各公司的业务不同,标准也不同,但是常见的2个指标是利润和销量。
ABC分类本质上就是产品进行分层管理,是之前技术手段不足以对所有库存sku进行精细化管理的前提下的一个妥协措施。ABC不足之处很明显,就是对c类甚至是b类的关注度不足。随着企业信息化程度的提高,部分企业已经有能力对全品类进行同样精细化的管理了,也就不需要ABC分类管理了。
2)补货触发量和补货上限
当库位中的产品库存低于这个值,就触发补货,生成补货单,补货的量=补货上限-当前货位库存。
在设计补货的计算公式时,考虑是补货上限-当前货位库存,还是补货上限-当前货位可用库存,经过最终考量,最后觉得还是使用“当前货位库存”。因为订单下推到WMS,货位库存会被预占,如果没有拣货,订单被取消,那么占用的库存又被释放,这种场景在电商公司的概率并不低。这样种场景如果使用“可用库存”进行计算,会对货位库存补货进行误判。
3)货位的混放
商品混放:货位只能放一种产品或者某些分类的产品;避免特殊的产品放在一起,影响产品的特性,如:粉末状的产品和液体类的产品放在一起批次混放:仓库为了满足先进先出,在同一个货位只能存放一个入库批次的产品,所以在设置货位不允许批次混放这2个混放的设置,会直接影响上架策略的的货位分配,具体在上架策略中进行说明。
4)货位的尺寸和重量
尺寸和重量的管控,主要是对货位进行容积和重量管控,如:货位的产品不能超过多重,或货位上产品的体积和不能超过设定值。目前没有看到哪个仓库开管控好货位的容积,同事这一块研究得不深,就不展示说了。
5)货位排位层
排位层本质就是对货位进行定位,
排:代表第几排货架位:代表货位从左到右的位数,类似表格中的列层:代表货位从上到下的层数,类似表格中的横这是我参考某个友商的设计,觉得好用就直接套用了。
这样将货位的位置标注出来,最核心的功能就是为仓库规划路径。在整个仓库的作业时间最多的在拣货,而拣货作业时间最多的在走路。制定一个最短的拣货路径,能够节省拣货员的作业时间。制定路径的前提就是要知道货位的坐标定位,具体如何规划路径,涉及到拣货策略,在拣货篇章中说明。
5. 容器仓库需要对容器进行管控,容器维护的信息如下(仅供参考):
容器类型也有托盘、周转箱、拣货车。
容器的信息维护比较简单,复杂点在于容器的绑定和释放,在收货、拣货、出库时是否需要绑定容器?若绑定在什么时候释放?
以拣货为例,如果是波次拣货,那么在拣货前需要强制绑定拣货容器,当拣货任务完成后释放容器;如果是按单拣货,拣货容器不需要强制绑定,如:用户下单买了一台立式空调,这种大宗商品一般都是按单拣货,自然也不需要拣货容器,且仓库很难有这么大的拣货容器。
具体是不是在拣货任务完成后释放容器,可以根据自身仓库的业务进行设定。本人去友商的仓库参观,他们的业务是在完成了拣货后,会将拣货筐送到验货台,完成验货后释放容器。
6. 月台月台每个仓库都会有,但是只有大型的仓库会对月台进行管理,主要是对月台和车辆进行管理,进行排版调度,月台的信息维护如下(仅供参考):
月台作用有2个,主要用于收货和发货,如果公司有自己的车辆或者与供应商订单协同做的比较好,可以做一个月台的排班功能,指定什么仓库,在什么时候,哪个订单,哪个月台,哪辆车,进行出入库。
二、总结本文说了大量的“根据自身业务情况进行设计”,因为WMS本质是一个策略性质的产品,从A→B有无数种路径。从我待的几家公司看,没有一家公司的仓库业务完全一样,只有主业务大体相同。
留下几个问题:
文章中说了库区和仓库进行绑定后就不能编辑,那么货架,货架绑定仓库后能够被编辑吗?如果仓库中分为暂存区、拣货区,当拣货区库存不足时,能够直接从暂存区拣货吗?如果货位设置了“补货触发量和补货上限”,是该货位的所有产品都遵循该规则吗?如果货位的产品从A→B,依旧遵循该规则吗?本文由@koi 原创发布于人人都是产品经理,未经许可,禁止转载
题图来自 Unsplash, 基于 CC0 协议