diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java index 03ee5c065..d25a4d601 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java @@ -326,20 +326,17 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService { saveAttachment(dto.getAttachmentList(), instance.getId(), task.getId()); // 完成任务,审批通过 - if (StringUtil.isNotEmpty(task.getExecutionId())) { - taskService.complete(task.getId(), runtimeService.getVariables(task.getExecutionId())); - } else { - //加签子任务 没有executionId - taskService.complete(task.getId()); - } + taskService.complete(task.getId(), runtimeService.getVariables(task.getExecutionId())); + // } else { + // //加签子任务 没有executionId + // taskService.complete(task.getId()); + // } //add by zuoqinbo 处理加签任务,分为向前加签和向后加签 String parentTaskId = task.getParentTaskId(); if (StringUtils.hasLength(parentTaskId)) { - String tableName = managementService.getTableName(TaskEntity.class); - String sql = "select count(1) from " + tableName + " where PARENT_TASK_ID_=#{parentTaskId}"; - long subTaskCount = - taskService.createNativeTaskQuery().sql(sql).parameter("parentTaskId", parentTaskId).count(); + List subTasks = taskService.getSubTasks(parentTaskId); + long subTaskCount = subTasks.size(); TaskEntity taskEntity = (TaskEntity) taskService.createTaskQuery().taskId(parentTaskId).singleResult(); //当前任务是加签任务,parentTask下没有其他子任务 subTaskCount == 0 //目前子任务是依次顺序审批, taskService.complete(task.getId()) 已经把当前任务完成,则subTaskCount == 0 @@ -386,6 +383,11 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService { if (!CollectionUtils.isEmpty(targetAssignerList)) { newTargetAssignerList.addAll(targetAssignerList); } + // 这个节点下所有审批人快照 + List taskAssignerListSnapshot = + runtimeService.getVariable(taskEntity.getProcessInstanceId(), + INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + taskEntity.getId(), List.class); + taskAssignerListSnapshot.addAll(newTargetAssignerList); // 向前加签 BpmnTaskDelegateAssigner assigner = (BpmnTaskDelegateAssigner) runtimeService.getVariable(taskEntity.getProcessInstanceId(), INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT + taskEntity.getId()); if (Objects.equals(BpmnCountersignType.FORWARD_COUNTERSIGN.getType(), countersignDTO.getCountersignType())) { @@ -431,7 +433,7 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService { task.setProcessInstanceId(parentTask.getProcessInstanceId()); task.setTaskDefinitionKey(parentTask.getTaskDefinitionKey()); task.setTaskDefinitionId(parentTask.getTaskDefinitionId()); - //task.setExecutionId(parentTask.getExecutionId()); + task.setExecutionId(parentTask.getExecutionId()); task.setPriority(parentTask.getPriority()); task.setCreateTime(new Date()); log.info("流程加签父任务:{},正在创建加签子任务:{},", parentTaskId, JSONUtil.toJsonStr(Lists.newArrayList(task)));