编辑 | blame | 历史 | 原始文档

急救转运任务功能测试指南

✅ 已完成步骤

  • [x] 数据库表 sys_task_emergency 已创建
  • [x] 后端代码已实现 (实体类、Mapper、Service)
  • [x] 前端页面已存在 (create-emergency.vue)

📋 接下来的测试步骤

步骤1: 重新编译后端服务

# 进入后端目录
cd d:\project\急救转运\code\Api\RuoYi-Vue-master

# 清理并编译
mvn clean package -DskipTests

# 或者使用项目自带脚本
bin\package.bat

步骤2: 启动后端服务

# 方式1: 使用启动脚本
bin\run.bat

# 方式2: 使用Maven插件
cd ruoyi-admin
mvn spring-boot:run

# 方式3: 直接运行jar包
cd ruoyi-admin\target
java -jar ruoyi-admin.jar

启动成功标志:
- 控制台显示 "RuoYi启动成功"
- 能够访问 http://localhost:8080
- 无数据库连接错误或Mapper找不到的异常

步骤3: 验证Mapper是否正确注册

检查启动日志,确认以下Mapper已加载:
Creating a new SqlSession Registering mapper: com.ruoyi.system.mapper.SysTaskEmergencyMapper

如果没有自动扫描到,检查以下配置:

  1. 确认 application.yml 中的MyBatis配置:
    yaml mybatis: mapper-locations: classpath*:mapper/**/*Mapper.xml type-aliases-package: com.ruoyi.system.domain

  2. 确认 Mapper XML 文件位置:
    ruoyi-system/src/main/resources/mapper/system/SysTaskEmergencyMapper.xml

步骤4: 测试API接口

4.1 使用Postman测试创建任务

请求配置:
POST http://localhost:8080/task Content-Type: application/json Authorization: Bearer {你的token}

请求Body:
json { "taskType": "EMERGENCY_TRANSFER", "vehicleIds": [1], "transferTime": "2025-10-17 14:00:00", "patient": { "contact": "张三", "phone": "13800138000", "name": "李四", "gender": "male", "idCard": "440000199001011234", "condition": "骨折需紧急转院" }, "hospitalOut": { "name": "广州市第一人民医院", "department": "骨科", "bedNumber": "201", "address": "广州市越秀区盘福路1号", "longitude": 113.264385, "latitude": 23.12911 }, "hospitalIn": { "name": "广东省人民医院", "department": "骨科", "bedNumber": "301", "address": "广州市越秀区中山二路106号", "longitude": 113.274385, "latitude": 23.13911 }, "transferDistance": 5.2, "price": 800 }

预期响应:
json { "code": 200, "msg": "操作成功", "data": 1 }

4.2 测试查询任务详情

请求:
GET http://localhost:8080/task/{刚创建的taskId} Authorization: Bearer {你的token}

预期响应 (重点检查 emergencyInfo 字段):
json { "code": 200, "msg": "查询成功", "data": { "taskId": 1, "taskCode": "RW20251017001", "taskType": "EMERGENCY_TRANSFER", "taskStatus": "PENDING", "plannedStartTime": "2025-10-17 14:00:00", "assignedVehicles": [...], "emergencyInfo": { "patientName": "李四", "patientPhone": "13800138000", "patientGender": "male", "patientCondition": "骨折需紧急转院", "hospitalOutName": "广州市第一人民医院", "hospitalOutDepartment": "骨科", "hospitalInName": "广东省人民医院", "transferDistance": 5.2, "transferPrice": 800 } } }

步骤5: 使用前端页面测试

5.1 启动前端 (UniApp H5版本)

# 进入app目录
cd d:\project\急救转运\code\Api\RuoYi-Vue-master\app

# 安装依赖 (如果还没安装)
npm install

# 启动H5开发服务器
npm run dev:h5

5.2 访问创建任务页面

  1. 浏览器打开: http://localhost:8080 (H5页面地址)
  2. 登录系统
  3. 进入任务管理 → 创建任务
  4. 选择"急救转运"类型

