ETest-Vue-FastAPI/修复订单DAO中的test_order_id引用.md

109 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 修复订单DAO中的test_order_id引用
## 错误信息
```
type object 'TestWorkOrder' has no attribute 'test_order_id'
```
## 原因
`test_order_dao.py` 中,订单查询工单数量和工单列表时,仍然使用 `TestWorkOrder.test_order_id`,但该字段已经改为 `batch_id`
## 修复内容
### 文件:`test_order_dao.py`
#### 1. 工单数量统计子查询第80-87行
**修改前**:
```python
work_order_count_subquery = (
select(
TestWorkOrder.test_order_id, # ❌ 错误
func.count(TestWorkOrder.id).label('work_order_count')
)
.group_by(TestWorkOrder.test_order_id) # ❌ 错误
.subquery()
)
```
**修改后**:
```python
work_order_count_subquery = (
select(
TestWorkOrder.order_id, # ✅ 正确:使用 order_id
func.count(TestWorkOrder.id).label('work_order_count')
)
.where(TestWorkOrder.order_id.isnot(None)) # ✅ 只统计已汇总的工单
.group_by(TestWorkOrder.order_id) # ✅ 正确
.subquery()
)
```
#### 2. JOIN 条件第105行
**修改前**:
```python
.outerjoin(work_order_count_subquery, TestOrder.id == work_order_count_subquery.c.test_order_id) # ❌ 错误
```
**修改后**:
```python
.outerjoin(work_order_count_subquery, TestOrder.id == work_order_count_subquery.c.order_id) # ✅ 正确
```
#### 3. 查询订单的工单列表第272行
**修改前**:
```python
.where(TestWorkOrder.test_order_id == order_id) # ❌ 错误
```
**修改后**:
```python
.where(TestWorkOrder.order_id == order_id) # ✅ 正确:通过 order_id 查询已汇总的工单
```
## 业务逻辑说明
### 旧的数据关系
```
订单 ← test_order_id ─ 工单
```
工单通过 `test_order_id` 关联到订单
### 新的数据关系
```
样品 → 生成工单batch_id = 批次ID, order_id = NULL
选择工单 → 生成订单order_id = 订单ID
```
- `batch_id`: 工单批次ID样品生成时设置
- `order_id`: 关联订单ID从工单生成订单后设置
### 订单查询工单的逻辑
- **旧逻辑**: 通过 `test_order_id` 查询属于该订单的工单
- **新逻辑**: 通过 `order_id` 查询已汇总到该订单的工单
## 验证步骤
### 1. 重启后端服务
```bash
# 停止后端服务
# 启动后端服务
```
### 2. 测试订单列表
1. 进入订单管理页面
2. **应该能正常显示**,不再报错
3. "关联工单"列应该显示正确的工单数量
### 3. 测试订单详情
1. 点击订单查看详情
2. 应该能看到关联的工单(通过 order_id 关联)
## 相关文件
-`test_order_dao.py` - 已修复3处引用
-`test_work_order_do.py` - 已改为 batch_id
-`test_work_order_dao.py` - 已改为 batch_id
## 完成时间
2026-01-08 22:50