iwork 人员组织同步相关,兼容 iwork 返回
This commit is contained in:
@@ -280,7 +280,8 @@ public class IWorkOrgRestServiceImpl implements IWorkOrgRestService {
|
||||
respVO.setCode(envelope.code());
|
||||
respVO.setMessage(envelope.message());
|
||||
respVO.setSuccess(envelope.success());
|
||||
if (!envelope.success()) {
|
||||
JsonNode dataNode = envelope.success() ? readNode(envelope.root(), "data") : null;
|
||||
if (dataNode == null) {
|
||||
respVO.setTotalSize(0);
|
||||
respVO.setTotalPage(0);
|
||||
respVO.setPageSize(0);
|
||||
@@ -288,11 +289,10 @@ public class IWorkOrgRestServiceImpl implements IWorkOrgRestService {
|
||||
respVO.setDataList(Collections.emptyList());
|
||||
return respVO;
|
||||
}
|
||||
JsonNode dataNode = requireNode(envelope.root(), "data");
|
||||
respVO.setTotalSize(readInt(dataNode, "totalSize"));
|
||||
respVO.setTotalPage(readInt(dataNode, "totalPage"));
|
||||
respVO.setPageSize(readInt(dataNode, "pageSize"));
|
||||
respVO.setPageNumber(readInt(dataNode, "pageNumber"));
|
||||
respVO.setTotalSize(readInt(dataNode, 0, "totalSize"));
|
||||
respVO.setTotalPage(readInt(dataNode, 0, "totalPage", "totalPageCount"));
|
||||
respVO.setPageSize(readInt(dataNode, 0, "pageSize", "pagesize"));
|
||||
respVO.setPageNumber(readInt(dataNode, 0, "pageNumber", "page", "curpage"));
|
||||
respVO.setDataList(readList(dataNode, "dataList", SUBCOMPANY_LIST_TYPE));
|
||||
return respVO;
|
||||
}
|
||||
@@ -304,7 +304,8 @@ public class IWorkOrgRestServiceImpl implements IWorkOrgRestService {
|
||||
respVO.setCode(envelope.code());
|
||||
respVO.setMessage(envelope.message());
|
||||
respVO.setSuccess(envelope.success());
|
||||
if (!envelope.success()) {
|
||||
JsonNode dataNode = envelope.success() ? readNode(envelope.root(), "data") : null;
|
||||
if (dataNode == null) {
|
||||
respVO.setTotalSize(0);
|
||||
respVO.setTotalPage(0);
|
||||
respVO.setPageSize(0);
|
||||
@@ -312,11 +313,10 @@ public class IWorkOrgRestServiceImpl implements IWorkOrgRestService {
|
||||
respVO.setDataList(Collections.emptyList());
|
||||
return respVO;
|
||||
}
|
||||
JsonNode dataNode = requireNode(envelope.root(), "data");
|
||||
respVO.setTotalSize(readInt(dataNode, "totalSize"));
|
||||
respVO.setTotalPage(readInt(dataNode, "totalPage"));
|
||||
respVO.setPageSize(readInt(dataNode, "pageSize"));
|
||||
respVO.setPageNumber(readInt(dataNode, "pageNumber"));
|
||||
respVO.setTotalSize(readInt(dataNode, 0, "totalSize"));
|
||||
respVO.setTotalPage(readInt(dataNode, 0, "totalPage", "totalPageCount"));
|
||||
respVO.setPageSize(readInt(dataNode, 0, "pageSize", "pagesize"));
|
||||
respVO.setPageNumber(readInt(dataNode, 0, "pageNumber", "page", "curpage"));
|
||||
respVO.setDataList(readList(dataNode, "dataList", DEPARTMENT_LIST_TYPE));
|
||||
return respVO;
|
||||
}
|
||||
@@ -328,7 +328,8 @@ public class IWorkOrgRestServiceImpl implements IWorkOrgRestService {
|
||||
respVO.setCode(envelope.code());
|
||||
respVO.setMessage(envelope.message());
|
||||
respVO.setSuccess(envelope.success());
|
||||
if (!envelope.success()) {
|
||||
JsonNode dataNode = envelope.success() ? readNode(envelope.root(), "data") : null;
|
||||
if (dataNode == null) {
|
||||
respVO.setTotalSize(0);
|
||||
respVO.setTotalPage(0);
|
||||
respVO.setPageSize(0);
|
||||
@@ -336,11 +337,10 @@ public class IWorkOrgRestServiceImpl implements IWorkOrgRestService {
|
||||
respVO.setDataList(Collections.emptyList());
|
||||
return respVO;
|
||||
}
|
||||
JsonNode dataNode = requireNode(envelope.root(), "data");
|
||||
respVO.setTotalSize(readInt(dataNode, "totalSize"));
|
||||
respVO.setTotalPage(readInt(dataNode, "totalPage"));
|
||||
respVO.setPageSize(readInt(dataNode, "pageSize"));
|
||||
respVO.setPageNumber(readInt(dataNode, "pageNumber"));
|
||||
respVO.setTotalSize(readInt(dataNode, 0, "totalSize"));
|
||||
respVO.setTotalPage(readInt(dataNode, 0, "totalPage", "totalPageCount"));
|
||||
respVO.setPageSize(readInt(dataNode, 0, "pageSize", "pagesize"));
|
||||
respVO.setPageNumber(readInt(dataNode, 0, "pageNumber", "page", "curpage"));
|
||||
respVO.setDataList(readList(dataNode, "dataList", JOB_TITLE_LIST_TYPE));
|
||||
return respVO;
|
||||
}
|
||||
@@ -352,7 +352,8 @@ public class IWorkOrgRestServiceImpl implements IWorkOrgRestService {
|
||||
respVO.setCode(envelope.code());
|
||||
respVO.setMessage(envelope.message());
|
||||
respVO.setSuccess(envelope.success());
|
||||
if (!envelope.success()) {
|
||||
JsonNode dataNode = envelope.success() ? readNode(envelope.root(), "data") : null;
|
||||
if (dataNode == null) {
|
||||
respVO.setTotalSize(0);
|
||||
respVO.setTotalPage(0);
|
||||
respVO.setPageSize(0);
|
||||
@@ -360,11 +361,10 @@ public class IWorkOrgRestServiceImpl implements IWorkOrgRestService {
|
||||
respVO.setDataList(Collections.emptyList());
|
||||
return respVO;
|
||||
}
|
||||
JsonNode dataNode = requireNode(envelope.root(), "data");
|
||||
respVO.setTotalSize(readInt(dataNode, "totalSize"));
|
||||
respVO.setTotalPage(readInt(dataNode, "totalPage"));
|
||||
respVO.setPageSize(readInt(dataNode, "pageSize"));
|
||||
respVO.setPageNumber(readInt(dataNode, "pageNumber"));
|
||||
respVO.setTotalSize(readInt(dataNode, 0, "totalSize"));
|
||||
respVO.setTotalPage(readInt(dataNode, 0, "totalPage", "totalPageCount"));
|
||||
respVO.setPageSize(readInt(dataNode, 0, "pageSize", "pagesize"));
|
||||
respVO.setPageNumber(readInt(dataNode, 0, "pageNumber", "page", "curpage"));
|
||||
respVO.setDataList(readList(dataNode, "dataList", USER_LIST_TYPE));
|
||||
return respVO;
|
||||
}
|
||||
@@ -408,33 +408,50 @@ public class IWorkOrgRestServiceImpl implements IWorkOrgRestService {
|
||||
return new ParsedEnvelope(code, message, success, node);
|
||||
}
|
||||
|
||||
private JsonNode requireNode(JsonNode parent, String field) {
|
||||
// 强制要求下游节点存在,避免静默回退
|
||||
if (parent == null || !parent.has(field) || parent.get(field).isNull()) {
|
||||
throw ServiceExceptionUtil.exception(IWORK_ORG_REMOTE_FAILED, "iWork 响应缺少字段: " + field);
|
||||
private JsonNode readNode(JsonNode parent, String field) {
|
||||
if (parent == null || !parent.has(field)) {
|
||||
return null;
|
||||
}
|
||||
return parent.get(field);
|
||||
JsonNode value = parent.get(field);
|
||||
return value == null || value.isNull() ? null : value;
|
||||
}
|
||||
|
||||
private int readInt(JsonNode parent, String field) {
|
||||
JsonNode valueNode = requireNode(parent, field);
|
||||
if (valueNode.isNumber()) {
|
||||
return valueNode.intValue();
|
||||
private int readInt(JsonNode parent, int defaultValue, String... fieldNames) {
|
||||
if (parent == null || fieldNames == null) {
|
||||
return defaultValue;
|
||||
}
|
||||
if (valueNode.isTextual()) {
|
||||
try {
|
||||
return Integer.parseInt(valueNode.asText());
|
||||
} catch (NumberFormatException ex) {
|
||||
throw ServiceExceptionUtil.exception(IWORK_ORG_REMOTE_FAILED, "iWork 字段格式错误: " + field);
|
||||
for (String field : fieldNames) {
|
||||
if (!StringUtils.hasText(field)) {
|
||||
continue;
|
||||
}
|
||||
JsonNode valueNode = readNode(parent, field);
|
||||
if (valueNode == null) {
|
||||
continue;
|
||||
}
|
||||
if (valueNode.isNumber()) {
|
||||
return valueNode.intValue();
|
||||
}
|
||||
if (valueNode.isTextual()) {
|
||||
try {
|
||||
return Integer.parseInt(valueNode.asText());
|
||||
} catch (NumberFormatException ex) {
|
||||
log.warn("[iWork-Org] 字段格式非数值,使用默认值: {}", field);
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
log.warn("[iWork-Org] 字段类型非整数,使用默认值: {}", field);
|
||||
return defaultValue;
|
||||
}
|
||||
throw ServiceExceptionUtil.exception(IWORK_ORG_REMOTE_FAILED, "iWork 字段类型错误: " + field);
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
private <T> List<T> readList(JsonNode parent, String field, TypeReference<List<T>> typeReference) {
|
||||
JsonNode arrayNode = requireNode(parent, field);
|
||||
JsonNode arrayNode = readNode(parent, field);
|
||||
if (arrayNode == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
if (!arrayNode.isArray()) {
|
||||
throw ServiceExceptionUtil.exception(IWORK_ORG_REMOTE_FAILED, "iWork 字段必须为数组: " + field);
|
||||
log.warn("[iWork-Org] 字段应为数组但实际不是,尝试转换: {}", field);
|
||||
}
|
||||
return objectMapper.convertValue(arrayNode, typeReference);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user