Cpte-Boot/cpte-wms-service/IMPLEMENTATION_SUMMARY.md

305 lines
8.4 KiB
Markdown
Raw Normal View History

2026-03-06 15:19:25 +08:00
# 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`
#### Controller1 个已完成)
-`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<Item> itemResult = basicServiceClient.getItemById(itemId);
if (!itemResult.isSuccess()) {
return Result.error("物料不存在");
}
// 查询库位信息
Result<Point> 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. ✅ 基础服务的其他 ControllerArea、Point、Container
2. ✅ 入库服务的完整实现Entity、DTO、Controller
3. ✅ Feign 调用集成
4. ✅ 数据库建表脚本
或者你有其他优先级安排?
---
## 📖 相关文档
- [ApiFox 测试指南](APIFOX_TEST_GUIDE.md)
- [Feign 使用指南](FEIGN_USAGE.md)
- [本地开发配置](LOCAL_DEV_FEIGN_CONFIG.md)