5.3 填写表单并提交

必填字段:
- ✅ 任务车辆 (从下拉列表选择)
- ✅ 患者姓名
- ✅ 患者联系电话
- ✅ 转出医院名称
- ✅ 转入医院名称

可选字段:
- 转运时间
- 患者性别、身份证、病情
- 医院科室、床号、地址 (使用地图选择器)
- 转运公里数、成交价

提交后检查:
- 是否显示"任务创建成功"
- 能否跳转到任务列表
- 新创建的任务是否显示在列表中

步骤6: 验证数据库数据

-- 1. 查看任务主表数据
SELECT * FROM sys_task WHERE task_type = 'EMERGENCY_TRANSFER' ORDER BY create_time DESC LIMIT 1;

-- 2. 查看扩展表数据
SELECT * FROM sys_task_emergency ORDER BY create_time DESC LIMIT 1;

-- 3. 联表查询验证关联
SELECT 
    t.task_id,
    t.task_code,
    t.task_type,
    t.task_status,
    e.patient_name,
    e.patient_phone,
    e.hospital_out_name,
    e.hospital_in_name,
    e.transfer_distance,
    e.transfer_price
FROM sys_task t
LEFT JOIN sys_task_emergency e ON t.task_id = e.task_id
WHERE t.task_type = 'EMERGENCY_TRANSFER'
ORDER BY t.create_time DESC;

预期结果:
- sys_task 表中有一条 task_type = 'EMERGENCY_TRANSFER' 的记录
- sys_task_emergency 表中有对应的扩展信息
- 两表通过 task_id 正确关联

🐛 常见问题排查

问题1: 后端启动报错 "Table 'xxx.sys_task_emergency' doesn't exist"

解决方案:
```bash

重新执行SQL脚本

mysql -u root -p your_database < sql/sys_task_emergency.sql

或者手动在数据库客户端执行 sys_task_emergency.sql 文件

```

问题2: Mapper找不到或SQL执行失败

检查点:
1. Mapper XML 文件是否在正确位置: ruoyi-system/src/main/resources/mapper/system/
2. namespace 是否正确: com.ruoyi.system.mapper.SysTaskEmergencyMapper
3. 检查 application.ymlmapper-locations 配置

问题3: 创建任务成功但查询详情时 emergencyInfo 为 null

检查点:
1. 确认 SysTaskServiceImpl.getTaskDetail() 方法是否包含加载扩展信息的代码
2. 查看数据库 sys_task_emergency 表是否有数据
3. 检查控制台日志是否有SQL执行错误

问题4: 前端提交后报400错误

检查点:
1. 浏览器开发者工具查看请求参数格式是否正确
2. 后端日志查看参数绑定错误信息
3. 确认 TaskCreateVO 中嵌套类的getter/setter方法是否正确

问题5: 地图选择器无法使用

解决方案:
- 确认已配置腾讯地图API Key (application.yml)
- 检查网络能否访问腾讯地图API
- 可以暂时手动输入地址进行测试

✅ 测试检查清单

  • [ ] 后端服务成功启动,无异常日志
  • [ ] Postman创建任务成功,返回code=200
  • [ ] Postman查询任务详情,返回emergencyInfo字段且数据正确
  • [ ] 数据库 sys_task 表有新记录
  • [ ] 数据库 sys_task_emergency 表有对应记录
  • [ ] 两表通过task_id正确关联
  • [ ] 前端页面能正常显示创建表单
  • [ ] 前端提交任务成功
  • [ ] 前端任务列表能显示新创建的任务
  • [ ] 前端任务详情能显示患者和医院信息

📞 需要帮助?

如果测试过程中遇到问题,请提供:
1. 错误日志截图或文字
2. 问题出现的步骤
3. 数据库数据截图
4. 前端控制台错误信息

我会帮您一一解决!


测试完成后,请在此打勾: ☑️ 急救转运任务功能测试通过