Compare commits
	
		
			7 Commits
		
	
	
		
			0b30837b8a
			...
			091ceb3619
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 091ceb3619 | |||
| 6ce3ba89c6 | |||
| b82ee9bbe5 | |||
| 3c01a72dad | |||
| 9ac1584494 | |||
| a0e768d210 | |||
| c49f34d228 | 
| @@ -29,7 +29,7 @@ public interface BpmProcessInstanceCopyConvert { | ||||
|         List<BpmProcessInstanceCopyPageItemRespVO> 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); | ||||
|   | ||||
| @@ -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<Long> options; | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -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; | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -15,7 +15,7 @@ public interface BpmProcessInstanceCopyMapper extends BaseMapperX<BpmProcessInst | ||||
|                 .eqIfPresent(BpmProcessInstanceCopyDO::getUserId, loginUserId) | ||||
|                 .eqIfPresent(BpmProcessInstanceCopyDO::getProcessInstanceId, reqVO.getProcessInstanceId()) | ||||
|                 .likeIfPresent(BpmProcessInstanceCopyDO::getProcessInstanceName, reqVO.getProcessInstanceName()) | ||||
|                 .betweenIfPresent(BpmProcessInstanceCopyDO::getCreateTime, reqVO.getCreateTime()) | ||||
|                 .betweenIfPresent(BpmProcessInstanceCopyDO::getCreateTime, reqVO.getSearchCreateTime()) | ||||
|                 .orderByDesc(BpmProcessInstanceCopyDO::getId)); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -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,9 +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 实现类 | ||||
| @@ -58,6 +69,9 @@ public class BpmProcessInstanceCopyServiceImpl implements IBpmProcessInstanceCop | ||||
|     @Resource | ||||
|     @Lazy | ||||
|     private IBpmProcessInstanceService bpmProcessInstanceService; | ||||
|     @Lazy | ||||
|     @Resource | ||||
|     private IApiAdminUserApi apiAdminUserApi; | ||||
|  | ||||
|     @Override | ||||
|     public boolean makeCopy(BpmCandidateSourceInfo sourceInfo) { | ||||
| @@ -124,15 +138,48 @@ public class BpmProcessInstanceCopyServiceImpl implements IBpmProcessInstanceCop | ||||
|         } | ||||
|  | ||||
|         // 2. 创建抄送流程 | ||||
|         BpmProcessInstanceCopyDO copy = new BpmProcessInstanceCopyDO() | ||||
|         List<BpmProcessInstanceCopyDO> copyList = | ||||
|                 reqVO.getOptions().stream().map(singleUserId -> | ||||
|                         new BpmProcessInstanceCopyDO() | ||||
|                                 .setTaskId(reqVO.getTaskId()).setTaskName(task.getName()) | ||||
|                 .setProcessInstanceId(processInstanceId) | ||||
|                 .setStartUserId(Long.valueOf(processInstance.getStartUserId())) | ||||
|                 .setUserId(userId) | ||||
|                                 .setProcessInstanceId(processInstanceId).setStartUserId(Long.valueOf(processInstance.getStartUserId())) | ||||
|                                 .setProcessInstanceName(processInstance.getName()) | ||||
|                                 .setUserId(singleUserId) | ||||
|                                 .setCategory(null)  // TODO 芋艿:貌似新版本,没 processInstance.getProcessDefinitionCategory() 字段? | ||||
|                 .setReason(reqVO.getReason()); | ||||
|         processInstanceCopyMapper.insert(copy); | ||||
|                                 .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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user