update 调整任务驳回后设置审批人

This commit is contained in:
gssong 2023-07-09 12:46:27 +08:00
parent 7847a80bc2
commit cfc29bfd45
3 changed files with 32 additions and 1 deletions

View File

@ -13,6 +13,7 @@ import org.dromara.common.web.core.BaseController;
import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.bo.*;
import org.dromara.workflow.domain.vo.TaskVo; import org.dromara.workflow.domain.vo.TaskVo;
import org.dromara.workflow.service.IActTaskService; import org.dromara.workflow.service.IActTaskService;
import org.dromara.workflow.utils.WorkflowUtils;
import org.flowable.engine.TaskService; import org.flowable.engine.TaskService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -200,4 +201,15 @@ public class ActTaskController extends BaseController {
return R.ok(iActTaskService.backProcess(backProcessBo)); return R.ok(iActTaskService.backProcess(backProcessBo));
} }
/**
* 获取流程状态
*
* @param taskId 任务id
*/
@GetMapping("/getBusinessStatus/{taskId}")
public R<String> getBusinessStatus(@PathVariable String taskId) {
return R.ok("操作成功", WorkflowUtils.getBusinessStatus(taskId));
}
} }

View File

@ -529,6 +529,7 @@ public class ActTaskServiceImpl implements IActTaskService {
* @param backProcessBo 参数 * @param backProcessBo 参数
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public String backProcess(BackProcessBo backProcessBo) { public String backProcess(BackProcessBo backProcessBo) {
Task task = taskService.createTaskQuery().taskId(backProcessBo.getTaskId()).taskTenantId(TenantHelper.getTenantId()) Task task = taskService.createTaskQuery().taskId(backProcessBo.getTaskId()).taskTenantId(TenantHelper.getTenantId())
.taskAssignee(String.valueOf(LoginHelper.getUserId())).singleResult(); .taskAssignee(String.valueOf(LoginHelper.getUserId())).singleResult();
@ -548,6 +549,7 @@ public class ActTaskServiceImpl implements IActTaskService {
//申请人节点 //申请人节点
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().finished().orderByHistoricTaskInstanceEndTime().asc().list().get(0); HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().finished().orderByHistoricTaskInstanceEndTime().asc().list().get(0);
String backTaskDefinitionKey = historicTaskInstance.getTaskDefinitionKey(); String backTaskDefinitionKey = historicTaskInstance.getTaskDefinitionKey();
taskService.addComment(task.getId(), processInstanceId, StringUtils.isNotBlank(backProcessBo.getMessage()) ? backProcessBo.getMessage() : "退回");
if (taskList.size() > 1) { if (taskList.size() > 1) {
//当前多个任务驳回到单个节点 //当前多个任务驳回到单个节点
runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId) runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId)
@ -559,7 +561,10 @@ public class ActTaskServiceImpl implements IActTaskService {
.moveActivityIdTo(task.getTaskDefinitionKey(), backTaskDefinitionKey) .moveActivityIdTo(task.getTaskDefinitionKey(), backTaskDefinitionKey)
.changeState(); .changeState();
} }
taskService.setAssignee(task.getId(), historicTaskInstance.getAssignee()); List<Task> list = taskService.createTaskQuery().processInstanceId(processInstanceId).taskTenantId(TenantHelper.getTenantId()).list();
for (Task t : list) {
taskService.setAssignee(t.getId(), historicTaskInstance.getAssignee());
}
runtimeService.updateBusinessStatus(processInstanceId, BusinessStatusEnum.BACK.getStatus()); runtimeService.updateBusinessStatus(processInstanceId, BusinessStatusEnum.BACK.getStatus());
} catch (Exception e) { } catch (Exception e) {
throw new ServiceException(e.getMessage()); throw new ServiceException(e.getMessage());

View File

@ -25,10 +25,12 @@ import org.flowable.bpmn.model.*;
import org.flowable.common.engine.api.delegate.Expression; import org.flowable.common.engine.api.delegate.Expression;
import org.flowable.editor.language.json.converter.BpmnJsonConverter; import org.flowable.editor.language.json.converter.BpmnJsonConverter;
import org.flowable.engine.ProcessEngine; import org.flowable.engine.ProcessEngine;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior; import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior;
import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior; import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior;
import org.flowable.identitylink.api.history.HistoricIdentityLink; import org.flowable.identitylink.api.history.HistoricIdentityLink;
import org.flowable.task.api.Task; import org.flowable.task.api.Task;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.flowable.task.service.impl.persistence.entity.TaskEntity; import org.flowable.task.service.impl.persistence.entity.TaskEntity;
import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLInputFactory;
@ -260,4 +262,16 @@ public class WorkflowUtils {
} }
return null; return null;
} }
/**
* 获取当前流程状态
*
* @param taskId 任务id
*/
public static String getBusinessStatus(String taskId) {
HistoricTaskInstance historicTaskInstance = PROCESS_ENGINE.getHistoryService().createHistoricTaskInstanceQuery().taskId(taskId).taskTenantId(TenantHelper.getTenantId()).singleResult();
HistoricProcessInstance historicProcessInstance = PROCESS_ENGINE.getHistoryService().createHistoricProcessInstanceQuery()
.processInstanceId(historicTaskInstance.getProcessInstanceId()).processInstanceTenantId(TenantHelper.getTenantId()).singleResult();
return historicProcessInstance.getBusinessStatus();
}
} }