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

View File

@ -44,6 +44,22 @@ public interface IFlwInstanceService {
*/
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删除流程实例
*
@ -100,4 +116,12 @@ public interface IFlwInstanceService {
* @return 结果
*/
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.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,6 +131,22 @@ public interface IFlwTaskService {
*/
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查询任务
*
@ -153,4 +171,20 @@ 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);
}

View File

@ -122,6 +122,26 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
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删除流程实例
*
@ -288,4 +308,18 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
map.put("variable", flowInstance.getVariable());
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));
}
/**
* 按照任务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查询任务
*
@ -585,4 +609,46 @@ 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();
}
}

View File

@ -1,8 +1,11 @@
package org.dromara.workflow.service.impl;
import cn.hutool.core.util.ObjectUtil;
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;
@ -17,7 +20,8 @@ import java.util.Map;
@Service
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
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
*/
@Override
public String getBusinessStatusByTaskId(String taskId) {
return "";
public String getBusinessStatusByTaskId(Long taskId) {
return ObjectUtil.isNotNull(flwTaskService.selectByTaskId(taskId)) ? flwTaskService.selectByTaskId(taskId).getFlowStatus() : StringUtils.EMPTY;
}
/**
@ -47,49 +51,18 @@ public class WorkflowServiceImpl implements WorkflowService {
*/
@Override
public String getBusinessStatus(String businessKey) {
return "";
return ObjectUtil.isNotNull(flwInstanceService.instanceByBusinessId(businessKey)) ? flwInstanceService.instanceByBusinessId(businessKey).getFlowStatus() : StringUtils.EMPTY;
}
/**
* 设置流程变量(全局变量)
* 设置流程变量
*
* @param taskId 任务id
* @param variableName 变量名称
* @param value 变量值
* @param instanceId 流程实例id
* @param variables 流程变量
*/
@Override
public void setVariable(String taskId, String variableName, Object value) {
}
/**
* 设置流程变量(全局变量)
*
* @param taskId 任务id
* @param variables 流程变量
*/
@Override
public void setVariables(String taskId, Map<String, Object> 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) {
public void setVariable(Long instanceId, Map<String, Object> variables) {
flwInstanceService.setVariable(instanceId, variables);
}
/**
@ -99,7 +72,7 @@ public class WorkflowServiceImpl implements WorkflowService {
* @return 结果
*/
@Override
public String getInstanceIdByBusinessKey(String businessKey) {
return null;
public Long getInstanceIdByBusinessKey(String businessKey) {
return ObjectUtil.isNotNull(flwInstanceService.instanceByBusinessId(businessKey)) ? flwInstanceService.instanceByBusinessId(businessKey).getId() : null;
}
}