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(), |         List<BpmProcessInstanceCopyPageItemRespVO> list = BeanUtils.toBean(page.getList(), | ||||||
|                 BpmProcessInstanceCopyPageItemRespVO.class, |                 BpmProcessInstanceCopyPageItemRespVO.class, | ||||||
|                 copy -> { |                 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(userMap, copy.getStartUserId(), user -> copy.setStartUserNickname(user.getNickname())); | ||||||
|                     MapUtils.findAndThen(taskNameMap, copy.getTaskId(), copy::setTaskName); |                     MapUtils.findAndThen(taskNameMap, copy.getTaskId(), copy::setTaskName); | ||||||
|                     MapUtils.findAndThen(processInstaneNameMap, copy.getProcessInstanceId(), copy::setProcessInstanceName); |                     MapUtils.findAndThen(processInstaneNameMap, copy.getProcessInstanceId(), copy::setProcessInstanceName); | ||||||
|   | |||||||
| @@ -1,10 +1,14 @@ | |||||||
| package com.jeelowcode.service.bpm.controller.vo.instance; | package com.jeelowcode.service.bpm.controller.vo.instance; | ||||||
|  |  | ||||||
| import io.swagger.v3.oas.annotations.media.Schema; | import io.swagger.v3.oas.annotations.media.Schema; | ||||||
|  |  | ||||||
| import javax.validation.constraints.NotBlank; | import javax.validation.constraints.NotBlank; | ||||||
| import javax.validation.constraints.NotEmpty; | import javax.validation.constraints.NotEmpty; | ||||||
|  |  | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.util.Collection; | ||||||
|  |  | ||||||
| @Schema(description = "管理后台 - 流程实例抄送的创建 Request VO") | @Schema(description = "管理后台 - 流程实例抄送的创建 Request VO") | ||||||
| @Data | @Data | ||||||
| public class BpmProcessInstanceCopyCreateReqVO { | public class BpmProcessInstanceCopyCreateReqVO { | ||||||
| @@ -17,4 +21,8 @@ public class BpmProcessInstanceCopyCreateReqVO { | |||||||
|     @NotBlank(message = "抄送原因不能为空") |     @NotBlank(message = "抄送原因不能为空") | ||||||
|     private String reason; |     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 = "创建时间") |     @Schema(description = "创建时间") | ||||||
|     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |     @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::getUserId, loginUserId) | ||||||
|                 .eqIfPresent(BpmProcessInstanceCopyDO::getProcessInstanceId, reqVO.getProcessInstanceId()) |                 .eqIfPresent(BpmProcessInstanceCopyDO::getProcessInstanceId, reqVO.getProcessInstanceId()) | ||||||
|                 .likeIfPresent(BpmProcessInstanceCopyDO::getProcessInstanceName, reqVO.getProcessInstanceName()) |                 .likeIfPresent(BpmProcessInstanceCopyDO::getProcessInstanceName, reqVO.getProcessInstanceName()) | ||||||
|                 .betweenIfPresent(BpmProcessInstanceCopyDO::getCreateTime, reqVO.getCreateTime()) |                 .betweenIfPresent(BpmProcessInstanceCopyDO::getCreateTime, reqVO.getSearchCreateTime()) | ||||||
|                 .orderByDesc(BpmProcessInstanceCopyDO::getId)); |                 .orderByDesc(BpmProcessInstanceCopyDO::getId)); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -2,8 +2,15 @@ package com.jeelowcode.service.bpm.service.impl; | |||||||
|  |  | ||||||
| import cn.hutool.core.bean.BeanUtil; | import cn.hutool.core.bean.BeanUtil; | ||||||
| import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||||
|  | import cn.hutool.core.date.DateUtil; | ||||||
| import cn.hutool.core.util.ObjectUtil; | import cn.hutool.core.util.ObjectUtil; | ||||||
| import cn.hutool.core.util.StrUtil; | 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.tool.framework.common.pojo.PageResult; | ||||||
| import com.jeelowcode.service.bpm.controller.vo.instance.BpmProcessInstanceCopyCreateReqVO; | import com.jeelowcode.service.bpm.controller.vo.instance.BpmProcessInstanceCopyCreateReqVO; | ||||||
| import com.jeelowcode.service.bpm.controller.vo.instance.BpmProcessInstanceCopyMyPageReqVO; | 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.IBpmProcessInstanceService; | ||||||
| import com.jeelowcode.service.bpm.service.IBpmTaskService; | import com.jeelowcode.service.bpm.service.IBpmTaskService; | ||||||
| import com.jeelowcode.service.bpm.dto.BpmDelegateExecutionDTO; | import com.jeelowcode.service.bpm.dto.BpmDelegateExecutionDTO; | ||||||
|  | import com.jeelowcode.tool.framework.common.util.object.ObjectUtils; | ||||||
| import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||||
| import org.flowable.engine.RuntimeService; | import org.flowable.engine.RuntimeService; | ||||||
| import org.flowable.engine.delegate.DelegateExecution; | import org.flowable.engine.delegate.DelegateExecution; | ||||||
| @@ -29,9 +37,12 @@ import javax.annotation.Resource; | |||||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  | import java.util.Objects; | ||||||
| import java.util.Set; | 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.exception.util.ServiceExceptionUtil.exception; | ||||||
|  | import static com.jeelowcode.tool.framework.common.util.json.JsonUtils.toJsonString; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 流程抄送 Service 实现类 |  * 流程抄送 Service 实现类 | ||||||
| @@ -58,6 +69,9 @@ public class BpmProcessInstanceCopyServiceImpl implements IBpmProcessInstanceCop | |||||||
|     @Resource |     @Resource | ||||||
|     @Lazy |     @Lazy | ||||||
|     private IBpmProcessInstanceService bpmProcessInstanceService; |     private IBpmProcessInstanceService bpmProcessInstanceService; | ||||||
|  |     @Lazy | ||||||
|  |     @Resource | ||||||
|  |     private IApiAdminUserApi apiAdminUserApi; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public boolean makeCopy(BpmCandidateSourceInfo sourceInfo) { |     public boolean makeCopy(BpmCandidateSourceInfo sourceInfo) { | ||||||
| @@ -124,15 +138,48 @@ public class BpmProcessInstanceCopyServiceImpl implements IBpmProcessInstanceCop | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         // 2. 创建抄送流程 |         // 2. 创建抄送流程 | ||||||
|         BpmProcessInstanceCopyDO copy = new BpmProcessInstanceCopyDO() |         List<BpmProcessInstanceCopyDO> copyList = | ||||||
|                 .setTaskId(reqVO.getTaskId()).setTaskName(task.getName()) |                 reqVO.getOptions().stream().map(singleUserId -> | ||||||
|                 .setProcessInstanceId(processInstanceId) |                         new BpmProcessInstanceCopyDO() | ||||||
|                 .setStartUserId(Long.valueOf(processInstance.getStartUserId())) |                                 .setTaskId(reqVO.getTaskId()).setTaskName(task.getName()) | ||||||
|                 .setUserId(userId) |                                 .setProcessInstanceId(processInstanceId).setStartUserId(Long.valueOf(processInstance.getStartUserId())) | ||||||
|                 .setProcessInstanceName(processInstance.getName()) |                                 .setProcessInstanceName(processInstance.getName()) | ||||||
|                 .setCategory(null)  // TODO 芋艿:貌似新版本,没 processInstance.getProcessDefinitionCategory() 字段? |                                 .setUserId(singleUserId) | ||||||
|                 .setReason(reqVO.getReason()); |                                 .setCategory(null)  // TODO 芋艿:貌似新版本,没 processInstance.getProcessDefinitionCategory() 字段? | ||||||
|         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 |     @Override | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user