iwork 人员组织同步相关
This commit is contained in:
@@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.zt.plat.framework.common.enums.CommonStatusEnum;
|
import com.zt.plat.framework.common.enums.CommonStatusEnum;
|
||||||
import com.zt.plat.framework.tenant.core.context.TenantContextHolder;
|
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.dept.DeptSaveReqVO;
|
||||||
import com.zt.plat.module.system.controller.admin.dept.vo.post.PostSaveReqVO;
|
import com.zt.plat.module.system.controller.admin.dept.vo.post.PostSaveReqVO;
|
||||||
import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrDepartmentPageRespVO;
|
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.integration.iwork.vo.IWorkHrUserPageRespVO;
|
||||||
import com.zt.plat.module.system.controller.admin.user.vo.user.UserSaveReqVO;
|
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.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.dept.PostDO;
|
||||||
import com.zt.plat.module.system.dal.dataobject.user.AdminUserDO;
|
import com.zt.plat.module.system.dal.dataobject.user.AdminUserDO;
|
||||||
import com.zt.plat.module.system.dal.mysql.dept.PostMapper;
|
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.common.SexEnum;
|
||||||
import com.zt.plat.module.system.enums.dept.DeptSourceEnum;
|
import com.zt.plat.module.system.enums.dept.DeptSourceEnum;
|
||||||
import com.zt.plat.module.system.enums.user.UserSourceEnum;
|
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.DeptService;
|
||||||
import com.zt.plat.module.system.service.dept.PostService;
|
import com.zt.plat.module.system.service.dept.PostService;
|
||||||
import com.zt.plat.module.system.service.integration.iwork.IWorkSyncProcessor;
|
import com.zt.plat.module.system.service.integration.iwork.IWorkSyncProcessor;
|
||||||
@@ -46,20 +43,17 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class IWorkSyncProcessorImpl implements IWorkSyncProcessor {
|
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 JOB_CODE_PREFIX = "IWORK_JOB_";
|
||||||
private static final String DEFAULT_USER_PASSWORD = "Zgty@9527";
|
private static final String DEFAULT_USER_PASSWORD = "Zgty@9527";
|
||||||
private static final int DEFAULT_SORT = 999;
|
private static final int DEFAULT_SORT = 999;
|
||||||
|
|
||||||
private final DeptService deptService;
|
private final DeptService deptService;
|
||||||
private final DeptExternalCodeService deptExternalCodeService;
|
|
||||||
private final PostService postService;
|
private final PostService postService;
|
||||||
private final PostMapper postMapper;
|
private final PostMapper postMapper;
|
||||||
private final AdminUserService adminUserService;
|
private final AdminUserService adminUserService;
|
||||||
private final AdminUserMapper adminUserMapper;
|
private final AdminUserMapper adminUserMapper;
|
||||||
|
|
||||||
private final Map<String, DeptExternalCodeDO> deptExternalCache = new ConcurrentHashMap<>();
|
private final Map<Long, Boolean> deptPresenceCache = new ConcurrentHashMap<>();
|
||||||
private final Map<String, PostDO> postCache = new ConcurrentHashMap<>();
|
private final Map<String, PostDO> postCache = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -83,23 +77,23 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor {
|
|||||||
iterator.remove();
|
iterator.remove();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (sub.getSubcompanyid1() == null) {
|
Integer externalId = sub.getSubcompanyid1();
|
||||||
|
if (externalId == null) {
|
||||||
log.warn("[iWork] 分部缺少标识,跳过:{}", sub.getSubcompanyname());
|
log.warn("[iWork] 分部缺少标识,跳过:{}", sub.getSubcompanyname());
|
||||||
result.increaseFailed();
|
result.increaseFailed();
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
Long deptId = externalId.longValue();
|
||||||
ParentHolder parentHolder = resolveSubcompanyParent(sub.getSupsubcomid());
|
ParentHolder parentHolder = resolveSubcompanyParent(sub.getSupsubcomid());
|
||||||
if (parentHolder.required() && parentHolder.parentId() == null) {
|
if (parentHolder.required() && parentHolder.parentId() == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
boolean canceled = isCanceledFlag(sub.getCanceled());
|
boolean canceled = isCanceledFlag(sub.getCanceled());
|
||||||
DeptSaveReqVO saveReq = buildSubcompanySaveReq(sub, parentHolder.parentId(), canceled);
|
DeptSaveReqVO saveReq = buildSubcompanySaveReq(sub, deptId, parentHolder.parentId(), canceled);
|
||||||
try {
|
try {
|
||||||
DeptSyncOutcome outcome = upsertDept(saveReq,
|
DeptSyncOutcome outcome = upsertDept(deptId,
|
||||||
SYSTEM_CODE_SUBCOMPANY,
|
saveReq,
|
||||||
sub.getSubcompanyid1().toString(),
|
|
||||||
sub.getSubcompanyname(),
|
|
||||||
canceled,
|
canceled,
|
||||||
options);
|
options);
|
||||||
applyDeptOutcome(result, outcome, "分部", sub.getSubcompanyname());
|
applyDeptOutcome(result, outcome, "分部", sub.getSubcompanyname());
|
||||||
@@ -145,23 +139,23 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor {
|
|||||||
iterator.remove();
|
iterator.remove();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (dept.getDepartmentid() == null) {
|
Integer externalId = dept.getDepartmentid();
|
||||||
|
if (externalId == null) {
|
||||||
log.warn("[iWork] 部门缺少标识,跳过:{}", dept.getDepartmentname());
|
log.warn("[iWork] 部门缺少标识,跳过:{}", dept.getDepartmentname());
|
||||||
result.increaseFailed();
|
result.increaseFailed();
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
Long deptId = externalId.longValue();
|
||||||
ParentHolder parentHolder = resolveDepartmentParent(dept);
|
ParentHolder parentHolder = resolveDepartmentParent(dept);
|
||||||
if (parentHolder.required() && parentHolder.parentId() == null) {
|
if (parentHolder.required() && parentHolder.parentId() == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
boolean canceled = isCanceledFlag(dept.getCanceled());
|
boolean canceled = isCanceledFlag(dept.getCanceled());
|
||||||
DeptSaveReqVO saveReq = buildDepartmentSaveReq(dept, parentHolder.parentId(), canceled);
|
DeptSaveReqVO saveReq = buildDepartmentSaveReq(dept, deptId, parentHolder.parentId(), canceled);
|
||||||
try {
|
try {
|
||||||
DeptSyncOutcome outcome = upsertDept(saveReq,
|
DeptSyncOutcome outcome = upsertDept(deptId,
|
||||||
SYSTEM_CODE_DEPARTMENT,
|
saveReq,
|
||||||
dept.getDepartmentid().toString(),
|
|
||||||
dept.getDepartmentname(),
|
|
||||||
canceled,
|
canceled,
|
||||||
options);
|
options);
|
||||||
applyDeptOutcome(result, outcome, "部门", dept.getDepartmentname());
|
applyDeptOutcome(result, outcome, "部门", dept.getDepartmentname());
|
||||||
@@ -285,31 +279,22 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private DeptSyncOutcome upsertDept(DeptSaveReqVO desired,
|
private DeptSyncOutcome upsertDept(Long deptId,
|
||||||
String systemCode,
|
DeptSaveReqVO desired,
|
||||||
String externalCode,
|
|
||||||
String externalName,
|
|
||||||
boolean disabled,
|
boolean disabled,
|
||||||
SyncOptions options) {
|
SyncOptions options) {
|
||||||
DeptExternalCodeDO mapping = getDeptMapping(systemCode, externalCode);
|
if (deptId == null) {
|
||||||
if (mapping == null) {
|
return new DeptSyncOutcome(SyncAction.SKIPPED, false, 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);
|
|
||||||
}
|
}
|
||||||
Long deptId = mapping.getDeptId();
|
|
||||||
DeptDO existing = deptService.getDept(deptId);
|
DeptDO existing = deptService.getDept(deptId);
|
||||||
if (existing == null) {
|
if (existing == null) {
|
||||||
deptExternalCache.remove(buildDeptCacheKey(systemCode, externalCode));
|
|
||||||
if (!options.isCreateIfMissing()) {
|
if (!options.isCreateIfMissing()) {
|
||||||
return new DeptSyncOutcome(SyncAction.SKIPPED, false, null);
|
return new DeptSyncOutcome(SyncAction.SKIPPED, false, null);
|
||||||
}
|
}
|
||||||
Long recreatedId = deptService.createDept(desired);
|
desired.setId(deptId);
|
||||||
persistDeptExternalCode(mapping.getId(), recreatedId, systemCode, externalCode, externalName, desired.getStatus());
|
Long createdId = deptService.createDept(desired);
|
||||||
return new DeptSyncOutcome(SyncAction.CREATED, CommonStatusEnum.isDisable(desired.getStatus()), recreatedId);
|
markDeptExists(createdId);
|
||||||
|
return new DeptSyncOutcome(SyncAction.CREATED, CommonStatusEnum.isDisable(desired.getStatus()), createdId);
|
||||||
}
|
}
|
||||||
if (!Objects.equals(existing.getDeptSource(), DeptSourceEnum.IWORK.getSource())) {
|
if (!Objects.equals(existing.getDeptSource(), DeptSourceEnum.IWORK.getSource())) {
|
||||||
return new DeptSyncOutcome(SyncAction.SKIPPED, false, existing.getId());
|
return new DeptSyncOutcome(SyncAction.SKIPPED, false, existing.getId());
|
||||||
@@ -319,9 +304,9 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor {
|
|||||||
}
|
}
|
||||||
desired.setId(existing.getId());
|
desired.setId(existing.getId());
|
||||||
mergeDeptDefaults(desired, existing);
|
mergeDeptDefaults(desired, existing);
|
||||||
boolean disabledChanged = CommonStatusEnum.isDisable(desired.getStatus()) && CommonStatusEnum.isEnable(existing.getStatus());
|
boolean disabledChanged = disabled && CommonStatusEnum.isEnable(existing.getStatus());
|
||||||
deptService.updateDept(desired);
|
deptService.updateDept(desired);
|
||||||
persistDeptExternalCode(mapping.getId(), existing.getId(), systemCode, externalCode, externalName, desired.getStatus());
|
markDeptExists(existing.getId());
|
||||||
return new DeptSyncOutcome(SyncAction.UPDATED, disabledChanged, existing.getId());
|
return new DeptSyncOutcome(SyncAction.UPDATED, disabledChanged, existing.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -399,9 +384,11 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private DeptSaveReqVO buildSubcompanySaveReq(IWorkHrSubcompanyPageRespVO.Subcompany data,
|
private DeptSaveReqVO buildSubcompanySaveReq(IWorkHrSubcompanyPageRespVO.Subcompany data,
|
||||||
|
Long deptId,
|
||||||
Long parentId,
|
Long parentId,
|
||||||
boolean canceled) {
|
boolean canceled) {
|
||||||
DeptSaveReqVO req = new DeptSaveReqVO();
|
DeptSaveReqVO req = new DeptSaveReqVO();
|
||||||
|
req.setId(deptId);
|
||||||
req.setName(limitLength(StrUtil.blankToDefault(data.getSubcompanyname(), "未命名分部"), 30));
|
req.setName(limitLength(StrUtil.blankToDefault(data.getSubcompanyname(), "未命名分部"), 30));
|
||||||
req.setShortName(limitLength(data.getSubcompanyname(), 20));
|
req.setShortName(limitLength(data.getSubcompanyname(), 20));
|
||||||
req.setCode(trimToNull(data.getSubcompanycode()));
|
req.setCode(trimToNull(data.getSubcompanycode()));
|
||||||
@@ -415,9 +402,11 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private DeptSaveReqVO buildDepartmentSaveReq(IWorkHrDepartmentPageRespVO.Department data,
|
private DeptSaveReqVO buildDepartmentSaveReq(IWorkHrDepartmentPageRespVO.Department data,
|
||||||
|
Long deptId,
|
||||||
Long parentId,
|
Long parentId,
|
||||||
boolean canceled) {
|
boolean canceled) {
|
||||||
DeptSaveReqVO req = new DeptSaveReqVO();
|
DeptSaveReqVO req = new DeptSaveReqVO();
|
||||||
|
req.setId(deptId);
|
||||||
req.setName(limitLength(StrUtil.blankToDefault(data.getDepartmentname(), "未命名部门"), 30));
|
req.setName(limitLength(StrUtil.blankToDefault(data.getDepartmentname(), "未命名部门"), 30));
|
||||||
req.setShortName(limitLength(StrUtil.blankToDefault(data.getDepartmentmark(), data.getDepartmentname()), 20));
|
req.setShortName(limitLength(StrUtil.blankToDefault(data.getDepartmentmark(), data.getDepartmentname()), 20));
|
||||||
req.setCode(trimToNull(data.getDepartmentcode()));
|
req.setCode(trimToNull(data.getDepartmentcode()));
|
||||||
@@ -469,80 +458,50 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor {
|
|||||||
if (parentExternalId == null || parentExternalId <= 0) {
|
if (parentExternalId == null || parentExternalId <= 0) {
|
||||||
return new ParentHolder(DeptDO.PARENT_ID_ROOT, false);
|
return new ParentHolder(DeptDO.PARENT_ID_ROOT, false);
|
||||||
}
|
}
|
||||||
Long parentId = resolveDeptId(SYSTEM_CODE_SUBCOMPANY, parentExternalId.toString());
|
Long parentId = parentExternalId.longValue();
|
||||||
return new ParentHolder(parentId, true);
|
if (hasDept(parentId)) {
|
||||||
|
return new ParentHolder(parentId, true);
|
||||||
|
}
|
||||||
|
return new ParentHolder(null, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ParentHolder resolveDepartmentParent(IWorkHrDepartmentPageRespVO.Department dept) {
|
private ParentHolder resolveDepartmentParent(IWorkHrDepartmentPageRespVO.Department dept) {
|
||||||
Integer parentDeptId = dept.getParentdeptid();
|
Integer parentDeptId = dept.getParentdeptid();
|
||||||
if (parentDeptId != null && parentDeptId > 0) {
|
if (parentDeptId != null && parentDeptId > 0) {
|
||||||
Long parentId = resolveDeptId(SYSTEM_CODE_DEPARTMENT, parentDeptId.toString());
|
Long parentId = parentDeptId.longValue();
|
||||||
return new ParentHolder(parentId, true);
|
if (hasDept(parentId)) {
|
||||||
|
return new ParentHolder(parentId, true);
|
||||||
|
}
|
||||||
|
return new ParentHolder(null, true);
|
||||||
}
|
}
|
||||||
Integer subcompanyId = dept.getSubcompanyid1();
|
Integer subcompanyId = dept.getSubcompanyid1();
|
||||||
if (subcompanyId != null && subcompanyId > 0) {
|
if (subcompanyId != null && subcompanyId > 0) {
|
||||||
Long parentId = resolveDeptId(SYSTEM_CODE_SUBCOMPANY, subcompanyId.toString());
|
Long parentId = subcompanyId.longValue();
|
||||||
return new ParentHolder(parentId, true);
|
if (hasDept(parentId)) {
|
||||||
|
return new ParentHolder(parentId, true);
|
||||||
|
}
|
||||||
|
return new ParentHolder(null, true);
|
||||||
}
|
}
|
||||||
return new ParentHolder(DeptDO.PARENT_ID_ROOT, false);
|
return new ParentHolder(DeptDO.PARENT_ID_ROOT, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private DeptExternalCodeDO getDeptMapping(String systemCode, String externalCode) {
|
private boolean hasDept(Long deptId) {
|
||||||
if (StrUtil.isBlank(externalCode)) {
|
if (deptId == null) {
|
||||||
return null;
|
return false;
|
||||||
}
|
}
|
||||||
String key = buildDeptCacheKey(systemCode, externalCode);
|
Boolean cached = deptPresenceCache.get(deptId);
|
||||||
DeptExternalCodeDO cached = deptExternalCache.get(key);
|
|
||||||
if (cached != null) {
|
if (cached != null) {
|
||||||
return cached;
|
return cached;
|
||||||
}
|
}
|
||||||
DeptExternalCodeDO mapping = deptExternalCodeService.getBySystemCodeAndExternalCode(systemCode, externalCode);
|
boolean exists = deptService.getDept(deptId) != null;
|
||||||
if (mapping != null) {
|
deptPresenceCache.put(deptId, exists);
|
||||||
deptExternalCache.put(key, mapping);
|
return exists;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void markDeptExists(Long deptId) {
|
||||||
|
if (deptId != null) {
|
||||||
|
deptPresenceCache.put(deptId, true);
|
||||||
}
|
}
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private PostDO resolvePostByCode(String code) {
|
private PostDO resolvePostByCode(String code) {
|
||||||
@@ -559,17 +518,13 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Long resolveUserDeptId(IWorkHrUserPageRespVO.User user) {
|
private Long resolveUserDeptId(IWorkHrUserPageRespVO.User user) {
|
||||||
if (user.getDepartmentid() != null) {
|
Long deptId = toLong(user.getDepartmentid());
|
||||||
Long deptId = resolveDeptId(SYSTEM_CODE_DEPARTMENT, user.getDepartmentid().toString());
|
if (deptId != null && hasDept(deptId)) {
|
||||||
if (deptId != null) {
|
return deptId;
|
||||||
return deptId;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (user.getSubcompanyid1() != null) {
|
Long subcompanyId = toLong(user.getSubcompanyid1());
|
||||||
Long deptId = resolveDeptId(SYSTEM_CODE_SUBCOMPANY, user.getSubcompanyid1().toString());
|
if (subcompanyId != null && hasDept(subcompanyId)) {
|
||||||
if (deptId != null) {
|
return subcompanyId;
|
||||||
return deptId;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -670,6 +625,10 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Long toLong(Integer value) {
|
||||||
|
return value == null ? null : value.longValue();
|
||||||
|
}
|
||||||
|
|
||||||
private String resolveUsername(IWorkHrUserPageRespVO.User user) {
|
private String resolveUsername(IWorkHrUserPageRespVO.User user) {
|
||||||
String candidate = sanitizeUsername(user.getLoginid());
|
String candidate = sanitizeUsername(user.getLoginid());
|
||||||
if (candidate == null) {
|
if (candidate == null) {
|
||||||
@@ -737,11 +696,6 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor {
|
|||||||
return JOB_CODE_PREFIX + jobTitleId;
|
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) {
|
private String buildPostCacheKey(String code) {
|
||||||
Long tenantId = TenantContextHolder.getTenantId();
|
Long tenantId = TenantContextHolder.getTenantId();
|
||||||
return (tenantId == null ? "_" : tenantId.toString()) + "::POST::" + code;
|
return (tenantId == null ? "_" : tenantId.toString()) + "::POST::" + code;
|
||||||
|
|||||||
Reference in New Issue
Block a user