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

138 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 订单表与装车订单表关联关系说明
## 问题说明
用户创建了新的 `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" />
```
## 数据一致性
- 删除订单时:应检查是否有关联的装车订单
- 可级联删除或禁止删除(推荐阻止删除以避免数据不一致)