SHIPPING_PLAN_IMPLEMENTATION.md 7.0 KB

出货计划模块后端实现说明

概述

本文档说明了出货计划模块的后端实现,包括CRUD操作、销售出库功能等。

已实现的功能

1. 出货计划管理

  • ✅ 出货计划列表查询(分页)
  • ✅ 出货计划详情查询
  • ✅ 创建出货计划
  • ✅ 编辑出货计划
  • ✅ 删除出货计划
  • ✅ 销售出库(调用存储过程)

2. 涉及的数据表

  • ShippingPlan - 出货计划主表
  • ShippingPlanDetail - 出货计划明细表
  • ASNBOLShipperDetail - 销售发货明细表(关联查询)
  • crm_seorder - 销售订单表
  • crm_seorderentry - 销售订单明细表

文件结构

Controller层

yudao-order-server/src/main/java/cn/iocoder/yudao/module/order/controller/admin/delivery/
├── OrderDeliveryController.java          # 订单交付控制器(已更新)
└── vo/
    ├── ShippingPlanPageReqVO.java        # 出货计划分页请求VO(已存在)
    ├── ShippingPlanSaveReqVO.java        # 出货计划保存请求VO(已存在)
    ├── ShippingPlanRespVO.java           # 出货计划响应VO(已存在)
    ├── ShippingPlanListItemVO.java       # 出货计划列表项VO(新增)
    └── SalesOutboundReqVO.java           # 销售出库请求VO(新增)

Service层

yudao-order-server/src/main/java/cn/iocoder/yudao/module/order/service/
├── OrderDeliveryService.java             # 接口(已更新)
└── impl/
    └── OrderDeliveryServiceImpl.java     # 实现类(已更新)

DAL层

yudao-order-server/src/main/java/cn/iocoder/yudao/module/order/dal/
├── dataobject/
│   ├── ShippingPlanDO.java              # 出货计划实体(已存在)
│   └── ShippingPlanDetailDO.java        # 出货计划明细实体(已存在)
└── mysql/
    ├── ShippingPlanMapper.java          # 出货计划Mapper(已更新)
    ├── ShippingPlanDetailMapper.java    # 出货计划明细Mapper(已存在)
    └── OrderDeliveryMapper.java         # 订单交付Mapper(已更新)

Mapper XML

yudao-order-server/src/main/resources/mapper/order/
├── OrderDeliveryMapper.xml              # 订单交付SQL(已更新)
└── ShippingPlanMapper.xml               # 出货计划SQL(新增)

Convert层

yudao-order-server/src/main/java/cn/iocoder/yudao/module/order/convert/
└── OrderDeliveryConvert.java            # 对象转换器(已存在)

API接口说明

1. 出货计划列表查询

接口: GET /order/shipping-plan/list

权限: order:shipping-plan:query

请求参数:

{
  "pageNo": 1,
  "pageSize": 20,
  "lotSerial": "出货编号(可选)",
  "status": "状态(可选)",
  "consignee": "收货人(可选)"
}

响应:

{
  "code": 0,
  "data": {
    "list": [...],
    "total": 100
  }
}

2. 获取出货计划详情

接口: GET /order/shipping-plan/{id}

权限: order:shipping-plan:query

路径参数: id - 出货计划主键

3. 创建出货计划

接口: POST /order/shipping-plan

权限: order:shipping-plan:create

请求体:

{
  "lotSerial": "出货编号",
  "shippingDate": "2024-01-01",
  "shippingSite": "出货地点",
  "consignee": "收货人",
  "telephone": "联系方式",
  "shippingAddress": "收货地址",
  "remark": "备注",
  "items": [
    {
      "ordNbr": "客户订单号",
      "billNo": "订单号",
      "itemNum": "物料编号",
      "itemName": "物料名称",
      "qty": 100,
      "weight": 50.5,
      "volume": 2.5
    }
  ]
}

4. 更新出货计划

接口: PUT /order/shipping-plan

权限: order:shipping-plan:update

请求体: 同创建,需包含 recId 字段

5. 删除出货计划

接口: DELETE /order/shipping-plan/{id}

权限: order:shipping-plan:delete

路径参数: id - 出货计划主键

6. 销售出库

接口: POST /order/sales-outbound

权限: order:shipping-plan:outbound

请求体:

{
  "orgNo": "组织编号",
  "operatorAccount": "操作人账号",
  "planIds": [1, 2, 3]
}

说明:

  • 调用存储过程 pr_WMS_AutoCreateShipper
  • 传入参数: 组织编号、操作人账号、出货计划ID列表(逗号分隔)
  • 会验证出货计划是否存在且未生成出库单

业务逻辑说明

创建出货计划

  1. 验证必填字段
  2. 设置默认值(Domain、Priority、IsActive等)
  3. 获取当前登录用户信息
  4. 插入主表记录
  5. 批量插入明细记录

更新出货计划

  1. 验证出货计划是否存在
  2. 更新主表记录
  3. 删除旧的明细记录
  4. 重新插入新的明细记录

销售出库

  1. 验证所有出货计划ID是否存在
  2. 检查是否已生成出库单(recid字段)
  3. 拼接ID字符串(逗号分隔)
  4. 调用存储过程 pr_WMS_AutoCreateShipper

数据库字段映射

ShippingPlan主表

数据库字段 Java字段 说明
RecID recId 主键(自增)
Domain domain 域名(默认8010)
LotSerial lotSerial 出货编号
ShippingSite shippingSite 出货地点
ShippingDate shippingDate 出货日期
Consignee consignee 收货人
Telephone telephone 联系方式
ShippingAddress shippingAddress 收货地址
Remark remark 备注
CreateUser createUser 创建用户
CreateTime createTime 创建时间

ShippingPlanDetail明细表

数据库字段 Java字段 说明
RecID recId 主键
plan_id planId 主表ID
OrdNbr ordNbr 客户订单号
bill_no billNo 订单号
ItemNum itemNum 物料编号
ItemName itemName 物料名称
Specification specification 规格型号
Qty qty 订单数量
Weight weight 重量(KG)
Volume volume 体积(M3)
seorder_id seorderId 销售订单ID
sentry_id sentryId 订单行ID

注意事项

  1. 多租户: 所有查询方法都使用了 @TenantIgnore 注解,忽略租户隔离
  2. 事务管理: 创建、更新、删除操作都使用了 @Transactional 注解
  3. 日期格式: 前端传入的日期字符串格式为 YYYY-MM-DD,后端会自动转换为 LocalDateTime
  4. 权限控制: 所有接口都配置了权限注解 @PreAuthorize
  5. 存储过程: 销售出库功能调用了 pr_WMS_AutoCreateShipper 存储过程

待完善功能

  1. 出货计划状态流转管理
  2. 出货计划审批流程
  3. 与ASN发货单的关联查询优化
  4. 出货计划导出Excel功能
  5. 出货计划打印功能

测试建议

  1. 测试创建出货计划(包含多条明细)
  2. 测试更新出货计划(修改主表和明细)
  3. 测试删除出货计划(验证级联删除明细)
  4. 测试销售出库(验证存储过程调用)
  5. 测试分页查询(验证搜索条件)
  6. 测试权限控制(不同角色的访问权限)

相关文档