1. 统一 iwork 的同步组织代码生成逻辑

This commit is contained in:
chenbowen
2025-12-18 13:19:39 +08:00
parent 4082e61874
commit 870c6a5f88
3 changed files with 112 additions and 1047 deletions

View File

@@ -84,20 +84,13 @@ public class DeptServiceImpl implements DeptService {
validateParentDept(null, createReqVO.getParentId());
// 校验部门名的唯一性
validateDeptNameUnique(null, createReqVO.getParentId(), createReqVO.getName());
// 生成并校验部门编码
boolean isIWorkSource = Objects.equals(createReqVO.getDeptSource(), DeptSourceEnum.IWORK.getSource());
if (isIWorkSource) {
// iWork 来源直接使用提供的编码,不再生成
String providedCode = StrUtil.blankToDefault(createReqVO.getCode(), null);
createReqVO.setCode(providedCode);
// 生成并校验部门编码所有来源统一走生成逻辑iWork 不再豁免)
if (Boolean.TRUE.equals(createReqVO.getDelayCodeGeneration())) {
createReqVO.setCode(null);
} else {
if (Boolean.TRUE.equals(createReqVO.getDelayCodeGeneration())) {
createReqVO.setCode(null);
} else {
String resolvedCode = generateDeptCode(createReqVO.getParentId(), createReqVO.getDeptSource());
validateDeptCodeUnique(null, resolvedCode);
createReqVO.setCode(resolvedCode);
}
String resolvedCode = generateDeptCode(createReqVO.getParentId(), createReqVO.getDeptSource());
validateDeptCodeUnique(null, resolvedCode);
createReqVO.setCode(resolvedCode);
}
// 插入部门
@@ -127,28 +120,21 @@ public class DeptServiceImpl implements DeptService {
validateParentDept(updateReqVO.getId(), updateReqVO.getParentId());
// 校验部门名的唯一性
validateDeptNameUnique(updateReqVO.getId(), updateReqVO.getParentId(), updateReqVO.getName());
boolean isIWorkSource = Objects.equals(originalDept.getDeptSource(), DeptSourceEnum.IWORK.getSource());
if (isIWorkSource) {
// iWork 来源直接使用提供的编码,不再生成
String providedCode = StrUtil.blankToDefault(updateReqVO.getCode(), originalDept.getCode());
updateReqVO.setCode(providedCode);
} else {
Integer source = ObjectUtil.defaultIfNull(updateReqVO.getDeptSource(), originalDept.getDeptSource());
if (source == null) {
source = DeptSourceEnum.EXTERNAL.getSource();
}
String existingCode = originalDept.getCode();
if (StrUtil.isBlank(existingCode)) {
if (Boolean.TRUE.equals(updateReqVO.getDelayCodeGeneration())) {
updateReqVO.setCode(null);
} else {
String newCode = generateDeptCode(updateReqVO.getParentId(), source);
validateDeptCodeUnique(updateReqVO.getId(), newCode);
updateReqVO.setCode(newCode);
}
Integer source = ObjectUtil.defaultIfNull(updateReqVO.getDeptSource(), originalDept.getDeptSource());
if (source == null) {
source = DeptSourceEnum.EXTERNAL.getSource();
}
String existingCode = originalDept.getCode();
if (StrUtil.isBlank(existingCode)) {
if (Boolean.TRUE.equals(updateReqVO.getDelayCodeGeneration())) {
updateReqVO.setCode(null);
} else {
updateReqVO.setCode(existingCode);
String newCode = generateDeptCode(updateReqVO.getParentId(), source);
validateDeptCodeUnique(updateReqVO.getId(), newCode);
updateReqVO.setCode(newCode);
}
} else {
updateReqVO.setCode(existingCode);
}
// 更新部门