diff --git a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/portal/core/dto/ProcessDoneRequestDTO.java b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/portal/core/dto/ProcessDoneRequestDTO.java index a043682..116b612 100644 --- a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/portal/core/dto/ProcessDoneRequestDTO.java +++ b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/framework/portal/core/dto/ProcessDoneRequestDTO.java @@ -46,6 +46,6 @@ public class ProcessDoneRequestDTO { * 接收时间戳 */ @JsonProperty("receivets") - private Long receiveTs; + private String receiveTs; } diff --git a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/controller/BpmProcessInstanceCopyController.java b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/controller/BpmProcessInstanceCopyController.java index 82d3d24..d239bcc 100644 --- a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/controller/BpmProcessInstanceCopyController.java +++ b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/controller/BpmProcessInstanceCopyController.java @@ -47,7 +47,7 @@ public class BpmProcessInstanceCopyController { private IBpmTaskService bpmTaskService; @PostMapping("/create") - @Operation(tags = "流程管理",summary = "抄送流程") + @Operation(tags = "流程管理", summary = "抄送流程") // @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:create')") public CommonResult createProcessInstanceCopy(@Valid @RequestBody BpmProcessInstanceCopyCreateReqVO createReqVO) { processInstanceCopyService.createProcessInstanceCopy(getLoginUserId(), createReqVO); @@ -55,7 +55,7 @@ public class BpmProcessInstanceCopyController { } @GetMapping("/my-page") - @Operation(tags = "流程管理",summary = "获得抄送流程分页列表") + @Operation(tags = "流程管理", summary = "获得抄送流程分页列表") // @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:query')") public CommonResult> getProcessInstanceCopyPage( @Valid BpmProcessInstanceCopyMyPageReqVO pageReqVO) { @@ -74,4 +74,11 @@ public class BpmProcessInstanceCopyController { return success(BpmProcessInstanceCopyConvert.INSTANCE.convertPage(pageResult, taskNameMap, processNameMap, userMap)); } -} + @Operation(tags = "流程管理", summary = "处理当前用户待阅信息") + @PostMapping("/process-current-user-copy/{processInstanceId}") + public CommonResult processCurrentUserCopyInfo(@PathVariable String processInstanceId) { + boolean result = processInstanceCopyService.processCurrentUserCopyInfo(processInstanceId); + return success(result); + } + +} \ No newline at end of file diff --git a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/service/IBpmProcessInstanceCopyService.java b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/service/IBpmProcessInstanceCopyService.java index 42e695e..1da123f 100644 --- a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/service/IBpmProcessInstanceCopyService.java +++ b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/service/IBpmProcessInstanceCopyService.java @@ -37,4 +37,12 @@ public interface IBpmProcessInstanceCopyService { */ PageResult getMyProcessInstanceCopyPage(Long userId, BpmProcessInstanceCopyMyPageReqVO pageReqVO); -} + + /** + * 处理当前用户待阅信息 + * + * @param processInstanceId 流程实例ID + * @return 处理结果 + */ + boolean processCurrentUserCopyInfo(String processInstanceId); +} \ No newline at end of file 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 356366d..2813da8 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 @@ -9,6 +9,7 @@ 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.ProcessDoneRequestDTO; 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; @@ -45,6 +46,7 @@ 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; +import static com.jeelowcode.tool.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; /** * 流程抄送 Service 实现类 @@ -189,4 +191,65 @@ public class BpmProcessInstanceCopyServiceImpl implements IBpmProcessInstanceCop return processInstanceCopyMapper.selectPage(userId, pageReqVO); } -} + @Override + public boolean processCurrentUserCopyInfo(String processInstanceId) { + // 获取当前登录用户ID + Long currentUserId = getLoginUserId(); + + // 查询当前用户是否有该流程实例的抄送信息 + List copyList = processInstanceCopyMapper.selectList( + new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper() + .eq(BpmProcessInstanceCopyDO::getProcessInstanceId, processInstanceId) + .eq(BpmProcessInstanceCopyDO::getUserId, currentUserId) + ); + + // 如果没有查到抄送信息,则直接返回 + if (CollUtil.isEmpty(copyList)) { + return false; + } + + // 获取PortalRequest实例 + PortalRequest portalRequest = SpringUtils.getBean(PortalRequest.class); + + // 如果没有配置待办平台,则结束执行 + if (!Objects.requireNonNull(portalRequest).available()) { + log.warn("[processCurrentUserCopyInfo][PortalRequest不可用]"); + return false; + } + + try { + // 遍历所有抄送信息,调用PortalRequest处理待办为已办接口 + for (BpmProcessInstanceCopyDO copy : copyList) { + // 获取流程实例信息 + ProcessInstance processInstance = bpmProcessInstanceService.getProcessInstance(processInstanceId); + if (processInstance == null) { + log.warn("[processCurrentUserCopyInfo][流程实例不存在 processInstanceId({})]", processInstanceId); + continue; + } + + // 获取用户信息 + AdminUserRespDTO receiverUser = apiAdminUserApi.getUser(copy.getUserId()); + AdminUserRespDTO startUser = apiAdminUserApi.getUser(copy.getStartUserId()); + + // 构建处理已完成请求参数 + ProcessDoneRequestDTO requestDTO = new ProcessDoneRequestDTO() + .setFlowId(copy.getProcessInstanceId()) + .setRequestName(copy.getProcessInstanceName() + "-" + startUser.getNickname() + "-" + DateUtil.formatDateTime(processInstance.getStartTime())) + .setWorkflowName(copy.getProcessInstanceName()) + .setNodeName(copy.getTaskName()) + .setReceiver(receiverUser.getUsername()) + .setReceiveTs(String.valueOf(System.currentTimeMillis())); + + // 调用处理待办为已办接口 + PortalTodoResponseDTO response = portalRequest.processDoneRequest(requestDTO); + log.info("[processCurrentUserCopyInfo][处理待阅为已阅成功 response({})]", toJsonString(response)); + } + + return true; + } catch (Exception e) { + log.error("[processCurrentUserCopyInfo][处理待阅信息失败]", e); + return false; + } + } + +} \ No newline at end of file