2.7 KiB
2.7 KiB
修复订单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行)
修改前:
work_order_count_subquery = (
select(
TestWorkOrder.test_order_id, # ❌ 错误
func.count(TestWorkOrder.id).label('work_order_count')
)
.group_by(TestWorkOrder.test_order_id) # ❌ 错误
.subquery()
)
修改后:
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行)
修改前:
.outerjoin(work_order_count_subquery, TestOrder.id == work_order_count_subquery.c.test_order_id) # ❌ 错误
修改后:
.outerjoin(work_order_count_subquery, TestOrder.id == work_order_count_subquery.c.order_id) # ✅ 正确
3. 查询订单的工单列表(第272行)
修改前:
.where(TestWorkOrder.test_order_id == order_id) # ❌ 错误
修改后:
.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. 重启后端服务
# 停止后端服务
# 启动后端服务
2. 测试订单列表
- 进入订单管理页面
- 应该能正常显示,不再报错
- "关联工单"列应该显示正确的工单数量
3. 测试订单详情
- 点击订单查看详情
- 应该能看到关联的工单(通过 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