From 3a6db56ac6cba4ae2ca64963116adac9ee0ac46f Mon Sep 17 00:00:00 2001 From: yang chen Date: Mon, 10 Nov 2025 09:01:54 +0800 Subject: [PATCH] =?UTF-8?q?fix(bpm):=E4=BC=98=E5=8C=96PortalRequest?= =?UTF-8?q?=E5=8F=AF=E7=94=A8=E6=80=A7=E6=A3=80=E6=9F=A5=E9=80=BB=E8=BE=91?= =?UTF-8?q?-=20=E5=B0=86null=E5=88=A4=E6=96=AD=E6=94=B9=E4=B8=BAavailable(?= =?UTF-8?q?)=E6=96=B9=E6=B3=95=E8=B0=83=E7=94=A8=EF=BC=8C=E7=A1=AE?= =?UTF-8?q?=E4=BF=9DsysCode=E3=80=81domain=E5=92=8Cprotocol=E5=9D=87?= =?UTF-8?q?=E9=9D=9E=E7=A9=BA-=20=E5=9C=A8PortalRequest=E7=B1=BB=E4=B8=AD?= =?UTF-8?q?=E6=96=B0=E5=A2=9Eavailable()=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E7=94=A8=E4=BA=8E=E6=A3=80=E6=9F=A5=E5=AE=9E=E4=BE=8B=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=8F=AF=E7=94=A8=20-=20=E7=BB=9F=E4=B8=80=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E9=A3=8E=E6=A0=BC=EF=BC=8C=E4=BC=98=E5=8C=96=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E5=88=A4=E6=96=AD=E5=92=8C=E5=AD=97=E7=AC=A6=E4=B8=B2?= =?UTF-8?q?=E5=88=A4=E7=A9=BA=E9=80=BB=E8=BE=91=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E5=8F=82=E6=95=B0=E6=A0=BC=E5=BC=8F=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=BC=BA=E4=BB=A3=E7=A0=81=E5=8F=AF=E8=AF=BB=E6=80=A7?= =?UTF-8?q?=20-=20=E4=BF=AE=E5=A4=8D=E6=BD=9C=E5=9C=A8=E7=9A=84=E7=A9=BA?= =?UTF-8?q?=E6=8C=87=E9=92=88=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98=EF=BC=8C?= =?UTF-8?q?=E6=8F=90=E9=AB=98=E7=B3=BB=E7=BB=9F=E7=A8=B3=E5=AE=9A=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/PortalTodoServiceImpl.java | 90 ++++++++----------- .../biz/service/impl/RiskServiceImpl.java | 2 +- .../listener/BpmPortalTodoEventListener.java | 8 +- .../framework/portal/core/PortalRequest.java | 10 +++ .../BpmProcessInstanceCopyServiceImpl.java | 2 +- 5 files changed, 54 insertions(+), 58 deletions(-) diff --git a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/impl/PortalTodoServiceImpl.java b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/impl/PortalTodoServiceImpl.java index e108f85..cafb18a 100644 --- a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/impl/PortalTodoServiceImpl.java +++ b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/impl/PortalTodoServiceImpl.java @@ -53,25 +53,25 @@ public class PortalTodoServiceImpl implements IPortalTodoService { private IDictDataService dictDataService; @Override - public boolean pushDoneRiskHazardWorkflow(Long id,String todoType) { + public boolean pushDoneRiskHazardWorkflow(Long id, String todoType) { // 0.1.查找风险隐患数据,如果查不到则放弃推送 Map risk = riskService.getRiskById(id); if (MapUtil.isEmpty(risk)) return false; // 0.2.从容器中获取 PortalRequest 对象,如果没有配置则放弃通知 PortalRequest portalRequest = SpringUtils.getBean(PortalRequest.class); - if (ObjectUtil.isNull(portalRequest)) return false; + if (!Objects.requireNonNull(portalRequest).available()) return false; // 1.构建请求参数,准备推送待办信息 - String creator=""; - String receiver=""; - String isRemark=""; - String viewType=""; - String checkArea=""; + String creator = ""; + String receiver = ""; + String isRemark = ""; + String viewType = ""; + String checkArea = ""; // 1.1.拼接标题 DictDataDO dictData = dictDataService.getDictData("check_area_dic", risk.getOrDefault("check_area", "").toString()); if (dictData != null) { - checkArea=dictData.getLabel(); + checkArea = dictData.getLabel(); } String requestName = DateUtil.formatDate((Date) risk.getOrDefault("check_date", new Date())) + SPACE + @@ -81,15 +81,13 @@ public class PortalTodoServiceImpl implements IPortalTodoService { risk.getOrDefault("check_problem", "") + SPACE + risk.getOrDefault("check_people", ""); // 1.2.根据代办类型取消息发送者 TODO 需要升级存储检查人的username - if(todoType.equals("CHARGE_TODO")||todoType.equals("CHARGE_DONE")){ - if(todoType.equals("CHARGE_TODO")) - { - isRemark=WORK_STATUS_TODO; - viewType=VIEW_TYPE_UNREAD; - }else - { - isRemark=WORK_STATUS_DONE; - viewType=VIEW_TYPE_READ; + if (todoType.equals("CHARGE_TODO") || todoType.equals("CHARGE_DONE")) { + if (todoType.equals("CHARGE_TODO")) { + isRemark = WORK_STATUS_TODO; + viewType = VIEW_TYPE_UNREAD; + } else { + isRemark = WORK_STATUS_DONE; + viewType = VIEW_TYPE_READ; } // 消息发送者为 检查人 @@ -97,49 +95,40 @@ public class PortalTodoServiceImpl implements IPortalTodoService { AdminUserRespDTO createUser = Optional.ofNullable(createUserId) .map(userId -> apiAdminUserApi.getUser(userId)) .orElse(new AdminUserRespDTO()); - if(StringUtils.isEmpty(createUser.getUsername())) - { + if (StringUtils.isEmpty(createUser.getUsername())) { return false; - }else - { - creator=createUser.getUsername(); + } else { + creator = createUser.getUsername(); } // 消息接受者为 整改责任人 - Long receiveId = Objects.isNull(risk.get("corrective_charge_people_id")) ? null : Long.valueOf( risk.get("corrective_charge_people_id").toString()); + Long receiveId = Objects.isNull(risk.get("corrective_charge_people_id")) ? null : Long.valueOf(risk.get("corrective_charge_people_id").toString()); AdminUserRespDTO receiveUser = Optional.ofNullable(receiveId) .map(userId -> apiAdminUserApi.getUser(userId)) .orElse(new AdminUserRespDTO()); - if(StringUtils.isEmpty(receiveUser.getUsername())) - { + if (StringUtils.isEmpty(receiveUser.getUsername())) { return false; - }else - { - receiver=receiveUser.getUsername(); + } else { + receiver = receiveUser.getUsername(); } - }else if(todoType.equals("CONFIRM_TODO")||todoType.equals("CONFIRM_DONE")) - { - if(todoType.equals("CONFIRM_TODO")) - { - isRemark=WORK_STATUS_TODO; - viewType=VIEW_TYPE_UNREAD; - }else - { - isRemark=WORK_STATUS_DONE; - viewType=VIEW_TYPE_READ; + } else if (todoType.equals("CONFIRM_TODO") || todoType.equals("CONFIRM_DONE")) { + if (todoType.equals("CONFIRM_TODO")) { + isRemark = WORK_STATUS_TODO; + viewType = VIEW_TYPE_UNREAD; + } else { + isRemark = WORK_STATUS_DONE; + viewType = VIEW_TYPE_READ; } // 消息发送者为 整改责任人 - Long createUserId = Objects.isNull(risk.get("corrective_charge_people_id")) ? null : Long.valueOf( risk.get("corrective_charge_people_id").toString()); + Long createUserId = Objects.isNull(risk.get("corrective_charge_people_id")) ? null : Long.valueOf(risk.get("corrective_charge_people_id").toString()); AdminUserRespDTO createUser = Optional.ofNullable(createUserId) .map(userId -> apiAdminUserApi.getUser(userId)) .orElse(new AdminUserRespDTO()); - if(StringUtils.isEmpty(createUser.getUsername())) - { + if (StringUtils.isEmpty(createUser.getUsername())) { return false; - }else - { - creator=createUser.getUsername(); + } else { + creator = createUser.getUsername(); } // 消息接受者为 整改确认人 @@ -147,12 +136,10 @@ public class PortalTodoServiceImpl implements IPortalTodoService { AdminUserRespDTO receiveUser = Optional.ofNullable(receiveId) .map(userId -> apiAdminUserApi.getUser(userId)) .orElse(new AdminUserRespDTO()); - if(StringUtils.isEmpty(receiveUser.getUsername())) - { + if (StringUtils.isEmpty(receiveUser.getUsername())) { return false; - }else - { - receiver=receiveUser.getUsername(); + } else { + receiver = receiveUser.getUsername(); } } // 1.2.组织请求数据 @@ -175,8 +162,7 @@ public class PortalTodoServiceImpl implements IPortalTodoService { // 2.推送待办信息,使用try-catch避免影响上层调用方法的事务回滚 try { portalRequest.receiveRequestInfo(todoRequestDTO); - if(todoType.equals("CONFIRM_DONE")) - { + if (todoType.equals("CONFIRM_DONE")) { portalRequest.receiveRequestInfo(completeRequestDTO); } } catch (Exception e) { @@ -193,7 +179,7 @@ public class PortalTodoServiceImpl implements IPortalTodoService { if (MapUtil.isEmpty(risk)) return false; // 0.2.从容器中获取 PortalRequest 对象,如果没有配置则放弃通知 PortalRequest portalRequest = SpringUtils.getBean(PortalRequest.class); - if (ObjectUtil.isNull(portalRequest)) return false; + if (!Objects.requireNonNull(portalRequest).available()) return false; // 1.构建请求参数,准备推送待办信息 DeleteRequestInfoDTO deleteRequestInfoDTO = new DeleteRequestInfoDTO() diff --git a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/impl/RiskServiceImpl.java b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/impl/RiskServiceImpl.java index 1670a5b..30eaf39 100644 --- a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/impl/RiskServiceImpl.java +++ b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/service/impl/RiskServiceImpl.java @@ -58,7 +58,7 @@ public class RiskServiceImpl implements IRiskService { // 0.2.从容器中获取 PortalRequest 对象,如果没有配置则放弃通知 PortalRequest portalRequest = SpringUtils.getBean(PortalRequest.class); - if (ObjectUtil.isNull(portalRequest)) return; + if (!Objects.requireNonNull(portalRequest).available()) return; // 1.构建请求参数,准备推送待办信息 // 1.1.拼接标题 diff --git a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/flowable/core/listener/BpmPortalTodoEventListener.java b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/flowable/core/listener/BpmPortalTodoEventListener.java index bbb4f0f..a3b078f 100644 --- a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/flowable/core/listener/BpmPortalTodoEventListener.java +++ b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/flowable/core/listener/BpmPortalTodoEventListener.java @@ -89,7 +89,7 @@ public class BpmPortalTodoEventListener extends AbstractFlowableEngineEventListe protected void processCancelled(FlowableCancelledEvent event) { // 流程取消事件,这里对应调用流程删除接口 PortalRequest portalRequest = SpringUtils.getBean(PortalRequest.class); - if (Objects.isNull(portalRequest)) { + if (!Objects.requireNonNull(portalRequest).available()) { // 如果没有配置待办平台,则结束这个监听任务的执行 return; } @@ -110,7 +110,7 @@ public class BpmPortalTodoEventListener extends AbstractFlowableEngineEventListe protected void processCompleted(FlowableEngineEntityEvent event) { // 流程完成事件,对应流程办结 PortalRequest portalRequest = SpringUtils.getBean(PortalRequest.class); - if (portalRequest == null) { + if (!Objects.requireNonNull(portalRequest).available()) { // 如果没有配置待办平台,则结束这个监听任务的执行 return; } @@ -172,7 +172,7 @@ public class BpmPortalTodoEventListener extends AbstractFlowableEngineEventListe protected void taskAssigned(FlowableEngineEntityEvent event) { // 任务分配事件,对应待办 PortalRequest portalRequest = SpringUtils.getBean(PortalRequest.class); - if (portalRequest == null) { + if (!Objects.requireNonNull(portalRequest).available()) { // 如果没有配置待办平台,则结束这个监听任务的执行 return; } @@ -241,7 +241,7 @@ public class BpmPortalTodoEventListener extends AbstractFlowableEngineEventListe protected void taskCompleted(FlowableEngineEntityEvent event) { // 任务完成事件,这里处理任务已办 PortalRequest portalRequest = SpringUtils.getBean(PortalRequest.class); - if (portalRequest == null) { + if (!Objects.requireNonNull(portalRequest).available()) { // 如果没有配置待办平台,则结束这个监听任务的执行 return; } diff --git a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/portal/core/PortalRequest.java b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/portal/core/PortalRequest.java index b02eb3c..f1ba987 100644 --- a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/portal/core/PortalRequest.java +++ b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/portal/core/PortalRequest.java @@ -2,6 +2,7 @@ package com.jeelowcode.service.bpm.config.framework.portal.core; import cn.hutool.http.Header; import cn.hutool.http.HttpRequest; +import com.jeelowcode.framework.plus.core.toolkit.StringUtils; import com.jeelowcode.service.bpm.config.framework.portal.core.dto.*; import com.jeelowcode.tool.framework.common.util.json.JsonUtils; import lombok.extern.slf4j.Slf4j; @@ -159,4 +160,13 @@ public class PortalRequest { return JsonUtils.parseObject(httpRequest.execute().body(), PortalTodoResponseDTO.class); } + /** + * 检查当前PortalRequest实例是否可用 + * + * @return 当sysCode、domain和protocol都不为空时返回true,否则返回false + */ + public boolean available() { + return !StringUtils.isBlank(sysCode) && !StringUtils.isBlank(domain) && !StringUtils.isBlank(protocol); + } + } diff --git a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/service/impl/BpmProcessInstanceCopyServiceImpl.java b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/service/impl/BpmProcessInstanceCopyServiceImpl.java index 11ff117..273e1d3 100644 --- a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/service/impl/BpmProcessInstanceCopyServiceImpl.java +++ b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/service/impl/BpmProcessInstanceCopyServiceImpl.java @@ -153,7 +153,7 @@ public class BpmProcessInstanceCopyServiceImpl implements IBpmProcessInstanceCop // 3.推送给待办系统 PortalRequest portalRequest = SpringUtils.getBean(PortalRequest.class); // 3.1 如果没有配置待办平台,则结束这个监听任务的执行 - if (ObjectUtil.isNull(portalRequest)) return; + if (!Objects.requireNonNull(portalRequest).available()) return; // 3.2 调用待办系统,发送待办消息 try { copyList.stream().map(copy -> {