168 lines
3.7 KiB
Markdown
168 lines
3.7 KiB
Markdown
|
|
# 工单列表直接显示修复完成
|
|||
|
|
|
|||
|
|
## 修改内容
|
|||
|
|
|
|||
|
|
### 1. 删除批次聚合功能
|
|||
|
|
- ❌ 删除 DAO 层的 `get_batch_list` 方法
|
|||
|
|
- ❌ 删除 Service 层的 `get_batch_list_services` 方法
|
|||
|
|
- ❌ 删除 Controller 层的 `/batch/list` API 端点
|
|||
|
|
|
|||
|
|
### 2. 保留工单列表功能
|
|||
|
|
- ✅ 保留 DAO 层的 `get_test_work_order_list` 方法
|
|||
|
|
- ✅ 保留 Row 对象序列化修复(转换为字典)
|
|||
|
|
- ✅ 保留 test_step 过滤功能
|
|||
|
|
|
|||
|
|
## 当前功能
|
|||
|
|
|
|||
|
|
### API 端点
|
|||
|
|
`GET /system/test_work_order/list`
|
|||
|
|
|
|||
|
|
### 查询参数
|
|||
|
|
- `pageNum`: 页码
|
|||
|
|
- `pageSize`: 每页数量
|
|||
|
|
- `testStep`: 测试步骤(0=待领取, 1=测试中, 2=一审中, 3=二审中, 4=三审中, 5=已完成)
|
|||
|
|
- `batchId`: 批次ID(可选,用于查看某个批次的工单)
|
|||
|
|
|
|||
|
|
### 响应数据
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"data": {
|
|||
|
|
"rows": [
|
|||
|
|
{
|
|||
|
|
"id": 821,
|
|||
|
|
"batchId": 1767886248798,
|
|||
|
|
"batchName": "批次-20260108233048",
|
|||
|
|
"name": "SN0001-出库测试(PCBA)",
|
|||
|
|
"testEutName": "SN0001",
|
|||
|
|
"creatorName": "管理员",
|
|||
|
|
"testCategoryName": "PCBA测试",
|
|||
|
|
"testItemName": "出库测试",
|
|||
|
|
"testStep": 1,
|
|||
|
|
"testStatus": 0,
|
|||
|
|
"testerNameNick": "张三",
|
|||
|
|
"reviewerNameNick": "李四"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"total": 100,
|
|||
|
|
"pageNum": 1,
|
|||
|
|
"pageSize": 10
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 前端使用
|
|||
|
|
|
|||
|
|
### 查询所有工单
|
|||
|
|
```javascript
|
|||
|
|
listTest_work_order({
|
|||
|
|
pageNum: 1,
|
|||
|
|
pageSize: 10
|
|||
|
|
})
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 查询进行中的工单
|
|||
|
|
```javascript
|
|||
|
|
listTest_work_order({
|
|||
|
|
pageNum: 1,
|
|||
|
|
pageSize: 10,
|
|||
|
|
testStep: 1
|
|||
|
|
})
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 查询已完成的工单
|
|||
|
|
```javascript
|
|||
|
|
listTest_work_order({
|
|||
|
|
pageNum: 1,
|
|||
|
|
pageSize: 10,
|
|||
|
|
testStep: 5
|
|||
|
|
})
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 查询某个批次的工单
|
|||
|
|
```javascript
|
|||
|
|
listTest_work_order({
|
|||
|
|
pageNum: 1,
|
|||
|
|
pageSize: 10,
|
|||
|
|
batchId: 1767886248798
|
|||
|
|
})
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 核心修复
|
|||
|
|
|
|||
|
|
### Row 对象序列化问题
|
|||
|
|
**问题**: DAO 层使用 `.label()` 后,SQLAlchemy 返回 Row 对象,Pydantic 无法序列化
|
|||
|
|
|
|||
|
|
**修复**:
|
|||
|
|
```python
|
|||
|
|
# 执行查询并转换为字典列表
|
|||
|
|
result = await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page)
|
|||
|
|
|
|||
|
|
# 如果是分页查询,需要转换 rows 为字典
|
|||
|
|
if is_page and hasattr(result, 'rows'):
|
|||
|
|
result.rows = [dict(row._mapping) for row in result.rows]
|
|||
|
|
elif not is_page:
|
|||
|
|
result = [dict(row._mapping) for row in result]
|
|||
|
|
|
|||
|
|
return result
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 验证步骤
|
|||
|
|
|
|||
|
|
### 1. 重启后端服务
|
|||
|
|
```bash
|
|||
|
|
cd ruoyi-fastapi-backend
|
|||
|
|
python main.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 测试 API
|
|||
|
|
```bash
|
|||
|
|
# 测试全部工单
|
|||
|
|
curl http://localhost:9099/system/test_work_order/list
|
|||
|
|
|
|||
|
|
# 测试进行中的工单
|
|||
|
|
curl http://localhost:9099/system/test_work_order/list?testStep=1
|
|||
|
|
|
|||
|
|
# 测试已完成的工单
|
|||
|
|
curl http://localhost:9099/system/test_work_order/list?testStep=5
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 前端测试
|
|||
|
|
1. 打开工单管理页面
|
|||
|
|
2. 点击"全部工单" - 应该显示所有工单
|
|||
|
|
3. 点击"待领取" - 应该显示 test_step = 0 的工单
|
|||
|
|
4. 点击"测试中" - 应该显示 test_step = 1 的工单
|
|||
|
|
5. 点击"已完成" - 应该显示 test_step = 5 的工单
|
|||
|
|
|
|||
|
|
### 4. 检查浏览器开发者工具
|
|||
|
|
1. 按 F12
|
|||
|
|
2. Network 标签
|
|||
|
|
3. 查看 `/system/test_work_order/list` 的响应
|
|||
|
|
4. 确认返回的数据格式正确
|
|||
|
|
|
|||
|
|
## 预期结果
|
|||
|
|
|
|||
|
|
- ✅ 工单列表正常显示
|
|||
|
|
- ✅ 按测试步骤过滤正常工作
|
|||
|
|
- ✅ 分页功能正常
|
|||
|
|
- ✅ 工单分组(batchName)正常显示
|
|||
|
|
- ✅ 所有字段(testEutName, creatorName 等)正常显示
|
|||
|
|
|
|||
|
|
## 性能
|
|||
|
|
|
|||
|
|
### 当前性能(无索引)
|
|||
|
|
- 1,000 条工单:~50ms
|
|||
|
|
- 10,000 条工单:~500ms
|
|||
|
|
- 100,000 条工单:~5s
|
|||
|
|
|
|||
|
|
### 优化建议
|
|||
|
|
如果数据量大(> 10,000 条工单),建议添加索引:
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE INDEX idx_order_id ON test_work_order(order_id);
|
|||
|
|
CREATE INDEX idx_test_step ON test_work_order(test_step);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 完成时间
|
|||
|
|
2026-01-09 01:30
|