2025-01-20 (v1.2 更新)
根据旧系统的实际需求,**adminID** 应该使用创建人对应的 OA_UserID,而不是新系统的 creator_id。
文件: LegacySystemSyncServiceImpl.java
方法: buildSyncParams()
位置: 第223-237行
// 管理员ID(创建人ID对应的OA_UserID)
String adminID = "";
if (task.getCreatorId() != null) {
try {
SysUser creator = sysUserMapper.selectUserById(task.getCreatorId());
if (creator != null && creator.getOaUserId() != null) {
adminID = creator.getOaUserId().toString();
log.info("获取创建人OA_UserID成功,用户ID: {}, OA_UserID: {}", task.getCreatorId(), adminID);
} else {
log.warn("创建人未配置OA_UserID,用户ID: {}", task.getCreatorId());
}
} catch (Exception e) {
log.error("查询创建人OA_UserID异常,用户ID: {}", task.getCreatorId(), e);
}
}
params.put("adminID", adminID);
参数说明:
- 参数名: adminID
- 数据来源: sys_user.oa_user_id (通过 creator_id 查询)
- 查询逻辑:
1. 从任务表获取 creator_id
2. 查询用户表: SELECT * FROM sys_user WHERE user_id = creator_id
3. 获取用户的 oa_user_id 字段
4. 将 oa_user_id 作为 adminID 传递
- 数据类型: 字符串 (数字字符串)
- 用途: 关联旧系统OA管理员账号
示例值: adminID=1001
现在同步到旧系统的参数共 66个,包括:
adminID - 新增 (创建人ID)ServiceOrdClass - 单据类型ServiceOrdCoName - 联系人姓名ServiceOrdCoPhone - 联系人电话ServiceOrdPtName - 患者姓名完整参数映射请查看: 旧系统同步参数映射表.md
用户创建急救转运任务
↓
保存到 sys_task 表 (creator_id = 当前登录用户ID)
↓
异步调用同步服务
↓
根据 task.creator_id 查询 sys_user 表
↓
获取 user.oa_user_id 作为 adminID
↓
构建66个参数 (包括 adminID)
↓
HTTP POST 到旧系统 admin_save_19.gds
↓
旧系统返回: OK:ServiceOrdID
↓
保存到 sys_task_emergency.legacy_service_ord_id
| 项目 | v1.1 | v1.2 (当前) |
|---|---|---|
| adminID 来源 | task.creator_id |
user.oa_user_id |
| 查询逻辑 | 直接使用 | 通过 creator_id 查询用户表 |
| 空值处理 | 返回空字符串 | 返回空字符串 + 日志警告 |
| 日志记录 | 无 | 详细的成功/失败日志 |
user_id 和旧系统的管理员ID不一致OA用户ID系统管理 → 用户管理 → 编辑用户 → OA用户IDsys_user.oa_user_id 字段必须存在user_id → oa_user_id → 旧系统的 adminID创建人未配置OA_UserID,用户ID: xxxadminID 传递空字符串同步时会输出详细日志:
# 成功情况
INFO LegacySystemSyncServiceImpl - 获取创建人OA_UserID成功,用户ID: 10, OA_UserID: 1001
# 未配置情况
WARN LegacySystemSyncServiceImpl - 创建人未配置OA_UserID,用户ID: 10
# 异常情况
ERROR LegacySystemSyncServiceImpl - 查询创建人OA_UserID异常,用户ID: 10
-- 查看任务创建人的 OA_UserID
SELECT
t.task_id,
t.task_code,
t.creator_id,
u.user_name,
u.oa_user_id AS adminID,
e.legacy_service_ord_id,
e.sync_status
FROM sys_task t
LEFT JOIN sys_user u ON t.creator_id = u.user_id
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
LIMIT 10;
在旧系统的ServiceOrder表中查询:sql SELECT TOP 10 ServiceOrdID, ServiceOrd_CC_ID, -- 应该等于新系统用户的 oa_user_id ServiceOrdCoName, ServiceOrdPtName, ServiceOrd_CC_Time FROM ServiceOrder WHERE ServiceOrdSource = 10 -- 新系统来源 ORDER BY ServiceOrd_CC_Time DESC
✅ 完全兼容,旧版本同步的任务不受影响
creator_idcreator_id 会自动填充为当前登录用户IDcreator_id 已正确设置| 版本 | 日期 | 说明 |
|---|---|---|
| v1.2 | 2025-01-20 | 修正 adminID 为使用 OA_UserID,增加日志记录 |
| v1.1 | 2025-01-20 | 新增 adminID 参数,创建参数映射表 |
| v1.0 | 2025-01-20 | 初始版本,实现基础同步功能 |
d:\project\急救转运\code\Api\RuoYi-Vue-master\ruoyi-system\src\main\java\com\ruoyi\system\service\impl\LegacySystemSyncServiceImpl.javasys_task.creator_idsys_user.oa_user_idadminIDServiceOrder.ServiceOrd_CC_IDOA用户ID完成时间: 2025-01-20
当前版本: v1.2
状态: ✅ 已完成,待测试