8.4 KiB
8.4 KiB
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
-
AreaController - 库区管理
- 新增库区
- 修改库区
- 删除库区
- 查询库区(分页、详情)
-
PointController - 库位管理
- 新增库位
- 修改库位
- 删除库位
- 查询库位(分页、详情)
-
ContainerController - 容器管理
- 新增容器
- 修改容器
- 删除容器
- 查询容器(分页、详情)
第二步:实现入库服务
-
创建入库单 Entity
- 入库单主表
- 入库单明细表
-
创建 Feign Client
- 调用基础服务查询物料
- 调用基础服务查询库位
-
实现入库 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 服务间调用
// 入库服务中通过 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("库位不存在");
}
📊 数据库表结构(待创建)
基础数据表
-- 物料表
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
);
入库业务表
-- 入库单主表
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
);
🚀 下一步行动
请告诉我是否需要我继续实现:
- ✅ 基础服务的其他 Controller(Area、Point、Container)
- ✅ 入库服务的完整实现(Entity、DTO、Controller)
- ✅ Feign 调用集成
- ✅ 数据库建表脚本
或者你有其他优先级安排?