3.4 KiB
3.4 KiB
工单列表过滤已汇总工单修复说明
问题描述
从工单生成订单后,这些工单仍然在工单列表中显示,导致混乱。用户希望已经汇总到新订单的工单不再在工单列表中显示。
问题场景
修复前
- 原始订单35 → 工单661-670
- 从工单661-670生成新订单39
- 工单661-670的
order_id更新为39 - 问题:工单661-670仍然在工单列表中显示
- 用户看到订单35的分组中还有这些工单,造成混乱
修复后
- 原始订单35 → 工单661-670
- 从工单661-670生成新订单39
- 工单661-670的
order_id更新为39 - 修复:工单661-670不再在工单列表中显示(因为已汇总)
- 工单列表只显示还没有汇总的工单
解决方案
修改内容
在 test_work_order_dao.py 的 get_test_work_order_list 方法中,添加过滤条件:
.where(
# ... 其他条件 ...
# 默认不显示已经关联到 order_id 的工单(已汇总到新订单的工单)
TestWorkOrder.order_id.is_(None),
)
逻辑说明
order_id为 NULL:工单还没有被汇总到新订单,正常显示order_id不为 NULL:工单已经被汇总到新订单,不显示
影响范围
正面影响
- 工单列表更清晰,只显示待处理的工单
- 避免混淆:已汇总的工单不会重复显示
- 符合业务逻辑:已汇总的工单应该在新订单中查看
潜在影响
- 如果用户想查看已汇总的工单,需要:
- 方案1:在新订单(订单39)的详情页查看
- 方案2:添加一个"显示已汇总工单"的选项(未实现)
数据关系
test_work_order 表字段
test_order_id: 工单所属的原始订单(样品所属的订单)order_id: 工单关联的生成订单(从工单生成的订单,可为NULL)
工单状态
order_id = NULL: 未汇总,在工单列表中显示order_id != NULL: 已汇总,在工单列表中不显示
验证步骤
1. 重启后端服务
cd ruoyi-fastapi-backend
python main.py
2. 查看工单列表
- 进入工单列表页面
- 选择订单35的分组
- 应该看不到工单661-670(因为它们已经汇总到订单39)
3. 查看新订单详情
- 进入订单列表
- 点击订单39
- 应该能看到工单661-670对应的样品
4. 数据库验证
-- 查看工单661-670的状态
SELECT id, name, test_order_id, order_id
FROM test_work_order
WHERE id BETWEEN 661 AND 670;
-- 应该看到 order_id = 39
未来扩展
如果需要查看已汇总的工单,可以添加以下功能:
方案1:添加查询参数
在查询参数中添加 show_summarized 选项:
if not query_object.show_summarized:
query = query.where(TestWorkOrder.order_id.is_(None))
方案2:添加"已汇总工单"页面
创建一个专门的页面显示已汇总的工单:
query = query.where(TestWorkOrder.order_id.is_not(None))
方案3:在订单详情中显示
在新订单(订单39)的详情页中,显示关联的工单列表(已实现)
相关文件
ruoyi-fastapi-backend/module_admin/system/dao/test_work_order_dao.py✅ 已修复
总结
通过添加 TestWorkOrder.order_id.is_(None) 过滤条件,工单列表现在只显示未汇总的工单,避免了混乱。已汇总的工单可以在新订单的详情页中查看。