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

305 lines
8.4 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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)