WMS仓储管理系统是一套基于Java Spring Boot和Vue3技术栈开发的现代化智能仓储管理解决方案。系统围绕"采购入库-物流-收货-入库-质检-上架"的完整业务流程,提供端到端的仓储作业管理服务。
核心业务模块包括:
采购订单管理:支持采购计划制定、订单创建、审核流程、供应商协同等功能,实现采购全生命周期管理。系统提供灵活的审核工作流,支持多级审批和并行审核,确保采购决策的规范性和效率。
物流协调管理:集成第三方物流公司资源,提供物流订单创建、运输跟踪、状态更新等功能。系统支持多种物流方式(供应商配送、第三方物流、自提),实现物流信息的实时同步和可视化监控。
智能收货作业:提供收货单自动生成、收货确认、差异处理等功能。系统支持扫码验货、批次管理、序列号跟踪,确保收货作业的准确性和可追溯性。收货完成后自动触发后续质检和入库流程。
自动化库存生成:收货确认后系统自动生成库存记录,智能分配收货暂存区库位。采用就近原则和容量优化算法,确保库存分配的合理性。支持批次管理、有效期控制、库存状态管理等精细化功能。
质检流程管控:自动创建质检任务,支持抽检计划、质检标准配置、检验结果记录。系统提供质检位智能分配,自动生成库存转移任务,实现从收货暂存区到质检区的无缝衔接。
任务调度系统:提供智能任务分配、作业路径优化、实时监控等功能。支持移动端PDA作业,实现任务的可视化管理和绩效分析。
系统特色功能:
编码规则管理:支持业务单据的统一编码规范
字典数据管理:提供灵活的业务参数配置
权限控制:基于RBAC的细粒度权限管理
多租户支持:满足企业级多组织架构需求
移动端支持:提供PDA端作业界面,提升现场作业效率
1. 整体架构和设计思路
系统采用前后端分离的微服务架构设计,后端基于Spring Boot 2.7+框架,使用MyBatis-Plus作为ORM框架,PostgreSQL作为主数据库。前端采用Vue3 + TypeScript + Element Plus技术栈,提供现代化的用户交互体验。
架构设计遵循DDD领域驱动设计理念,按业务域划分服务模块,每个模块包含完整的Controller-Service-Mapper三层架构。使用Spring事务管理确保数据一致性,采用@Transactional注解实现声明式事务控制。
2. "我"的负责模块和结果
负责核心业务流程的端到端实现,包括采购管理、物流协调、收货作业、库存生成、质检管控等关键模块。
主要实现成果:
设计并实现了完整的采购订单管理流程,支持多状态流转和审核机制
开发了智能库位分配策略,实现收货暂存区优先分配和容量优化
构建了自动化库存生成引擎,支持批次管理和序列号跟踪
实现了质检任务自动创建和库存转移调度功能
建立了统一的编码规则管理体系,支持业务单据的标准化编码
技术亮点:
使用策略模式实现库位分配算法,支持多种分配策略的灵活切换
采用事件驱动架构,通过Spring事件机制实现业务流程的松耦合
实现了ERP物料类型到WMS库存分类的智能映射机制
使用@Lazy注解解决服务间循环依赖问题,确保系统稳定性
3. "我"遇到的难点、坑,和解决方案
难点1:循环依赖问题
在实现库存生成服务时,ReceiptOrderService和InventoryGenerationService之间出现循环依赖,导致Spring容器无法正常启动。
解决方案:使用@Lazy注解延迟加载依赖的Bean,并重新设计接口参数传递方式,避免服务间的直接循环调用。
难点2:库位分配策略优化
初始实现中库存总是分配到存储位而非收货暂存区,经排查发现是仓库ID硬编码导致的。
解决方案:重构库位分配策略,实现动态仓库ID获取,优先分配收货暂存区库位,并建立完善的降级机制。
难点3:数据库字段类型不一致
在实现过程中遇到前端字典值(String)与数据库库位类型(Integer)不匹配的问题。
解决方案:统一数据类型定义,修正API接口参数类型,确保前后端数据交互的一致性。
难点4:事务管理复杂性
收货确认涉及多表操作和状态更新,需要保证数据的强一致性。
解决方案:采用声明式事务管理,合理设置事务隔离级别和传播机制,使用try-catch进行异常处理和事务回滚。
通过系统性的技术选型、模块化的架构设计和完善的异常处理机制,最终实现了一套功能完整、性能稳定、易于维护的现代化仓储管理系统。