|
|
||
|---|---|---|
| .. | ||
| cpte-wms-api | ||
| cpte-wms-basic-service | ||
| cpte-wms-inbound-service | ||
| cpte-wms-inventory-service | ||
| cpte-wms-outbound-service | ||
| cpte-wms-schedule-service | ||
| ARCHITECTURE.md | ||
| README.md | ||
| pom.xml | ||
README.md
WMS 微服务架构说明
项目概述
本项目将 WMS(仓库管理系统)拆分为五个独立的微服务模块,实现业务解耦和独立部署。
微服务模块划分
1. WMS 基础服务 (cpte-wms-basic-service)
- 端口: 8001
- 职责: 提供 WMS 系统的基础数据管理
- 包含模块:
- 基础数据管理(区域、物品、点位)
2. WMS 调度服务 (cpte-wms-schedule-service)
- 端口: 8005
- 职责: 提供 AGV 和输送线调度功能
- 包含模块:
- AGV 任务管理
- 海康 AGV 调度
- 特斯 AGV 调度
- 输送线管理
- 定时任务
3. WMS 入库服务 (cpte-wms-inbound-service)
- 端口: 8002
- 职责: 处理所有入库相关的业务流程
- 包含模块:
- ASN(预入库通知单)管理
- 收货登记
- 上架作业
- MOM 系统入库对接
4. WMS 出库服务 (cpte-wms-outbound-service)
- 端口: 8003
- 职责: 处理所有出库相关的业务流程
- 包含模块:
- 拣货单管理
- 拣货任务生成和分配
- 下架作业
- MOM 系统出库对接
5. WMS 库存服务 (cpte-wms-inventory-service)
- 端口: 8004
- 职责: 管理库存核心业务和库存流水
- 包含模块:
- 库存查询和管理
- 库存流水记录
- 盘点计划执行
- 库存统计分析
- 序列号管理
6. WMS 调度服务 (cpte-wms-schedule-service)
- 端口: 8005
- 职责: AGV 和输送线设备调度
- 包含模块:
- AGV 任务调度
- 设备对接(海康、特斯)
- 输送线控制
- 定时任务
技术栈
- 框架: Spring Boot 3.5.5
- 持久层: MyBatis-Plus 3.5.12
- 数据库: MySQL 8.0+
- 缓存: Redis 5.0+
- 连接池: Druid 1.2.24
- API 文档: Knife4j 4.5.0
- 工具类: Hutool 5.8.25
快速开始
环境要求
- JDK 17+
- Maven 3.6+
- MySQL 8.0+
- Redis 5.0+
配置说明
-
数据库配置
- 修改各服务
src/main/resources/application-dev.yml - 配置数据库连接信息
- 配置 Redis 连接信息
- 修改各服务
-
端口配置
- 基础服务:8001
- 入库服务:8002
- 出库服务:8003
- 库存服务:8004
- 调度服务:8005
启动顺序
- 启动数据库和 Redis
- 启动 WMS 基础服务
- 启动 WMS 调度服务
- 启动 WMS 库存服务
- 启动 WMS 入库服务
- 启动 WMS 出库服务
启动命令
# 进入项目目录
cd cpte-wms-service
# 编译项目
mvn clean package -DskipTests
# 启动基础服务
java -jar cpte-wms-basic-service/target/cpte-wms-basic-service-3.8.3.jar
# 启动入库服务
java -jar cpte-wms-inbound-service/target/cpte-wms-inbound-service-3.8.3.jar
# 启动出库服务
java -jar cpte-wms-outbound-service/target/cpte-wms-outbound-service-3.8.3.jar
# 启动库存服务
java -jar cpte-wms-inventory-service/target/cpte-wms-inventory-service-3.8.3.jar
# 启动调度服务
java -jar cpte-wms-schedule-service/target/cpte-wms-schedule-service-3.8.3.jar
API 访问地址
启动成功后,访问各服务的 API 文档:
- 基础服务: http://localhost:8001/cpte-wms-basic/doc.html
- 入库服务: http://localhost:8002/cpte-wms-inbound/doc.html
- 出库服务: http://localhost:8003/cpte-wms-outbound/doc.html
- 库存服务: http://localhost:8004/cpte-wms-inventory/doc.html
- 调度服务: http://localhost:8005/cpte-wms-schedule/doc.html
服务间接口调用
服务间调用方式
- 同步调用: 使用 RestTemplate 或 WebClient
- 异步消息: 使用消息队列(可选)
接口示例
// 调用基础服务获取物品信息
String itemUrl = "http://localhost:8001/cpte-wms-basic/api/wms/basic/item/{id}";
RestTemplate restTemplate = new RestTemplate();
ItemResponse item = restTemplate.getForObject(itemUrl, ItemResponse.class, itemId);
// 调用库存服务查询库存
String stockUrl = "http://localhost:8004/cpte-wms-inventory/api/wms/inventory/query";
StockQueryDTO queryDTO = new StockQueryDTO();
StockResponse stock = restTemplate.postForObject(stockUrl, queryDTO, StockResponse.class);
数据库设计
方案一:共享数据库(推荐)
所有微服务共享同一个数据库,通过表前缀区分:
wms_basic_*- 基础服务表wms_inbound_*- 入库服务表wms_outbound_*- 出库服务表wms_inventory_*- 库存服务表
方案二:独立数据库
每个微服务使用独立的数据库,通过服务间调用或消息队列进行数据交互。
开发指南
代码迁移
从 cpte-module-wms 模块迁移代码时,请遵循以下规则:
- 基础服务: 迁移
base/,agvTask/,hikAgv/,tesAgv/,conveyorLine/目录 - 入库服务: 迁移
receive/目录 - 出库服务: 迁移
shipping/目录 - 库存服务: 迁移
inventory/,inventoryLog/,count/目录
包命名规范
org.jeecg.modules.wms.basic.* # 基础服务
org.jeecg.modules.wms.inbound.* # 入库服务
org.jeecg.modules.wms.outbound.* # 出库服务
org.jeecg.modules.wms.inventory.* # 库存服务
注意事项
- 原 WMS 模块保留:
cpte-module-wms模块保留作为参考,不要删除 - 数据一致性: 服务间调用时注意数据一致性和事务处理
- 接口幂等性: 确保关键接口支持幂等性
- 错误处理: 完善服务间调用的错误处理和重试机制
- 日志记录: 记录详细的服务间调用日志,便于问题排查
后续优化
- 服务治理: 引入 Nacos 作为服务注册与配置中心
- API 网关: 引入 Spring Cloud Gateway 统一入口
- 链路追踪: 引入 SkyWalking 进行链路追踪
- 消息队列: 引入 RabbitMQ/RocketMQ 实现异步解耦
- 分布式事务: 引入 Seata 处理分布式事务
联系方式
如有问题,请联系开发团队。