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

各业务模块(现在有10来个业务模块入口)统一调用Content类操作库存的变更。如果业务变更或库存模型(比如要引入安全库存什么的)直接调整具体的实现类即可不会相互影响。
边栏推荐
- The principle and source code interpretation of executor thread pool in concurrent programming
- STM32下载代码后出现无法再次下载的问题
- 【ROS入门教程】---- 03 单片机、PC主机、ROS通信机制
- MySql 触发器
- [论文阅读] TGANet: Text-guided attention for improved polyp segmentation
- CentOS7 实战部署MySQL8(二进制方式)
- 【ROS入门教程】---- 03 ROS工作空间与功能包
- compiler explorer
- Wechat applet to realize OCR scanning recognition
- 循环结构语句
猜你喜欢

About log traffic monitoring and early warning small project | flag log monitoring script
![[introduction to ROS] - 03 basic concepts and instructions of ROS](/img/d4/a9b49dddbe0be8b53acf71219d0959.png)
[introduction to ROS] - 03 basic concepts and instructions of ROS

招聘 | 南京 | TRIOSTUDIO 三厘社 – 室内设计师 / 施工图深化设计师 / 装置/产品设计师 / 实习生等

The principle and source code interpretation of executor thread pool in concurrent programming

logback日志框架

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

Google搜索为什么不能无限分页?

Centos7 actual deployment mysql8 (binary mode)

compiler explorer
[ROS tutorial] - 02 ROS installation
随机推荐
ViewPager和底部无线循环的小圆点
The file "setup" does not exist. What should I do?
时间相关-格式、运算、比较、转换
Teach you the front and back separation architecture (V) system authentication implementation
Qt线程与界面
Josephus problem_ Unidirectional circular linked list_ code implementation
Pirate OJ 448 luck draw
The principle and source code interpretation of executor thread pool in concurrent programming
logback日志框架
Serrures dans SQLSERVER
Some idle gossip
Locks in sqlserver
About log traffic monitoring and early warning small project | database management tool: migrate
Google搜索为什么不能无限分页?
网络基础(1)-----认识网络
Loop structure statement
[introduction to ROS] - 03 basic concepts and instructions of ROS
ADB loop output memory information to folder
Wechat applet to realize OCR scanning recognition
System interpretation: Authority Design Guide