|
@@ -32,6 +32,8 @@ import org.activiti.engine.RuntimeService;
|
|
|
import org.activiti.engine.TaskService;
|
|
|
import org.activiti.engine.impl.RepositoryServiceImpl;
|
|
|
import org.activiti.engine.impl.bpmn.behavior.MultiInstanceActivityBehavior;
|
|
|
+import org.activiti.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior;
|
|
|
+import org.activiti.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior;
|
|
|
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
|
|
|
import org.activiti.engine.repository.Deployment;
|
|
|
import org.activiti.engine.repository.DeploymentBuilder;
|
|
@@ -1012,7 +1014,8 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
throw ExceptionResultEnum.ERROR.exception("不能转给自己");
|
|
|
}
|
|
|
Task taskUser = taskService.createTaskQuery().taskId(taskId).taskAssignee(userId).singleResult();
|
|
|
- if (Objects.nonNull(taskUser)) {
|
|
|
+ Task taskCandidateUser = taskService.createTaskQuery().taskId(taskId).taskCandidateUser(userId).singleResult();
|
|
|
+ if (Objects.nonNull(taskUser) || Objects.nonNull(taskCandidateUser)) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("该审批人已有审批权限,无需流转");
|
|
|
}
|
|
|
|
|
@@ -1045,9 +1048,15 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
customFlowVarDto.setApproveIds(new ArrayList<>(Arrays.asList(userId)));
|
|
|
} else {
|
|
|
if (multiInstance && Objects.nonNull(nrOfCompletedInstances)) {
|
|
|
- List<String> approveIds = customFlowVarDto.getApproveIds();
|
|
|
- approveIds.remove(nrOfCompletedInstances.intValue());
|
|
|
- approveIds.add(nrOfCompletedInstances.intValue(), userId);
|
|
|
+ if (currFlow.getBehavior() instanceof SequentialMultiInstanceBehavior) {
|
|
|
+ List<String> approveIds = customFlowVarDto.getApproveIds();
|
|
|
+ approveIds.remove(nrOfCompletedInstances.intValue());
|
|
|
+ approveIds.add(nrOfCompletedInstances.intValue(), userId);
|
|
|
+ } else if (currFlow.getBehavior() instanceof ParallelMultiInstanceBehavior) {
|
|
|
+ removeApproveUserId(customFlowVarDto, String.valueOf(sysUser.getId()), userId);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ removeApproveUserId(customFlowVarDto, String.valueOf(sysUser.getId()), userId);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1070,6 +1079,19 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 删除审批人
|
|
|
+ *
|
|
|
+ * @param customFlowVarDto
|
|
|
+ * @param userId
|
|
|
+ * @param exchangeUserId
|
|
|
+ */
|
|
|
+ protected void removeApproveUserId(CustomFlowVarDto customFlowVarDto, String userId, String exchangeUserId) {
|
|
|
+ List<String> approveIds = customFlowVarDto.getApproveIds();
|
|
|
+ approveIds.remove(userId);
|
|
|
+ approveIds.add(exchangeUserId);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取转他人审批人
|
|
|
*
|
|
@@ -1778,15 +1800,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
- //审批属性
|
|
|
- switch (customFlowPropertyDto.getMultipleUserApproveType()) {
|
|
|
- case ORDER://依次审批
|
|
|
- case ALL://会签审批
|
|
|
- agginessMap.put(node.getTask().getFlowTaskId(), new CustomFlowVarDto(DefaultInstanceConvertToMultiInstance.DEFAULT_ASSIGNEE_LIST + i, approveUserIds));
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
+ agginessMap.put(node.getTask().getFlowTaskId(), new CustomFlowVarDto(DefaultInstanceConvertToMultiInstance.DEFAULT_ASSIGNEE_LIST + i, approveUserIds, node.getTask().getProperty().getApproveUserType(), node.getTask().getProperty().getMultipleUserApproveType(), node.getTask().getProperty().getRejectType(), node.getTask().getProperty().getRejectResubmitType()));
|
|
|
if (Objects.nonNull(customFlowPropertyDto.getRejectType()) && !Objects.equals(customFlowPropertyDto.getRejectType(), "")) {
|
|
|
//驳回属性
|
|
|
switch (customFlowPropertyDto.getRejectType()) {
|
|
@@ -2230,7 +2244,8 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
* @param conditionExpression 网关每一种线路走向的条件表达式
|
|
|
* @return
|
|
|
*/
|
|
|
- protected SequenceFlow createSequenceFlow(String from, String to, String id, String name, String conditionExpression) {
|
|
|
+ protected SequenceFlow createSequenceFlow(String from, String to, String id, String name, String
|
|
|
+ conditionExpression) {
|
|
|
SequenceFlow flow = new SequenceFlow();
|
|
|
flow.setSourceRef(from);
|
|
|
flow.setTargetRef(to);
|