add 添加任务,流程实例常用查询接口

This commit is contained in:
gssong 2024-12-07 12:24:25 +08:00
parent bce27cedc9
commit ed7bcec1a3
6 changed files with 180 additions and 75 deletions

View File

@ -23,7 +23,7 @@ public interface WorkflowService {
* *
* @param taskId 任务id * @param taskId 任务id
*/ */
String getBusinessStatusByTaskId(String taskId); String getBusinessStatusByTaskId(Long taskId);
/** /**
* 获取当前流程状态 * 获取当前流程状态
@ -33,38 +33,12 @@ public interface WorkflowService {
String getBusinessStatus(String businessKey); String getBusinessStatus(String businessKey);
/** /**
* 设置流程变量(全局变量) * 设置流程变量
* *
* @param taskId 任务id * @param instanceId 流程实例id
* @param variableName 变量名称 * @param variable 流程变量
* @param value 变量值
*/ */
void setVariable(String taskId, String variableName, Object value); void setVariable(Long instanceId, Map<String, Object> variable);
/**
* 设置流程变量(全局变量)
*
* @param taskId 任务id
* @param variables 流程变量
*/
void setVariables(String taskId, Map<String, Object> variables);
/**
* 设置流程变量(本地变量,非全局变量)
*
* @param taskId 任务id
* @param variableName 变量名称
* @param value 变量值
*/
void setVariableLocal(String taskId, String variableName, Object value);
/**
* 设置流程变量(本地变量,非全局变量)
*
* @param taskId 任务id
* @param variables 流程变量
*/
void setVariablesLocal(String taskId, Map<String, Object> variables);
/** /**
* 按照业务id查询流程实例id * 按照业务id查询流程实例id
@ -72,5 +46,5 @@ public interface WorkflowService {
* @param businessKey 业务id * @param businessKey 业务id
* @return 结果 * @return 结果
*/ */
String getInstanceIdByBusinessKey(String businessKey); Long getInstanceIdByBusinessKey(String businessKey);
} }

View File

@ -44,6 +44,22 @@ public interface IFlwInstanceService {
*/ */
FlowInstance instanceByBusinessId(String businessId); FlowInstance instanceByBusinessId(String businessId);
/**
* 按照实例id查询流程实例
*
* @param instanceId 实例id
* @return 结果
*/
FlowInstance instanceById(Long instanceId);
/**
* 按照实例id查询流程实例
*
* @param instanceIds 实例id
* @return 结果
*/
List<FlowInstance> instanceByIdList(List<Long> instanceIds);
/** /**
* 按照业务id删除流程实例 * 按照业务id删除流程实例
* *
@ -100,4 +116,12 @@ public interface IFlwInstanceService {
* @return 结果 * @return 结果
*/ */
Map<String, Object> getInstanceVariable(String instanceId); Map<String, Object> getInstanceVariable(String instanceId);
/**
* 设置流程变量
*
* @param instanceId 实例id
* @param variable 流程变量
*/
void setVariable(Long instanceId, Map<String, Object> variable);
} }

View File

@ -3,6 +3,8 @@ package org.dromara.workflow.service;
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.warm.flow.core.entity.HisTask; 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.warm.flow.orm.entity.FlowTask;
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;
@ -129,6 +131,22 @@ public interface IFlwTaskService {
*/ */
FlowTask selectByIdList(Long taskId); FlowTask selectByIdList(Long taskId);
/**
* 按照任务id查询任务
*
* @param taskIdList 任务id
* @return 结果
*/
List<FlowHisTask> selectHisTaskByIdList(List<Long> taskIdList);
/**
* 按照任务id查询任务
*
* @param taskId 任务id
* @return 结果
*/
FlowHisTask selectHisTaskById(Long taskId);
/** /**
* 按照实例id查询任务 * 按照实例id查询任务
* *
@ -153,4 +171,20 @@ public interface IFlwTaskService {
* @return 结果 * @return 结果
*/ */
boolean taskOperation(TaskOperationBo bo, String taskOperation); 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);
} }

View File

@ -122,6 +122,26 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
return flowInstanceMapper.selectOne(new LambdaQueryWrapper<FlowInstance>().eq(FlowInstance::getBusinessId, businessId)); return flowInstanceMapper.selectOne(new LambdaQueryWrapper<FlowInstance>().eq(FlowInstance::getBusinessId, businessId));
} }
/**
* 按照实例id查询流程实例
*
* @param instanceId 实例id
*/
@Override
public FlowInstance instanceById(Long instanceId) {
return flowInstanceMapper.selectById(instanceId);
}
/**
* 按照实例id查询流程实例
*
* @param instanceIds 实例id
*/
@Override
public List<FlowInstance> instanceByIdList(List<Long> instanceIds) {
return flowInstanceMapper.selectByIds(instanceIds);
}
/** /**
* 按照业务id删除流程实例 * 按照业务id删除流程实例
* *
@ -288,4 +308,18 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
map.put("variable", flowInstance.getVariable()); map.put("variable", flowInstance.getVariable());
return map; return map;
} }
/**
* 设置流程变量
*
* @param instanceId 实例id
* @param variable 流程变量
*/
@Override
public void setVariable(Long instanceId, Map<String, Object> variable) {
Instance instance = insService.getById(instanceId);
if (instance != null) {
taskService.mergeVariable(instance, variable);
}
}
} }

