update 优化 工作流抄送任务获取多次获取租户
update 优化 工作流获取当前任务参与者存在多个办理人认领逻辑 update 优化 工作流发送消息类型判断逻辑
This commit is contained in:
parent
a458c7056d
commit
581d7144d6
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
if (ObjectUtil.isNotEmpty(messageTypeEnum)) {
|
||||||
|
switch (messageTypeEnum) {
|
||||||
|
case SYSTEM_MESSAGE:
|
||||||
WebSocketMessageDto dto = new WebSocketMessageDto();
|
WebSocketMessageDto dto = new WebSocketMessageDto();
|
||||||
dto.setSessionKeys(new ArrayList<>(userIds));
|
dto.setSessionKeys(new ArrayList<>(userIds));
|
||||||
dto.setMessage(message);
|
dto.setMessage(message);
|
||||||
WebSocketUtils.publishMessage(dto);
|
WebSocketUtils.publishMessage(dto);
|
||||||
}
|
break;
|
||||||
if (code.equals(MessageTypeEnum.EMAIL_MESSAGE.getCode())) {
|
case EMAIL_MESSAGE:
|
||||||
MailUtils.sendText(StreamUtils.join(sysUserVoList, SysUserVo::getEmail), "单据审批提醒", message);
|
MailUtils.sendText(StreamUtils.join(sysUserVoList, SysUserVo::getEmail), "单据审批提醒", message);
|
||||||
}
|
break;
|
||||||
if (code.equals(MessageTypeEnum.SMS_MESSAGE.getCode())) {
|
case SMS_MESSAGE:
|
||||||
//todo 短信发送
|
//todo 短信发送
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user