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

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