From a75871b38841f5f7fed2a24976dd4c76461ec8bd Mon Sep 17 00:00:00 2001 From: zhangxiongfeng Date: Wed, 5 Aug 2026 08:38:28 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A4=A7=E5=8D=8E=E5=8F=A3=E9=97=A8?= =?UTF-8?q?=E5=AF=B9=E6=8E=A51.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 65ad2b538e17143405490877880f2e62d3d596fb) --- .../zcloud/basic/info/command/UserAddExe.java | 56 ++++++++++++++++--- .../basic/info/command/UserRemoveExe.java | 4 +- .../basic/info/command/UserUpdateExe.java | 2 +- .../repository/impl/UserRepositoryImpl.java | 45 +++++++++++---- 4 files changed, 85 insertions(+), 22 deletions(-) diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java index 1535cb6f..33540242 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java @@ -89,7 +89,7 @@ public class UserAddExe { private final UserCorpRecordGateway userCorpRecordGateway; private ZcloudRedisUtil zcloudRedisUtil; private final UserCorpRecordRepository userCorpRecordRepository; - @DubboReference(check = false) + @DubboReference private UserFacade userFacade; // private final String sourceCode; // @Value("${seng.message:MS000087}") @@ -100,7 +100,7 @@ public class UserAddExe { private final UserExpandInfoRepository userExpandInfoRepository; private final ImgFilesRepository imgFilesRepository; private final DaHuaConfig daHuaConfig; - @DubboReference(version = "1.0.0", group = "primeport") + @DubboReference private ZcloudDaHuaFacade zcloudDaHuaFacade; @Transactional(rollbackFor = Exception.class) @@ -452,12 +452,41 @@ public class UserAddExe { if (plainIdCard != null && plainIdCard.length() >= 14) { maskedIdCard = plainIdCard.substring(0, 6) + "********" + plainIdCard.substring(plainIdCard.length() - 4); } - log.info("Dubbo调用primeport.zcloudDaHuaFacade.syncPerson, name={}, departmentId(corpId)={}, idCardMask={}", - cmd.getName(), cmd.getDepartmentId(), maskedIdCard); + log.info("========== 开始Dubbo调用primeport.zcloudDaHuaFacade.syncPerson =========="); + log.info("Dubbo调用参数: name={}, departmentId(corpId)={}, idCardMask={}, phone={}, code={}", + cmd.getName(), cmd.getDepartmentId(), maskedIdCard, cmd.getPhone(), cmd.getCode()); + log.info("Dubbo调用参数: paperType={}, departmentType={}, type={}, nation={}, nationName={}", + cmd.getPaperType(), cmd.getDepartmentType(), cmd.getType(), cmd.getNation(), cmd.getNationName()); if (cmd.getPersonBiosignatures() != null) { log.info("Dubbo调用携带人脸生物特征, size={}", cmd.getPersonBiosignatures().size()); + } else { + log.info("Dubbo调用未携带人脸生物特征"); + } + log.info("Dubbo调用 cmd对象完整打印: {}", JSONUtil.toJsonStr(cmd)); + + SingleResponse syncResp = null; + try { + log.info("即将执行 zcloudDaHuaFacade.syncPerson(cmd)..."); + syncResp = zcloudDaHuaFacade.syncPerson(cmd); + log.info("zcloudDaHuaFacade.syncPerson(cmd) 执行完成,已返回"); + } catch (Exception e) { + log.error("========== Dubbo调用primeport.zcloudDaHuaFacade.syncPerson 发生异常 ==========", e); + log.error("异常类型: {}", e.getClass().getName()); + log.error("异常信息: {}", e.getMessage()); + if (throwOnFail) { + throw new BizException("同步大华平台失败,Dubbo调用异常:" + e.getMessage()); + } else { + log.warn("同步大华平台Dubbo调用异常(不影响本地数据保存): {}", e.getMessage()); + return result; + } + } + + log.info("========== Dubbo调用返回结果 =========="); + log.info("返回对象: syncResp={}", syncResp); + if (syncResp != null) { + log.info("返回详情: success={}, errCode={}, errMessage={}, data={}", + syncResp.isSuccess(), syncResp.getErrCode(), syncResp.getErrMessage(), syncResp.getData()); } - SingleResponse syncResp = zcloudDaHuaFacade.syncPerson(cmd); result.setDahuaCode(plainIdCard); userE.setDahuaCode(plainIdCard); if (syncResp == null || !syncResp.isSuccess()) { @@ -476,7 +505,12 @@ public class UserAddExe { if (data != null) { if (data instanceof Map) { Map dataMap = (Map) data; - Object idObj = dataMap.get("id"); + log.info("大华返回data Map内容: {}", dataMap); + // primeport返回的是personId,不是id + Object idObj = dataMap.get("personId"); + if (idObj == null) { + idObj = dataMap.get("id"); + } if (idObj != null) { try { Integer dahuaId = Integer.valueOf(idObj.toString()); @@ -486,10 +520,16 @@ public class UserAddExe { } catch (Exception e) { log.warn("转换大华返回id为Integer失败, idObj={}", idObj); } + } else { + log.warn("大华返回数据中未找到personId或id字段, dataMap keys={}", dataMap.keySet()); } } else if (data instanceof cn.hutool.json.JSONObject) { cn.hutool.json.JSONObject dataJson = (cn.hutool.json.JSONObject) data; - Object idObj = dataJson.get("id"); + log.info("大华返回data JSONObject内容: {}", dataJson); + Object idObj = dataJson.get("personId"); + if (idObj == null) { + idObj = dataJson.get("id"); + } if (idObj != null) { try { Integer dahuaId = Integer.valueOf(idObj.toString()); @@ -499,6 +539,8 @@ public class UserAddExe { } catch (Exception e) { log.warn("转换大华返回id为Integer失败, idObj={}", idObj); } + } else { + log.warn("大华返回数据中未找到personId或id字段"); } } } diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/UserRemoveExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/UserRemoveExe.java index 2b8aae97..f986fc0e 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/UserRemoveExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/UserRemoveExe.java @@ -49,13 +49,13 @@ public class UserRemoveExe { private final UserChangeRecordGateway userChangeRecordGateway; private final UserJobHandoverRepository userJobHandoverRepository; private final HumanUserUpdateExe humanUserUpdateExe; - @DubboReference(check = false) + @DubboReference private UserFacade userFacade; // @Autowired private final ZcloudRedisUtil zcloudRedisUtil; private final UserCorpRecordRepository userCorpRecordRepository; private final DaHuaConfig daHuaConfig; - @DubboReference(version = "1.0.0", group = "primeport") + @DubboReference private ZcloudDaHuaFacade zcloudDaHuaFacade; @Transactional(rollbackFor = Exception.class) diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java index 72b1fc2a..c412ec1b 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java @@ -78,7 +78,7 @@ public class UserUpdateExe { @DubboReference private ZcloudRiskFacade zcloudRiskFacade; private final DaHuaConfig daHuaConfig; - @DubboReference(version = "1.0.0", group = "primeport") + @DubboReference private ZcloudDaHuaFacade zcloudDaHuaFacade; diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserRepositoryImpl.java index 8205737c..d38f7f52 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserRepositoryImpl.java @@ -355,11 +355,23 @@ public class UserRepositoryImpl extends BaseRepositoryImpl i roleDeptAddCmd.setDeptId(userDO.getDepartmentId()); List roleDeptAddCmdList = Collections.singletonList(roleDeptAddCmd); userAddCmd.setRoleDepts(roleDeptAddCmdList); - log.info("GBS新增用户开始,用户信息:{}", JSONUtil.toJsonStr(userAddCmd)); + + // 打印详细参数,方便排查底座报错原因 + log.info("【普通用户-底座新增】开始"); + log.info("【普通用户-底座新增】参数详情: account={}, name={}, password={}, tenantId(corpinfoId)={}, roleId={}, departmentId={}", + userAddCmd.getAccount(), userAddCmd.getName(), + userDO.getPassword() != null ? "已设置(长度:" + userDO.getPassword().length() + ")" : "null", + userDO.getCorpinfoId(), userDO.getRoleId(), userDO.getDepartmentId()); + log.info("【普通用户-底座新增】完整JSON: {}", JSONUtil.toJsonStr(userAddCmd)); + log.info("【普通用户-底座新增】userDO完整JSON: {}", JSONUtil.toJsonStr(userDO)); + SingleResponse gbsResult = userFacade.add(userAddCmd); - log.info("GBS新增用户结束,用户id:{},结果:{}", gbsResult.getData(), JSONUtil.toJsonStr(gbsResult)); + log.info("【普通用户-底座新增】结束,用户id:{},结果:{}", gbsResult.getData(), JSONUtil.toJsonStr(gbsResult)); if (!gbsResult.isSuccess()) { - throw new RuntimeException("GBS新增用户失败,用户id:" + gbsResult.getData()); + String errMsg = String.format("【普通用户-底座新增失败】errCode=%s, errMessage=%s, 用户id=%s", + gbsResult.getErrCode(), gbsResult.getErrMessage(), gbsResult.getData()); + log.error(errMsg); + throw new RuntimeException(errMsg); } userDO.setId(gbsResult.getData()); if (userDO.getSort() == null) { @@ -386,11 +398,14 @@ public class UserRepositoryImpl extends BaseRepositoryImpl i roleDeptAddCmd.setDeptId(userDO.getDepartmentId()); List roleDeptAddCmdList = Collections.singletonList(roleDeptAddCmd); userAddCmd.setRoleDepts(roleDeptAddCmdList); - log.info("GBS新增用户开始,用户信息:{}", JSONUtil.toJsonStr(userAddCmd)); + log.info("【演示用户-底座新增】开始,用户信息:{}", JSONUtil.toJsonStr(userAddCmd)); SingleResponse gbsResult = userFacade.add(userAddCmd); - log.info("GBS新增用户结束,用户id:{},结果:{}", gbsResult.getData(), JSONUtil.toJsonStr(gbsResult)); + log.info("【演示用户-底座新增】结束,用户id:{},结果:{}", gbsResult.getData(), JSONUtil.toJsonStr(gbsResult)); if (!gbsResult.isSuccess()) { - throw new RuntimeException("GBS新增用户失败,用户id:" + gbsResult.getData()); + String errMsg = String.format("【演示用户-底座新增失败】errCode=%s, errMessage=%s, 用户id=%s", + gbsResult.getErrCode(), gbsResult.getErrMessage(), gbsResult.getData()); + log.error(errMsg); + throw new RuntimeException(errMsg); } userDO.setId(gbsResult.getData()); if (userDO.getSort() == null) { @@ -455,11 +470,14 @@ public class UserRepositoryImpl extends BaseRepositoryImpl i userAddCmd.setRoleDepts(roleDeptAddCmdList); userAddCmd.setId(userDO.getId()); userAddCmd.setPassword(userDO.getPassword()); - log.info("GBS新增用户开始,用户信息:{}", JSONUtil.toJsonStr(userAddCmd)); + log.info("【相关方用户-底座新增】开始,用户信息:{}", JSONUtil.toJsonStr(userAddCmd)); SingleResponse gbsResult = userFacade.add(userAddCmd); - log.info("GBS新增用户结束,用户id:{},结果:{}", gbsResult.getData(), JSONUtil.toJsonStr(gbsResult)); + log.info("【相关方用户-底座新增】结束,用户id:{},结果:{}", gbsResult.getData(), JSONUtil.toJsonStr(gbsResult)); if (!gbsResult.isSuccess()) { - throw new RuntimeException("GBS新增用户失败,用户id:" + gbsResult.getData()); + String errMsg = String.format("【相关方用户-底座新增失败】errCode=%s, errMessage=%s, 用户id=%s", + gbsResult.getErrCode(), gbsResult.getErrMessage(), gbsResult.getData()); + log.error(errMsg); + throw new RuntimeException(errMsg); } } @@ -772,11 +790,14 @@ public class UserRepositoryImpl extends BaseRepositoryImpl i List roleDeptAddCmdList = Collections.singletonList(roleDeptAddCmd); userAddCmd.setRoleDepts(roleDeptAddCmdList); userAddCmd.setId(userE.getId()); - log.info("GBS新增用户开始,用户信息:{}", JSONUtil.toJsonStr(userAddCmd)); + log.info("【用户恢复入职-底座新增】开始,用户信息:{}", JSONUtil.toJsonStr(userAddCmd)); SingleResponse gbsResult = userFacade.add(userAddCmd); - log.info("GBS新增用户结束,用户id:{},结果:{}", gbsResult.getData(), JSONUtil.toJsonStr(gbsResult)); + log.info("【用户恢复入职-底座新增】结束,用户id:{},结果:{}", gbsResult.getData(), JSONUtil.toJsonStr(gbsResult)); if (!gbsResult.isSuccess()) { - throw new RuntimeException("GBS新增用户失败,用户id:" + gbsResult.getData()); + String errMsg = String.format("【用户恢复入职-底座新增失败】errCode=%s, errMessage=%s, 用户id=%s", + gbsResult.getErrCode(), gbsResult.getErrMessage(), gbsResult.getData()); + log.error(errMsg); + throw new RuntimeException(errMsg); } } } From 4d1c5ef0ad787b152fc023d307e84bfbf7a30077 Mon Sep 17 00:00:00 2001 From: zhangxiongfeng Date: Thu, 6 Aug 2026 10:28:49 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=8F=98=E5=8A=A8?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=92=8C=E5=A4=A7=E5=8D=8E=E5=BC=BA=E5=88=B6?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zcloud/basic/info/command/UserAddExe.java | 27 ++++------ .../basic/info/command/UserRemoveExe.java | 54 ++++++++++--------- .../basic/info/command/UserUpdateExe.java | 46 +++++++++------- 3 files changed, 67 insertions(+), 60 deletions(-) diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java index 33540242..ec82ee92 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java @@ -204,7 +204,7 @@ public class UserAddExe { log.error("用户变更记录保存失败(不影响用户主体), userId: {}, error: {}", userE.getId(), e.getMessage(), e); } DaHuaSyncResult syncResult = syncDaHuaPerson(userE); - if (syncResult.dahuaId != null || (syncResult.dahuaCode != null && !syncResult.dahuaCode.trim().isEmpty())) { + if (syncResult.dahuaId != null) { try { UserE updateDahua = new UserE(); updateDahua.setId(userE.getId()); @@ -214,10 +214,11 @@ public class UserAddExe { log.info("写回dahuaId/dahuaCode成功, userId={}, dahuaId={}, dahuaCode={}", userE.getId(), syncResult.dahuaId, syncResult.dahuaCode); } catch (Exception e) { - log.error("写回dahuaId/dahuaCode失败, userId={}, dahuaId={}, dahuaCode={}", + log.error("写回dahuaId/dahuaCode失败(不影响本地数据), userId={}, dahuaId={}, dahuaCode={}", userE.getId(), syncResult.dahuaId, syncResult.dahuaCode, e); - throw new BizException("写回大华信息到本地失败:" + e.getMessage()); } + } else { + log.info("大华同步未返回dahuaId,跳过写回操作, userId={}, dahuaCode={}", userE.getId(), syncResult.dahuaCode); } } catch (BizException e) { log.error("新增用户业务异常: {}", e.getMessage(), e); @@ -470,15 +471,11 @@ public class UserAddExe { syncResp = zcloudDaHuaFacade.syncPerson(cmd); log.info("zcloudDaHuaFacade.syncPerson(cmd) 执行完成,已返回"); } catch (Exception e) { - log.error("========== Dubbo调用primeport.zcloudDaHuaFacade.syncPerson 发生异常 ==========", e); + log.error("========== Dubbo调用primeport.zcloudDaHuaFacade.syncPerson 发生异常(不影响本地数据保存) ==========", e); log.error("异常类型: {}", e.getClass().getName()); log.error("异常信息: {}", e.getMessage()); - if (throwOnFail) { - throw new BizException("同步大华平台失败,Dubbo调用异常:" + e.getMessage()); - } else { - log.warn("同步大华平台Dubbo调用异常(不影响本地数据保存): {}", e.getMessage()); - return result; - } + log.warn("同步大华平台Dubbo调用异常(不影响本地数据保存): {}", e.getMessage()); + return result; } log.info("========== Dubbo调用返回结果 =========="); @@ -493,13 +490,9 @@ public class UserAddExe { String errCode = syncResp == null ? "" : syncResp.getErrCode(); String errMessage = syncResp == null ? "大华Dubbo返回为空" : syncResp.getErrMessage(); if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员同步失败"; - if (throwOnFail) { - throw new BizException("同步大华平台失败:" + errMessage); - } else { - log.warn("同步大华平台未成功(重复信息或其他原因,不影响本地数据保存): errCode={}, errMessage={}, userId={}, idCardMask={}", - errCode, errMessage, userE.getId(), maskedIdCard); - return result; - } + log.warn("同步大华平台未成功(不影响本地数据保存): errCode={}, errMessage={}, userId={}, idCardMask={}", + errCode, errMessage, userE.getId(), maskedIdCard); + return result; } Object data = syncResp.getData(); if (data != null) { diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/UserRemoveExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/UserRemoveExe.java index f986fc0e..77805701 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/UserRemoveExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/UserRemoveExe.java @@ -78,23 +78,26 @@ public class UserRemoveExe { // ① 先本地逻辑删除(事务内,还未提交) userGateway.deletedUserById(id); - // ② 本地操作完成后再删大华。若大华失败 → throw BizException → 本地全部回滚 if (needDeleteDaHua) { if (daHuaConfig.getDockFlag() == null || daHuaConfig.getDockFlag() != 1) { log.info("【单个删除-大华删除跳过】dockFlag未开启, userId={}", id); } else { - DaHuaPersonDeleteCmd delCmd = new DaHuaPersonDeleteCmd(); - delCmd.setIds(Collections.singletonList(dahuaId.longValue())); - SingleResponse delResp = zcloudDaHuaFacade.deletePerson(delCmd); - if (delResp == null || !delResp.isSuccess()) { - String errCode = delResp == null ? "" : delResp.getErrCode(); - String errMessage = delResp == null ? "大华Dubbo返回为空" : delResp.getErrMessage(); - if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员删除失败"; - log.error("【单个删除-大华删除失败→触发本地回滚】userId={}, dahuaId={}, errCode={}, errMessage={}", - id, dahuaId, errCode, errMessage); - throw new BizException("删除大华平台人员失败:" + errMessage); + try { + DaHuaPersonDeleteCmd delCmd = new DaHuaPersonDeleteCmd(); + delCmd.setIds(Collections.singletonList(dahuaId.longValue())); + SingleResponse delResp = zcloudDaHuaFacade.deletePerson(delCmd); + if (delResp == null || !delResp.isSuccess()) { + String errCode = delResp == null ? "" : delResp.getErrCode(); + String errMessage = delResp == null ? "大华Dubbo返回为空" : delResp.getErrMessage(); + if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员删除失败"; + log.warn("【单个删除-大华删除失败(不影响本地数据)】userId={}, dahuaId={}, errCode={}, errMessage={}", + id, dahuaId, errCode, errMessage); + } else { + log.info("【单个删除-大华删除成功】userId={}, dahuaId={}", id, dahuaId); + } + } catch (Exception e) { + log.error("【单个删除-大华删除异常(不影响本地数据)】userId={}, dahuaId={}", id, dahuaId, e); } - log.info("【单个删除-大华删除成功】userId={}, dahuaId={}", id, dahuaId); } } } catch (BizException e) { @@ -215,23 +218,26 @@ public class UserRemoveExe { throw new BizException("本地批量删除用户失败"); } - // ② 本地成功后再删大华。大华失败→throw→本地回滚 if (!dahuaIds.isEmpty()) { if (daHuaConfig.getDockFlag() == null || daHuaConfig.getDockFlag() != 1) { log.info("【批量删除-大华删除跳过】dockFlag未开启, idList={}", idList); } else { - DaHuaPersonDeleteCmd delCmd = new DaHuaPersonDeleteCmd(); - delCmd.setIds(dahuaIds.stream().map(Integer::longValue).collect(Collectors.toList())); - SingleResponse delResp = zcloudDaHuaFacade.deletePerson(delCmd); - if (delResp == null || !delResp.isSuccess()) { - String errCode = delResp == null ? "" : delResp.getErrCode(); - String errMessage = delResp == null ? "大华Dubbo返回为空" : delResp.getErrMessage(); - if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员删除失败"; - log.error("【批量删除-大华删除失败→触发本地回滚】localIds={}, dahuaIds={}, errCode={}, errMessage={}", - idList, dahuaIds, errCode, errMessage); - throw new BizException("删除大华平台人员失败:" + errMessage); + try { + DaHuaPersonDeleteCmd delCmd = new DaHuaPersonDeleteCmd(); + delCmd.setIds(dahuaIds.stream().map(Integer::longValue).collect(Collectors.toList())); + SingleResponse delResp = zcloudDaHuaFacade.deletePerson(delCmd); + if (delResp == null || !delResp.isSuccess()) { + String errCode = delResp == null ? "" : delResp.getErrCode(); + String errMessage = delResp == null ? "大华Dubbo返回为空" : delResp.getErrMessage(); + if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员删除失败"; + log.warn("【批量删除-大华删除失败(不影响本地数据)】localIds={}, dahuaIds={}, errCode={}, errMessage={}", + idList, dahuaIds, errCode, errMessage); + } else { + log.info("【批量删除-大华删除成功】dahuaIds={}", dahuaIds); + } + } catch (Exception e) { + log.error("【批量删除-大华删除异常(不影响本地数据)】localIds={}, dahuaIds={}", idList, dahuaIds, e); } - log.info("【批量删除-大华删除成功】dahuaIds={}", dahuaIds); } } return true; diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java index c412ec1b..f8751f88 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java @@ -474,15 +474,19 @@ public class UserUpdateExe { if (cmd.getPersonBiosignatures() != null) { log.info("Dubbo调用携带人脸生物特征, size={}", cmd.getPersonBiosignatures().size()); } - SingleResponse updateResp = zcloudDaHuaFacade.updatePerson(cmd); - if (updateResp == null || !updateResp.isSuccess()) { - String errCode = updateResp == null ? "" : updateResp.getErrCode(); - String errMessage = updateResp == null ? "大华Dubbo返回为空" : updateResp.getErrMessage(); - if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员更新失败"; - log.error("同步大华人员(更新)失败, errCode={}, errMessage={}, name={}, idCard={}", errCode, errMessage, newName, maskedIdCard); - throw new BizException("同步大华平台失败:" + errMessage); + try { + SingleResponse updateResp = zcloudDaHuaFacade.updatePerson(cmd); + if (updateResp == null || !updateResp.isSuccess()) { + String errCode = updateResp == null ? "" : updateResp.getErrCode(); + String errMessage = updateResp == null ? "大华Dubbo返回为空" : updateResp.getErrMessage(); + if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员更新失败"; + log.warn("同步大华人员(更新)失败(不影响本地数据), errCode={}, errMessage={}, name={}, idCard={}", errCode, errMessage, newName, maskedIdCard); + } else { + log.info("同步大华人员(更新)成功, name={}, idCard={}", newName, maskedIdCard); + } + } catch (Exception e) { + log.error("同步大华人员(更新)异常(不影响本地数据), name={}, idCard={}", newName, maskedIdCard, e); } - log.info("同步大华人员(更新)成功, name={}, idCard={}", newName, maskedIdCard); } @Transactional(rollbackFor = Exception.class) @@ -772,18 +776,22 @@ public class UserUpdateExe { if (daHuaConfig.getDockFlag() == null || daHuaConfig.getDockFlag() != 1) { log.info("【离职-大华删除跳过】dockFlag未开启, userId={}", userDO.getId()); } else { - DaHuaPersonDeleteCmd delCmd = new DaHuaPersonDeleteCmd(); - delCmd.setIds(Collections.singletonList(dahuaId.longValue())); - SingleResponse delResp = zcloudDaHuaFacade.deletePerson(delCmd); - if (delResp == null || !delResp.isSuccess()) { - String errCode = delResp == null ? "" : delResp.getErrCode(); - String errMessage = delResp == null ? "大华Dubbo返回为空" : delResp.getErrMessage(); - if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员删除失败"; - log.error("【离职-大华删除失败→触发本地回滚】userId={}, dahuaId={}, errCode={}, errMessage={}", - userDO.getId(), dahuaId, errCode, errMessage); - throw new BizException("同步大华平台删除离职人员失败:" + errMessage); + try { + DaHuaPersonDeleteCmd delCmd = new DaHuaPersonDeleteCmd(); + delCmd.setIds(Collections.singletonList(dahuaId.longValue())); + SingleResponse delResp = zcloudDaHuaFacade.deletePerson(delCmd); + if (delResp == null || !delResp.isSuccess()) { + String errCode = delResp == null ? "" : delResp.getErrCode(); + String errMessage = delResp == null ? "大华Dubbo返回为空" : delResp.getErrMessage(); + if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员删除失败"; + log.warn("【离职-大华删除失败(不影响本地数据)】userId={}, dahuaId={}, errCode={}, errMessage={}", + userDO.getId(), dahuaId, errCode, errMessage); + } else { + log.info("【离职-大华删除成功】userId={}, dahuaId={}", userDO.getId(), dahuaId); + } + } catch (Exception e) { + log.error("【离职-大华删除异常(不影响本地数据)】userId={}, dahuaId={}", userDO.getId(), dahuaId, e); } - log.info("【离职-大华删除成功】userId={}, dahuaId={}", userDO.getId(), dahuaId); } } else { log.info("【离职-跳过同步大华】用户dahuaId为空,未同步过大华平台, userId={}, name={}", userDO.getId(), userDO.getName());