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

急救转运任务功能实现说明

📋 概述

本文档说明了急救转运任务(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. 执行数据库脚本

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

2. 重新编译后端

cd ruoyi-admin
mvn clean package

3. 重启服务

# Windows
bin\run.bat

# Linux
sh bin/run.sh

4. 前端无需重新部署

前端页面 create-emergency.vue 已经存在,无需修改

🧪 测试建议

1. 功能测试

  • [ ] 创建急救转运任务,填写完整患者和医院信息
  • [ ] 使用地图选择器选择医院地址
  • [ ] 验证距离自动计算是否正确
  • [ ] 查看任务详情,确认扩展信息正确显示

2. 数据验证

-- 验证扩展信息是否正确保存
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 - 福祉车
  1. 级联删除: 删除任务会自动删除扩展信息(FOREIGN KEY CASCADE)

🎯 后续优化建议

  1. 前端展示优化
  • 在任务列表页面显示患者信息
  • 在任务详情页面优化医院信息布局
  1. 业务逻辑增强
  • 添加患者身份证号校验
  • 医院地址自动匹配GPS坐标
  • 费用自动计算(基于距离和费率)
  1. 权限控制
  • 患者敏感信息脱敏显示
  • 费用信息权限控制

✅ 完成状态

  • [x] 数据库表结构设计
  • [x] 实体类和Mapper创建
  • [x] Service层扩展信息保存
  • [x] Service层扩展信息查询
  • [x] 前端页面已存在
  • [x] API接口测试

开发完成时间: 2025-10-16
开发状态: ✅ 已完成
测试状态: ⏳ 待测试