228 lines
5.0 KiB
Markdown
228 lines
5.0 KiB
Markdown
|
|
# "测试中"页面为空问题诊断
|
|||
|
|
|
|||
|
|
## 问题描述
|
|||
|
|
- 点击"测试中"按钮(testStep = 1)
|
|||
|
|
- 页面显示空白,没有工单数据
|
|||
|
|
|
|||
|
|
## 可能的原因
|
|||
|
|
|
|||
|
|
### 1. 数据库中没有 test_step = 1 的工单 ⭐⭐⭐⭐⭐
|
|||
|
|
**可能性**: 95%
|
|||
|
|
|
|||
|
|
**原因**:
|
|||
|
|
- 新创建的工单默认 `test_step = 0`(待领取)或 `test_step = 1`(测试中)
|
|||
|
|
- 如果所有工单都是刚创建的,可能都还在"待领取"状态
|
|||
|
|
- 需要手动将工单状态改为"测试中"
|
|||
|
|
|
|||
|
|
**验证方法**:
|
|||
|
|
```sql
|
|||
|
|
-- 执行这个查询
|
|||
|
|
SELECT test_step, COUNT(*)
|
|||
|
|
FROM test_work_order
|
|||
|
|
WHERE order_id IS NULL
|
|||
|
|
GROUP BY test_step;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
如果确实没有 test_step = 1 的工单,有两个选择:
|
|||
|
|
1. 手动更新某些工单的状态为"测试中"
|
|||
|
|
2. 点击"待领取"或"全部工单"按钮查看其他状态的工单
|
|||
|
|
|
|||
|
|
### 2. 新创建的工单 test_step 默认值不正确 ⭐⭐⭐
|
|||
|
|
**可能性**: 3%
|
|||
|
|
|
|||
|
|
**原因**:
|
|||
|
|
- 样品生成工单时,`test_step` 可能设置为 0(待领取)
|
|||
|
|
- 需要检查工单创建逻辑
|
|||
|
|
|
|||
|
|
**验证方法**:
|
|||
|
|
```sql
|
|||
|
|
-- 查看最近创建的工单的 test_step 值
|
|||
|
|
SELECT id, name, test_step, create_time
|
|||
|
|
FROM test_work_order
|
|||
|
|
WHERE order_id IS NULL
|
|||
|
|
ORDER BY id DESC
|
|||
|
|
LIMIT 10;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 后端查询逻辑有问题 ⭐⭐
|
|||
|
|
**可能性**: 2%
|
|||
|
|
|
|||
|
|
**原因**:
|
|||
|
|
- DAO 层的 WHERE 条件可能有问题
|
|||
|
|
- test_step 的比较逻辑可能不正确
|
|||
|
|
|
|||
|
|
**验证方法**:
|
|||
|
|
查看 DAO 代码中的 WHERE 条件:
|
|||
|
|
```python
|
|||
|
|
TestWorkOrder.test_step == query_object.test_step if query_object.test_step is not None else True
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
这个逻辑是正确的,只有当 `test_step is not None` 时才会过滤。
|
|||
|
|
|
|||
|
|
## 诊断步骤
|
|||
|
|
|
|||
|
|
### 步骤 1: 执行 SQL 诊断脚本
|
|||
|
|
```bash
|
|||
|
|
mysql -u root -p < check_teststep_data.sql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
这个脚本会告诉你:
|
|||
|
|
- 各个测试步骤有多少工单
|
|||
|
|
- 是否有 test_step = 1 的工单
|
|||
|
|
- 最近创建的工单的 test_step 值
|
|||
|
|
|
|||
|
|
### 步骤 2: 查看诊断结果
|
|||
|
|
|
|||
|
|
#### 情况 A: 没有 test_step = 1 的工单
|
|||
|
|
**输出示例**:
|
|||
|
|
```
|
|||
|
|
test_step | count
|
|||
|
|
----------|------
|
|||
|
|
0 | 10
|
|||
|
|
NULL | 0
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**说明**: 所有工单都在"待领取"状态,没有"测试中"的工单
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
1. 点击"待领取"按钮查看工单
|
|||
|
|
2. 或者手动更新某些工单的状态:
|
|||
|
|
```sql
|
|||
|
|
-- 将前 5 个工单改为"测试中"
|
|||
|
|
UPDATE test_work_order
|
|||
|
|
SET test_step = 1
|
|||
|
|
WHERE order_id IS NULL
|
|||
|
|
ORDER BY id DESC
|
|||
|
|
LIMIT 5;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 情况 B: 有 test_step = 1 的工单,但页面不显示
|
|||
|
|
**输出示例**:
|
|||
|
|
```
|
|||
|
|
test_step | count
|
|||
|
|
----------|------
|
|||
|
|
0 | 5
|
|||
|
|
1 | 5
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**说明**: 数据库中有"测试中"的工单,但前端不显示
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
1. 检查浏览器开发者工具(F12)
|
|||
|
|
2. 查看 Network 标签的 API 请求
|
|||
|
|
3. 查看 Console 标签的错误信息
|
|||
|
|
|
|||
|
|
### 步骤 3: 检查浏览器开发者工具
|
|||
|
|
|
|||
|
|
#### 3.1 打开开发者工具
|
|||
|
|
按 **F12**
|
|||
|
|
|
|||
|
|
#### 3.2 查看 Network 标签
|
|||
|
|
1. 切换到 **Network** 标签
|
|||
|
|
2. 点击"测试中"按钮
|
|||
|
|
3. 找到 `/system/test_work_order/list` 请求
|
|||
|
|
|
|||
|
|
#### 3.3 查看请求参数
|
|||
|
|
**Request Query String**:
|
|||
|
|
```
|
|||
|
|
pageNum: 1
|
|||
|
|
pageSize: 10
|
|||
|
|
testStep: 1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
确认 `testStep` 参数是 `1`
|
|||
|
|
|
|||
|
|
#### 3.4 查看响应内容
|
|||
|
|
**正常响应**(有数据):
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"data": {
|
|||
|
|
"rows": [
|
|||
|
|
{
|
|||
|
|
"id": 821,
|
|||
|
|
"testStep": 1,
|
|||
|
|
"name": "SN0001-出库测试(PCBA)",
|
|||
|
|
...
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"total": 5
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**异常响应**(空数据):
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"data": {
|
|||
|
|
"rows": [],
|
|||
|
|
"total": 0
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
如果是空数据,说明数据库中确实没有 test_step = 1 的工单。
|
|||
|
|
|
|||
|
|
## 快速解决方案
|
|||
|
|
|
|||
|
|
### 方案 1: 查看其他状态的工单
|
|||
|
|
点击其他按钮:
|
|||
|
|
- "全部工单" - 查看所有工单
|
|||
|
|
- "待领取" - 查看 test_step = 0 的工单
|
|||
|
|
|
|||
|
|
### 方案 2: 手动更新工单状态
|
|||
|
|
如果你想测试"测试中"页面,可以手动更新一些工单:
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
-- 将最近的 5 个工单改为"测试中"
|
|||
|
|
UPDATE test_work_order
|
|||
|
|
SET test_step = 1
|
|||
|
|
WHERE order_id IS NULL
|
|||
|
|
AND test_step = 0
|
|||
|
|
ORDER BY id DESC
|
|||
|
|
LIMIT 5;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 方案 3: 修改工单创建逻辑
|
|||
|
|
如果你希望新创建的工单默认就是"测试中"状态,需要修改样品生成工单的代码:
|
|||
|
|
|
|||
|
|
**文件**: `warehouse_sample_service.py`
|
|||
|
|
|
|||
|
|
找到创建工单的代码,将 `test_step` 设置为 1:
|
|||
|
|
```python
|
|||
|
|
work_order = Test_work_orderModel(
|
|||
|
|
# ... 其他字段
|
|||
|
|
test_step=1, # 改为 1(测试中)而不是 0(待领取)
|
|||
|
|
# ...
|
|||
|
|
)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 预期结果
|
|||
|
|
|
|||
|
|
修复后:
|
|||
|
|
- 点击"待领取"应该能看到 test_step = 0 的工单
|
|||
|
|
- 点击"测试中"应该能看到 test_step = 1 的工单
|
|||
|
|
- 点击"全部工单"应该能看到所有工单
|
|||
|
|
|
|||
|
|
## 需要提供的信息
|
|||
|
|
|
|||
|
|
如果问题仍未解决,请提供:
|
|||
|
|
|
|||
|
|
1. **SQL 诊断结果**
|
|||
|
|
```bash
|
|||
|
|
mysql -u root -p < check_teststep_data.sql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **浏览器 Network 标签截图**
|
|||
|
|
- 点击"测试中"按钮
|
|||
|
|
- 查看 `/system/test_work_order/list` 的请求参数和响应
|
|||
|
|
|
|||
|
|
3. **点击"全部工单"按钮的结果**
|
|||
|
|
- 是否能看到工单?
|
|||
|
|
- 这些工单的 test_step 值是多少?
|
|||
|
|
|
|||
|
|
## 完成时间
|
|||
|
|
2026-01-09 00:30
|