# WMS 微服务实现总结 ## ✅ 已完成的工作 ### 1️⃣ 基础服务 (cpte-wms-basic-service) #### Entity 实体类(4 个) - ✅ `Item.java` - 物料实体 - ✅ `Area.java` - 库区实体 - ✅ `Point.java` - 库位实体 - ✅ `Container.java` - 容器实体 #### Mapper 接口(4 个) - ✅ `ItemMapper.java` - ✅ `AreaMapper.java` - ✅ `PointMapper.java` - ✅ `ContainerMapper.java` #### Service 接口和实现(8 个) - ✅ `IItemService.java` + `ItemServiceImpl.java` - ✅ `IAreaService.java` + `AreaServiceImpl.java` - ✅ `IPointService.java` + `PointServiceImpl.java` - ✅ `IContainerService.java` + `ContainerServiceImpl.java` #### Controller(1 个已完成) - ✅ `ItemController.java` - 物料管理(增删改查、分页查询) ### 2️⃣ 入库服务 (cpte-wms-service\cpte-wms-inbound-service) 待实现: - ⏳ 入库单 Entity - ⏳ 入库单 DTO - ⏳ 入库单 Controller - ⏳ Feign 调用基础服务 --- ## 📋 接下来要实现的内容 ### 第一步:完成基础服务的 Controller 1. **AreaController** - 库区管理 - 新增库区 - 修改库区 - 删除库区 - 查询库区(分页、详情) 2. **PointController** - 库位管理 - 新增库位 - 修改库位 - 删除库位 - 查询库位(分页、详情) 3. **ContainerController** - 容器管理 - 新增容器 - 修改容器 - 删除容器 - 查询容器(分页、详情) ### 第二步:实现入库服务 1. **创建入库单 Entity** - 入库单主表 - 入库单明细表 2. **创建 Feign Client** - 调用基础服务查询物料 - 调用基础服务查询库位 3. **实现入库 Controller** - 新增入库单 - 审核入库单 - 执行入库 - 查询入库单 ### 第三步:数据库建表脚本 创建 SQL 建表脚本,包括: - wms_basic_item(物料表) - wms_basic_area(库区表) - wms_basic_point(库位表) - wms_basic_container(容器表) - wms_inbound_order(入库单主表) - wms_inbound_order_detail(入库单明细表) --- ## 🎯 业务流程说明 ### 入库业务流程 ``` 1. 创建入库单 ↓ 2. 调用基础服务查询物料信息(验证物料是否存在) ↓ 3. 调用基础服务查询库位信息(验证库位是否存在) ↓ 4. 保存入库单 ↓ 5. 审核入库单 ↓ 6. 执行入库(调用库存服务增加库存) ↓ 7. 调用调度服务创建 AGV 上架任务 ``` ### Feign 服务间调用 ```java // 入库服务中通过 Feign 调用基础服务 @Autowired private BasicServiceClient basicServiceClient; // 查询物料信息 Result itemResult = basicServiceClient.getItemById(itemId); if (!itemResult.isSuccess()) { return Result.error("物料不存在"); } // 查询库位信息 Result pointResult = basicServiceClient.getPointById(pointId); if (!pointResult.isSuccess()) { return Result.error("库位不存在"); } ``` --- ## 📊 数据库表结构(待创建) ### 基础数据表 ```sql -- 物料表 CREATE TABLE wms_basic_item ( id VARCHAR(64) PRIMARY KEY, item_code VARCHAR(50) NOT NULL COMMENT '物料编码', item_name VARCHAR(100) NOT NULL COMMENT '物料名称', item_spec VARCHAR(100) COMMENT '规格型号', item_model VARCHAR(100) COMMENT '物料模型', item_unit VARCHAR(20) COMMENT '单位', item_category VARCHAR(50) COMMENT '物料分类', item_brand VARCHAR(50) COMMENT '品牌', safe_stock INT DEFAULT 0 COMMENT '安全库存', min_stock INT DEFAULT 0 COMMENT '最小库存', max_stock INT DEFAULT 0 COMMENT '最大库存', status INT DEFAULT 1 COMMENT '状态', remark VARCHAR(500) COMMENT '备注', create_by VARCHAR(50), create_time DATETIME, update_by VARCHAR(50), update_time DATETIME, del_flag INT DEFAULT 0 ); -- 库区表 CREATE TABLE wms_basic_area ( id VARCHAR(64) PRIMARY KEY, area_code VARCHAR(50) NOT NULL, area_name VARCHAR(100) NOT NULL, area_type INT COMMENT '库区类型', warehouse_code VARCHAR(50), warehouse_name VARCHAR(100), manager VARCHAR(50), phone VARCHAR(20), area_size DOUBLE COMMENT '面积', capacity INT COMMENT '库容', status INT DEFAULT 1, remark VARCHAR(500), create_by VARCHAR(50), create_time DATETIME, update_by VARCHAR(50), update_time DATETIME, del_flag INT DEFAULT 0 ); -- 库位表 CREATE TABLE wms_basic_point ( id VARCHAR(64) PRIMARY KEY, point_code VARCHAR(50) NOT NULL, point_name VARCHAR(100) NOT NULL, point_type INT COMMENT '库位类型', area_code VARCHAR(50), area_name VARCHAR(100), warehouse_code VARCHAR(50), warehouse_name VARCHAR(100), row VARCHAR(20) COMMENT '排', column VARCHAR(20) COMMENT '列', level VARCHAR(20) COMMENT '层', max_length DOUBLE COMMENT '最大长度', max_width DOUBLE COMMENT '最大宽度', max_height DOUBLE COMMENT '最大高度', max_weight DOUBLE COMMENT '最大重量', current_stock INT DEFAULT 0 COMMENT '当前库存', status INT DEFAULT 1, remark VARCHAR(500), create_by VARCHAR(50), create_time DATETIME, update_by VARCHAR(50), update_time DATETIME, del_flag INT DEFAULT 0 ); -- 容器表 CREATE TABLE wms_basic_container ( id VARCHAR(64) PRIMARY KEY, container_code VARCHAR(50) NOT NULL, container_name VARCHAR(100) NOT NULL, container_type INT COMMENT '容器类型', container_spec VARCHAR(100) COMMENT '容器规格', length DOUBLE COMMENT '长度', width DOUBLE COMMENT '宽度', height DOUBLE COMMENT '高度', self_weight DOUBLE COMMENT '自重', max_weight DOUBLE COMMENT '最大载重', material INT COMMENT '材质', color VARCHAR(20) COMMENT '颜色', supplier VARCHAR(100) COMMENT '供应商', status INT DEFAULT 1, remark VARCHAR(500), create_by VARCHAR(50), create_time DATETIME, update_by VARCHAR(50), update_time DATETIME, del_flag INT DEFAULT 0 ); ``` ### 入库业务表 ```sql -- 入库单主表 CREATE TABLE wms_inbound_order ( id VARCHAR(64) PRIMARY KEY, order_no VARCHAR(50) NOT NULL COMMENT '入库单号', order_type INT COMMENT '入库类型', source_type INT COMMENT '来源类型', source_no VARCHAR(50) COMMENT '来源单号', warehouse_code VARCHAR(50) COMMENT '仓库编码', warehouse_name VARCHAR(100) COMMENT '仓库名称', total_quantity INT DEFAULT 0 COMMENT '总数量', total_boxes INT DEFAULT 0 COMMENT '总箱数', status INT DEFAULT 0 COMMENT '状态', supplier_code VARCHAR(50) COMMENT '供应商编码', supplier_name VARCHAR(100) COMMENT '供应商名称', arrival_date DATETIME COMMENT '到货日期', plan_inbound_date DATETIME COMMENT '计划入库日期', actual_inbound_date DATETIME COMMENT '实际入库日期', remark VARCHAR(500) COMMENT '备注', create_by VARCHAR(50), create_time DATETIME, update_by VARCHAR(50), update_time DATETIME, del_flag INT DEFAULT 0 ); -- 入库单明细表 CREATE TABLE wms_inbound_order_detail ( id VARCHAR(64) PRIMARY KEY, order_id VARCHAR(64) NOT NULL COMMENT '入库单 ID', order_no VARCHAR(50) NOT NULL COMMENT '入库单号', item_id VARCHAR(64) NOT NULL COMMENT '物料 ID', item_code VARCHAR(50) NOT NULL COMMENT '物料编码', item_name VARCHAR(100) NOT NULL COMMENT '物料名称', item_spec VARCHAR(100) COMMENT '规格', expected_quantity INT NOT NULL COMMENT '应收数量', actual_quantity INT DEFAULT 0 COMMENT '实收数量', unit VARCHAR(20) COMMENT '单位', batch_no VARCHAR(50) COMMENT '批次号', production_date DATETIME COMMENT '生产日期', expiry_date DATETIME COMMENT '有效期', point_id VARCHAR(64) COMMENT '库位 ID', point_code VARCHAR(50) COMMENT '库位编码', status INT DEFAULT 0 COMMENT '状态', remark VARCHAR(500), create_by VARCHAR(50), create_time DATETIME, update_by VARCHAR(50), update_time DATETIME, del_flag INT DEFAULT 0 ); ``` --- ## 🚀 下一步行动 请告诉我是否需要我继续实现: 1. ✅ 基础服务的其他 Controller(Area、Point、Container) 2. ✅ 入库服务的完整实现(Entity、DTO、Controller) 3. ✅ Feign 调用集成 4. ✅ 数据库建表脚本 或者你有其他优先级安排? --- ## 📖 相关文档 - [ApiFox 测试指南](APIFOX_TEST_GUIDE.md) - [Feign 使用指南](FEIGN_USAGE.md) - [本地开发配置](LOCAL_DEV_FEIGN_CONFIG.md)