当前位置:网站首页>库存管理与策略模式
库存管理与策略模式
2022-06-11 00:11:00 【程序员青菜】
库存管理是个难题,涉及到采购、销售、仓储、门店、网站订单各个环节,实物库存和系统库存很难保证完全一致,记得系统刚上线第一天,因为实物库存与导入系统的库存有差异,系统又做了限制系统库存必须大于0才允许销售普通订单,当时头都大了,和业务方商量后,立即决定如果库存不够无法销售就让收银员全部走预售单的流程,先保证系统能正常销售,然后后期盘点库存再做预售单的提货操作,然后第二天直接把库存限制放开,允许门店0库存销售,因为对门店来讲肯定都是客户拿到货了才到收银台结账,不存在没有实物库存的情况,但对库存管理还是要尽可能精准,这涉及到采购成本、财务、商品管控等一系列问题。
一、库存管理业务逻辑
系统中涉及到库存变更的操作主要有如下几种:
- 增加:门店采购商品入库
- 扣减:门店销售扣减出库
- 占用:预售单下单后需要预留库存
- 返还:退货/换货之后返回库存,相当于增加库存
- 调拨:门店之间调出调入库存变化
- 破损:破损审核后库存扣减
- 盘点:盘盈盘亏库存变动
系统中与库存值有关的概念主要有如下几种:
- 门店仓库实际库存
- 门店占用(预留)库存:虚拟库存,预售单占用库存
- 有效库存(门店可销售库存)
- 在途库存:国内打托后发往国外门店未收货及调拨中途的货货。
系统只要保证等式【有效库存 = 实际库存 - 占用库存】一直成立就不会有太大差错。
上面各业务模块都涉及到库存的变更,抽像出来主要有两种类型的库存变更,一种是实际库存和有效库存的变化,另外一种是预售单会额外涉及到预留库存的变化,这个如果写判断逻辑去处理,代码就会比较混乱,所以我们采用策略模式来解决这个问题。
PS:今天看了一篇文章讲到库存管理要分层:分成 销售层、调度层、仓库层,好复杂,我们这样垂直行业应该不需要做得这么复杂。
二、策略模式
策略模式:策略模式是针对一组算法(行为),将每一组算法(行为)封装到具有共同接口的独立的类中,降低代码耦合度。
策略模式的结构:
- 环境角色(Context):用来操作策略的上下文环境。
- 抽像策略角色(Strategy):抽像类给出具体策略所需的接口。
- 具体策略角色(ConcreteStrategy):每一种行为具体的实现。
系统库存策略类图如下:

各业务模块(现在有10来个业务模块入口)统一调用Content类操作库存的变更。如果业务变更或库存模型(比如要引入安全库存什么的)直接调整具体的实现类即可不会相互影响。
边栏推荐
- SQL audit | "cloud" users can use the SQL audit service with one click
- MySQL
- Win11 uninstall widget
- 最好的創意鼓工具:Groove Agent 5
- Block queue - delayedworkqueue Source Analysis
- 循环结构语句
- Small project on log traffic monitoring and early warning | environment and foundation 1
- 網絡基礎(1)-----認識網絡
- About log traffic monitoring and early warning small project | flag log monitoring script
- Summary of pytorch classification problems
猜你喜欢

How to guarantee the quality of real-time data, the cornerstone of the 100 million level search system (Youku Video Search)? v2020

Adapter mode

【ROS入门教程】---- 03 ROS基本概念及指令

【ROS入门教程】---- 01 ROS介绍

DevOps到底是什么意思?

【ROS入门教程】---- 03 单片机、PC主机、ROS通信机制

ViewPager和底部无线循环的小圆点

为什么使用 Golang 进行 Web 开发

CentOS7 实战部署MySQL8(二进制方式)

Logback log framework
随机推荐
Redis data has been overwritten
CentOS实战部署redis
How to ensure the sequence of messages, that messages are not lost or consumed repeatedly
WSL automatically updates the IP hosts file
A simple understanding of B tree
Adapter mode
Pirate OJ 448 luck draw
【ROS入门教程】---- 01 ROS介绍
87.(leaflet之家)leaflet军事标绘-直线箭头修改
Small project on log traffic monitoring and early warning | environment foundation 2
WPF basic controls
阿里云配置SLB(负载均衡)实例
Lucene mind map makes search engines no longer difficult to understand
[persistent problems of NVIDIA driver] - - /dev/sdax:clean, xxx/xxx files, xxx/xxx blocks - the most complete solution
配置化自定义实现1.实现接口,2.自定义配置3.默认配置
CentOS7 实战部署MySQL8(二进制方式)
Network foundation (1) -- understanding the network
[ROS tutorial] - 02 ROS installation
最好的创意鼓工具:Groove Agent 5
Complete uninstallation of MySQL under Linux