1、立项背景和目标
某中型制造企业拥有3个仓库、超过5000种SKU(库存保有单位),日均出入库订单量约2000单。在系统上线前,企业依赖Excel表格和纸质单据进行库存管理,存在数据不实时、盘点效率低、拣货错误率高等问题-34。具体痛点包括:库存数据更新滞后导致超卖或断货频发;人工拣货平均耗时15分钟/单,错误率达3%;每月盘点需要停产2天,耗费大量人力。项目目标是构建一套覆盖“入库→存储→出库→盘点→智能调度”全链路的企业级WMS解决方案,实现库存数据实时化、作业流程标准化、运营决策数据化。
2、软件功能、核心功能模块的介绍
系统包含六大核心模块:
(1)入库管理模块:支持采购入库、退货入库、生产入库等多种入库类型。通过PDA扫码完成收货、质检、上架全流程,自动分配推荐库位,入库效率提升60%。
(2)出库管理模块:支持订单拣货、批量出库。系统根据先进先出(FIFO)原则自动推荐拣货库位,生成最优拣货路径。支持波次拣货、单品拣货等多种策略。
(3)库存管理模块:实时监控各仓库、各货位的库存数量、库存状态(良品/残品/冻结)。支持库存预警(安全库存上下限)、库存冻结与解冻、库存移位等操作。
(4)盘点管理模块:支持循环盘点、动碰盘点、全面盘点三种模式。通过PDA扫描货位和商品条码,自动比对系统库存与实盘数据,生成盘点差异报表。
(5)报表分析模块:提供库存周转率分析、出入库趋势统计、仓库作业效率分析等多维度数据看板,帮助管理层进行数据驱动决策。
(6)系统管理模块:包含用户管理、角色权限管理、操作日志、系统配置等功能,基于RBAC(基于角色的访问控制)模型实现精细化权限控制。
3、业务流程、功能路径描述
核心业务流程为“入库→存储→出库→盘点”闭:
入库流程:供应商送货→仓库收货员PDA扫码收货→质检员检验(合格/拒收)→系统自动分配推荐库位→上架员确认上架→库存实时更新→生成入库单。
出库流程:销售订单下达→系统锁定库存→生成拣货任务→PDA获取拣货任务→按系统推荐路径拣货→复核员扫码复核→出库确认→库存扣减→生成出库单。
盘点流程:管理员创建盘点任务→PDA下载盘点任务→按货位逐项扫描盘点→数据上传→系统自动比对生成差异表→主管审核确认→库存调整。
1、整体架构和设计思路,不同模块使用的技术栈
系统采用前后端分离架构,前端负责界面渲染与用户交互,后端提供RESTful API服务:
前端层:基于Vue.js 3框架构建,结合Element Plus UI组件库实现响应式管理界面。使用Vue Router管理路由、Pinia管理状态,Axios封装HTTP请求。前端适配PC端Web浏览器及移动端PDA设备。
后端层:采用Spring Boot 2.7框架搭建微服务模块,使用Spring Security + JWT实现身份认证与权限校验。按业务领域拆分为入库服务、出库服务、库存服务、盘点服务、报表服务五个模块,各模块通过Feign进行服务间调用。
数据层:使用MySQL 8.0作为主数据库存储业务数据,通过MyBatis-Plus实现ORM映射。使用Redis作为缓存层,缓存热点数据(如商品信息、库存快照)以提升查询性能。读写分离设计,报表查询走只读从库,保障核心业务性能。
设备对接层:通过WebSocket与PDA手持终端保持长连接,实现扫码数据的实时推送与任务下发。
2、“我”的负责模块和结果(尽可能量化)
我在该项目中担任核心后端开发工程师,负责以下工作:
库存管理模块设计与开发:设计了基于货位+批次的库存模型,支持多仓库、多货位的精细化库存管理。开发了库存扣减、库存冻结、库存移位等核心接口共计23个RESTful API。上线后库存数据准确率从78%提升至99.6%。
缓存架构设计与优化:使用Redis设计多级缓存策略,将商品信息、库存快照等高频查询数据的接口响应时间从平均320ms降至45ms,降幅达86%。
拣货路径算法实现:基于仓库货位布局,实现了最短路径拣货算法,将单均拣货时间从15分钟缩短至6分钟,拣货效率提升60%。
数据库设计与性能优化:设计了包含20+张表的数据库模型,针对高频写入场景(日均10万+条库存变动记录)进行了索引优化和分表策略设计,确保系统在日均2000单的业务量下稳定运行。
系统上线与交付:完成系统部署、数据迁移及用户培训,项目提前2周交付,获得客户验收通过。
3、“我”遇到的难点、坑,和解决方案
难点一:库存并发扣减导致数据不一致
在出库高峰期,多个订单可能同时扣减同一商品的库存,出现了超卖和库存负数的问题。解决方案:采用Redis分布式锁对同一商品的库存扣减操作进行串行化处理,结合数据库乐观锁(版本号机制)作为双重保障。同时将库存扣减操作改造为原子性的Redis Lua脚本执行,确保并发场景下的数据一致性。上线后未再发生超卖问题。