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

8.4 KiB
Raw Blame History

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 服务间调用

// 入库服务中通过 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
);

🚀 下一步行动

请告诉我是否需要我继续实现:

  1. 基础服务的其他 ControllerArea、Point、Container
  2. 入库服务的完整实现Entity、DTO、Controller
  3. Feign 调用集成
  4. 数据库建表脚本

或者你有其他优先级安排?


📖 相关文档