diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/vo/IWorkHrDepartmentPageRespVO.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/vo/IWorkHrDepartmentPageRespVO.java index ecdf6045..6a250b6e 100644 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/vo/IWorkHrDepartmentPageRespVO.java +++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/vo/IWorkHrDepartmentPageRespVO.java @@ -5,11 +5,10 @@ import com.fasterxml.jackson.annotation.JsonAnySetter; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.zt.plat.module.system.service.integration.iwork.jackson.LenientIntegerDeserializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import com.zt.plat.module.system.service.integration.iwork.jackson.LenientIntegerDeserializer; - import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; @@ -31,20 +30,89 @@ public class IWorkHrDepartmentPageRespVO { @Schema(description = "是否成功") private boolean success; - @Schema(description = "总条数") - private Integer totalSize; + @Schema(description = "iWork 返回的数据体") + @JsonProperty("data") + private PageData data; - @Schema(description = "总页数") - private Integer totalPage; + @JsonIgnore + public Integer getTotalSize() { + return data == null ? null : data.getTotalSize(); + } - @Schema(description = "每页条数") - private Integer pageSize; + @JsonIgnore + public void setTotalSize(Integer totalSize) { + ensureData().setTotalSize(totalSize); + } - @Schema(description = "当前页码") - private Integer pageNumber; + @JsonIgnore + public Integer getTotalPage() { + return data == null ? null : data.getTotalPage(); + } - @Schema(description = "部门数据列表") - private List dataList; + @JsonIgnore + public void setTotalPage(Integer totalPage) { + ensureData().setTotalPage(totalPage); + } + + @JsonIgnore + public Integer getPageSize() { + return data == null ? null : data.getPageSize(); + } + + @JsonIgnore + public void setPageSize(Integer pageSize) { + ensureData().setPageSize(pageSize); + } + + @JsonIgnore + public Integer getPageNumber() { + return data == null ? null : data.getPageNumber(); + } + + @JsonIgnore + public void setPageNumber(Integer pageNumber) { + ensureData().setPageNumber(pageNumber); + } + + @JsonIgnore + public List getDataList() { + return data == null ? null : data.getDataList(); + } + + @JsonIgnore + public void setDataList(List dataList) { + ensureData().setDataList(dataList); + } + + @JsonIgnore + private PageData ensureData() { + if (data == null) { + data = new PageData(); + } + return data; + } + + @Data + @Schema(description = "iWork 部门分页数据体") + public static class PageData { + + @Schema(description = "总条数") + private Integer totalSize; + + @Schema(description = "总页数") + private Integer totalPage; + + @Schema(description = "每页条数") + private Integer pageSize; + + @Schema(description = "当前页码") + @JsonProperty("page") + private Integer pageNumber; + + @Schema(description = "部门数据列表") + @JsonProperty("dataList") + private List dataList; + } @Data @Schema(description = "部门信息") @@ -52,8 +120,14 @@ public class IWorkHrDepartmentPageRespVO { @Schema(description = "部门 ID") @JsonProperty("departmentid") + @JsonDeserialize(using = LenientIntegerDeserializer.class) private Integer departmentid; + @Schema(description = "部门 ID(iWork 主键)") + @JsonProperty("id") + @JsonDeserialize(using = LenientIntegerDeserializer.class) + private Integer id; + @Schema(description = "部门编码") @JsonProperty("departmentcode") private String departmentcode; @@ -68,6 +142,7 @@ public class IWorkHrDepartmentPageRespVO { @Schema(description = "所属分部 ID") @JsonProperty("subcompanyid1") + @JsonDeserialize(using = LenientIntegerDeserializer.class) private Integer subcompanyid1; @Schema(description = "所属分部名称") @@ -76,6 +151,7 @@ public class IWorkHrDepartmentPageRespVO { @Schema(description = "上级分部 ID") @JsonProperty("supsubcomid") + @JsonDeserialize(using = LenientIntegerDeserializer.class) private Integer supsubcomid; @Schema(description = "上级分部名称") @@ -84,6 +160,7 @@ public class IWorkHrDepartmentPageRespVO { @Schema(description = "父部门 ID") @JsonProperty("parentdeptid") + @JsonDeserialize(using = LenientIntegerDeserializer.class) private Integer parentdeptid; @Schema(description = "父部门名称") @@ -113,6 +190,7 @@ public class IWorkHrDepartmentPageRespVO { @Schema(description = "负责人 ID") @JsonProperty("managerid") + @JsonDeserialize(using = LenientIntegerDeserializer.class) private Integer managerid; @Schema(description = "负责人名称") diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/dept/DeptServiceImpl.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/dept/DeptServiceImpl.java index 130edbb7..0370d1bf 100644 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/dept/DeptServiceImpl.java +++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/dept/DeptServiceImpl.java @@ -189,7 +189,7 @@ public class DeptServiceImpl implements DeptService { // 2. 父部门不存在 DeptDO parentDept = deptMapper.selectById(parentId); if (parentDept == null) { - throw exception(DEPT_PARENT_NOT_EXITS); + return; } // 3. 递归校验父部门,如果父部门是自己的子部门,则报错,避免形成环路 if (id == null) { // id 为空,说明新增,不需要考虑环路 @@ -251,19 +251,18 @@ public class DeptServiceImpl implements DeptService { private String generateDeptCode(Long parentId) { Long effectiveParentId = normalizeParentId(parentId); + Long codeParentId = effectiveParentId; String prefix = ROOT_CODE_PREFIX; if (!DeptDO.PARENT_ID_ROOT.equals(effectiveParentId)) { DeptDO parentDept = deptMapper.selectById(effectiveParentId); - if (parentDept == null) { - throw exception(DEPT_PARENT_NOT_EXITS); + if (parentDept == null || StrUtil.isBlank(parentDept.getCode())) { + codeParentId = DeptDO.PARENT_ID_ROOT; + } else { + prefix = parentDept.getCode(); } - if (StrUtil.isBlank(parentDept.getCode())) { - throw exception(DEPT_PARENT_CODE_NOT_INITIALIZED); - } - prefix = parentDept.getCode(); } - int nextSequence = determineNextSequence(effectiveParentId, prefix); + int nextSequence = determineNextSequence(codeParentId, prefix); assertSequenceRange(nextSequence); return prefix + formatSequence(nextSequence); } 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 1e75bf2f..31843b06 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 @@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.zt.plat.framework.common.enums.CommonStatusEnum; import com.zt.plat.framework.tenant.core.context.TenantContextHolder; -import com.zt.plat.module.system.controller.admin.dept.vo.depexternalcode.DeptExternalCodeSaveReqVO; import com.zt.plat.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO; import com.zt.plat.module.system.controller.admin.dept.vo.post.PostSaveReqVO; import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrDepartmentPageRespVO; @@ -13,7 +12,6 @@ import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrSu import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrUserPageRespVO; import com.zt.plat.module.system.controller.admin.user.vo.user.UserSaveReqVO; import com.zt.plat.module.system.dal.dataobject.dept.DeptDO; -import com.zt.plat.module.system.dal.dataobject.dept.DeptExternalCodeDO; import com.zt.plat.module.system.dal.dataobject.dept.PostDO; import com.zt.plat.module.system.dal.dataobject.user.AdminUserDO; import com.zt.plat.module.system.dal.mysql.dept.PostMapper; @@ -21,7 +19,6 @@ import com.zt.plat.module.system.dal.mysql.user.AdminUserMapper; import com.zt.plat.module.system.enums.common.SexEnum; import com.zt.plat.module.system.enums.dept.DeptSourceEnum; import com.zt.plat.module.system.enums.user.UserSourceEnum; -import com.zt.plat.module.system.service.dept.DeptExternalCodeService; import com.zt.plat.module.system.service.dept.DeptService; import com.zt.plat.module.system.service.dept.PostService; import com.zt.plat.module.system.service.integration.iwork.IWorkSyncProcessor; @@ -46,20 +43,16 @@ import java.util.concurrent.ConcurrentHashMap; @RequiredArgsConstructor public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { - private static final String SYSTEM_CODE_SUBCOMPANY = "IWORK_SUBCOMPANY"; - private static final String SYSTEM_CODE_DEPARTMENT = "IWORK_DEPARTMENT"; private static final String JOB_CODE_PREFIX = "IWORK_JOB_"; private static final String DEFAULT_USER_PASSWORD = "Zgty@9527"; private static final int DEFAULT_SORT = 999; private final DeptService deptService; - private final DeptExternalCodeService deptExternalCodeService; private final PostService postService; private final PostMapper postMapper; private final AdminUserService adminUserService; private final AdminUserMapper adminUserMapper; - private final Map deptExternalCache = new ConcurrentHashMap<>(); private final Map postCache = new ConcurrentHashMap<>(); @Override @@ -83,23 +76,20 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { iterator.remove(); continue; } - if (sub.getSubcompanyid1() == null) { + Integer externalId = sub.getSubcompanyid1(); + if (externalId == null) { log.warn("[iWork] 分部缺少标识,跳过:{}", sub.getSubcompanyname()); result.increaseFailed(); iterator.remove(); continue; } + Long deptId = externalId.longValue(); ParentHolder parentHolder = resolveSubcompanyParent(sub.getSupsubcomid()); - if (parentHolder.required() && parentHolder.parentId() == null) { - continue; - } boolean canceled = isCanceledFlag(sub.getCanceled()); - DeptSaveReqVO saveReq = buildSubcompanySaveReq(sub, parentHolder.parentId(), canceled); + DeptSaveReqVO saveReq = buildSubcompanySaveReq(sub, deptId, parentHolder.parentId(), canceled); try { - DeptSyncOutcome outcome = upsertDept(saveReq, - SYSTEM_CODE_SUBCOMPANY, - sub.getSubcompanyid1().toString(), - sub.getSubcompanyname(), + DeptSyncOutcome outcome = upsertDept(deptId, + saveReq, canceled, options); applyDeptOutcome(result, outcome, "分部", sub.getSubcompanyname()); @@ -145,28 +135,25 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { iterator.remove(); continue; } - if (dept.getDepartmentid() == null) { + Integer externalId = dept.getId(); + if (externalId == null) { log.warn("[iWork] 部门缺少标识,跳过:{}", dept.getDepartmentname()); result.increaseFailed(); iterator.remove(); continue; } + Long deptId = externalId.longValue(); ParentHolder parentHolder = resolveDepartmentParent(dept); - if (parentHolder.required() && parentHolder.parentId() == null) { - continue; - } boolean canceled = isCanceledFlag(dept.getCanceled()); - DeptSaveReqVO saveReq = buildDepartmentSaveReq(dept, parentHolder.parentId(), canceled); + DeptSaveReqVO saveReq = buildDepartmentSaveReq(dept, deptId, parentHolder.parentId(), canceled); try { - DeptSyncOutcome outcome = upsertDept(saveReq, - SYSTEM_CODE_DEPARTMENT, - dept.getDepartmentid().toString(), - dept.getDepartmentname(), + DeptSyncOutcome outcome = upsertDept(deptId, + saveReq, canceled, options); applyDeptOutcome(result, outcome, "部门", dept.getDepartmentname()); } catch (Exception ex) { - log.error("[iWork] 同步部门失败: id={} name={}", dept.getDepartmentid(), dept.getDepartmentname(), ex); + log.error("[iWork] 同步部门失败: id={} name={}", dept.getId(), dept.getDepartmentname(), ex); result.increaseFailed(); result.withMessage("同步部门失败: " + ex.getMessage()); } @@ -179,7 +166,7 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { } if (!queue.isEmpty()) { for (IWorkHrDepartmentPageRespVO.Department remaining : queue) { - log.warn("[iWork] 部门因父级缺失未同步: id={} name={}", remaining.getDepartmentid(), remaining.getDepartmentname()); + log.warn("[iWork] 部门因父级缺失未同步: id={} name={}", remaining.getId(), remaining.getDepartmentname()); result.increaseFailed(); } } @@ -285,31 +272,21 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { return result; } - private DeptSyncOutcome upsertDept(DeptSaveReqVO desired, - String systemCode, - String externalCode, - String externalName, + private DeptSyncOutcome upsertDept(Long deptId, + DeptSaveReqVO desired, boolean disabled, SyncOptions options) { - DeptExternalCodeDO mapping = getDeptMapping(systemCode, externalCode); - if (mapping == null) { - if (!options.isCreateIfMissing()) { - return new DeptSyncOutcome(SyncAction.SKIPPED, false, null); - } - Long deptId = deptService.createDept(desired); - persistDeptExternalCode(null, deptId, systemCode, externalCode, externalName, desired.getStatus()); - return new DeptSyncOutcome(SyncAction.CREATED, CommonStatusEnum.isDisable(desired.getStatus()), deptId); + if (deptId == null) { + return new DeptSyncOutcome(SyncAction.SKIPPED, false, null); } - Long deptId = mapping.getDeptId(); DeptDO existing = deptService.getDept(deptId); if (existing == null) { - deptExternalCache.remove(buildDeptCacheKey(systemCode, externalCode)); if (!options.isCreateIfMissing()) { return new DeptSyncOutcome(SyncAction.SKIPPED, false, null); } - Long recreatedId = deptService.createDept(desired); - persistDeptExternalCode(mapping.getId(), recreatedId, systemCode, externalCode, externalName, desired.getStatus()); - return new DeptSyncOutcome(SyncAction.CREATED, CommonStatusEnum.isDisable(desired.getStatus()), recreatedId); + desired.setId(deptId); + Long createdId = deptService.createDept(desired); + return new DeptSyncOutcome(SyncAction.CREATED, CommonStatusEnum.isDisable(desired.getStatus()), createdId); } if (!Objects.equals(existing.getDeptSource(), DeptSourceEnum.IWORK.getSource())) { return new DeptSyncOutcome(SyncAction.SKIPPED, false, existing.getId()); @@ -319,9 +296,8 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { } desired.setId(existing.getId()); mergeDeptDefaults(desired, existing); - boolean disabledChanged = CommonStatusEnum.isDisable(desired.getStatus()) && CommonStatusEnum.isEnable(existing.getStatus()); + boolean disabledChanged = disabled && CommonStatusEnum.isEnable(existing.getStatus()); deptService.updateDept(desired); - persistDeptExternalCode(mapping.getId(), existing.getId(), systemCode, externalCode, externalName, desired.getStatus()); return new DeptSyncOutcome(SyncAction.UPDATED, disabledChanged, existing.getId()); } @@ -399,9 +375,11 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { } private DeptSaveReqVO buildSubcompanySaveReq(IWorkHrSubcompanyPageRespVO.Subcompany data, + Long deptId, Long parentId, boolean canceled) { DeptSaveReqVO req = new DeptSaveReqVO(); + req.setId(deptId); req.setName(limitLength(StrUtil.blankToDefault(data.getSubcompanyname(), "未命名分部"), 30)); req.setShortName(limitLength(data.getSubcompanyname(), 20)); req.setCode(trimToNull(data.getSubcompanycode())); @@ -415,9 +393,11 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { } private DeptSaveReqVO buildDepartmentSaveReq(IWorkHrDepartmentPageRespVO.Department data, + Long deptId, Long parentId, boolean canceled) { DeptSaveReqVO req = new DeptSaveReqVO(); + req.setId(deptId); req.setName(limitLength(StrUtil.blankToDefault(data.getDepartmentname(), "未命名部门"), 30)); req.setShortName(limitLength(StrUtil.blankToDefault(data.getDepartmentmark(), data.getDepartmentname()), 20)); req.setCode(trimToNull(data.getDepartmentcode())); @@ -467,82 +447,21 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { private ParentHolder resolveSubcompanyParent(Integer parentExternalId) { if (parentExternalId == null || parentExternalId <= 0) { - return new ParentHolder(DeptDO.PARENT_ID_ROOT, false); + return new ParentHolder(DeptDO.PARENT_ID_ROOT); } - Long parentId = resolveDeptId(SYSTEM_CODE_SUBCOMPANY, parentExternalId.toString()); - return new ParentHolder(parentId, true); + return new ParentHolder(parentExternalId.longValue()); } private ParentHolder resolveDepartmentParent(IWorkHrDepartmentPageRespVO.Department dept) { - Integer parentDeptId = dept.getParentdeptid(); - if (parentDeptId != null && parentDeptId > 0) { - Long parentId = resolveDeptId(SYSTEM_CODE_DEPARTMENT, parentDeptId.toString()); - return new ParentHolder(parentId, true); + Long parentDeptId = toLong(dept.getParentdeptid()); + if (parentDeptId != null) { + return new ParentHolder(parentDeptId); } - Integer subcompanyId = dept.getSubcompanyid1(); - if (subcompanyId != null && subcompanyId > 0) { - Long parentId = resolveDeptId(SYSTEM_CODE_SUBCOMPANY, subcompanyId.toString()); - return new ParentHolder(parentId, true); + Long subcompanyId = toLong(dept.getSubcompanyid1()); + if (subcompanyId != null) { + return new ParentHolder(subcompanyId); } - return new ParentHolder(DeptDO.PARENT_ID_ROOT, false); - } - - private DeptExternalCodeDO getDeptMapping(String systemCode, String externalCode) { - if (StrUtil.isBlank(externalCode)) { - return null; - } - String key = buildDeptCacheKey(systemCode, externalCode); - DeptExternalCodeDO cached = deptExternalCache.get(key); - if (cached != null) { - return cached; - } - DeptExternalCodeDO mapping = deptExternalCodeService.getBySystemCodeAndExternalCode(systemCode, externalCode); - if (mapping != null) { - deptExternalCache.put(key, mapping); - } - return mapping; - } - - private void persistDeptExternalCode(Long mappingId, - Long deptId, - String systemCode, - String externalCode, - String externalName, - Integer status) { - DeptExternalCodeSaveReqVO req = new DeptExternalCodeSaveReqVO(); - req.setDeptId(deptId); - req.setSystemCode(systemCode); - req.setExternalDeptCode(externalCode); - req.setExternalDeptName(StrUtil.blankToDefault(externalName, externalCode)); - req.setStatus(status); - req.setRemark("iWork 同步"); - DeptExternalCodeDO mapping; - if (mappingId == null) { - Long id = deptExternalCodeService.createDeptExternalCode(req); - mapping = buildMapping(id, deptId, req); - } else { - req.setId(mappingId); - deptExternalCodeService.updateDeptExternalCode(req); - mapping = buildMapping(mappingId, deptId, req); - } - deptExternalCache.put(buildDeptCacheKey(systemCode, externalCode), mapping); - } - - private DeptExternalCodeDO buildMapping(Long id, Long deptId, DeptExternalCodeSaveReqVO req) { - DeptExternalCodeDO mapping = new DeptExternalCodeDO(); - mapping.setId(id); - mapping.setDeptId(deptId); - mapping.setSystemCode(req.getSystemCode()); - mapping.setExternalDeptCode(req.getExternalDeptCode()); - mapping.setExternalDeptName(req.getExternalDeptName()); - mapping.setStatus(req.getStatus()); - mapping.setRemark(req.getRemark()); - return mapping; - } - - private Long resolveDeptId(String systemCode, String externalCode) { - DeptExternalCodeDO mapping = getDeptMapping(systemCode, externalCode); - return mapping == null ? null : mapping.getDeptId(); + return new ParentHolder(DeptDO.PARENT_ID_ROOT); } private PostDO resolvePostByCode(String code) { @@ -559,17 +478,13 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { } private Long resolveUserDeptId(IWorkHrUserPageRespVO.User user) { - if (user.getDepartmentid() != null) { - Long deptId = resolveDeptId(SYSTEM_CODE_DEPARTMENT, user.getDepartmentid().toString()); - if (deptId != null) { - return deptId; - } + Long deptId = toLong(user.getDepartmentid()); + if (deptId != null) { + return deptId; } - if (user.getSubcompanyid1() != null) { - Long deptId = resolveDeptId(SYSTEM_CODE_SUBCOMPANY, user.getSubcompanyid1().toString()); - if (deptId != null) { - return deptId; - } + Long subcompanyId = toLong(user.getSubcompanyid1()); + if (subcompanyId != null) { + return subcompanyId; } return null; } @@ -670,6 +585,10 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { } } + private Long toLong(Integer value) { + return value == null ? null : value.longValue(); + } + private String resolveUsername(IWorkHrUserPageRespVO.User user) { String candidate = sanitizeUsername(user.getLoginid()); if (candidate == null) { @@ -737,11 +656,6 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { return JOB_CODE_PREFIX + jobTitleId; } - private String buildDeptCacheKey(String systemCode, String externalCode) { - Long tenantId = TenantContextHolder.getTenantId(); - return (tenantId == null ? "_" : tenantId.toString()) + "::" + systemCode + "::" + externalCode; - } - private String buildPostCacheKey(String code) { Long tenantId = TenantContextHolder.getTenantId(); return (tenantId == null ? "_" : tenantId.toString()) + "::POST::" + code; @@ -755,7 +669,7 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { }; } - private record ParentHolder(Long parentId, boolean required) { + private record ParentHolder(Long parentId) { } private enum SyncAction { 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 62870fe0..2ce9debf 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 @@ -38,18 +38,21 @@ public class IWorkSyncServiceImpl implements IWorkSyncService { respVO.setBatches(batchStats); Set scopes = reqVO.resolveScopes(); + boolean syncUsers = scopes.contains(IWorkSyncEntityTypeEnum.USER); + boolean syncDepartments = scopes.contains(IWorkSyncEntityTypeEnum.DEPARTMENT) || syncUsers; + boolean syncSubcompanies = scopes.contains(IWorkSyncEntityTypeEnum.SUBCOMPANY) || syncDepartments; int processedPages = 0; IWorkSyncProcessor.SyncOptions options = buildFullSyncOptions(reqVO); - if (scopes.contains(IWorkSyncEntityTypeEnum.SUBCOMPANY)) { + if (syncSubcompanies) { processedPages += executeSubcompanyFullSync(reqVO, options, respVO.getSubcompanyStat(), batchStats); } - if (scopes.contains(IWorkSyncEntityTypeEnum.DEPARTMENT)) { + if (syncDepartments) { processedPages += executeDepartmentFullSync(reqVO, options, respVO.getDepartmentStat(), batchStats); } if (scopes.contains(IWorkSyncEntityTypeEnum.JOB_TITLE)) { processedPages += executeJobTitleFullSync(reqVO, options, respVO.getJobTitleStat(), batchStats); } - if (scopes.contains(IWorkSyncEntityTypeEnum.USER)) { + if (syncUsers) { processedPages += executeUserFullSync(reqVO, options, respVO.getUserStat(), batchStats); } respVO.setProcessedPages(processedPages); diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/user/AdminUserServiceImpl.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/user/AdminUserServiceImpl.java index 716ea498..c710d2a2 100644 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/user/AdminUserServiceImpl.java +++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/user/AdminUserServiceImpl.java @@ -523,8 +523,6 @@ public class AdminUserServiceImpl implements AdminUserService { validateMobileUnique(id, mobile); // 校验邮箱唯一 validateEmailUnique(id, email); - // 校验部门处于开启状态 - deptService.validateDeptList(deptIds); // 校验岗位处于开启状态 postService.validatePostList(postIds); return user;