流程办理时校验是否是任务办理人【提交、委托、转办、终止、退回】
This commit is contained in:
parent
69e3afc770
commit
7cf9c15984
@ -159,15 +159,8 @@ public class ActTaskServiceImpl implements IActTaskService {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean completeTask(CompleteTaskBo completeTaskBo) {
|
||||
try {
|
||||
List<RoleDTO> roles = LoginHelper.getLoginUser().getRoles();
|
||||
String userId = String.valueOf(LoginHelper.getUserId());
|
||||
TaskQuery taskQuery = QueryUtils.taskQuery();
|
||||
taskQuery.taskId(completeTaskBo.getTaskId()).taskCandidateOrAssigned(userId);
|
||||
if (CollUtil.isNotEmpty(roles)) {
|
||||
List<String> groupIds = StreamUtils.toList(roles, e -> String.valueOf(e.getRoleId()));
|
||||
taskQuery.taskCandidateGroupIn(groupIds);
|
||||
}
|
||||
Task task = taskQuery.singleResult();
|
||||
Task task = WorkflowUtils.getTaskByCurrUser(completeTaskBo.getTaskId());
|
||||
if (task == null) {
|
||||
throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL);
|
||||
}
|
||||
@ -470,8 +463,8 @@ public class ActTaskServiceImpl implements IActTaskService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean delegateTask(DelegateBo delegateBo) {
|
||||
TaskQuery query = QueryUtils.taskQuery();
|
||||
TaskEntity task = (TaskEntity) query.taskId(delegateBo.getTaskId()).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())).singleResult();
|
||||
Task task = WorkflowUtils.getTaskByCurrUser(delegateBo.getTaskId());
|
||||
|
||||
if (ObjectUtil.isEmpty(task)) {
|
||||
throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL);
|
||||
}
|
||||
@ -544,7 +537,7 @@ public class ActTaskServiceImpl implements IActTaskService {
|
||||
*/
|
||||
@Override
|
||||
public boolean transferTask(TransmitBo transmitBo) {
|
||||
Task task = QueryUtils.taskQuery().taskId(transmitBo.getTaskId()).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())).singleResult();
|
||||
Task task = WorkflowUtils.getTaskByCurrUser(transmitBo.getTaskId());
|
||||
if (ObjectUtil.isEmpty(task)) {
|
||||
throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL);
|
||||
}
|
||||
@ -669,9 +662,9 @@ public class ActTaskServiceImpl implements IActTaskService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String backProcess(BackProcessBo backProcessBo) {
|
||||
TaskQuery query = QueryUtils.taskQuery();
|
||||
String userId = String.valueOf(LoginHelper.getUserId());
|
||||
Task task = query.taskId(backProcessBo.getTaskId()).taskCandidateOrAssigned(userId).singleResult();
|
||||
Task task = WorkflowUtils.getTaskByCurrUser(backProcessBo.getTaskId());
|
||||
|
||||
if (ObjectUtil.isEmpty(task)) {
|
||||
throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL);
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.dromara.common.core.domain.dto.RoleDTO;
|
||||
import org.dromara.common.core.domain.dto.UserDTO;
|
||||
import org.dromara.common.core.service.UserService;
|
||||
import org.dromara.common.core.utils.SpringUtils;
|
||||
@ -14,6 +15,7 @@ import org.dromara.common.core.utils.StreamUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.core.utils.reflect.ReflectUtils;
|
||||
import org.dromara.common.mail.utils.MailUtils;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.common.tenant.helper.TenantHelper;
|
||||
import org.dromara.common.websocket.dto.WebSocketMessageDto;
|
||||
import org.dromara.common.websocket.utils.WebSocketUtils;
|
||||
@ -38,6 +40,7 @@ import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior;
|
||||
import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior;
|
||||
import org.flowable.identitylink.api.history.HistoricIdentityLink;
|
||||
import org.flowable.task.api.Task;
|
||||
import org.flowable.task.api.TaskQuery;
|
||||
import org.flowable.task.api.history.HistoricTaskInstance;
|
||||
import org.flowable.task.service.impl.persistence.entity.TaskEntity;
|
||||
|
||||
@ -340,4 +343,23 @@ public class WorkflowUtils {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据任务id查询 当前用户的任务,检查 当前人员 是否是该 taskId 的办理人
|
||||
* @param taskId 任务id
|
||||
* @return
|
||||
*/
|
||||
public static Task getTaskByCurrUser(String taskId){
|
||||
TaskQuery taskQuery = QueryUtils.taskQuery();
|
||||
taskQuery.taskId(taskId).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId()));
|
||||
|
||||
List<RoleDTO> roles = LoginHelper.getLoginUser().getRoles();
|
||||
if (CollUtil.isNotEmpty(roles)) {
|
||||
List<String> groupIds = StreamUtils.toList(roles, e -> String.valueOf(e.getRoleId()));
|
||||
taskQuery.taskCandidateGroupIn(groupIds);
|
||||
}
|
||||
Task task = taskQuery.singleResult();
|
||||
|
||||
return task;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user