From a0ec76a8d8d0928f29c74f5688594a8361e46c30 Mon Sep 17 00:00:00 2001 From: chenbowen Date: Thu, 15 Jan 2026 17:50:21 +0800 Subject: [PATCH] =?UTF-8?q?iwork=20=E5=90=8C=E6=AD=A5=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=9A=84=E8=A7=84=E5=88=99=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iwork/impl/IWorkSyncProcessorImpl.java | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkSyncProcessorImpl.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkSyncProcessorImpl.java index 0d44b790..3f7aeda0 100644 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkSyncProcessorImpl.java +++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkSyncProcessorImpl.java @@ -326,9 +326,8 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { boolean inactive = isInactiveUser(user.getStatus()); String username = resolveUsername(user); if (StrUtil.isBlank(username)) { - log.warn("[iWork] 人员缺少可用账号(工号={}, 登录账号={}),跳过:id={} name={}", - user.getWorkcode(), user.getLoginid(), user.getId(), user.getLastname()); - result.increaseFailed(); + logSkip("人员", user.getId(), "缺少工号与登录账号,跳过同步"); + result.increaseSkipped(); continue; } try { @@ -545,7 +544,7 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { CommonStatusEnum status) { UserSaveReqVO req = new UserSaveReqVO(); req.setUsername(username); - req.setWorkcode(trimToNull(source.getWorkcode())); + req.setWorkcode(resolveWorkcode(source)); req.setNickname(limitLength(StrUtil.blankToDefault(source.getLastname(), username), 30)); req.setRemark(buildUserRemark(source)); if (deptId != null) { @@ -776,6 +775,26 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { * 工号优先、登录账号兜底,确保账号体系与 iWork 一致 */ private String resolveUsername(IWorkHrUserPageRespVO.User user) { + if (user == null) { + return null; + } + String workcode = resolveWorkcode(user); + if (StrUtil.isNotBlank(workcode)) { + return workcode; + } + if (StrUtil.isNotBlank(user.getLoginid())) { + return user.getLoginid().trim(); + } + return null; + } + + /** + * 工号为空时自动使用登录账号作为工号兜底,避免因缺失工号而跳过同步。 + */ + private String resolveWorkcode(IWorkHrUserPageRespVO.User user) { + if (user == null) { + return null; + } if (StrUtil.isNotBlank(user.getWorkcode())) { return user.getWorkcode().trim(); }