# 工单列表过滤已汇总工单修复说明 ## 问题描述 从工单生成订单后,这些工单仍然在工单列表中显示,导致混乱。用户希望已经汇总到新订单的工单不再在工单列表中显示。 ## 问题场景 ### 修复前 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.py` 的 `get_test_work_order_list` 方法中,添加过滤条件: ```python .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. 重启后端服务 ```bash cd ruoyi-fastapi-backend python main.py ``` ### 2. 查看工单列表 - 进入工单列表页面 - 选择订单35的分组 - **应该看不到工单661-670**(因为它们已经汇总到订单39) ### 3. 查看新订单详情 - 进入订单列表 - 点击订单39 - **应该能看到工单661-670对应的样品** ### 4. 数据库验证 ```sql -- 查看工单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` 选项: ```python if not query_object.show_summarized: query = query.where(TestWorkOrder.order_id.is_(None)) ``` ### 方案2:添加"已汇总工单"页面 创建一个专门的页面显示已汇总的工单: ```python 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)` 过滤条件,工单列表现在只显示未汇总的工单,避免了混乱。已汇总的工单可以在新订单的详情页中查看。