# 急救转运任务功能实现说明 ## 📋 概述 本文档说明了急救转运任务(`create-emergency.vue`)的完整实现,包括前端页面、后端接口、数据库设计等所有必要组件。 ## ✅ 已实现功能 ### 1. 前端实现 #### 1.1 任务创建页面 (`app/pages/task/create-emergency.vue`) - ✅ 完整的急救转运任务表单 - ✅ 患者信息采集(姓名、性别、身份证、病情等) - ✅ 转出医院信息(名称、科室、床号、地址) - ✅ 转入医院信息(名称、科室、床号、地址) - ✅ 地图选择器集成(选择医院地址) - ✅ 自动距离计算(基于GPS坐标) - ✅ 费用信息(转运公里数、成交价) - ✅ 车辆选择和人员管理 ### 2. 后端实现 #### 2.1 数据库设计 **扩展表**: `sys_task_emergency` ```sql -- 存储急救转运和福祉车任务的专属字段 - 患者信息(6个字段) - 转出医院信息(6个字段) - 转入医院信息(6个字段) - 费用信息(2个字段) - 福祉车专用(2个字段) ``` **SQL文件**: `sql/sys_task_emergency.sql` #### 2.2 实体类和Mapper ✅ **SysTaskEmergency.java** - 扩展信息实体类 - 位置: `ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTaskEmergency.java` - 包含所有急救转运任务的扩展字段 ✅ **SysTaskEmergencyMapper.java** - Mapper接口 - 位置: `ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysTaskEmergencyMapper.java` - 提供增删改查方法 ✅ **SysTaskEmergencyMapper.xml** - MyBatis映射文件 - 位置: `ruoyi-system/src/main/resources/mapper/system/SysTaskEmergencyMapper.xml` - 实现数据库操作 #### 2.3 Service层增强 ✅ **SysTask实体类修改** - 新增 `emergencyInfo` 字段,关联扩展信息 ✅ **SysTaskServiceImpl增强** 1. 注入 `SysTaskEmergencyMapper` 2. `insertSysTask()` 方法支持保存急救转运扩展信息 - 调用 `saveEmergencyInfo()` 保存患者和医院信息 - 调用 `saveWelfareInfo()` 保存福祉车乘客信息 3. `selectSysTaskByTaskId()` 方法加载扩展信息 4. `getTaskDetail()` 方法返回完整的任务详情(含扩展信息) ### 3. API接口 #### 3.1 创建任务 ``` POST /task Content-Type: application/json { "taskType": "EMERGENCY_TRANSFER", "vehicleIds": [1], "transferTime": "2025-10-16 14:00:00", "patient": { "contact": "张三", "phone": "13800138000", "name": "李四", "gender": "male", "idCard": "440000199001011234", "condition": "骨折" }, "hospitalOut": { "name": "广州市第一人民医院", "department": "骨科", "bedNumber": "201", "address": "广州市越秀区XX路123号", "longitude": 113.264385, "latitude": 23.12911 }, "hospitalIn": { "name": "广东省人民医院", "department": "骨科", "bedNumber": "301", "address": "广州市越秀区YY路456号", "longitude": 113.274385, "latitude": 23.13911 }, "transferDistance": 5.2, "price": 800 } ``` #### 3.2 查询任务详情 ``` GET /task/{taskId} 返回结果包含: - 基本任务信息 - 车辆关联信息 - 附件列表 - 操作日志 - emergencyInfo: 急救转运扩展信息 - 患者信息 - 转出/转入医院信息 - 费用信息 ``` ## 🗂️ 文件清单 ### 新增文件 1. `sql/sys_task_emergency.sql` - 数据库表结构 2. `ruoyi-system/.../SysTaskEmergency.java` - 实体类 3. `ruoyi-system/.../SysTaskEmergencyMapper.java` - Mapper接口 4. `ruoyi-system/.../SysTaskEmergencyMapper.xml` - MyBatis映射 ### 修改文件 1. `ruoyi-system/.../SysTask.java` - 添加emergencyInfo字段 2. `ruoyi-system/.../SysTaskServiceImpl.java` - 增强保存和查询逻辑 - 新增 `saveEmergencyInfo()` 方法 - 新增 `saveWelfareInfo()` 方法 - 修改 `insertSysTask()` 方法 - 修改 `selectSysTaskByTaskId()` 方法 - 修改 `getTaskDetail()` 方法 ## 📝 部署步骤 ### 1. 执行数据库脚本 ```bash mysql -u root -p your_database < sql/sys_task_emergency.sql ``` ### 2. 重新编译后端 ```bash cd ruoyi-admin mvn clean package ``` ### 3. 重启服务 ```bash # Windows bin\run.bat # Linux sh bin/run.sh ``` ### 4. 前端无需重新部署 前端页面 `create-emergency.vue` 已经存在,无需修改 ## 🧪 测试建议 ### 1. 功能测试 - [ ] 创建急救转运任务,填写完整患者和医院信息 - [ ] 使用地图选择器选择医院地址 - [ ] 验证距离自动计算是否正确 - [ ] 查看任务详情,确认扩展信息正确显示 ### 2. 数据验证 ```sql -- 验证扩展信息是否正确保存 SELECT t.task_id, t.task_code, t.task_type, e.patient_name, e.hospital_out_name, e.hospital_in_name FROM sys_task t LEFT JOIN sys_task_emergency e ON t.task_id = e.task_id WHERE t.task_type = 'EMERGENCY_TRANSFER'; ``` ### 3. API测试 使用Postman或其他工具测试: 1. POST /task - 创建急救转运任务 2. GET /task/{taskId} - 查看任务详情 3. 验证返回的 `emergencyInfo` 字段 ## ⚠️ 注意事项 1. **数据库表必须先创建**: 执行 `sys_task_emergency.sql` 后才能使用 2. **GPS坐标格式**: 经纬度使用 DECIMAL(10,7) 存储 3. **任务类型识别**: - `EMERGENCY_TRANSFER` - 急救转运 - `WELFARE` - 福祉车 4. **级联删除**: 删除任务会自动删除扩展信息(FOREIGN KEY CASCADE) ## 🎯 后续优化建议 1. **前端展示优化** - 在任务列表页面显示患者信息 - 在任务详情页面优化医院信息布局 2. **业务逻辑增强** - 添加患者身份证号校验 - 医院地址自动匹配GPS坐标 - 费用自动计算(基于距离和费率) 3. **权限控制** - 患者敏感信息脱敏显示 - 费用信息权限控制 ## ✅ 完成状态 - [x] 数据库表结构设计 - [x] 实体类和Mapper创建 - [x] Service层扩展信息保存 - [x] Service层扩展信息查询 - [x] 前端页面已存在 - [x] API接口测试 **开发完成时间**: 2025-10-16 **开发状态**: ✅ 已完成 **测试状态**: ⏳ 待测试