add 添加待办人查询
This commit is contained in:
parent
6fdea13932
commit
d26772983c
@ -1,10 +1,14 @@
|
||||
package org.dromara.workflow.controller;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.warm.flow.core.dto.FlowParams;
|
||||
import com.warm.flow.core.dto.ModifyHandler;
|
||||
import com.warm.flow.core.entity.Instance;
|
||||
import com.warm.flow.core.entity.Task;
|
||||
import com.warm.flow.core.enums.CooperateType;
|
||||
import com.warm.flow.core.enums.FlowStatus;
|
||||
import com.warm.flow.core.service.InsService;
|
||||
import com.warm.flow.core.service.TaskService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
@ -40,6 +44,7 @@ public class FlwTaskController extends BaseController {
|
||||
|
||||
private final IFlwTaskService flwTaskService;
|
||||
private final TaskService taskService;
|
||||
private final InsService insService;
|
||||
|
||||
|
||||
/**
|
||||
@ -107,8 +112,16 @@ public class FlwTaskController extends BaseController {
|
||||
* @param taskId 任务id
|
||||
*/
|
||||
@GetMapping("/getTaskById/{taskId}")
|
||||
public R<Task> getTaskById(@PathVariable Long taskId) {
|
||||
return R.ok(taskService.getById(taskId));
|
||||
public R<FlowTaskVo> getTaskById(@PathVariable Long taskId) {
|
||||
Task task = taskService.getById(taskId);
|
||||
if (ObjectUtil.isNotNull(task)) {
|
||||
FlowTaskVo flowTaskVo = BeanUtil.toBean(task, FlowTaskVo.class);
|
||||
Instance instance = insService.getById(task.getInstanceId());
|
||||
flowTaskVo.setFlowStatus(instance.getFlowStatus());
|
||||
flowTaskVo.setFlowStatusName(FlowStatus.getValueByKey(instance.getFlowStatus()));
|
||||
return R.ok(flowTaskVo);
|
||||
}
|
||||
return R.fail();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2,9 +2,11 @@ package org.dromara.workflow.domain.vo;
|
||||
|
||||
import com.warm.flow.orm.entity.FlowTask;
|
||||
import lombok.Data;
|
||||
import org.dromara.common.core.domain.dto.UserDTO;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 任务视图
|
||||
@ -25,5 +27,15 @@ public class FlowTaskVo extends FlowTask implements Serializable {
|
||||
/**
|
||||
* 流程状态
|
||||
*/
|
||||
private String flowStatus;
|
||||
private Integer flowStatus;
|
||||
|
||||
/**
|
||||
* 流程状态
|
||||
*/
|
||||
private String flowStatusName;
|
||||
|
||||
/**
|
||||
* 办理人
|
||||
*/
|
||||
private List<UserDTO> userDTOList;
|
||||
}
|
||||
|
@ -1,18 +1,22 @@
|
||||
package org.dromara.workflow.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.warm.flow.core.dto.FlowParams;
|
||||
import com.warm.flow.core.entity.Instance;
|
||||
import com.warm.flow.core.entity.Task;
|
||||
import com.warm.flow.core.entity.User;
|
||||
import com.warm.flow.core.enums.SkipType;
|
||||
import com.warm.flow.core.service.InsService;
|
||||
import com.warm.flow.core.service.TaskService;
|
||||
import com.warm.flow.core.service.UserService;
|
||||
import com.warm.flow.orm.entity.FlowInstance;
|
||||
import com.warm.flow.orm.entity.FlowTask;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.StreamUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
@ -44,6 +48,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
||||
private final TaskService taskService;
|
||||
private final InsService insService;
|
||||
private final FlwTaskMapper flwTaskMapper;
|
||||
private final UserService userService;
|
||||
private final IWfDefinitionConfigService wfDefinitionConfigService;
|
||||
private final IFlwInstanceService iFlwInstanceService;
|
||||
|
||||
@ -133,6 +138,18 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
||||
QueryWrapper<FlowTaskBo> queryWrapper = getFlowTaskBoQueryWrapper(flowTaskBo);
|
||||
queryWrapper.in("t.processed_by", WorkflowUtils.permissionList());
|
||||
Page<FlowTaskVo> page = flwTaskMapper.getTaskWaitByPage(pageQuery.build(), queryWrapper);
|
||||
List<FlowTaskVo> records = page.getRecords();
|
||||
if (CollUtil.isNotEmpty(records)) {
|
||||
List<Long> taskIds = StreamUtils.toList(records, FlowTaskVo::getId);
|
||||
List<User> userList = userService.getByAssociateds(taskIds);
|
||||
for (FlowTaskVo record : records) {
|
||||
if (CollUtil.isNotEmpty(userList)) {
|
||||
List<User> users = StreamUtils.filter(userList, e -> e.getAssociated().toString().equals(record.getId().toString()));
|
||||
record.setUserList(CollUtil.isEmpty(users) ? Collections.emptyList() : users);
|
||||
record.setUserDTOList(WorkflowUtils.getHandlerUser(users));
|
||||
}
|
||||
}
|
||||
}
|
||||
return TableDataInfo.build(page);
|
||||
}
|
||||
|
||||
|
@ -2,12 +2,15 @@ package org.dromara.workflow.utils;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.warm.flow.core.entity.Task;
|
||||
import com.warm.flow.core.entity.User;
|
||||
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;
|
||||
import org.dromara.common.core.utils.StreamUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mail.utils.MailUtils;
|
||||
@ -91,4 +94,50 @@ public class WorkflowUtils {
|
||||
permissionList.add("dept:" + deptId);
|
||||
return permissionList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取办理人
|
||||
*
|
||||
* @param userList 办理用户
|
||||
* @return 用户
|
||||
*/
|
||||
public static List<UserDTO> getHandlerUser(List<User> userList) {
|
||||
List<UserDTO> userDTOList = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(userList)) {
|
||||
UserService userService = SpringUtils.getBean(UserService.class);
|
||||
List<Long> userIds = new ArrayList<>();
|
||||
List<Long> roleIds = new ArrayList<>();
|
||||
List<Long> deptIds = new ArrayList<>();
|
||||
for (User user : userList) {
|
||||
if (user.getProcessedBy().startsWith("user:")) {
|
||||
userIds.add(Long.valueOf(StringUtils.substringAfter(user.getProcessedBy(), StrUtil.C_COLON)));
|
||||
}
|
||||
if (user.getProcessedBy().startsWith("role:")) {
|
||||
roleIds.add(Long.valueOf(StringUtils.substringAfter(user.getProcessedBy(), StrUtil.C_COLON)));
|
||||
}
|
||||
if (user.getProcessedBy().startsWith("dept:")) {
|
||||
deptIds.add(Long.valueOf(StringUtils.substringAfter(user.getProcessedBy(), StrUtil.C_COLON)));
|
||||
}
|
||||
}
|
||||
if (CollUtil.isNotEmpty(userIds)) {
|
||||
List<UserDTO> users = userService.selectListByIds(userIds);
|
||||
if (CollUtil.isNotEmpty(users)) {
|
||||
userDTOList.addAll(users);
|
||||
}
|
||||
}
|
||||
if (CollUtil.isNotEmpty(roleIds)) {
|
||||
List<UserDTO> users = userService.selectUsersByRoleIds(roleIds);
|
||||
if (CollUtil.isNotEmpty(users)) {
|
||||
userDTOList.addAll(users);
|
||||
}
|
||||
}
|
||||
if (CollUtil.isNotEmpty(deptIds)) {
|
||||
List<UserDTO> users = userService.selectUsersByDeptIds(deptIds);
|
||||
if (CollUtil.isNotEmpty(users)) {
|
||||
userDTOList.addAll(users);
|
||||
}
|
||||
}
|
||||
}
|
||||
return userDTOList;
|
||||
}
|
||||
}
|
||||
|
@ -80,7 +80,7 @@
|
||||
FROM flow_task AS t
|
||||
LEFT JOIN flow_user uu ON uu.associated = t.id
|
||||
LEFT JOIN flow_definition d on t.definition_id = d.id
|
||||
LEFT JOIN flow_instance i on t.instance_id = i.id where t.node_type = 1 and i.flow_status = '1') t
|
||||
LEFT JOIN flow_instance i on t.instance_id = i.id where t.node_type = 1 and i.flow_status = '1' and t.del_flag = '0') t
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user