同步 nacos 配置到基础系统

This commit is contained in:
chenbowen
2025-11-25 20:08:31 +08:00
parent b35df8493c
commit 6c8c479984
3 changed files with 42 additions and 17 deletions

View File

@@ -1,5 +1,10 @@
package com.zt.plat.module.system.enums.integration; 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.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
@@ -15,6 +20,7 @@ public enum IWorkSyncEntityTypeEnum {
JOB_TITLE("jobTitle", "岗位"), JOB_TITLE("jobTitle", "岗位"),
USER("user", "人员"); USER("user", "人员");
@JsonValue
private final String code; private final String code;
private final String label; private final String label;
@@ -29,4 +35,17 @@ public enum IWorkSyncEntityTypeEnum {
} }
return null; 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;
}
}
} }

View File

@@ -17,5 +17,5 @@ public interface IWorkIntegrationErrorCodeConstants {
ErrorCode IWORK_OPERATOR_USER_MISSING = new ErrorCode(1_010_200_007, "缺少 iWork 操作人用户编号"); 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_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_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 人力组织接口请求失败{}");
} }

View File

@@ -2,20 +2,8 @@ package com.zt.plat.module.system.service.integration.iwork.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkDepartmentQueryReqVO; import com.zt.plat.framework.common.exception.util.ServiceExceptionUtil;
import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkFullSyncReqVO; import com.zt.plat.module.system.controller.admin.integration.iwork.vo.*;
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.module.system.enums.integration.IWorkSyncEntityTypeEnum; 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.IWorkOrgRestService;
import com.zt.plat.module.system.service.integration.iwork.IWorkSyncProcessor; 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.List;
import java.util.Set; import java.util.Set;
import static com.zt.plat.module.system.service.integration.iwork.IWorkIntegrationErrorCodeConstants.IWORK_ORG_REMOTE_FAILED;
/** /**
* iWork 同步服务实现 * iWork 同步服务实现
*/ */
@@ -90,6 +80,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService {
query.setCurpage(page); query.setCurpage(page);
query.setPagesize(pageSize); query.setPagesize(pageSize);
IWorkHrSubcompanyPageRespVO pageResp = orgRestService.listSubcompanies(query); IWorkHrSubcompanyPageRespVO pageResp = orgRestService.listSubcompanies(query);
ensureIWorkSuccess("拉取分部", pageResp.isSuccess(), pageResp.getMessage());
List<IWorkHrSubcompanyPageRespVO.Subcompany> dataList = CollUtil.emptyIfNull(pageResp.getDataList()); List<IWorkHrSubcompanyPageRespVO.Subcompany> dataList = CollUtil.emptyIfNull(pageResp.getDataList());
IWorkSyncProcessor.BatchResult result = syncProcessor.syncSubcompanies(dataList, options); IWorkSyncProcessor.BatchResult result = syncProcessor.syncSubcompanies(dataList, options);
updateStat(stat, result, dataList.size()); updateStat(stat, result, dataList.size());
@@ -106,6 +97,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService {
query.setCurpage(page); query.setCurpage(page);
query.setPagesize(pageSize); query.setPagesize(pageSize);
IWorkHrDepartmentPageRespVO pageResp = orgRestService.listDepartments(query); IWorkHrDepartmentPageRespVO pageResp = orgRestService.listDepartments(query);
ensureIWorkSuccess("拉取部门", pageResp.isSuccess(), pageResp.getMessage());
List<IWorkHrDepartmentPageRespVO.Department> dataList = CollUtil.emptyIfNull(pageResp.getDataList()); List<IWorkHrDepartmentPageRespVO.Department> dataList = CollUtil.emptyIfNull(pageResp.getDataList());
IWorkSyncProcessor.BatchResult result = syncProcessor.syncDepartments(dataList, options); IWorkSyncProcessor.BatchResult result = syncProcessor.syncDepartments(dataList, options);
updateStat(stat, result, dataList.size()); updateStat(stat, result, dataList.size());
@@ -122,6 +114,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService {
query.setCurpage(page); query.setCurpage(page);
query.setPagesize(pageSize); query.setPagesize(pageSize);
IWorkHrJobTitlePageRespVO pageResp = orgRestService.listJobTitles(query); IWorkHrJobTitlePageRespVO pageResp = orgRestService.listJobTitles(query);
ensureIWorkSuccess("拉取岗位", pageResp.isSuccess(), pageResp.getMessage());
List<IWorkHrJobTitlePageRespVO.JobTitle> dataList = CollUtil.emptyIfNull(pageResp.getDataList()); List<IWorkHrJobTitlePageRespVO.JobTitle> dataList = CollUtil.emptyIfNull(pageResp.getDataList());
IWorkSyncProcessor.BatchResult result = syncProcessor.syncJobTitles(dataList, options); IWorkSyncProcessor.BatchResult result = syncProcessor.syncJobTitles(dataList, options);
updateStat(stat, result, dataList.size()); updateStat(stat, result, dataList.size());
@@ -138,6 +131,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService {
query.setCurpage(page); query.setCurpage(page);
query.setPagesize(pageSize); query.setPagesize(pageSize);
IWorkHrUserPageRespVO pageResp = orgRestService.listUsers(query); IWorkHrUserPageRespVO pageResp = orgRestService.listUsers(query);
ensureIWorkSuccess("拉取人员", pageResp.isSuccess(), pageResp.getMessage());
List<IWorkHrUserPageRespVO.User> dataList = CollUtil.emptyIfNull(pageResp.getDataList()); List<IWorkHrUserPageRespVO.User> dataList = CollUtil.emptyIfNull(pageResp.getDataList());
IWorkSyncProcessor.BatchResult result = syncProcessor.syncUsers(dataList, options); IWorkSyncProcessor.BatchResult result = syncProcessor.syncUsers(dataList, options);
updateStat(stat, result, dataList.size()); updateStat(stat, result, dataList.size());
@@ -176,7 +170,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService {
} }
private void processSingleUser(IWorkSingleSyncReqVO reqVO, IWorkSingleSyncRespVO respVO) { private void processSingleUser(IWorkSingleSyncReqVO reqVO, IWorkSingleSyncRespVO respVO) {
IWorkHrUserPageRespVO.User data = fetchSingleUser(reqVO.getEntityId()); IWorkHrUserPageRespVO.User data = fetchSingleUser(reqVO.getEntityId().toString());
if (data == null) { if (data == null) {
markNotFound(respVO, "人员"); markNotFound(respVO, "人员");
return; return;
@@ -246,6 +240,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService {
query.setPagesize(1); query.setPagesize(1);
query.setParams(Collections.singletonMap("subcompanyid", entityId)); query.setParams(Collections.singletonMap("subcompanyid", entityId));
IWorkHrSubcompanyPageRespVO pageResp = orgRestService.listSubcompanies(query); IWorkHrSubcompanyPageRespVO pageResp = orgRestService.listSubcompanies(query);
ensureIWorkSuccess("获取分部详情", pageResp.isSuccess(), pageResp.getMessage());
return CollUtil.getFirst(pageResp.getDataList()); return CollUtil.getFirst(pageResp.getDataList());
} }
@@ -255,6 +250,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService {
query.setPagesize(1); query.setPagesize(1);
query.setParams(Collections.singletonMap("departmentid", entityId)); query.setParams(Collections.singletonMap("departmentid", entityId));
IWorkHrDepartmentPageRespVO pageResp = orgRestService.listDepartments(query); IWorkHrDepartmentPageRespVO pageResp = orgRestService.listDepartments(query);
ensureIWorkSuccess("获取部门详情", pageResp.isSuccess(), pageResp.getMessage());
return CollUtil.getFirst(pageResp.getDataList()); return CollUtil.getFirst(pageResp.getDataList());
} }
@@ -264,18 +260,28 @@ public class IWorkSyncServiceImpl implements IWorkSyncService {
query.setPagesize(1); query.setPagesize(1);
query.setParams(Collections.singletonMap("jobtitleid", entityId)); query.setParams(Collections.singletonMap("jobtitleid", entityId));
IWorkHrJobTitlePageRespVO pageResp = orgRestService.listJobTitles(query); IWorkHrJobTitlePageRespVO pageResp = orgRestService.listJobTitles(query);
ensureIWorkSuccess("获取岗位详情", pageResp.isSuccess(), pageResp.getMessage());
return CollUtil.getFirst(pageResp.getDataList()); return CollUtil.getFirst(pageResp.getDataList());
} }
private IWorkHrUserPageRespVO.User fetchSingleUser(Long entityId) { private IWorkHrUserPageRespVO.User fetchSingleUser(String entityId) {
IWorkUserQueryReqVO query = new IWorkUserQueryReqVO(); IWorkUserQueryReqVO query = new IWorkUserQueryReqVO();
query.setCurpage(1); query.setCurpage(1);
query.setPagesize(1); query.setPagesize(1);
query.setParams(Collections.singletonMap("id", entityId)); query.setParams(Collections.singletonMap("id", entityId));
IWorkHrUserPageRespVO pageResp = orgRestService.listUsers(query); IWorkHrUserPageRespVO pageResp = orgRestService.listUsers(query);
ensureIWorkSuccess("获取人员详情", pageResp.isSuccess(), pageResp.getMessage());
return CollUtil.getFirst(pageResp.getDataList()); 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 @FunctionalInterface
private interface PageExecutor { private interface PageExecutor {
BatchExecution execute(int pageNumber, int pageSize); BatchExecution execute(int pageNumber, int pageSize);