Merge remote-tracking branch 'base-version/main' into dev

This commit is contained in:
chenbowen
2025-12-01 17:52:13 +08:00
15 changed files with 606 additions and 66 deletions

View File

@@ -33,6 +33,9 @@ public class IWorkFullSyncReqVO {
@Schema(description = "同步范围列表默认同步全部。可选subcompany、department、jobTitle、user")
private List<String> scopes;
@Schema(description = "指定同步记录的 iWork ID。传入后仅同步对应记录", example = "12345")
private String id;
@Schema(description = "是否包含已失效canceled=1的记录", example = "false")
private Boolean includeCanceled = Boolean.FALSE;

View File

@@ -14,7 +14,9 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import static com.zt.plat.module.system.service.integration.iwork.IWorkIntegrationErrorCodeConstants.IWORK_ORG_REMOTE_FAILED;
@@ -86,6 +88,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService {
IWorkSubcompanyQueryReqVO query = new IWorkSubcompanyQueryReqVO();
query.setCurpage(page);
query.setPagesize(pageSize);
applyQueryConditions(query, reqVO);
IWorkHrSubcompanyPageRespVO pageResp = orgRestService.listSubcompanies(query);
ensureIWorkSuccess("拉取分部", pageResp.isSuccess(), pageResp.getMessage());
List<IWorkHrSubcompanyPageRespVO.Subcompany> dataList = CollUtil.emptyIfNull(pageResp.getDataList());
@@ -103,6 +106,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService {
IWorkDepartmentQueryReqVO query = new IWorkDepartmentQueryReqVO();
query.setCurpage(page);
query.setPagesize(pageSize);
applyQueryConditions(query, reqVO);
IWorkHrDepartmentPageRespVO pageResp = orgRestService.listDepartments(query);
ensureIWorkSuccess("拉取部门", pageResp.isSuccess(), pageResp.getMessage());
List<IWorkHrDepartmentPageRespVO.Department> dataList = CollUtil.emptyIfNull(pageResp.getDataList());
@@ -120,6 +124,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService {
IWorkJobTitleQueryReqVO query = new IWorkJobTitleQueryReqVO();
query.setCurpage(page);
query.setPagesize(pageSize);
applyQueryConditions(query, reqVO);
IWorkHrJobTitlePageRespVO pageResp = orgRestService.listJobTitles(query);
ensureIWorkSuccess("拉取岗位", pageResp.isSuccess(), pageResp.getMessage());
List<IWorkHrJobTitlePageRespVO.JobTitle> dataList = CollUtil.emptyIfNull(pageResp.getDataList());
@@ -137,6 +142,7 @@ public class IWorkSyncServiceImpl implements IWorkSyncService {
IWorkUserQueryReqVO query = new IWorkUserQueryReqVO();
query.setCurpage(page);
query.setPagesize(pageSize);
applyQueryConditions(query, reqVO);
IWorkHrUserPageRespVO pageResp = orgRestService.listUsers(query);
ensureIWorkSuccess("拉取人员", pageResp.isSuccess(), pageResp.getMessage());
List<IWorkHrUserPageRespVO.User> dataList = CollUtil.emptyIfNull(pageResp.getDataList());
@@ -181,6 +187,21 @@ public class IWorkSyncServiceImpl implements IWorkSyncService {
stat.incrementFailed(result.getFailed());
}
private void applyQueryConditions(IWorkOrgBaseQueryReqVO query, IWorkFullSyncReqVO reqVO) {
if (query == null || reqVO == null) {
return;
}
if (StrUtil.isBlank(reqVO.getId())) {
return;
}
Map<String, Object> params = query.getParams();
if (params == null) {
params = new HashMap<>();
query.setParams(params);
}
params.put("id", reqVO.getId());
}
private IWorkSyncProcessor.SyncOptions buildFullSyncOptions(IWorkFullSyncReqVO reqVO) {
boolean includeCanceled = Boolean.TRUE.equals(reqVO.getIncludeCanceled());
boolean allowUpdate = Boolean.TRUE.equals(reqVO.getAllowUpdate());

View File

@@ -120,8 +120,8 @@ iwork:
ttl-seconds: 3600
refresh-ahead-seconds: 60
client:
connect-timeout: 5s
response-timeout: 30s
connect-timeout: 60s
response-timeout: 60s
org:
token-seed: 456465
paths: