# 急救转运任务功能测试指南 ## ✅ 已完成步骤 - [x] 数据库表 `sys_task_emergency` 已创建 - [x] 后端代码已实现 (实体类、Mapper、Service) - [x] 前端页面已存在 (`create-emergency.vue`) ## 📋 接下来的测试步骤 ### 步骤1: 重新编译后端服务 ```bash # 进入后端目录 cd d:\project\急救转运\code\Api\RuoYi-Vue-master # 清理并编译 mvn clean package -DskipTests # 或者使用项目自带脚本 bin\package.bat ``` ### 步骤2: 启动后端服务 ```bash # 方式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版本) ```bash # 进入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: 验证数据库数据 ```sql -- 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.yml` 中 `mapper-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. 前端控制台错误信息 我会帮您一一解决! --- **测试完成后,请在此打勾**: ☑️ 急救转运任务功能测试通过