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

## 问题说明

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

## 解决方案

### 1. 数据库层面
**文件：** `add_order_id_to_delivery.sql`

在 `delivery` 表中添加 `order_id` 字段，建立与 `order` 表的关联：

```sql
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` 方法中添加订单信息填充逻辑：

```java
// 填充装车订单的关联订单信息
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` 表
   - 返回装车订单信息 + 订单信息

## 返回数据格式

```json
{
  "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
   -- 先执行创建订单表的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_id` 为 `NULL`
2. 新增运单时需关联 `order_id`
3. 查询装车订单时会自动填充 `orderInfo`
4. 支持一个订单对应多个装车运单（一对多关系）

## 前端集成建议

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

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

## 数据一致性

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

