update 调整会签类型转换异常

This commit is contained in:
songgaoshuai 2024-02-05 17:49:43 +08:00
parent 6273bde2f0
commit 8fd1fa53d1
8 changed files with 42 additions and 15 deletions

View File

@ -1,5 +1,6 @@
package org.dromara.workflow.flowable.cmd; package org.dromara.workflow.flowable.cmd;
import cn.hutool.core.util.ObjectUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.flowable.common.engine.impl.interceptor.Command; import org.flowable.common.engine.impl.interceptor.Command;
import org.flowable.common.engine.impl.interceptor.CommandContext; import org.flowable.common.engine.impl.interceptor.CommandContext;
@ -51,10 +52,14 @@ public class DeleteSequenceMultiInstanceCmd implements Command<Void> {
ExecutionEntityManager executionEntityManager = CommandContextUtil.getExecutionEntityManager(); ExecutionEntityManager executionEntityManager = CommandContextUtil.getExecutionEntityManager();
ExecutionEntity entity = executionEntityManager.findById(executionId); ExecutionEntity entity = executionEntityManager.findById(executionId);
// 设置流程变量 // 设置流程变量
List<Long> userIds = (List<Long>) entity.getVariable(assigneeList); List<Long> userIds = new ArrayList<>();
List<Object> variable = (List<Object>) entity.getVariable(assigneeList);
for (Object o : variable) {
userIds.add(Long.valueOf(o.toString()));
}
List<Long> userIdList = new ArrayList<>(); List<Long> userIdList = new ArrayList<>();
userIds.forEach(e -> { userIds.forEach(e -> {
Long userId = assignees.stream().filter(id -> id.equals(e)).findFirst().orElse(null); Long userId = assignees.stream().filter(id -> ObjectUtil.equals(id, e)).findFirst().orElse(null);
if (userId == null) { if (userId == null) {
userIdList.add(e); userIdList.add(e);
} }

View File

@ -36,7 +36,6 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.zip.ZipInputStream; import java.util.zip.ZipInputStream;
@ -295,18 +294,26 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
InputStream inputStream = file.getInputStream(); InputStream inputStream = file.getInputStream();
Deployment deployment; Deployment deployment;
if (FlowConstant.ZIP.equals(suffix)) { if (FlowConstant.ZIP.equals(suffix)) {
// zip
deployment = repositoryService.createDeployment() deployment = repositoryService.createDeployment()
.tenantId(TenantHelper.getTenantId()) .tenantId(TenantHelper.getTenantId())
.addZipInputStream(new ZipInputStream(inputStream)).name(processName).key(processKey).category(categoryCode).deploy(); .addZipInputStream(new ZipInputStream(inputStream)).name(processName).key(processKey).category(categoryCode).deploy();
} else if (Arrays.asList(ResourceNameUtil.BPMN_RESOURCE_SUFFIXES).contains(filename)) { } else {
// xml bpmn String[] list = ResourceNameUtil.BPMN_RESOURCE_SUFFIXES;
boolean flag = false;
for (String str : list) {
if (filename.contains(str)) {
flag = true;
break;
}
}
if (flag) {
deployment = repositoryService.createDeployment() deployment = repositoryService.createDeployment()
.tenantId(TenantHelper.getTenantId()) .tenantId(TenantHelper.getTenantId())
.addInputStream(filename, inputStream).name(processName).key(processKey).category(categoryCode).deploy(); .addInputStream(filename, inputStream).name(processName).key(processKey).category(categoryCode).deploy();
} else { } else {
throw new ServiceException("文件类型上传错误!"); throw new ServiceException("文件类型上传错误!");
} }
}
// 更新分类 // 更新分类
ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult(); ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult();
repositoryService.setProcessDefinitionCategory(definition.getId(), categoryCode); repositoryService.setProcessDefinitionCategory(definition.getId(), categoryCode);

View File

@ -492,7 +492,13 @@ public class ActTaskServiceImpl implements IActTaskService {
*/ */
@Override @Override
public boolean addMultiInstanceExecution(AddMultiBo addMultiBo) { public boolean addMultiInstanceExecution(AddMultiBo addMultiBo) {
Task task = taskService.createTaskQuery().taskId(addMultiBo.getTaskId()).taskTenantId(TenantHelper.getTenantId()).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())).singleResult(); TaskQuery taskQuery = taskService.createTaskQuery();
taskQuery.taskId(addMultiBo.getTaskId());
taskQuery.taskTenantId(TenantHelper.getTenantId());
if (!LoginHelper.isSuperAdmin() && !LoginHelper.isTenantAdmin()) {
taskQuery.taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId()));
}
Task task = taskQuery.singleResult();
if (ObjectUtil.isEmpty(task)) { if (ObjectUtil.isEmpty(task)) {
throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL);
} }
@ -535,7 +541,13 @@ public class ActTaskServiceImpl implements IActTaskService {
*/ */
@Override @Override
public boolean deleteMultiInstanceExecution(DeleteMultiBo deleteMultiBo) { public boolean deleteMultiInstanceExecution(DeleteMultiBo deleteMultiBo) {
Task task = taskService.createTaskQuery().taskId(deleteMultiBo.getTaskId()).taskTenantId(TenantHelper.getTenantId()).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())).singleResult(); TaskQuery taskQuery = taskService.createTaskQuery();
taskQuery.taskId(deleteMultiBo.getTaskId());
taskQuery.taskTenantId(TenantHelper.getTenantId());
if (!LoginHelper.isSuperAdmin() && !LoginHelper.isTenantAdmin()) {
taskQuery.taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId()));
}
Task task = taskQuery.singleResult();
if (ObjectUtil.isEmpty(task)) { if (ObjectUtil.isEmpty(task)) {
throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL);
} }

View File

@ -99,13 +99,16 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService {
if (multiInstance == null) { if (multiInstance == null) {
return Collections.emptyList(); return Collections.emptyList();
} }
List<Long> assigneeList = null; List<Long> assigneeList = new ArrayList<>();
if (multiInstance.getType() instanceof SequentialMultiInstanceBehavior) { if (multiInstance.getType() instanceof SequentialMultiInstanceBehavior) {
assigneeList = (List<Long>) runtimeService.getVariable(task.getExecutionId(), multiInstance.getAssigneeList()); List<Object> variable = (List<Object>) runtimeService.getVariable(task.getExecutionId(), multiInstance.getAssigneeList());
for (Object o : variable) {
assigneeList.add(Long.valueOf(o.toString()));
}
} }
if (multiInstance.getType() instanceof SequentialMultiInstanceBehavior) { if (multiInstance.getType() instanceof SequentialMultiInstanceBehavior) {
List<Long> userIds = StreamUtils.filter(assigneeList, e -> !e.toString().equals(task.getAssignee())); List<Long> userIds = StreamUtils.filter(assigneeList, e -> !String.valueOf(e).equals(task.getAssignee()));
List<SysUserVo> sysUsers = null; List<SysUserVo> sysUsers = null;
if (CollectionUtil.isNotEmpty(userIds)) { if (CollectionUtil.isNotEmpty(userIds)) {
sysUsers = sysUserMapper.selectVoBatchIds(userIds); sysUsers = sysUserMapper.selectVoBatchIds(userIds);