update 优化任务办理人
This commit is contained in:
parent
e46d26b54e
commit
d4466cec38
@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.dromara.common.core.domain.dto.DeptDTO;
|
import org.dromara.common.core.domain.dto.DeptDTO;
|
||||||
import org.dromara.common.core.domain.dto.TaskAssigneeDTO;
|
import org.dromara.common.core.domain.dto.TaskAssigneeDTO;
|
||||||
import org.dromara.common.core.domain.model.TaskAssigneeBody;
|
import org.dromara.common.core.domain.model.TaskAssigneeBody;
|
||||||
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
import org.dromara.common.core.service.UserService;
|
import org.dromara.common.core.service.UserService;
|
||||||
import org.dromara.common.core.utils.DateUtils;
|
import org.dromara.common.core.utils.DateUtils;
|
||||||
import org.dromara.workflow.common.enums.TaskAssigneeEnum;
|
import org.dromara.workflow.common.enums.TaskAssigneeEnum;
|
||||||
@ -48,41 +49,61 @@ public class WfTaskAssigneeServiceImpl implements HandlerSelectService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public HandlerSelectVo getHandlerSelect(HandlerQuery query) {
|
public HandlerSelectVo getHandlerSelect(HandlerQuery query) {
|
||||||
|
// 获取任务办理类型
|
||||||
TaskAssigneeEnum type = TaskAssigneeEnum.fromDesc(query.getHandlerType());
|
TaskAssigneeEnum type = TaskAssigneeEnum.fromDesc(query.getHandlerType());
|
||||||
|
// 转换查询条件为 TaskAssigneeBody
|
||||||
TaskAssigneeBody taskQuery = BeanUtil.toBean(query, TaskAssigneeBody.class);
|
TaskAssigneeBody taskQuery = BeanUtil.toBean(query, TaskAssigneeBody.class);
|
||||||
List<DeptDTO> depts = new ArrayList<>();
|
|
||||||
TaskAssigneeDTO dto = new TaskAssigneeDTO();
|
// 统一查询并构建业务数据
|
||||||
if (TaskAssigneeEnum.USER == type) {
|
TaskAssigneeDTO dto = fetchTaskAssigneeData(type, taskQuery);
|
||||||
// 处理用户相关的业务逻辑
|
List<DeptDTO> depts = fetchDeptData(type);
|
||||||
dto = userService.selectUsersByUserList(taskQuery);
|
|
||||||
depts = userService.selectUsersByDeptList();
|
return getHandlerSelectVo(buildHandlerData(dto, type), buildDeptTree(depts));
|
||||||
} else if (TaskAssigneeEnum.ROLE == type) {
|
|
||||||
// 处理角色相关的业务逻辑
|
|
||||||
dto = userService.selectUsersByRoleList(taskQuery);
|
|
||||||
} else if (TaskAssigneeEnum.DEPT == type) {
|
|
||||||
// 处理部门相关的业务逻辑
|
|
||||||
dto = userService.selectUsersByDeptList(taskQuery);
|
|
||||||
} else if (TaskAssigneeEnum.POST == type) {
|
|
||||||
// 处理岗位相关的业务逻辑
|
|
||||||
dto = userService.selectUsersByPostList(taskQuery);
|
|
||||||
depts = userService.selectUsersByDeptList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 业务系统机构,转成组件内部左侧树列表能够显示的数据
|
/**
|
||||||
TreeFunDto<DeptDTO> treeFunDto = new TreeFunDto<>(depts)
|
* 根据任务办理类型查询对应的数据
|
||||||
|
*/
|
||||||
|
private TaskAssigneeDTO fetchTaskAssigneeData(TaskAssigneeEnum type, TaskAssigneeBody taskQuery) {
|
||||||
|
return switch (type) {
|
||||||
|
case USER -> userService.selectUsersByUserList(taskQuery);
|
||||||
|
case ROLE -> userService.selectUsersByRoleList(taskQuery);
|
||||||
|
case DEPT -> userService.selectUsersByDeptList(taskQuery);
|
||||||
|
case POST -> userService.selectUsersByPostList(taskQuery);
|
||||||
|
default -> throw new ServiceException("Unsupported handler type");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据任务办理类型获取部门数据
|
||||||
|
*/
|
||||||
|
private List<DeptDTO> fetchDeptData(TaskAssigneeEnum type) {
|
||||||
|
if (type == TaskAssigneeEnum.USER || type == TaskAssigneeEnum.POST) {
|
||||||
|
return userService.selectUsersByDeptList();
|
||||||
|
}
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构建部门树状结构
|
||||||
|
*/
|
||||||
|
private TreeFunDto<DeptDTO> buildDeptTree(List<DeptDTO> depts) {
|
||||||
|
return new TreeFunDto<>(depts)
|
||||||
.setId(dept -> String.valueOf(dept.getDeptId()))
|
.setId(dept -> String.valueOf(dept.getDeptId()))
|
||||||
.setName(DeptDTO::getDeptName)
|
.setName(DeptDTO::getDeptName)
|
||||||
.setParentId(dept -> String.valueOf(dept.getParentId()));
|
.setParentId(dept -> String.valueOf(dept.getParentId()));
|
||||||
|
}
|
||||||
|
|
||||||
// 业务系统数据,转成组件内部能够显示的数据, total是业务数据总数,用于分页显示
|
/**
|
||||||
HandlerFunDto<TaskAssigneeDTO.TaskHandler> handlerFunDto = new HandlerFunDto<>(dto.getList(), dto.getTotal())
|
* 构建任务办理人数据
|
||||||
|
*/
|
||||||
|
private HandlerFunDto<TaskAssigneeDTO.TaskHandler> buildHandlerData(TaskAssigneeDTO dto, TaskAssigneeEnum type) {
|
||||||
|
return new HandlerFunDto<>(dto.getList(), dto.getTotal())
|
||||||
.setStorageId(assignee -> type.getCode() + assignee.getStorageId())
|
.setStorageId(assignee -> type.getCode() + assignee.getStorageId())
|
||||||
.setHandlerCode(TaskAssigneeDTO.TaskHandler::getHandlerCode)
|
.setHandlerCode(TaskAssigneeDTO.TaskHandler::getHandlerCode)
|
||||||
.setHandlerName(TaskAssigneeDTO.TaskHandler::getHandlerName)
|
.setHandlerName(TaskAssigneeDTO.TaskHandler::getHandlerName)
|
||||||
.setGroupName(TaskAssigneeDTO.TaskHandler::getGroupName)
|
.setGroupName(TaskAssigneeDTO.TaskHandler::getGroupName)
|
||||||
.setCreateTime(assignee -> DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, assignee.getCreateTime()));
|
.setCreateTime(assignee -> DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, assignee.getCreateTime()));
|
||||||
|
|
||||||
return getHandlerSelectVo(handlerFunDto, treeFunDto);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user