急救转运任务创建时,需要保存转出/转入医院的科室ID,并在同步到旧系统时将这些ID传递给 admin_save_19.gds 接口。
文件:app/pages/task/create-emergency.vue
// 从 SQL Server 动态加载科室数据
loadDepartments() {
getHospitalDepartments().then(response => {
const list = response.data || [];
this.departmentOptions = list.map(item => ({
id: item.vID, // 科室ID(来自SQL Server dictionary表)
text: item.vtext // 科室名称
}));
})
}
数据源SQL:sql SELECT vID, vtext FROM dictionary WHERE vtitle='HospitalDepartment' AND vType=1 ORDER BY vOrder
// 转出医院科室选择
onHospitalOutDepartmentChange(e) {
const index = e.detail.value
const selected = this.departmentOptions[index]
this.taskForm.hospitalOut.department = selected.text // 科室名称
this.taskForm.hospitalOut.departmentId = selected.id // 科室ID ✅
}
// 转入医院科室选择
onHospitalInDepartmentChange(e) {
const index = e.detail.value
const selected = this.departmentOptions[index]
this.taskForm.hospitalIn.department = selected.text // 科室名称
this.taskForm.hospitalIn.departmentId = selected.id // 科室ID ✅
}
buildSubmitData() {
const submitData = {
taskType: 'EMERGENCY_TRANSFER',
// ... 其他字段
// 医院信息(包含医院ID、科室名称、科室ID等完整信息)
hospitalOut: this.taskForm.hospitalOut, // 包含: id, name, department, departmentId, bedNumber, address
hospitalIn: this.taskForm.hospitalIn, // 包含: id, name, department, departmentId, bedNumber, address
}
return submitData
}
提交的数据结构:json { "taskType": "EMERGENCY_TRANSFER", "hospitalOut": { "id": 123, // 医院ID(hosp_data.HospID) "name": "中山大学附属第一医院", "department": "急诊科", "departmentId": "45", // 科室ID(dictionary.vID)✅ "bedNumber": "12", "address": "广州市中山二路58号" }, "hospitalIn": { "id": 456, // 医院ID "name": "广东省人民医院", "department": "心内科", "departmentId": "78", // 科室ID(dictionary.vID)✅ "bedNumber": "5", "address": "广州市中山二路106号" } }
文件:SysTaskServiceImpl.java
// TaskCreateVO.java
public static class HospitalInfo {
private Long id; // 医院ID
private String name; // 医院名称
private String department; // 科室名称
private String departmentId; // 科室ID ✅
private String bedNumber; // 床号
private String address; // 地址
private BigDecimal longitude; // 经度
private BigDecimal latitude; // 纬度
}
// 设置转出医院信息
if (createVO.getHospitalOut() != null) {
emergencyInfo.setHospitalOutId(createVO.getHospitalOut().getId());
emergencyInfo.setHospitalOutName(createVO.getHospitalOut().getName());
emergencyInfo.setHospitalOutDepartment(createVO.getHospitalOut().getDepartment());
emergencyInfo.setHospitalOutDepartmentId(createVO.getHospitalOut().getDepartmentId()); // ✅
emergencyInfo.setHospitalOutBedNumber(createVO.getHospitalOut().getBedNumber());
emergencyInfo.setHospitalOutAddress(createVO.getHospitalOut().getAddress());
emergencyInfo.setHospitalOutLongitude(createVO.getHospitalOut().getLongitude());
emergencyInfo.setHospitalOutLatitude(createVO.getHospitalOut().getLatitude());
}
// 设置转入医院信息
if (createVO.getHospitalIn() != null) {
emergencyInfo.setHospitalInId(createVO.getHospitalIn().getId());
emergencyInfo.setHospitalInName(createVO.getHospitalIn().getName());
emergencyInfo.setHospitalInDepartment(createVO.getHospitalIn().getDepartment());
emergencyInfo.setHospitalInDepartmentId(createVO.getHospitalIn().getDepartmentId()); // ✅
emergencyInfo.setHospitalInBedNumber(createVO.getHospitalIn().getBedNumber());
emergencyInfo.setHospitalInAddress(createVO.getHospitalIn().getAddress());
emergencyInfo.setHospitalInLongitude(createVO.getHospitalIn().getLongitude());
emergencyInfo.setHospitalInLatitude(createVO.getHospitalIn().getLatitude());
}
保存到数据库:sql INSERT INTO sys_task_emergency ( task_id, hospital_out_id, hospital_out_name, hospital_out_department, hospital_out_department_id, -- ✅ hospital_in_id, hospital_in_name, hospital_in_department, hospital_in_department_id, -- ✅ -- ... 其他字段 ) VALUES ( #{taskId}, #{hospitalOutId}, #{hospitalOutName}, #{hospitalOutDepartment}, #{hospitalOutDepartmentId}, -- ✅ #{hospitalInId}, #{hospitalInName}, #{hospitalInDepartment}, #{hospitalInDepartmentId}, -- ✅ -- ... 其他值 )
文件:LegacySystemSyncService.java 或 LegacySystemSyncTask.java
| 新系统字段 | 旧系统参数 | 数据源 | 说明 |
|---|---|---|---|
hospital_out_id |
ServiceOrdPtOutHospID |
hosp_data.HospID | 转出医院ID |
hospital_out_name |
ServiceOrdPtOutHosp |
hosp_data.hospName | 转出医院名称 |
hospital_out_department_id |
ServiceOrdPtServicesID |
dictionary.vID | 转出科室ID ✅ |
hospital_out_department |
ServiceOrdPtServices |
dictionary.vtext | 转出科室名称 |
hospital_in_id |
ServiceOrdPtInHospID |
hosp_data.HospID | 转入医院ID |
hospital_in_name |
ServiceOrdPtInHosp |
hosp_data.hospName | 转入医院名称 |
hospital_in_department_id |
ServiceOrdPtInServicesID |
dictionary.vID | 转入科室ID ✅ |
hospital_in_department |
ServiceOrdPtInServices |
dictionary.vtext | 转入科室名称 |
// 构建旧系统同步参数
Map<String, Object> params = new HashMap<>();
params.put("adminID", task.getCreatorOaUserId());
// 转出医院信息
params.put("ServiceOrdPtOutHospID", emergencyInfo.getHospitalOutId());
params.put("ServiceOrdPtOutHosp", emergencyInfo.getHospitalOutName());
params.put("ServiceOrdPtServicesID", emergencyInfo.getHospitalOutDepartmentId()); // ✅
params.put("ServiceOrdPtServices", emergencyInfo.getHospitalOutDepartment());
// 转入医院信息
params.put("ServiceOrdPtInHospID", emergencyInfo.getHospitalInId());
params.put("ServiceOrdPtInHosp", emergencyInfo.getHospitalInName());
params.put("ServiceOrdPtInServicesID", emergencyInfo.getHospitalInDepartmentId()); // ✅
params.put("ServiceOrdPtInServices", emergencyInfo.getHospitalInDepartment());
// ... 其他参数
// 调用旧系统接口
String response = httpClient.post(legacySystemUrl + "/admin_save_19.gds", params);
表名:sys_task_emergency
| 字段名 | 类型 | 说明 | 允许NULL |
|---|---|---|---|
hospital_out_id |
BIGINT | 转出医院ID(hosp_data.HospID) | 是 |
hospital_out_name |
VARCHAR(200) | 转出医院名称 | 是 |
hospital_out_department |
VARCHAR(100) | 转出科室名称 | 是 |
hospital_out_department_id |
VARCHAR(50) | 转出科室ID(dictionary.vID)✅ | 是 |
hospital_in_id |
BIGINT | 转入医院ID(hosp_data.HospID) | 是 |
hospital_in_name |
VARCHAR(200) | 转入医院名称 | 是 |
hospital_in_department |
VARCHAR(100) | 转入科室名称 | 是 |
hospital_in_department_id |
VARCHAR(50) | 转入科室ID(dictionary.vID)✅ | 是 |
// 在提交前打印数据
console.log('提交数据:', submitData)
console.log('转出科室ID:', submitData.hospitalOut.departmentId)
console.log('转入科室ID:', submitData.hospitalIn.departmentId)
// 在保存前打印数据
log.info("转出医院信息: ID={}, 名称={}, 科室={}, 科室ID={}",
createVO.getHospitalOut().getId(),
createVO.getHospitalOut().getName(),
createVO.getHospitalOut().getDepartment(),
createVO.getHospitalOut().getDepartmentId());
log.info("转入医院信息: ID={}, 名称={}, 科室={}, 科室ID={}",
createVO.getHospitalIn().getId(),
createVO.getHospitalIn().getName(),
createVO.getHospitalIn().getDepartment(),
createVO.getHospitalIn().getDepartmentId());
-- 查询最近创建的任务,检查科室ID是否保存
SELECT
task_id,
hospital_out_name,
hospital_out_department,
hospital_out_department_id, -- 应该有值
hospital_in_name,
hospital_in_department,
hospital_in_department_id, -- 应该有值
create_time
FROM sys_task_emergency
ORDER BY create_time DESC
LIMIT 10;
-- 检查同步状态
SELECT
task_id,
legacy_service_ord_id,
sync_status,
sync_error_msg,
sync_time
FROM sys_task_emergency
WHERE sync_status = 2 -- 同步成功
ORDER BY sync_time DESC
LIMIT 10;
app/pages/task/create-emergency.vue - 任务创建页面app/api/dictionary.js - 科室数据APIruoyi-system/src/main/java/com/ruoyi/system/domain/SysTaskEmergency.java - 实体类ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/TaskCreateVO.java - VO类ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java - 任务服务ruoyi-system/src/main/resources/mapper/system/SysTaskEmergencyMapper.xml - Mapper XMLsql/add_department_id_fields.sql - 科室ID字段添加脚本科室ID的完整流程已经实现:
下一步工作:
- 在旧系统同步服务中添加科室ID参数(ServiceOrdPtServicesID 和 ServiceOrdPtInServicesID)
- 测试完整流程,确保数据正确传递