ETest-Vue-FastAPI/工单列表过滤已汇总工单修复说明.md

3.4 KiB
Raw Permalink Blame History

工单列表过滤已汇总工单修复说明

问题描述

从工单生成订单后,这些工单仍然在工单列表中显示,导致混乱。用户希望已经汇总到新订单的工单不再在工单列表中显示。

问题场景

修复前

  1. 原始订单35 → 工单661-670
  2. 从工单661-670生成新订单39
  3. 工单661-670的 order_id 更新为39
  4. 问题工单661-670仍然在工单列表中显示
  5. 用户看到订单35的分组中还有这些工单造成混乱

修复后

  1. 原始订单35 → 工单661-670
  2. 从工单661-670生成新订单39
  3. 工单661-670的 order_id 更新为39
  4. 修复工单661-670不再在工单列表中显示因为已汇总
  5. 工单列表只显示还没有汇总的工单

解决方案

修改内容

test_work_order_dao.pyget_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) 过滤条件,工单列表现在只显示未汇总的工单,避免了混乱。已汇总的工单可以在新订单的详情页中查看。