From 6ce3ba89c6977dc191f55112c39628805fb84e97 Mon Sep 17 00:00:00 2001 From: yang chen Date: Mon, 27 Oct 2025 11:17:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(bpm):=20=E5=AE=9E=E7=8E=B0=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E6=8A=84=E9=80=81=E6=8E=A8=E9=80=81=E5=BE=85=E5=8A=9E?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增待办系统推送逻辑 - 集成 PortalRequest 和用户信息服务 - 构造并发送抄送待办请求 - 添加异常处理和日志记录- 支持创建人、接收人和发起人信息获取 - 实现待办消息的 PC 端跳转链接配置 --- .../BpmProcessInstanceCopyServiceImpl.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) 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 71271b8..11ff117 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 @@ -2,8 +2,15 @@ package com.jeelowcode.service.bpm.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.jeelowcode.framework.utils.tool.spring.SpringUtils; +import com.jeelowcode.service.bpm.config.framework.portal.core.PortalRequest; +import com.jeelowcode.service.bpm.config.framework.portal.core.dto.PortalTodoResponseDTO; +import com.jeelowcode.service.bpm.config.framework.portal.core.dto.ReceiveCCRequestDTO; +import com.jeelowcode.service.system.api.IApiAdminUserApi; +import com.jeelowcode.service.system.dto.AdminUserRespDTO; import com.jeelowcode.tool.framework.common.pojo.PageResult; import com.jeelowcode.service.bpm.controller.vo.instance.BpmProcessInstanceCopyCreateReqVO; import com.jeelowcode.service.bpm.controller.vo.instance.BpmProcessInstanceCopyMyPageReqVO; @@ -16,6 +23,7 @@ import com.jeelowcode.service.bpm.service.IBpmProcessInstanceCopyService; import com.jeelowcode.service.bpm.service.IBpmProcessInstanceService; import com.jeelowcode.service.bpm.service.IBpmTaskService; import com.jeelowcode.service.bpm.dto.BpmDelegateExecutionDTO; +import com.jeelowcode.tool.framework.common.util.object.ObjectUtils; import lombok.extern.slf4j.Slf4j; import org.flowable.engine.RuntimeService; import org.flowable.engine.delegate.DelegateExecution; @@ -29,10 +37,12 @@ import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; import static com.jeelowcode.tool.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.jeelowcode.tool.framework.common.util.json.JsonUtils.toJsonString; /** * 流程抄送 Service 实现类 @@ -59,6 +69,9 @@ public class BpmProcessInstanceCopyServiceImpl implements IBpmProcessInstanceCop @Resource @Lazy private IBpmProcessInstanceService bpmProcessInstanceService; + @Lazy + @Resource + private IApiAdminUserApi apiAdminUserApi; @Override public boolean makeCopy(BpmCandidateSourceInfo sourceInfo) { @@ -136,6 +149,37 @@ public class BpmProcessInstanceCopyServiceImpl implements IBpmProcessInstanceCop .setReason(reqVO.getReason()) ).collect(Collectors.toList()); processInstanceCopyMapper.insertBatch(copyList); + + // 3.推送给待办系统 + PortalRequest portalRequest = SpringUtils.getBean(PortalRequest.class); + // 3.1 如果没有配置待办平台,则结束这个监听任务的执行 + if (ObjectUtil.isNull(portalRequest)) return; + // 3.2 调用待办系统,发送待办消息 + try { + copyList.stream().map(copy -> { + AdminUserRespDTO creatorUser = apiAdminUserApi.getUser(Long.parseLong(copy.getCreator())); + AdminUserRespDTO receiverUser = apiAdminUserApi.getUser(copy.getUserId()); + AdminUserRespDTO startUser = apiAdminUserApi.getUser(copy.getStartUserId()); + return new ReceiveCCRequestDTO() + .setFlowId(copy.getProcessInstanceId()) + .setRequestName(copy.getProcessInstanceName() + "-" + startUser.getNickname() + "-" + DateUtil.formatDateTime(processInstance.getStartTime())) + .setWorkflowName(copy.getProcessInstanceName()) + .setNodeName(copy.getTaskName()) + .setPcUrl("/process-instance/detail?id=" + copy.getProcessInstanceId()) + .setCreator(creatorUser.getUsername()) + .setCreateDateTime(copy.getCreateTime()) + .setReceiver(receiverUser.getUsername()) + .setReceiveDateTime(copy.getCreateTime()) + .setReceiveTs(System.currentTimeMillis()); + } + ).forEach(request -> { + PortalTodoResponseDTO response = portalRequest.receiveCCRequest(request); + log.info("[taskCompleted][推送待办成功 response({})]", toJsonString(response)); + }); + } catch (Exception e) { + log.error("[createProcessInstanceCopy][推送待办失败]", e); + } + } @Override