diff --git a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/convert/cc/BpmProcessInstanceCopyConvert.java b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/convert/cc/BpmProcessInstanceCopyConvert.java index e69d5c1..e081757 100644 --- a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/convert/cc/BpmProcessInstanceCopyConvert.java +++ b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/config/convert/cc/BpmProcessInstanceCopyConvert.java @@ -29,7 +29,7 @@ public interface BpmProcessInstanceCopyConvert { List list = BeanUtils.toBean(page.getList(), BpmProcessInstanceCopyPageItemRespVO.class, copy -> { - MapUtils.findAndThen(userMap, Long.valueOf(copy.getCreator()), user -> user.setNickname(user.getNickname())); + MapUtils.findAndThen(userMap, Long.valueOf(copy.getCreator()), user -> copy.setCreatorNickname(user.getNickname())); MapUtils.findAndThen(userMap, copy.getStartUserId(), user -> copy.setStartUserNickname(user.getNickname())); MapUtils.findAndThen(taskNameMap, copy.getTaskId(), copy::setTaskName); MapUtils.findAndThen(processInstaneNameMap, copy.getProcessInstanceId(), copy::setProcessInstanceName); diff --git a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/controller/vo/instance/BpmProcessInstanceCopyCreateReqVO.java b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/controller/vo/instance/BpmProcessInstanceCopyCreateReqVO.java index bf438c8..74ae34f 100644 --- a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/controller/vo/instance/BpmProcessInstanceCopyCreateReqVO.java +++ b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/controller/vo/instance/BpmProcessInstanceCopyCreateReqVO.java @@ -1,10 +1,14 @@ package com.jeelowcode.service.bpm.controller.vo.instance; import io.swagger.v3.oas.annotations.media.Schema; + import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; + import lombok.Data; +import java.util.Collection; + @Schema(description = "管理后台 - 流程实例抄送的创建 Request VO") @Data public class BpmProcessInstanceCopyCreateReqVO { @@ -17,4 +21,8 @@ public class BpmProcessInstanceCopyCreateReqVO { @NotBlank(message = "抄送原因不能为空") private String reason; + @Schema(description = "抄送的用户编号数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,2]") + @NotEmpty(message = "抄送用户不能为空") + private Collection options; + } diff --git a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/controller/vo/instance/BpmProcessInstanceCopyMyPageReqVO.java b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/controller/vo/instance/BpmProcessInstanceCopyMyPageReqVO.java index c6807e9..1f11f54 100644 --- a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/controller/vo/instance/BpmProcessInstanceCopyMyPageReqVO.java +++ b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/controller/vo/instance/BpmProcessInstanceCopyMyPageReqVO.java @@ -25,6 +25,6 @@ public class BpmProcessInstanceCopyMyPageReqVO extends PageParam { @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; + private LocalDateTime[] searchCreateTime; } diff --git a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/mapper/BpmProcessInstanceCopyMapper.java b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/mapper/BpmProcessInstanceCopyMapper.java index ed01a5e..5f7b984 100644 --- a/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/mapper/BpmProcessInstanceCopyMapper.java +++ b/jeelowcode-service/jeelowcode-service-bpm-biz/src/main/java/com/jeelowcode/service/bpm/mapper/BpmProcessInstanceCopyMapper.java @@ -15,7 +15,7 @@ public interface BpmProcessInstanceCopyMapper extends BaseMapperX copyList = + reqVO.getOptions().stream().map(singleUserId -> + new BpmProcessInstanceCopyDO() + .setTaskId(reqVO.getTaskId()).setTaskName(task.getName()) + .setProcessInstanceId(processInstanceId).setStartUserId(Long.valueOf(processInstance.getStartUserId())) + .setProcessInstanceName(processInstance.getName()) + .setUserId(singleUserId) + .setCategory(null) // TODO 芋艿:貌似新版本,没 processInstance.getProcessDefinitionCategory() 字段? + .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