Files
cattleTransportation/ORDER_DELIVERY_RELATIONSHIP_SUMMARY.md
2025-10-28 17:31:19 +08:00

3.7 KiB
Raw Blame History

订单表与装车订单表关联关系说明

问题说明

用户创建了新的 order 订单表,但装车订单接口 /delivery/pageDeliveryOrderList 仍然返回的是 delivery 装车运单表的数据,没有关联到新的 order 表。

解决方案

1. 数据库层面

文件: add_order_id_to_delivery.sql

delivery 表中添加 order_id 字段,建立与 order 表的关联:

ALTER TABLE `delivery` 
ADD COLUMN `order_id` int(11) DEFAULT NULL COMMENT '订单ID关联order表' AFTER `id`,
ADD INDEX `idx_order_id` (`order_id`);

关系说明:

  • order 表:主订单表,记录买方、卖方、结算方式
  • delivery 表:装车运单表,记录运单详情
  • 一个订单可以对应多个装车运单(一对多关系)

2. 实体类更新

文件: Delivery.java

添加两个字段:

  • orderId订单ID用于存储关联的订单
  • orderInfo:订单信息对象,用于查询时填充订单详细信息

3. 服务层更新

文件: DeliveryServiceImpl.java

pageQueryListLog 方法中添加订单信息填充逻辑:

// 填充装车订单的关联订单信息
for (Delivery delivery : resList) {
    if (delivery.getOrderId() != null) {
        Order order = orderMapper.selectById(delivery.getOrderId());
        if (order != null) {
            delivery.setOrderInfo(order);
        }
    }
}

数据流程

  1. 创建订单Order

    • 用户在订单管理中创建订单
    • 记录:买方、卖方、结算方式
    • 保存到 order
  2. 创建装车订单Delivery

    • 用户在装车订单中创建运单
    • 记录:运单详情(起始地、目的地、车牌等)
    • 保存时关联 order_id
    • 保存到 delivery
  3. 查询装车订单列表

    • 调用 /delivery/pageDeliveryOrderList
    • 查询 delivery
    • 根据 order_id 关联查询 order
    • 返回装车订单信息 + 订单信息

返回数据格式

{
  "code": 200,
  "msg": "success",
  "data": {
    "total": 10,
    "rows": [
      {
        "id": 89,
        "orderId": 1,              // 关联的订单ID
        "deliveryNumber": "ZC20251027161826",
        "deliveryTitle": "2222",
        "orderInfo": {              // 订单详细信息
          "id": 1,
          "buyerId": "10,11",
          "sellerId": "5,6",
          "settlementType": 1,
          "buyerName": "张三,李四",
          "sellerName": "王五,赵六",
          "settlementTypeDesc": "上车重量"
        }
      }
    ]
  }
}

使用步骤

  1. 执行数据库迁移

    -- 先执行创建订单表的SQL
    SOURCE create_order_table.sql;
    
    -- 然后为delivery表添加order_id字段
    SOURCE add_order_id_to_delivery.sql;
    
  2. 重启后端服务

  3. 前端调用

    • 创建订单时:调用 /order/add
    • 创建装车订单时:需要传入 orderId
    • 查询装车订单列表:调用 /delivery/pageDeliveryOrderList
    • 返回的数据中包含 orderInfo 字段

注意事项

  1. 不计 delivery 已存在数据,order_idNULL
  2. 新增运单时需关联 order_id
  3. 查询装车订单时会自动填充 orderInfo
  4. 支持一个订单对应多个装车运单(一对多关系)

前端集成建议

在装车订单列表中显示订单信息:

<el-table-column label="买方" prop="orderInfo.buyerName" />
<el-table-column label="卖方" prop="orderInfo.sellerName" />
<el-table-column label="结算方式" prop="orderInfo.settlementTypeDesc" />

数据一致性

  • 删除订单时:应检查是否有关联的装车订单
  • 可级联删除或禁止删除(推荐阻止删除以避免数据不一致)