1. 立项背景和目标
手机工厂因业务规模扩大,原有的仓储管理模式难以应对手机及配件日益增长的库存复杂度和作业效率要求。为提升仓储运营效率、降低人工出错成本并增强库存准确性,需要构建一套覆盖全业务流程的WMS(仓储管理系统)。系统需贯穿货物入库、存储、出库到库存管理的完整链路,实现仓储作业的标准化、自动化与数字化,同时对接上层业务系统与工厂产线,保障7x24小时稳定支撑生产。
2. 软件功能、核心功能模块的介绍
系统包含基础数据管理(货品/库位/规则)、业务规则配置、库存管理、入库管理(收货/上架)、在库管理(盘点/移位/冻结)、出库管理(需求创建/分配/拣选/复核)、报表管理及单据打印等核心模块。出库全流程是本系统关键链路,从接收出库需求、波次分配、拣货任务生成到复核确认和JasperPrint单据打印,形成完整闭环。系统同时适配Web端后台管理与手持端APP作业,满足现场仓管员的移动操作需求。
3. 业务流程、功能路径描述
以出库业务为例:上游系统下发生产出库需求后,WMS接收需求并依据业务规则(如先进先出、批次策略)自动分配库存,生成拣选任务推送至手持端APP;仓管员通过手持端APP领取任务并扫描库位/货品条码进行拣选作业,系统实时校验防止错拣漏拣;完成后提交复核,复核通过后触发JasperPrint打印出库单据,同时更新库存并回传数据至上游系统,最终将物料配送至产线。整条路径涵盖"需求接收→库存分配→任务生成→PDA拣选→复核→单据打印→库存扣减→数据同步"全流程。
1. 整体架构和设计思路,不同模块使用的技术栈
系统采用SpringCloud微服务架构,以SpringBoot作为基础服务框架,MyBatis负责数据持久层操作,MySQL作为核心业务数据库(辅以Redis缓存热点数据提升查询性能),RocketMQ用于异步解耦出库等长流程业务,JasperPrint实现单据打印模板渲染,前端分别采用React(PC管理端)和适配移动端的H5技术(手持端APP)。整体设计上,按业务领域拆分出库、入库、库存、基础数据等微服务模块,通过OpenFeign完成服务间调用,使用RocketMQ将出库主流程与单据生成、数据同步等下游操作异步化解耦,提高系统吞吐量和响应速度。
2. "我"的负责模块和结果
我负责系统整体数据库表结构设计与索引优化、后端接口开发、外部系统对接,并核心主导出库全流程功能开发(覆盖需求创建、分配、拣选、复核、单据打印全链路),同时基于React开发前端业务页面并完成Web端与手持端APP的全流程联调。结果上,系统上线后连续三年无重大生产事故;采用RocketMQ异步化出库流程并优化SQL及索引,单据处理效率提升30%,核心查询接口响应速度提升60%;手持端APP适配与单据打印功能落地后,现场操作报错降低75%,单据人工出错率降至0.4%,库存账实准确率稳定在99%以上,有效支撑工厂不间断生产。
3. "我"遇到的难点、坑,和解决方案
难点1:出库流程长、数据库压力大。出库涉及需求校验、库存锁定、任务生成、状态流转、单据打印等多步操作,同步执行时数据库连接占用时间长,高峰期易出现超时与性能瓶颈。解决方案:引入RocketMQ将非关键下游操作(如单据打印、数据同步)异步化,主流程仅锁定库存并生成任务即返回,同时梳理出库相关SQL并增加联合索引,将单据处理效率提升30%,核心查询接口响应速度提升60%。
难点2:手持端APP现场作业易出错。仓管员在嘈杂环境中使用手持端APP进行拣选扫描时,常因误扫或漏扫导致数据错误,影响账实一致性。解决方案:在APP端增加扫描结果的实时校验与防错提示(如库位与货品不匹配时立即告警并阻止提交),同时优化扫描交互流程、减少冗余点击操作,最终将现场操作报错降低75%。
难点3:大文件传输场景下的稳定性问题(来自应急安全云平台项目):设备更新包体积超过500MB,HTTP上传极易超时失败。解决方案:实现大文件分片上传+断点续传机制,将大包切分为多个小片逐片上传并记录状态,失败后可从中断片恢复,上传成功率提升至98%。