diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/vo/IWorkHrJobTitlePageRespVO.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/vo/IWorkHrJobTitlePageRespVO.java index 2bb7089a..453ba4be 100644 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/vo/IWorkHrJobTitlePageRespVO.java +++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/vo/IWorkHrJobTitlePageRespVO.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; @@ -51,8 +50,8 @@ public class IWorkHrJobTitlePageRespVO { public static class JobTitle { @Schema(description = "岗位 ID") - @JsonProperty("jobtitleid") - private Integer jobtitleid; + @JsonProperty("id") + private Integer id; @Schema(description = "岗位编码") @JsonProperty("jobtitlecode") 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 dc3ba48c..46f7af10 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 @@ -181,24 +181,24 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { continue; } if (shouldSkipByCanceled(job.getCanceled(), options)) { - logSkip("岗位", job.getJobtitleid(), "iWork 标记为失效且当前不同步失效记录"); + logSkip("岗位", job.getId(), "iWork 标记为失效且当前不同步失效记录"); result.increaseSkipped(); continue; } - if (job.getJobtitleid() == null) { + if (job.getId() == null) { log.warn("[iWork] 岗位缺少标识,跳过:{}", job.getJobtitlename()); result.increaseFailed(); continue; } boolean canceled = isCanceledFlag(job.getCanceled()); Integer status = toStatus(canceled); - String code = buildJobCode(job.getJobtitleid()); + String code = buildJobCode(job.getId()); String name = limitLength(StrUtil.blankToDefault(job.getJobtitlename(), code), 50); try { JobSyncOutcome outcome = upsertJobTitle(job, code, name, status, options); applyJobOutcome(result, outcome, name); } catch (Exception ex) { - log.error("[iWork] 同步岗位失败: id={} name={}", job.getJobtitleid(), job.getJobtitlename(), ex); + log.error("[iWork] 同步岗位失败: id={} name={}", job.getId(), job.getJobtitlename(), ex); result.increaseFailed(); result.withMessage("同步岗位失败: " + ex.getMessage()); } @@ -307,11 +307,11 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { boolean disabled = CommonStatusEnum.isDisable(status); if (existing == null) { if (!options.isCreateIfMissing()) { - logSkip("岗位", job.getJobtitleid(), "当前策略禁止创建缺失岗位"); + logSkip("岗位", job.getId(), "当前策略禁止创建缺失岗位"); return new JobSyncOutcome(SyncAction.SKIPPED, false, null); } PostSaveReqVO createReq = new PostSaveReqVO(); - Long desiredId = job.getJobtitleid() == null ? null : job.getJobtitleid().longValue(); + Long desiredId = job.getId() == null ? null : job.getId().longValue(); if (desiredId != null) { createReq.setId(desiredId); } @@ -583,9 +583,30 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { } private Integer resolveSex(String sexFlag) { + if (StrUtil.isBlank(sexFlag)) { + return SexEnum.UNKNOWN.getSex(); + } Integer external = parseInteger(sexFlag); - Integer converted = SyncVerifyUtil.convertExternalToInternal(external); - return converted != null ? converted : SexEnum.UNKNOWN.getSex(); + if (external != null) { + Integer converted = SyncVerifyUtil.convertExternalToInternal(external); + return converted != null ? converted : SexEnum.UNKNOWN.getSex(); + } + String normalized = sexFlag.trim(); + if (isMaleFlag(normalized)) { + return SexEnum.MALE.getSex(); + } + if (isFemaleFlag(normalized)) { + return SexEnum.FEMALE.getSex(); + } + return SexEnum.UNKNOWN.getSex(); + } + + private boolean isMaleFlag(String value) { + return "男".equals(value) || "M".equalsIgnoreCase(value) || "MALE".equalsIgnoreCase(value); + } + + private boolean isFemaleFlag(String value) { + return "女".equals(value) || "F".equalsIgnoreCase(value) || "FEMALE".equalsIgnoreCase(value); } private Integer parseInteger(String raw) {