View File

@ -469,6 +469,30 @@ public class FlwTaskServiceImpl implements IFlwTaskService, AssigneeService {
.eq(FlowTask::getId, taskId)); .eq(FlowTask::getId, taskId));
} }
/**
* 按照任务id查询任务
*
* @param taskIdList 任务id
* @return 结果
*/
@Override
public List<FlowHisTask> selectHisTaskByIdList(List<Long> taskIdList) {
return flowHisTaskMapper.selectList(new LambdaQueryWrapper<>(FlowHisTask.class)
.in(FlowHisTask::getId, taskIdList));
}
/**
* 按照任务id查询任务
*
* @param taskId 任务id
* @return 结果
*/
@Override
public FlowHisTask selectHisTaskById(Long taskId) {
return flowHisTaskMapper.selectOne(new LambdaQueryWrapper<>(FlowHisTask.class)
.eq(FlowHisTask::getId, taskId));
}
/** /**
* 按照实例id查询任务 * 按照实例id查询任务
* *
@ -585,4 +609,46 @@ public class FlwTaskServiceImpl implements IFlwTaskService, AssigneeService {
} }
return true; 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();
}
} }

View File

@ -1,8 +1,11 @@
package org.dromara.workflow.service.impl; package org.dromara.workflow.service.impl;
import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.service.WorkflowService; 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.IFlwInstanceService;
import org.dromara.workflow.service.IFlwTaskService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
@ -17,7 +20,8 @@ import java.util.Map;
@Service @Service
public class WorkflowServiceImpl implements WorkflowService { public class WorkflowServiceImpl implements WorkflowService {
private final IFlwInstanceService iFlwInstanceService; private final IFlwInstanceService flwInstanceService;
private final IFlwTaskService flwTaskService;
/** /**
* 删除流程实例 * 删除流程实例
@ -27,7 +31,7 @@ public class WorkflowServiceImpl implements WorkflowService {
*/ */
@Override @Override
public boolean deleteInstance(List<Long> businessKeys) { public boolean deleteInstance(List<Long> businessKeys) {
return iFlwInstanceService.deleteByBusinessIds(businessKeys); return flwInstanceService.deleteByBusinessIds(businessKeys);
} }
/** /**
@ -36,8 +40,8 @@ public class WorkflowServiceImpl implements WorkflowService {
* @param taskId 任务id * @param taskId 任务id
*/ */
@Override @Override
public String getBusinessStatusByTaskId(String taskId) { public String getBusinessStatusByTaskId(Long taskId) {
return ""; return ObjectUtil.isNotNull(flwTaskService.selectByTaskId(taskId)) ? flwTaskService.selectByTaskId(taskId).getFlowStatus() : StringUtils.EMPTY;
} }
/** /**
@ -47,49 +51,18 @@ public class WorkflowServiceImpl implements WorkflowService {
*/ */
@Override @Override
public String getBusinessStatus(String businessKey) { public String getBusinessStatus(String businessKey) {
return ""; return ObjectUtil.isNotNull(flwInstanceService.instanceByBusinessId(businessKey)) ? flwInstanceService.instanceByBusinessId(businessKey).getFlowStatus() : StringUtils.EMPTY;
} }
/** /**
* 设置流程变量(全局变量) * 设置流程变量
* *
* @param taskId 任务id * @param instanceId 流程实例id
* @param variableName 变量名称
* @param value 变量值
*/
@Override
public void setVariable(String taskId, String variableName, Object value) {
}
/**
* 设置流程变量(全局变量)
*
* @param taskId 任务id
* @param variables 流程变量 * @param variables 流程变量
*/ */
@Override @Override
public void setVariables(String taskId, Map<String, Object> variables) { public void setVariable(Long instanceId, Map<String, Object> variables) {
} flwInstanceService.setVariable(instanceId, variables);
/**
* 设置流程变量(本地变量,非全局变量)
*
* @param taskId 任务id
* @param variableName 变量名称
* @param value 变量值
*/
@Override
public void setVariableLocal(String taskId, String variableName, Object value) {
}
/**
* 设置流程变量(本地变量,非全局变量)
*
* @param taskId 任务id
* @param variables 流程变量
*/
@Override
public void setVariablesLocal(String taskId, Map<String, Object> variables) {
} }
/** /**
@ -99,7 +72,7 @@ public class WorkflowServiceImpl implements WorkflowService {
* @return 结果 * @return 结果
*/ */
@Override @Override
public String getInstanceIdByBusinessKey(String businessKey) { public Long getInstanceIdByBusinessKey(String businessKey) {
return null; return ObjectUtil.isNotNull(flwInstanceService.instanceByBusinessId(businessKey)) ? flwInstanceService.instanceByBusinessId(businessKey).getId() : null;
} }
} }