add 添加待办人查询
This commit is contained in:
parent
6fdea13932
commit
d26772983c
@ -1,10 +1,14 @@
|
|||||||
package org.dromara.workflow.controller;
|
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.FlowParams;
|
||||||
import com.warm.flow.core.dto.ModifyHandler;
|
import com.warm.flow.core.dto.ModifyHandler;
|
||||||
import com.warm.flow.core.entity.Instance;
|
import com.warm.flow.core.entity.Instance;
|
||||||
import com.warm.flow.core.entity.Task;
|
import com.warm.flow.core.entity.Task;
|
||||||
import com.warm.flow.core.enums.CooperateType;
|
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 com.warm.flow.core.service.TaskService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
||||||
@ -40,6 +44,7 @@ public class FlwTaskController extends BaseController {
|
|||||||
|
|
||||||
private final IFlwTaskService flwTaskService;
|
private final IFlwTaskService flwTaskService;
|
||||||
private final TaskService taskService;
|
private final TaskService taskService;
|
||||||
|
private final InsService insService;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -107,8 +112,16 @@ public class FlwTaskController extends BaseController {
|
|||||||
* @param taskId 任务id
|
* @param taskId 任务id
|
||||||
*/
|
*/
|
||||||
@GetMapping("/getTaskById/{taskId}")
|
@GetMapping("/getTaskById/{taskId}")
|
||||||
public R<Task> getTaskById(@PathVariable Long taskId) {
|
public R<FlowTaskVo> getTaskById(@PathVariable Long taskId) {
|
||||||
return R.ok(taskService.getById(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 com.warm.flow.orm.entity.FlowTask;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.dromara.common.core.domain.dto.UserDTO;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
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;
|
package org.dromara.workflow.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.warm.flow.core.dto.FlowParams;
|
import com.warm.flow.core.dto.FlowParams;
|
||||||
import com.warm.flow.core.entity.Instance;
|
import com.warm.flow.core.entity.Instance;
|
||||||
import com.warm.flow.core.entity.Task;
|
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.enums.SkipType;
|
||||||
import com.warm.flow.core.service.InsService;
|
import com.warm.flow.core.service.InsService;
|
||||||
import com.warm.flow.core.service.TaskService;
|
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.FlowInstance;
|
||||||
import com.warm.flow.orm.entity.FlowTask;
|
import com.warm.flow.orm.entity.FlowTask;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
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.core.utils.StringUtils;
|
||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
@ -44,6 +48,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|||||||
private final TaskService taskService;
|
private final TaskService taskService;
|
||||||
private final InsService insService;
|
private final InsService insService;
|
||||||
private final FlwTaskMapper flwTaskMapper;
|
private final FlwTaskMapper flwTaskMapper;
|
||||||
|
private final UserService userService;
|
||||||
private final IWfDefinitionConfigService wfDefinitionConfigService;
|
private final IWfDefinitionConfigService wfDefinitionConfigService;
|
||||||
private final IFlwInstanceService iFlwInstanceService;
|
private final IFlwInstanceService iFlwInstanceService;
|
||||||
|
|
||||||
@ -133,6 +138,18 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|||||||
QueryWrapper<FlowTaskBo> queryWrapper = getFlowTaskBoQueryWrapper(flowTaskBo);
|
QueryWrapper<FlowTaskBo> queryWrapper = getFlowTaskBoQueryWrapper(flowTaskBo);
|
||||||
queryWrapper.in("t.processed_by", WorkflowUtils.permissionList());
|
queryWrapper.in("t.processed_by", WorkflowUtils.permissionList());
|
||||||
Page<FlowTaskVo> page = flwTaskMapper.getTaskWaitByPage(pageQuery.build(), queryWrapper);
|
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);
|
return TableDataInfo.build(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,12 +2,15 @@ package org.dromara.workflow.utils;
|
|||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
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.Task;
|
||||||
|
import com.warm.flow.core.entity.User;
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.dromara.common.core.domain.dto.RoleDTO;
|
import org.dromara.common.core.domain.dto.RoleDTO;
|
||||||
import org.dromara.common.core.domain.dto.UserDTO;
|
import org.dromara.common.core.domain.dto.UserDTO;
|
||||||
import org.dromara.common.core.service.UserService;
|
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.StreamUtils;
|
||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
import org.dromara.common.mail.utils.MailUtils;
|
import org.dromara.common.mail.utils.MailUtils;
|
||||||
@ -91,4 +94,50 @@ public class WorkflowUtils {
|
|||||||
permissionList.add("dept:" + deptId);
|
permissionList.add("dept:" + deptId);
|
||||||
return permissionList;
|
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
|
FROM flow_task AS t
|
||||||
LEFT JOIN flow_user uu ON uu.associated = t.id
|
LEFT JOIN flow_user uu ON uu.associated = t.id
|
||||||
LEFT JOIN flow_definition d on t.definition_id = d.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}
|
${ew.getCustomSqlSegment}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user