!496 工作流工具方法优化

Merge pull request !496 from 秋辞未寒/dev
This commit is contained in:
疯狂的狮子Li 2024-03-15 05:00:16 +00:00 committed by Gitee
commit fd4c91301e
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 43 additions and 18 deletions

View File

@ -3,6 +3,9 @@ package org.dromara.workflow.common.enums;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/** /**
* 消息类型枚举 * 消息类型枚举
* *
@ -27,5 +30,22 @@ public enum MessageTypeEnum {
private final String code; private final String code;
private final String desc; private final String desc;
private final static Map<String, MessageTypeEnum> MESSAGE_TYPE_ENUM_MAP = new ConcurrentHashMap<>(MessageTypeEnum.values().length);
static {
for (MessageTypeEnum messageType : MessageTypeEnum.values()) {
MESSAGE_TYPE_ENUM_MAP.put(messageType.code, messageType);
}
}
/**
* 根据消息类型 code 获取 MessageTypeEnum
* @param code 消息类型code
* @return MessageTypeEnum
*/
public static MessageTypeEnum getByCode(String code) {
return MESSAGE_TYPE_ENUM_MAP.get(code);
}
} }

View File

@ -95,6 +95,7 @@ public class WorkflowUtils {
*/ */
public static void createCopyTask(List<Task> parentTaskList, List<Long> userIds) { public static void createCopyTask(List<Task> parentTaskList, List<Long> userIds) {
List<Task> list = new ArrayList<>(); List<Task> list = new ArrayList<>();
String tenantId = TenantHelper.getTenantId();
for (Task parentTask : parentTaskList) { for (Task parentTask : parentTaskList) {
for (Long userId : userIds) { for (Long userId : userIds) {
TaskEntity newTask = (TaskEntity) PROCESS_ENGINE.getTaskService().newTask(); TaskEntity newTask = (TaskEntity) PROCESS_ENGINE.getTaskService().newTask();
@ -104,7 +105,7 @@ public class WorkflowUtils {
newTask.setProcessDefinitionId(parentTask.getProcessDefinitionId()); newTask.setProcessDefinitionId(parentTask.getProcessDefinitionId());
newTask.setProcessInstanceId(parentTask.getProcessInstanceId()); newTask.setProcessInstanceId(parentTask.getProcessInstanceId());
newTask.setTaskDefinitionKey(parentTask.getTaskDefinitionKey()); newTask.setTaskDefinitionKey(parentTask.getTaskDefinitionKey());
newTask.setTenantId(TenantHelper.getTenantId()); newTask.setTenantId(tenantId);
list.add(newTask); list.add(newTask);
} }
} }
@ -117,7 +118,7 @@ public class WorkflowUtils {
actHiTaskinst.setProcDefId(processDefinitionId); actHiTaskinst.setProcDefId(processDefinitionId);
actHiTaskinst.setProcInstId(processInstanceId); actHiTaskinst.setProcInstId(processInstanceId);
actHiTaskinst.setScopeType(TaskStatusEnum.COPY.getStatus()); actHiTaskinst.setScopeType(TaskStatusEnum.COPY.getStatus());
actHiTaskinst.setTenantId(TenantHelper.getTenantId()); actHiTaskinst.setTenantId(tenantId);
LambdaUpdateWrapper<ActHiTaskinst> updateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<ActHiTaskinst> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(ActHiTaskinst::getId, taskIds); updateWrapper.in(ActHiTaskinst::getId, taskIds);
ACT_HI_TASKINST_MAPPER.update(actHiTaskinst, updateWrapper); ACT_HI_TASKINST_MAPPER.update(actHiTaskinst, updateWrapper);
@ -169,11 +170,10 @@ public class WorkflowUtils {
List<String> nickNames = StreamUtils.toList(sysUsers, SysUserVo::getNickName); List<String> nickNames = StreamUtils.toList(sysUsers, SysUserVo::getNickName);
participantVo.setCandidate(userIds); participantVo.setCandidate(userIds);
participantVo.setCandidateName(nickNames); participantVo.setCandidateName(nickNames);
if (StringUtils.isBlank(task.getAssignee()) && CollUtil.isNotEmpty(candidateList) && candidateList.size() > 1) { // 判断当前任务是否具有多个办理人
participantVo.setClaim(false); if (CollUtil.isNotEmpty(candidateList) && candidateList.size() > 1) {
} // 如果 assignee 存在则设置当前任务已经被认领
if (!StringUtils.isBlank(task.getAssignee()) && CollUtil.isNotEmpty(candidateList) && candidateList.size() > 1) { participantVo.setClaim(StringUtils.isNotBlank(task.getAssignee()));
participantVo.setClaim(true);
} }
} }
} }
@ -322,17 +322,22 @@ public class WorkflowUtils {
if (CollUtil.isNotEmpty(userIds)) { if (CollUtil.isNotEmpty(userIds)) {
List<SysUserVo> sysUserVoList = WORKFLOW_USER_SERVICE.getUserListByIds(new ArrayList<>(userIds)); List<SysUserVo> sysUserVoList = WORKFLOW_USER_SERVICE.getUserListByIds(new ArrayList<>(userIds));
for (String code : messageType) { for (String code : messageType) {
if (code.equals(MessageTypeEnum.SYSTEM_MESSAGE.getCode())) { MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code);
WebSocketMessageDto dto = new WebSocketMessageDto(); if (ObjectUtil.isNotEmpty(messageTypeEnum)) {
dto.setSessionKeys(new ArrayList<>(userIds)); switch (messageTypeEnum) {
dto.setMessage(message); case SYSTEM_MESSAGE:
WebSocketUtils.publishMessage(dto); WebSocketMessageDto dto = new WebSocketMessageDto();
} dto.setSessionKeys(new ArrayList<>(userIds));
if (code.equals(MessageTypeEnum.EMAIL_MESSAGE.getCode())) { dto.setMessage(message);
MailUtils.sendText(StreamUtils.join(sysUserVoList, SysUserVo::getEmail), "单据审批提醒", message); WebSocketUtils.publishMessage(dto);
} break;
if (code.equals(MessageTypeEnum.SMS_MESSAGE.getCode())) { case EMAIL_MESSAGE:
//todo 短信发送 MailUtils.sendText(StreamUtils.join(sysUserVoList, SysUserVo::getEmail), "单据审批提醒", message);
break;
case SMS_MESSAGE:
//todo 短信发送
break;
}
} }
} }
} }