update 调整任务,实例查询
This commit is contained in:
parent
b60e3fba27
commit
e3825e928f
@ -131,15 +131,7 @@ public class FlwTaskController extends BaseController {
|
||||
*/
|
||||
@GetMapping("/getTaskById/{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(BusinessStatusEnum.findByStatus(instance.getFlowStatus()));
|
||||
return R.ok(flowTaskVo);
|
||||
}
|
||||
return R.fail();
|
||||
return R.ok(flwTaskService.selectById(taskId));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -116,6 +116,7 @@ public class FlowTaskVo implements Serializable {
|
||||
/**
|
||||
* 流程状态
|
||||
*/
|
||||
@Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "flowStatus",other = "wf_business_status")
|
||||
private String flowStatusName;
|
||||
|
||||
/**
|
||||
|
@ -42,7 +42,7 @@ public interface IFlwInstanceService {
|
||||
* @param businessId 业务id
|
||||
* @return 结果
|
||||
*/
|
||||
FlowInstance instanceByBusinessId(String businessId);
|
||||
FlowInstance selectInstByBusinessId(String businessId);
|
||||
|
||||
/**
|
||||
* 按照实例id查询流程实例
|
||||
@ -50,7 +50,7 @@ public interface IFlwInstanceService {
|
||||
* @param instanceId 实例id
|
||||
* @return 结果
|
||||
*/
|
||||
FlowInstance instanceById(Long instanceId);
|
||||
FlowInstance selectInstById(Long instanceId);
|
||||
|
||||
/**
|
||||
* 按照实例id查询流程实例
|
||||
@ -58,7 +58,7 @@ public interface IFlwInstanceService {
|
||||
* @param instanceIds 实例id
|
||||
* @return 结果
|
||||
*/
|
||||
List<FlowInstance> instanceByIdList(List<Long> instanceIds);
|
||||
List<FlowInstance> selectInstListByIdList(List<Long> instanceIds);
|
||||
|
||||
/**
|
||||
* 按照业务id删除流程实例
|
||||
@ -124,4 +124,20 @@ public interface IFlwInstanceService {
|
||||
* @param variable 流程变量
|
||||
*/
|
||||
void setVariable(Long instanceId, Map<String, Object> variable);
|
||||
|
||||
/**
|
||||
* 按任务id查询实例
|
||||
*
|
||||
* @param taskId 任务id
|
||||
* @return 结果
|
||||
*/
|
||||
FlowInstance selectByTaskId(Long taskId);
|
||||
|
||||
/**
|
||||
* 按任务id查询实例
|
||||
*
|
||||
* @param taskIdList 任务id
|
||||
* @return 结果
|
||||
*/
|
||||
List<FlowInstance> selectByTaskIdList(List<Long> taskIdList);
|
||||
}
|
||||
|
@ -4,7 +4,6 @@ import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.warm.flow.core.entity.HisTask;
|
||||
import org.dromara.warm.flow.orm.entity.FlowHisTask;
|
||||
import org.dromara.warm.flow.orm.entity.FlowInstance;
|
||||
import org.dromara.warm.flow.orm.entity.FlowTask;
|
||||
import org.dromara.workflow.domain.bo.*;
|
||||
import org.dromara.workflow.domain.vo.FlowHisTaskVo;
|
||||
@ -129,7 +128,7 @@ public interface IFlwTaskService {
|
||||
* @param taskId 任务id
|
||||
* @return 结果
|
||||
*/
|
||||
FlowTask selectByIdList(Long taskId);
|
||||
FlowTaskVo selectById(Long taskId);
|
||||
|
||||
/**
|
||||
* 按照任务id查询任务
|
||||
@ -171,20 +170,4 @@ public interface IFlwTaskService {
|
||||
* @return 结果
|
||||
*/
|
||||
boolean taskOperation(TaskOperationBo bo, String taskOperation);
|
||||
|
||||
/**
|
||||
* 按任务id查询实例
|
||||
*
|
||||
* @param taskId 任务id
|
||||
* @return 结果
|
||||
*/
|
||||
FlowInstance selectByTaskId(Long taskId);
|
||||
|
||||
/**
|
||||
* 按任务id查询实例
|
||||
*
|
||||
* @param taskIdList 任务id
|
||||
* @return 结果
|
||||
*/
|
||||
List<FlowInstance> selectByTaskIdList(List<Long> taskIdList);
|
||||
}
|
||||
|
@ -11,7 +11,6 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.enums.BusinessStatusEnum;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.DateUtils;
|
||||
import org.dromara.common.core.utils.StreamUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
@ -24,7 +23,6 @@ import org.dromara.warm.flow.core.entity.Definition;
|
||||
import org.dromara.warm.flow.core.entity.Instance;
|
||||
import org.dromara.warm.flow.core.entity.Node;
|
||||
import org.dromara.warm.flow.core.entity.Task;
|
||||
import org.dromara.warm.flow.core.enums.CooperateType;
|
||||
import org.dromara.warm.flow.core.enums.FlowStatus;
|
||||
import org.dromara.warm.flow.core.enums.NodeType;
|
||||
import org.dromara.warm.flow.core.enums.SkipType;
|
||||
@ -33,10 +31,7 @@ import org.dromara.warm.flow.core.service.InsService;
|
||||
import org.dromara.warm.flow.core.service.NodeService;
|
||||
import org.dromara.warm.flow.core.service.TaskService;
|
||||
import org.dromara.warm.flow.core.utils.AssertUtil;
|
||||
import org.dromara.warm.flow.orm.entity.FlowDefinition;
|
||||
import org.dromara.warm.flow.orm.entity.FlowHisTask;
|
||||
import org.dromara.warm.flow.orm.entity.FlowInstance;
|
||||
import org.dromara.warm.flow.orm.entity.FlowNode;
|
||||
import org.dromara.warm.flow.orm.entity.*;
|
||||
import org.dromara.warm.flow.orm.mapper.FlowDefinitionMapper;
|
||||
import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper;
|
||||
import org.dromara.warm.flow.orm.mapper.FlowInstanceMapper;
|
||||
@ -49,14 +44,12 @@ import org.dromara.workflow.domain.vo.FlowInstanceVo;
|
||||
import org.dromara.workflow.domain.vo.VariableVo;
|
||||
import org.dromara.workflow.mapper.FlwInstanceMapper;
|
||||
import org.dromara.workflow.service.IFlwInstanceService;
|
||||
import org.dromara.workflow.service.IFlwTaskService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 流程实例 服务层实现
|
||||
@ -77,6 +70,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
|
||||
private final TaskService taskService;
|
||||
private final FlowNodeMapper flowNodeMapper;
|
||||
private final NodeService nodeService;
|
||||
private final IFlwTaskService flwTaskService;
|
||||
|
||||
/**
|
||||
* 分页查询正在运行的流程实例
|
||||
@ -118,7 +112,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
|
||||
* @param businessId 业务id
|
||||
*/
|
||||
@Override
|
||||
public FlowInstance instanceByBusinessId(String businessId) {
|
||||
public FlowInstance selectInstByBusinessId(String businessId) {
|
||||
return flowInstanceMapper.selectOne(new LambdaQueryWrapper<FlowInstance>().eq(FlowInstance::getBusinessId, businessId));
|
||||
}
|
||||
|
||||
@ -128,7 +122,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
|
||||
* @param instanceId 实例id
|
||||
*/
|
||||
@Override
|
||||
public FlowInstance instanceById(Long instanceId) {
|
||||
public FlowInstance selectInstById(Long instanceId) {
|
||||
return flowInstanceMapper.selectById(instanceId);
|
||||
}
|
||||
|
||||
@ -138,7 +132,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
|
||||
* @param instanceIds 实例id
|
||||
*/
|
||||
@Override
|
||||
public List<FlowInstance> instanceByIdList(List<Long> instanceIds) {
|
||||
public List<FlowInstance> selectInstListByIdList(List<Long> instanceIds) {
|
||||
return flowInstanceMapper.selectByIds(instanceIds);
|
||||
}
|
||||
|
||||
@ -177,7 +171,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean cancelProcessApply(FlowCancelBo bo) {
|
||||
try {
|
||||
Instance instance = instanceByBusinessId(bo.getBusinessId());
|
||||
Instance instance = selectInstByBusinessId(bo.getBusinessId());
|
||||
if (instance == null) {
|
||||
throw new ServiceException(ExceptionCons.NOT_FOUNT_INSTANCE);
|
||||
}
|
||||
@ -254,7 +248,10 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
|
||||
@Override
|
||||
public Map<String, Object> getFlowImage(String businessId) {
|
||||
Map<String, Object> map = new HashMap<>(16);
|
||||
FlowInstance flowInstance = instanceByBusinessId(businessId);
|
||||
FlowInstance flowInstance = selectInstByBusinessId(businessId);
|
||||
if (flowInstance == null) {
|
||||
throw new ServiceException(ExceptionCons.NOT_FOUNT_INSTANCE);
|
||||
}
|
||||
LambdaQueryWrapper<FlowHisTask> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(FlowHisTask::getInstanceId, flowInstance.getId());
|
||||
wrapper.eq(FlowHisTask::getNodeType, NodeType.BETWEEN.getKey());
|
||||
@ -322,4 +319,48 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
|
||||
taskService.mergeVariable(instance, variable);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 按任务id查询实例
|
||||
*
|
||||
* @param taskId 任务id
|
||||
*/
|
||||
@Override
|
||||
public FlowInstance selectByTaskId(Long taskId) {
|
||||
Task task = taskService.getById(taskId);
|
||||
if (task == null) {
|
||||
FlowHisTask flowHisTask = flwTaskService.selectHisTaskById(taskId);
|
||||
if (flowHisTask != null) {
|
||||
return selectInstById(flowHisTask.getInstanceId());
|
||||
}
|
||||
} else {
|
||||
return selectInstById(task.getInstanceId());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 按任务id查询实例
|
||||
*
|
||||
* @param taskIdList 任务id
|
||||
*/
|
||||
@Override
|
||||
public List<FlowInstance> selectByTaskIdList(List<Long> taskIdList) {
|
||||
if (CollUtil.isEmpty(taskIdList)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
Set<Long> instanceIds = new HashSet<>();
|
||||
List<FlowTask> flowTaskList = flwTaskService.selectByIdList(taskIdList);
|
||||
for (FlowTask flowTask : flowTaskList) {
|
||||
instanceIds.add(flowTask.getInstanceId());
|
||||
}
|
||||
List<FlowHisTask> flowHisTaskList = flwTaskService.selectHisTaskByIdList(taskIdList);
|
||||
for (FlowHisTask flowHisTask : flowHisTaskList) {
|
||||
instanceIds.add(flowHisTask.getInstanceId());
|
||||
}
|
||||
if (!instanceIds.isEmpty()) {
|
||||
return selectInstListByIdList(new ArrayList<>(instanceIds));
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package org.dromara.workflow.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@ -29,6 +30,7 @@ import org.dromara.warm.flow.core.enums.UserType;
|
||||
import org.dromara.warm.flow.core.service.*;
|
||||
import org.dromara.warm.flow.orm.entity.*;
|
||||
import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper;
|
||||
import org.dromara.warm.flow.orm.mapper.FlowInstanceMapper;
|
||||
import org.dromara.warm.flow.orm.mapper.FlowSkipMapper;
|
||||
import org.dromara.warm.flow.orm.mapper.FlowTaskMapper;
|
||||
import org.dromara.workflow.common.enums.TaskAssigneeType;
|
||||
@ -41,7 +43,6 @@ import org.dromara.workflow.domain.vo.WfDefinitionConfigVo;
|
||||
import org.dromara.workflow.handler.FlowProcessEventHandler;
|
||||
import org.dromara.workflow.handler.WorkflowPermissionHandler;
|
||||
import org.dromara.workflow.mapper.FlwTaskMapper;
|
||||
import org.dromara.workflow.service.IFlwInstanceService;
|
||||
import org.dromara.workflow.service.IFlwTaskService;
|
||||
import org.dromara.workflow.service.IWfDefinitionConfigService;
|
||||
import org.dromara.workflow.utils.WorkflowUtils;
|
||||
@ -65,10 +66,10 @@ public class FlwTaskServiceImpl implements IFlwTaskService, AssigneeService {
|
||||
|
||||
private final TaskService taskService;
|
||||
private final InsService insService;
|
||||
private final FlowInstanceMapper flowInstanceMapper;
|
||||
private final FlwTaskMapper flwTaskMapper;
|
||||
private final UserService userService;
|
||||
private final IWfDefinitionConfigService wfDefinitionConfigService;
|
||||
private final IFlwInstanceService iFlwInstanceService;
|
||||
private final FlowTaskMapper flowTaskMapper;
|
||||
private final FlowHisTaskMapper flowHisTaskMapper;
|
||||
private final FlowSkipMapper flowSkipMapper;
|
||||
@ -105,7 +106,8 @@ public class FlwTaskServiceImpl implements IFlwTaskService, AssigneeService {
|
||||
log.error("流程定义ID【{}】不存在!", definitionId);
|
||||
throw new ServiceException("请到流程定义ID【" + definitionId + "】不存在!");
|
||||
}
|
||||
FlowInstance flowInstance = iFlwInstanceService.instanceByBusinessId(businessKey);
|
||||
FlowInstance flowInstance = flowInstanceMapper.selectOne(new LambdaQueryWrapper<>(FlowInstance.class)
|
||||
.eq(FlowInstance::getBusinessId, businessKey));
|
||||
if (flowInstance != null) {
|
||||
List<Task> taskList = taskService.list(new FlowTask().setInstanceId(flowInstance.getId()));
|
||||
return Map.of(PROCESS_INSTANCE_ID, taskList.get(0).getInstanceId(), TASK_ID, taskList.get(0).getId());
|
||||
@ -163,8 +165,6 @@ public class FlwTaskServiceImpl implements IFlwTaskService, AssigneeService {
|
||||
flowParams.flowStatus(BusinessStatusEnum.WAITING.getStatus()).hisStatus(TaskStatusEnum.PASS.getStatus());
|
||||
// 执行任务跳转,并根据返回的处理人设置下一步处理人
|
||||
setHandler(taskService.skip(taskId, flowParams), flowTask, wfCopyList);
|
||||
// 更新实例状态为待审核状态
|
||||
iFlwInstanceService.updateStatus(ins.getId(), BusinessStatusEnum.WAITING.getStatus());
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
@ -464,9 +464,15 @@ public class FlwTaskServiceImpl implements IFlwTaskService, AssigneeService {
|
||||
* @param taskId 任务id
|
||||
*/
|
||||
@Override
|
||||
public FlowTask selectByIdList(Long taskId) {
|
||||
return flowTaskMapper.selectOne(new LambdaQueryWrapper<>(FlowTask.class)
|
||||
.eq(FlowTask::getId, taskId));
|
||||
public FlowTaskVo selectById(Long taskId) {
|
||||
Task task = taskService.getById(taskId);
|
||||
if (task == null) {
|
||||
return null;
|
||||
}
|
||||
FlowTaskVo flowTaskVo = BeanUtil.toBean(task, FlowTaskVo.class);
|
||||
Instance instance = insService.getById(task.getInstanceId());
|
||||
flowTaskVo.setFlowStatus(instance.getFlowStatus());
|
||||
return flowTaskVo;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -609,46 +615,4 @@ public class FlwTaskServiceImpl implements IFlwTaskService, AssigneeService {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 按任务id查询实例
|
||||
*
|
||||
* @param taskId 任务id
|
||||
*/
|
||||
@Override
|
||||
public FlowInstance selectByTaskId(Long taskId) {
|
||||
FlowTask flowTask = selectByIdList(taskId);
|
||||
if (flowTask == null) {
|
||||
FlowHisTask flowHisTask = selectHisTaskById(taskId);
|
||||
if (flowHisTask != null) {
|
||||
return iFlwInstanceService.instanceById(flowHisTask.getInstanceId());
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 按任务id查询实例
|
||||
*
|
||||
* @param taskIdList 任务id
|
||||
*/
|
||||
@Override
|
||||
public List<FlowInstance> selectByTaskIdList(List<Long> taskIdList) {
|
||||
if (CollUtil.isEmpty(taskIdList)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
Set<Long> instanceIds = new HashSet<>();
|
||||
List<FlowTask> flowTaskList = selectByIdList(taskIdList);
|
||||
for (FlowTask flowTask : flowTaskList) {
|
||||
instanceIds.add(flowTask.getInstanceId());
|
||||
}
|
||||
List<FlowHisTask> flowHisTaskList = selectHisTaskByIdList(taskIdList);
|
||||
for (FlowHisTask flowHisTask : flowHisTaskList) {
|
||||
instanceIds.add(flowHisTask.getInstanceId());
|
||||
}
|
||||
if (!instanceIds.isEmpty()) {
|
||||
return iFlwInstanceService.instanceByIdList(new ArrayList<>(instanceIds));
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,6 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.service.WorkflowService;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.workflow.service.IFlwInstanceService;
|
||||
import org.dromara.workflow.service.IFlwTaskService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
@ -21,7 +20,6 @@ import java.util.Map;
|
||||
public class WorkflowServiceImpl implements WorkflowService {
|
||||
|
||||
private final IFlwInstanceService flwInstanceService;
|
||||
private final IFlwTaskService flwTaskService;
|
||||
|
||||
/**
|
||||
* 删除流程实例
|
||||
@ -41,7 +39,7 @@ public class WorkflowServiceImpl implements WorkflowService {
|
||||
*/
|
||||
@Override
|
||||
public String getBusinessStatusByTaskId(Long taskId) {
|
||||
return ObjectUtil.isNotNull(flwTaskService.selectByTaskId(taskId)) ? flwTaskService.selectByTaskId(taskId).getFlowStatus() : StringUtils.EMPTY;
|
||||
return ObjectUtil.isNotNull(flwInstanceService.selectByTaskId(taskId)) ? flwInstanceService.selectByTaskId(taskId).getFlowStatus() : StringUtils.EMPTY;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -51,7 +49,7 @@ public class WorkflowServiceImpl implements WorkflowService {
|
||||
*/
|
||||
@Override
|
||||
public String getBusinessStatus(String businessKey) {
|
||||
return ObjectUtil.isNotNull(flwInstanceService.instanceByBusinessId(businessKey)) ? flwInstanceService.instanceByBusinessId(businessKey).getFlowStatus() : StringUtils.EMPTY;
|
||||
return ObjectUtil.isNotNull(flwInstanceService.selectInstByBusinessId(businessKey)) ? flwInstanceService.selectInstByBusinessId(businessKey).getFlowStatus() : StringUtils.EMPTY;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -73,6 +71,6 @@ public class WorkflowServiceImpl implements WorkflowService {
|
||||
*/
|
||||
@Override
|
||||
public Long getInstanceIdByBusinessKey(String businessKey) {
|
||||
return ObjectUtil.isNotNull(flwInstanceService.instanceByBusinessId(businessKey)) ? flwInstanceService.instanceByBusinessId(businessKey).getId() : null;
|
||||
return ObjectUtil.isNotNull(flwInstanceService.selectInstByBusinessId(businessKey)) ? flwInstanceService.selectInstByBusinessId(businessKey).getId() : null;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user