From 3e152181eab8c1c98ab1e671e77314fa2cbcb17f Mon Sep 17 00:00:00 2001 From: hongqiwei <1143662660@qq.com> Date: Tue, 13 Oct 2026 16:50:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=A6=E6=A0=A1OA=E5=BE=85=E5=8A=9E=E4=B8=8D?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=EF=BC=8C=E8=B7=B3=E8=BF=87=E6=94=B9=E5=B7=B2?= =?UTF-8?q?=E5=8A=9E=E5=B9=B6=E7=BB=A7=E7=BB=AD=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SchoolOaTodoServiceImpl.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/budwk/app/flow/service/impl/SchoolOaTodoServiceImpl.java b/src/main/java/com/budwk/app/flow/service/impl/SchoolOaTodoServiceImpl.java index 86afe8d..44410e9 100644 --- a/src/main/java/com/budwk/app/flow/service/impl/SchoolOaTodoServiceImpl.java +++ b/src/main/java/com/budwk/app/flow/service/impl/SchoolOaTodoServiceImpl.java @@ -271,7 +271,14 @@ public class SchoolOaTodoServiceImpl implements SchoolOaTodoService { return; } String updateUrl = requireConfig("school-oa.todo.update-url").replace("{uniqueId}", uniqueId); - String responseBody = sendTodoRequest(updateUrl, "学校OA待办完成失败", "学校OA待办完成异常"); + String responseBody = sendTodoRequest(updateUrl, null, "学校OA待办完成失败", "学校OA待办完成异常", true); + JSONObject response = JSONUtil.parseObj(responseBody); + if (response.getInt("state", 0) == 1131) { + // 历史流程任务没有创建对应的 OA 待办时,允许 WF 继续流转并由原流程逻辑创建下一节点待办。 + log.warn("学校OA待办不存在,跳过改已办并继续流程,uniqueId={},state=1131,message={}", + uniqueId, response.getStr("message")); + return; + } log.info("学校OA待办完成成功,uniqueId={},response={}", uniqueId, responseBody); } @@ -319,7 +326,7 @@ public class SchoolOaTodoServiceImpl implements SchoolOaTodoService { String uniqueId = task.getId() + "_" + actor.getActorId(); completeTodoByUniqueId(uniqueId); - log.info("学校OA待办完成成功,taskId={},receiveCode={},uniqueId={}", task.getId(), actor.getActorAccount(), uniqueId); + log.info("学校OA待办完成处理结束,taskId={},receiveCode={},uniqueId={}", task.getId(), actor.getActorAccount(), uniqueId); } /** @@ -481,6 +488,10 @@ public class SchoolOaTodoServiceImpl implements SchoolOaTodoService { } private String sendTodoRequest(String url, JSONObject body, String failMessage, String errorMessage) { + return sendTodoRequest(url, body, failMessage, errorMessage, false); + } + + private String sendTodoRequest(String url, JSONObject body, String failMessage, String errorMessage, boolean skipMissingTodo) { String requestBody = body == null ? "" : JSONUtil.toJsonStr(body); log.info("学校OA请求开始,url={},body={}", url, requestBody); try { @@ -493,7 +504,9 @@ public class SchoolOaTodoServiceImpl implements SchoolOaTodoService { String responseBody = request.execute().body(); log.info("学校OA请求响应,url={},response={}", url, responseBody); JSONObject response = JSONUtil.parseObj(responseBody); - if (response.getInt("state", 0) != 200) { + int state = response.getInt("state", 0); + // 仅完成待办接口允许 OA 返回“uniqueId 不存在”;创建、删除和其他修改仍按原规则报错。 + if (state != 200 && !(skipMissingTodo && state == 1131)) { log.warn("学校OA请求失败响应,url={},body={},response={}", url, requestBody, responseBody); throw new BaseException("{}:{}", failMessage, response.getStr("message", responseBody)); }