From 6c8c479984545ddbf34b3fd0186387f5ddf7084f Mon Sep 17 00:00:00 2001 From: chenbowen Date: Tue, 25 Nov 2025 20:08:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=20nacos=20=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=88=B0=E5=9F=BA=E7=A1=80=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../integration/IWorkSyncEntityTypeEnum.java | 19 ++++++++++ .../IWorkIntegrationErrorCodeConstants.java | 2 +- .../iwork/impl/IWorkSyncServiceImpl.java | 38 +++++++++++-------- 3 files changed, 42 insertions(+), 17 deletions(-) diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/enums/integration/IWorkSyncEntityTypeEnum.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/enums/integration/IWorkSyncEntityTypeEnum.java index c9e9e00a..8a1ada16 100644 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/enums/integration/IWorkSyncEntityTypeEnum.java +++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/enums/integration/IWorkSyncEntityTypeEnum.java @@ -1,5 +1,10 @@ package com.zt.plat.module.system.enums.integration; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +import java.util.Locale; + import lombok.AllArgsConstructor; import lombok.Getter; @@ -15,6 +20,7 @@ public enum IWorkSyncEntityTypeEnum { JOB_TITLE("jobTitle", "岗位"), USER("user", "人员"); + @JsonValue private final String code; private final String label; @@ -29,4 +35,17 @@ public enum IWorkSyncEntityTypeEnum { } return null; } + + @JsonCreator(mode = JsonCreator.Mode.DELEGATING) + public static IWorkSyncEntityTypeEnum fromJson(String code) { + IWorkSyncEntityTypeEnum value = fromCode(code); + if (value != null || code == null) { + return value; + } + try { + return IWorkSyncEntityTypeEnum.valueOf(code.trim().toUpperCase(Locale.ROOT)); + } catch (IllegalArgumentException ex) { + return null; + } + } } diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/IWorkIntegrationErrorCodeConstants.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/IWorkIntegrationErrorCodeConstants.java index fc9df67c..a7a1f39d 100644 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/IWorkIntegrationErrorCodeConstants.java +++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/IWorkIntegrationErrorCodeConstants.java @@ -17,5 +17,5 @@ public interface IWorkIntegrationErrorCodeConstants { ErrorCode IWORK_OPERATOR_USER_MISSING = new ErrorCode(1_010_200_007, "缺少 iWork 操作人用户编号"); ErrorCode IWORK_WORKFLOW_ID_MISSING = new ErrorCode(1_010_200_008, "缺少 iWork 流程模板编号"); ErrorCode IWORK_ORG_IDENTIFIER_MISSING = new ErrorCode(1_010_200_009, "iWork 人力组织接口缺少认证标识"); - ErrorCode IWORK_ORG_REMOTE_FAILED = new ErrorCode(1_010_200_010, "iWork 人力组织接口请求失败"); + ErrorCode IWORK_ORG_REMOTE_FAILED = new ErrorCode(1_010_200_010, "iWork 人力组织接口请求失败{}"); } diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkSyncServiceImpl.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkSyncServiceImpl.java index fbc21151..62870fe0 100644 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkSyncServiceImpl.java +++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkSyncServiceImpl.java @@ -2,20 +2,8 @@ package com.zt.plat.module.system.service.integration.iwork.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkDepartmentQueryReqVO; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkFullSyncReqVO; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkFullSyncRespVO; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrDepartmentPageRespVO; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrJobTitlePageRespVO; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrSubcompanyPageRespVO; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrUserPageRespVO; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkJobTitleQueryReqVO; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkSingleSyncReqVO; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkSingleSyncRespVO; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkSubcompanyQueryReqVO; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkSyncBatchStatVO; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkSyncEntityStatVO; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkUserQueryReqVO; +import com.zt.plat.framework.common.exception.util.ServiceExceptionUtil; +import com.zt.plat.module.system.controller.admin.integration.iwork.vo.*; import com.zt.plat.module.system.enums.integration.IWorkSyncEntityTypeEnum; import com.zt.plat.module.system.service.integration.iwork.IWorkOrgRestService; import com.zt.plat.module.system.service.integration.iwork.IWorkSyncProcessor; @@ -29,6 +17,8 @@ import java.util.Collections; import java.util.List; import java.util.Set; +import static com.zt.plat.module.system.service.integration.iwork.IWorkIntegrationErrorCodeConstants.IWORK_ORG_REMOTE_FAILED; + /** * iWork 同步服务实现 */ @@ -90,6 +80,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService { query.setCurpage(page); query.setPagesize(pageSize); IWorkHrSubcompanyPageRespVO pageResp = orgRestService.listSubcompanies(query); + ensureIWorkSuccess("拉取分部", pageResp.isSuccess(), pageResp.getMessage()); List dataList = CollUtil.emptyIfNull(pageResp.getDataList()); IWorkSyncProcessor.BatchResult result = syncProcessor.syncSubcompanies(dataList, options); updateStat(stat, result, dataList.size()); @@ -106,6 +97,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService { query.setCurpage(page); query.setPagesize(pageSize); IWorkHrDepartmentPageRespVO pageResp = orgRestService.listDepartments(query); + ensureIWorkSuccess("拉取部门", pageResp.isSuccess(), pageResp.getMessage()); List dataList = CollUtil.emptyIfNull(pageResp.getDataList()); IWorkSyncProcessor.BatchResult result = syncProcessor.syncDepartments(dataList, options); updateStat(stat, result, dataList.size()); @@ -122,6 +114,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService { query.setCurpage(page); query.setPagesize(pageSize); IWorkHrJobTitlePageRespVO pageResp = orgRestService.listJobTitles(query); + ensureIWorkSuccess("拉取岗位", pageResp.isSuccess(), pageResp.getMessage()); List dataList = CollUtil.emptyIfNull(pageResp.getDataList()); IWorkSyncProcessor.BatchResult result = syncProcessor.syncJobTitles(dataList, options); updateStat(stat, result, dataList.size()); @@ -138,6 +131,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService { query.setCurpage(page); query.setPagesize(pageSize); IWorkHrUserPageRespVO pageResp = orgRestService.listUsers(query); + ensureIWorkSuccess("拉取人员", pageResp.isSuccess(), pageResp.getMessage()); List dataList = CollUtil.emptyIfNull(pageResp.getDataList()); IWorkSyncProcessor.BatchResult result = syncProcessor.syncUsers(dataList, options); updateStat(stat, result, dataList.size()); @@ -176,7 +170,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService { } private void processSingleUser(IWorkSingleSyncReqVO reqVO, IWorkSingleSyncRespVO respVO) { - IWorkHrUserPageRespVO.User data = fetchSingleUser(reqVO.getEntityId()); + IWorkHrUserPageRespVO.User data = fetchSingleUser(reqVO.getEntityId().toString()); if (data == null) { markNotFound(respVO, "人员"); return; @@ -246,6 +240,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService { query.setPagesize(1); query.setParams(Collections.singletonMap("subcompanyid", entityId)); IWorkHrSubcompanyPageRespVO pageResp = orgRestService.listSubcompanies(query); + ensureIWorkSuccess("获取分部详情", pageResp.isSuccess(), pageResp.getMessage()); return CollUtil.getFirst(pageResp.getDataList()); } @@ -255,6 +250,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService { query.setPagesize(1); query.setParams(Collections.singletonMap("departmentid", entityId)); IWorkHrDepartmentPageRespVO pageResp = orgRestService.listDepartments(query); + ensureIWorkSuccess("获取部门详情", pageResp.isSuccess(), pageResp.getMessage()); return CollUtil.getFirst(pageResp.getDataList()); } @@ -264,18 +260,28 @@ public class IWorkSyncServiceImpl implements IWorkSyncService { query.setPagesize(1); query.setParams(Collections.singletonMap("jobtitleid", entityId)); IWorkHrJobTitlePageRespVO pageResp = orgRestService.listJobTitles(query); + ensureIWorkSuccess("获取岗位详情", pageResp.isSuccess(), pageResp.getMessage()); return CollUtil.getFirst(pageResp.getDataList()); } - private IWorkHrUserPageRespVO.User fetchSingleUser(Long entityId) { + private IWorkHrUserPageRespVO.User fetchSingleUser(String entityId) { IWorkUserQueryReqVO query = new IWorkUserQueryReqVO(); query.setCurpage(1); query.setPagesize(1); query.setParams(Collections.singletonMap("id", entityId)); IWorkHrUserPageRespVO pageResp = orgRestService.listUsers(query); + ensureIWorkSuccess("获取人员详情", pageResp.isSuccess(), pageResp.getMessage()); return CollUtil.getFirst(pageResp.getDataList()); } + private void ensureIWorkSuccess(String action, boolean success, String remoteMessage) { + if (success) { + return; + } + String message = StrUtil.blankToDefault(remoteMessage, StrUtil.format("{}:iWork 返回失败", action)); + throw ServiceExceptionUtil.exception(IWORK_ORG_REMOTE_FAILED, message); + } + @FunctionalInterface private interface PageExecutor { BatchExecution execute(int pageNumber, int pageSize);