114 lines
3.4 KiB
Markdown
114 lines
3.4 KiB
Markdown
|
|
# 工单列表过滤已汇总工单修复说明
|
|||
|
|
|
|||
|
|
## 问题描述
|
|||
|
|
从工单生成订单后,这些工单仍然在工单列表中显示,导致混乱。用户希望已经汇总到新订单的工单不再在工单列表中显示。
|
|||
|
|
|
|||
|
|
## 问题场景
|
|||
|
|
|
|||
|
|
### 修复前
|
|||
|
|
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)` 过滤条件,工单列表现在只显示未汇总的工单,避免了混乱。已汇总的工单可以在新订单的详情页中查看。
|