|
@@ -34,6 +34,7 @@ public class DeleteTaskExecutionCmd implements Command<Void> {
|
|
|
MultiInstanceLoopCharacteristics loopCharacteristics = managementService.executeCommand(new GetLoopCharacteristicsCmd(this.task.getProcessInstanceId(), this.task.getTaskDefinitionKey()));
|
|
|
if (Objects.nonNull(loopCharacteristics)) {
|
|
|
RuntimeService runtimeService = processEngineConfiguration.getRuntimeService();
|
|
|
+ TaskService taskService = processEngineConfiguration.getTaskService();
|
|
|
String collectionName = loopCharacteristics.getInputDataItem();
|
|
|
collectionName = collectionName.substring(2, collectionName.length() - 1);
|
|
|
List<String> assigneeList = runtimeService.getVariable(
|
|
@@ -50,11 +51,24 @@ public class DeleteTaskExecutionCmd implements Command<Void> {
|
|
|
Execution miExecution = managementService.executeCommand(new GetMultiInstanceRootExecutionCmd(this.task.getProcessInstanceId(), this.task.getTaskDefinitionKey()));
|
|
|
if (loopCharacteristics.isSequential()) {
|
|
|
Integer loopCounter = runtimeService.getVariableLocal(this.task.getExecutionId(), "loopCounter", Integer.class);
|
|
|
- if (!assigneeList.subList(loopCounter, assigneeList.size() - 1).contains(this.assignee)) {
|
|
|
- throw new FlowableException(String.format("会签后续办理者中没有用户:%s", this.assignee));
|
|
|
+ if (assigneeList.subList(loopCounter, assigneeList.size() - 1).contains(this.assignee)) {
|
|
|
+ // 减签已开始人员
|
|
|
+ List<Task> deleteTasks = taskService.createTaskQuery()
|
|
|
+ .processInstanceId(this.task.getProcessInstanceId())
|
|
|
+ .taskDefinitionKey(this.task.getTaskDefinitionKey())
|
|
|
+ .taskAssignee(this.assignee)
|
|
|
+ .list();
|
|
|
+ for (Task deleteTask : deleteTasks) {
|
|
|
+ runtimeService.deleteMultiInstanceExecution(deleteTask.getExecutionId(), true);
|
|
|
+ ActivityInstanceEntity activityInstanceEntity = activityInstanceEntityManager.findActivityInstanceByTaskId(deleteTask.getId());
|
|
|
+ activityInstanceEntityManager.delete(activityInstanceEntity);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 减签未开始人员
|
|
|
+ Integer nrOfInstances = runtimeService.getVariableLocal(miExecution.getId(), "nrOfInstances", Integer.class);
|
|
|
+ runtimeService.setVariableLocal(miExecution.getId(), "nrOfInstances", nrOfInstances - 1);
|
|
|
}
|
|
|
} else {
|
|
|
- TaskService taskService = processEngineConfiguration.getTaskService();
|
|
|
List<Task> tasks = taskService.createTaskQuery()
|
|
|
.processInstanceId(this.task.getProcessInstanceId())
|
|
|
.taskDefinitionKey(this.task.getTaskDefinitionKey())
|