update 调整驳回
This commit is contained in:
parent
7322266c8d
commit
49112f43aa
@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
import cn.hutool.core.util.ObjectUtil;
|
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.HisTask;
|
||||||
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;
|
||||||
@ -30,6 +31,7 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
|
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -265,4 +267,15 @@ public class FlwTaskController extends BaseController {
|
|||||||
return toAjax(flwTaskService.backProcess(bo));
|
return toAjax(flwTaskService.backProcess(bo));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取可驳回节点
|
||||||
|
*
|
||||||
|
* @param instanceId 实例id
|
||||||
|
*/
|
||||||
|
@GetMapping("/getBackTaskNode/{instanceId}")
|
||||||
|
public R<List<HisTask>> getBackTaskNode(@PathVariable String instanceId) {
|
||||||
|
return R.ok(flwTaskService.getBackTaskNode(instanceId));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ public class BackProcessBo implements Serializable {
|
|||||||
* 驳回的节点id(目前未使用,直接驳回到申请人)
|
* 驳回的节点id(目前未使用,直接驳回到申请人)
|
||||||
*/
|
*/
|
||||||
@NotBlank(message = "驳回的节点不能为空", groups = AddGroup.class)
|
@NotBlank(message = "驳回的节点不能为空", groups = AddGroup.class)
|
||||||
private String targetNodeCode;
|
private String nodeCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 办理意见
|
* 办理意见
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
package org.dromara.workflow.service;
|
package org.dromara.workflow.service;
|
||||||
|
|
||||||
|
import com.warm.flow.core.entity.HisTask;
|
||||||
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;
|
||||||
import org.dromara.workflow.domain.bo.*;
|
import org.dromara.workflow.domain.bo.*;
|
||||||
import org.dromara.workflow.domain.vo.FlowHisTaskVo;
|
import org.dromara.workflow.domain.vo.FlowHisTaskVo;
|
||||||
import org.dromara.workflow.domain.vo.FlowTaskVo;
|
import org.dromara.workflow.domain.vo.FlowTaskVo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -50,7 +52,6 @@ public interface IFlwTaskService {
|
|||||||
TableDataInfo<FlowHisTaskVo> getPageByTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery);
|
TableDataInfo<FlowHisTaskVo> getPageByTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询待办任务
|
* 查询待办任务
|
||||||
*
|
*
|
||||||
@ -85,4 +86,12 @@ public interface IFlwTaskService {
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
boolean backProcess(BackProcessBo bo);
|
boolean backProcess(BackProcessBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取可驳回节点
|
||||||
|
*
|
||||||
|
* @param instanceId 实例id
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
List<HisTask> getBackTaskNode(String instanceId);
|
||||||
}
|
}
|
||||||
|
@ -39,6 +39,7 @@ import org.dromara.workflow.utils.WorkflowUtils;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -85,7 +86,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
|
|||||||
@Override
|
@Override
|
||||||
public TableDataInfo<FlowInstanceVo> getPageByFinish(Instance instance, PageQuery pageQuery) {
|
public TableDataInfo<FlowInstanceVo> getPageByFinish(Instance instance, PageQuery pageQuery) {
|
||||||
QueryWrapper<FlowInstanceBo> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<FlowInstanceBo> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.eq("t.flow_status", FlowStatus.FINISHED.getKey());
|
queryWrapper.in("t.flow_status", Arrays.asList(FlowStatus.FINISHED.getKey(), FlowStatus.AUTO_PASS.getKey()));
|
||||||
Page<FlowInstanceVo> page = flwInstanceMapper.page(pageQuery.build(), queryWrapper);
|
Page<FlowInstanceVo> page = flwInstanceMapper.page(pageQuery.build(), queryWrapper);
|
||||||
TableDataInfo<FlowInstanceVo> build = TableDataInfo.build();
|
TableDataInfo<FlowInstanceVo> build = TableDataInfo.build();
|
||||||
build.setRows(BeanUtil.copyToList(page.getRecords(), FlowInstanceVo.class));
|
build.setRows(BeanUtil.copyToList(page.getRecords(), FlowInstanceVo.class));
|
||||||
@ -149,8 +150,8 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
|
|||||||
// 获取下一个节点,如果是网关节点,则重新获取后续节点
|
// 获取下一个节点,如果是网关节点,则重新获取后续节点
|
||||||
//List<Node> nextNodes = FlowFactory.taskService().getNextByCheckGateWay(new FlowParams(), getFirstBetween(startNode));
|
//List<Node> nextNodes = FlowFactory.taskService().getNextByCheckGateWay(new FlowParams(), getFirstBetween(startNode));
|
||||||
//Node node = nextNodes.get(0);
|
//Node node = nextNodes.get(0);
|
||||||
// FlowParams flowParams = FlowParams.build().nodeCode(node.getNodeCode()).skipType(SkipType.PASS.getKey()).permissionFlag(WorkflowUtils.permissionList());
|
// FlowParams flowParams = FlowParams.build().nodeCode(node.getNodeCode()).skipType(SkipType.PASS.getKey()).permissionFlag(WorkflowUtils.permissionList());
|
||||||
// taskService.skip(list.get(0).getId(), flowParams);
|
// taskService.skip(list.get(0).getId(), flowParams);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
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.HisTask;
|
||||||
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.entity.User;
|
||||||
@ -14,12 +15,15 @@ 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.core.service.UserService;
|
||||||
|
import com.warm.flow.orm.entity.FlowHisTask;
|
||||||
import com.warm.flow.orm.entity.FlowInstance;
|
import com.warm.flow.orm.entity.FlowInstance;
|
||||||
|
import com.warm.flow.orm.entity.FlowSkip;
|
||||||
import com.warm.flow.orm.entity.FlowTask;
|
import com.warm.flow.orm.entity.FlowTask;
|
||||||
|
import com.warm.flow.orm.mapper.FlowHisTaskMapper;
|
||||||
|
import com.warm.flow.orm.mapper.FlowSkipMapper;
|
||||||
import com.warm.flow.orm.mapper.FlowTaskMapper;
|
import com.warm.flow.orm.mapper.FlowTaskMapper;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.common.core.domain.dto.UserDTO;
|
|
||||||
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.StreamUtils;
|
||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
@ -37,6 +41,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static org.dromara.workflow.common.constant.FlowConstant.*;
|
import static org.dromara.workflow.common.constant.FlowConstant.*;
|
||||||
|
|
||||||
@ -56,8 +61,9 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|||||||
private final UserService userService;
|
private final UserService userService;
|
||||||
private final IWfDefinitionConfigService wfDefinitionConfigService;
|
private final IWfDefinitionConfigService wfDefinitionConfigService;
|
||||||
private final IFlwInstanceService iFlwInstanceService;
|
private final IFlwInstanceService iFlwInstanceService;
|
||||||
|
|
||||||
private final FlowTaskMapper flowTaskMapper;
|
private final FlowTaskMapper flowTaskMapper;
|
||||||
|
private final FlowHisTaskMapper flowHisTaskMapper;
|
||||||
|
private final FlowSkipMapper flowSkipMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 启动任务
|
* 启动任务
|
||||||
@ -92,7 +98,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|||||||
FlowParams flowParams = new FlowParams();
|
FlowParams flowParams = new FlowParams();
|
||||||
flowParams.flowCode(wfDefinitionConfigVo.getProcessKey());
|
flowParams.flowCode(wfDefinitionConfigVo.getProcessKey());
|
||||||
flowParams.variable(startProcessBo.getVariables());
|
flowParams.variable(startProcessBo.getVariables());
|
||||||
|
flowParams.setHandler(String.valueOf(LoginHelper.getUserId()));
|
||||||
Instance instance;
|
Instance instance;
|
||||||
try {
|
try {
|
||||||
instance = insService.start(startProcessBo.getBusinessKey(), flowParams);
|
instance = insService.start(startProcessBo.getBusinessKey(), flowParams);
|
||||||
@ -286,17 +292,52 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|||||||
try {
|
try {
|
||||||
String userId = String.valueOf(LoginHelper.getUserId());
|
String userId = String.valueOf(LoginHelper.getUserId());
|
||||||
Long taskId = bo.getTaskId();
|
Long taskId = bo.getTaskId();
|
||||||
|
List<FlowTask> flowTasks = flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class).eq(FlowTask::getId, taskId));
|
||||||
|
if (CollUtil.isEmpty(flowTasks)) {
|
||||||
|
throw new ServiceException("任务不存在!");
|
||||||
|
}
|
||||||
|
Long definitionId = flowTasks.get(0).getDefinitionId();
|
||||||
|
List<FlowSkip> flowSkips = flowSkipMapper.selectList(new LambdaQueryWrapper<>(FlowSkip.class).eq(FlowSkip::getDefinitionId, definitionId));
|
||||||
|
FlowSkip flowSkip = StreamUtils.findFirst(flowSkips, e -> NodeType.START.getKey().equals(e.getNowNodeType()));
|
||||||
|
//开始节点的下一节点
|
||||||
|
assert flowSkip != null;
|
||||||
|
String nextNodeCode = flowSkip.getNextNodeCode();
|
||||||
|
|
||||||
FlowParams flowParams = new FlowParams();
|
FlowParams flowParams = new FlowParams();
|
||||||
flowParams.variable(bo.getVariables());
|
flowParams.variable(bo.getVariables());
|
||||||
flowParams.skipType(SkipType.REJECT.getKey());
|
if (nextNodeCode.equals(bo.getNodeCode())) {
|
||||||
|
flowParams.skipType(SkipType.REJECT.getKey());
|
||||||
|
} else {
|
||||||
|
flowParams.skipType(SkipType.PASS.getKey());
|
||||||
|
}
|
||||||
flowParams.message(bo.getMessage());
|
flowParams.message(bo.getMessage());
|
||||||
flowParams.handler(userId);
|
flowParams.handler(userId);
|
||||||
flowParams.nodeCode(bo.getTargetNodeCode());
|
flowParams.nodeCode(bo.getNodeCode());
|
||||||
taskService.skip(taskId, flowParams);
|
flowParams.setPermissionFlag(WorkflowUtils.permissionList());
|
||||||
|
Instance instance = taskService.skip(taskId, flowParams);
|
||||||
|
setHandler(instance);
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
throw new ServiceException(e.getMessage());
|
throw new ServiceException(e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取可驳回节点
|
||||||
|
*
|
||||||
|
* @param instanceId 实例id
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<HisTask> getBackTaskNode(String instanceId) {
|
||||||
|
LambdaQueryWrapper<FlowHisTask> lw = new LambdaQueryWrapper<>(FlowHisTask.class)
|
||||||
|
.eq(FlowHisTask::getInstanceId, instanceId)
|
||||||
|
.eq(FlowHisTask::getNodeType, 1)
|
||||||
|
.orderByDesc(FlowHisTask::getCreateTime);
|
||||||
|
List<FlowHisTask> flowHisTasks = flowHisTaskMapper.selectList(lw);
|
||||||
|
if (CollUtil.isNotEmpty(flowHisTasks)) {
|
||||||
|
return flowHisTasks.stream().distinct().collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user