【问题修复】 同一个人多个待办任务,获取待办任务,优先查询传递的 taskId

This commit is contained in:
YunaiV 2025-03-06 08:01:23 +08:00
parent 9ff56403d6
commit 40b3c49495
2 changed files with 28 additions and 14 deletions

View File

@ -35,16 +35,16 @@ public interface BpmTaskService {
PageResult<Task> getTaskTodoPage(Long userId, BpmTaskPageReqVO pageReqVO); PageResult<Task> getTaskTodoPage(Long userId, BpmTaskPageReqVO pageReqVO);
/** /**
* 获得用户待办的任务 * 获得用户待办的任务
* 1根据 id 查询待办任务 * 1. 根据 taskId 查询待办任务
* 2如果任务不存在获取指定流程下首个需要处理任务 * 2. 如果任务不存在或者已审核获取指定流程下首个需要处理任务
* *
* @param userId 用户编号 * @param userId 用户编号
* @param id 任务编号 * @param taskId 任务编号
* @param processInstanceId 流程实例编号 * @param processInstanceId 流程实例编号
* @return 待办任务 * @return 待办任务
*/ */
BpmTaskRespVO getTodoTask(Long userId, String id, String processInstanceId); BpmTaskRespVO getTodoTask(Long userId, String taskId, String processInstanceId);
/** /**
* 获得已办的流程任务分页 * 获得已办的流程任务分页

View File

@ -137,18 +137,18 @@ public class BpmTaskServiceImpl implements BpmTaskService {
} }
@Override @Override
public BpmTaskRespVO getTodoTask(Long userId, String id, String processInstanceId) { public BpmTaskRespVO getTodoTask(Long userId, String taskId, String processInstanceId) {
// 1.1 获取指定的用户待办任务 // 1.1 获取指定的用户待办任务
Task todoTask = getMyTodoTask(userId, id); Task todoTask = getMyTodoTask(userId, taskId);
// 1.2 获取不到则获取该流程实例下第一个用户的待办任务
if (todoTask == null) { if (todoTask == null) {
// 1.2 获取不到则获取该流程实例下第一个用户的待办任务 todoTask = getMyFirstTodoTask(userId, processInstanceId);
todoTask = getFirstMyTodoTask(userId, processInstanceId);
} }
if (todoTask == null) { if (todoTask == null) {
return null; return null;
} }
// 2.查询该任务的子任务 // 2. 查询该任务的子任务
List<Task> childrenTasks = getAllChildrenTaskListByParentTaskId(todoTask.getId(), CollUtil.newArrayList(todoTask)); List<Task> childrenTasks = getAllChildrenTaskListByParentTaskId(todoTask.getId(), CollUtil.newArrayList(todoTask));
// 3. 转换返回 // 3. 转换返回
@ -169,11 +169,18 @@ public class BpmTaskServiceImpl implements BpmTaskService {
.setNodeType(nodeType).setSignEnable(signEnable).setReasonRequire(reasonRequire); .setNodeType(nodeType).setSignEnable(signEnable).setReasonRequire(reasonRequire);
} }
private Task getMyTodoTask(Long userId, String id) { /**
if (StrUtil.isEmpty(id)) { * 获得用户指定 taskId 任务编号的待办未审批且可审核的任务
*
* @param userId 用户编号
* @param taskId 任务编号
* @return 任务
*/
private Task getMyTodoTask(Long userId, String taskId) {
if (StrUtil.isEmpty(taskId)) {
return null; return null;
} }
Task task = getTask(id); Task task = getTask(taskId);
if (task == null) { if (task == null) {
return null; return null;
} }
@ -183,7 +190,14 @@ public class BpmTaskServiceImpl implements BpmTaskService {
return task; return task;
} }
private Task getFirstMyTodoTask(Long userId, String processInstanceId) { /**
* 获得用户指定 processInstanceId 流程编号下的首个待办未审批且可审核的任务
*
* @param userId 用户编号
* @param processInstanceId 流程编号
* @return 任务
*/
private Task getMyFirstTodoTask(Long userId, String processInstanceId) {
if (processInstanceId == null) { if (processInstanceId == null) {
return null; return null;
} }