From 366c614d86ae0eb7190721290e2242b6c5048a3a Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Tue, 6 Aug 2024 18:49:13 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BF=AE=E5=A4=8D]=20=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E5=A4=84=E7=90=86-=E5=B7=A5=E5=8D=95=E6=9A=82=E5=81=9C?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E4=BD=9C=E4=B8=BA=E5=B7=A5=E5=8D=95=E7=9A=84?= =?UTF-8?q?=E5=8D=8F=E5=8A=A9=E5=A4=84=E7=90=86=E4=BA=BA=E7=9A=84=E2=80=9C?= =?UTF-8?q?=E6=88=91=E7=9A=84=E5=BE=85=E5=8A=9E=E2=80=9D=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E8=B0=83=E5=AF=B9=E5=BA=94=E5=B7=A5=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1216633056493568]工单处理-工单暂停后,作为工单的协助处理人的“我的待办”没有过滤调对应工单 http://192.168.0.96:8090/demo/rdm.html#/bug-detail/939050947543040/939050947543057/1216633056493568 --- .../core/ProcessAuthManager.java | 45 +++++-- .../core/ProcessStepHandlerBase.java | 39 +++++- .../core/ProcessStepInternalHandlerBase.java | 122 +++++++++--------- 3 files changed, 136 insertions(+), 70 deletions(-) diff --git a/src/main/java/neatlogic/framework/process/operationauth/core/ProcessAuthManager.java b/src/main/java/neatlogic/framework/process/operationauth/core/ProcessAuthManager.java index 967e85dc..9eed1473 100644 --- a/src/main/java/neatlogic/framework/process/operationauth/core/ProcessAuthManager.java +++ b/src/main/java/neatlogic/framework/process/operationauth/core/ProcessAuthManager.java @@ -12,6 +12,7 @@ import neatlogic.framework.process.exception.operationauth.ProcessTaskPermission import neatlogic.framework.process.exception.processtask.ProcessTaskNoPermissionException; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,11 +46,13 @@ public class ProcessAuthManager { private Map> operationTypePermissionDeniedExceptionMap = new HashMap<>(); /** 保存额外参数 **/ private Map extraParamMap = new HashMap<>(); + /** 需要校验的用户,如果不传,默认为当前用户 **/ + private String userUuid; public static class Builder { private Set processTaskIdSet = new HashSet<>(); private Set processTaskStepIdSet = new HashSet<>(); private Set operationTypeSet = new HashSet<>(); - + private String userUuid; public Builder() {} public Builder addProcessTaskId(Long... processTaskIds) { @@ -83,6 +86,11 @@ public class ProcessAuthManager { return this; } + public Builder withUserUuid(String _userUuid) { + userUuid = _userUuid; + return this; + } + public ProcessAuthManager build() { return new ProcessAuthManager(this); } @@ -98,6 +106,7 @@ public class ProcessAuthManager { private Long processTaskId; private ProcessTaskOperationType operationType; private JSONObject extraParam; + private String userUuid; public TaskOperationChecker(Long processTaskId, ProcessTaskOperationType operationType) { this.processTaskId = processTaskId; @@ -111,6 +120,11 @@ public class ProcessAuthManager { extraParam.put(key, data); return this; } + + public TaskOperationChecker withUserUuid(String _userUuid) { + userUuid = _userUuid; + return this; + } public ProcessAuthManager build() { return new ProcessAuthManager(this); } @@ -126,6 +140,7 @@ public class ProcessAuthManager { private Long processTaskStepId; private ProcessTaskOperationType operationType; private JSONObject extraParam; + private String userUuid; public StepOperationChecker(Long processTaskStepId, ProcessTaskOperationType operationType) { this.processTaskStepId = processTaskStepId; @@ -140,6 +155,10 @@ public class ProcessAuthManager { return this; } + public StepOperationChecker withUserUuid(String _userUuid) { + userUuid = _userUuid; + return this; + } public ProcessAuthManager build() { return new ProcessAuthManager(this); } @@ -149,6 +168,7 @@ public class ProcessAuthManager { this.processTaskIdSet = builder.processTaskIdSet; this.processTaskStepIdSet = builder.processTaskStepIdSet; this.operationTypeSet = builder.operationTypeSet; + this.userUuid = builder.userUuid; } private ProcessAuthManager(TaskOperationChecker checker) { @@ -159,6 +179,7 @@ public class ProcessAuthManager { this.checkOperationTypeMap = new HashMap<>(); checkOperationTypeMap.put(checker.processTaskId, checker.operationType); extraParamMap.put(checker.processTaskId, checker.extraParam); + this.userUuid = checker.userUuid; } private ProcessAuthManager(StepOperationChecker checker) { @@ -169,6 +190,7 @@ public class ProcessAuthManager { this.checkOperationTypeMap = new HashMap<>(); checkOperationTypeMap.put(checker.processTaskStepId, checker.operationType); extraParamMap.put(checker.processTaskStepId, checker.extraParam); + this.userUuid = checker.userUuid; } /** * @@ -250,12 +272,15 @@ public class ProcessAuthManager { // logger.error("D:" + (System.currentTimeMillis() - startTime3)); Map processTaskConfigMap = processTaskConfigList.stream().collect(Collectors.toMap(e->e.getHash(), e -> e.getConfig())); // logger.error("A:" + (System.currentTimeMillis() - startTime)); + if (StringUtils.isBlank(userUuid)) { + userUuid = UserContext.get().getUserUuid(true); + } for (ProcessTaskVo processTaskVo : processTaskList) { processTaskVo.setConfig(processTaskConfigMap.get(processTaskVo.getConfigHash())); // startTime = System.currentTimeMillis(); processTaskVo.setStepList(processTaskStepListMap.computeIfAbsent(processTaskVo.getId(), k -> new ArrayList<>())); processTaskVo.setStepRelList(processTaskStepRelListMap.computeIfAbsent(processTaskVo.getId(), k -> new ArrayList<>())); - resultMap.putAll(getOperateMap(processTaskVo)); + resultMap.putAll(getOperateMap(processTaskVo, userUuid)); // logger.error("B(" + processTaskVo.getId() + "):" + (System.currentTimeMillis() - startTime)); } } @@ -267,7 +292,7 @@ public class ProcessAuthManager { * @Description: 返回一个工单及其步骤权限列表,返回值map中的key可能是工单id或步骤id,value就是其拥有的权限列表 * @return Map> */ - private Map> getOperateMap(ProcessTaskVo processTaskVo) { + private Map> getOperateMap(ProcessTaskVo processTaskVo, String userUuid) { Set taskOperationTypeSet = new HashSet<>(); Set stepOperationTypeSet = new HashSet<>(); List taskOperationTypeList = OperationAuthHandlerType.TASK.getOperationTypeList(); @@ -285,7 +310,7 @@ public class ProcessAuthManager { } } Map> resultMap = new HashMap<>(); - String userUuid = UserContext.get().getUserUuid(true); +// String userUuid = UserContext.get().getUserUuid(true); JSONObject extraParam = extraParamMap.computeIfAbsent(processTaskVo.getId(), key -> new JSONObject()); if (CollectionUtils.isNotEmpty(taskOperationTypeSet)) { IOperationAuthHandler handler = OperationAuthHandlerFactory.getHandler(OperationAuthHandlerType.TASK.getValue()); @@ -306,7 +331,7 @@ public class ProcessAuthManager { continue; } /** 如果当前用户接受了其他用户的授权,查出其他用户拥有的权限,叠加当前用户权限里 **/ - List fromUuidList = getFromUuidListByChannelUuid(processTaskVo.getChannelUuid()); + List fromUuidList = getFromUuidListByChannelUuid(processTaskVo.getChannelUuid(), userUuid); if (CollectionUtils.isNotEmpty(fromUuidList)) { for (String fromUuid : fromUuidList) { result = handler.getOperateMap(processTaskVo, fromUuid, operationType, operationTypePermissionDeniedExceptionMap, extraParam); @@ -344,7 +369,7 @@ public class ProcessAuthManager { resultSet.add(operationType); } else { /** 如果当前用户接受了其他用户的授权,查出其他用户拥有的权限,叠加当前用户权限里 **/ - List fromUuidList = getFromUuidListByChannelUuid(processTaskVo.getChannelUuid()); + List fromUuidList = getFromUuidListByChannelUuid(processTaskVo.getChannelUuid(), userUuid); if (CollectionUtils.isNotEmpty(fromUuidList)) { result = null; for (String fromUuid : fromUuidList) { @@ -378,15 +403,15 @@ public class ProcessAuthManager { * @param channelUuid * @return */ - private List getFromUuidListByChannelUuid(String channelUuid) { + private List getFromUuidListByChannelUuid(String channelUuid, String userUuid) { List fromUserUuidList = channelUuidFromUserUuidListMap.get(channelUuid); if (fromUserUuidList == null) { fromUserUuidList = new ArrayList<>(); - List processTaskAgentList = processTaskAgentListMap.get(UserContext.get().getUserUuid(true)); + List processTaskAgentList = processTaskAgentListMap.get(userUuid); if (processTaskAgentList == null) { IProcessTaskAgentCrossoverMapper processTaskAgentCrossoverMapper = CrossoverServiceFactory.getApi(IProcessTaskAgentCrossoverMapper.class); - processTaskAgentList = processTaskAgentCrossoverMapper.getProcessTaskAgentDetailListByToUserUuid(UserContext.get().getUserUuid(true)); - processTaskAgentListMap.put(UserContext.get().getUserUuid(true), processTaskAgentList); + processTaskAgentList = processTaskAgentCrossoverMapper.getProcessTaskAgentDetailListByToUserUuid(userUuid); + processTaskAgentListMap.put(userUuid, processTaskAgentList); } if (CollectionUtils.isNotEmpty(processTaskAgentList)) { for (ProcessTaskAgentVo processTaskAgentVo : processTaskAgentList) { diff --git a/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java b/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java index ff77a2c4..01d2fe5f 100644 --- a/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java +++ b/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepHandlerBase.java @@ -1576,6 +1576,19 @@ public abstract class ProcessStepHandlerBase implements IProcessStepHandler { currentProcessTaskStepVo.setStatus(ProcessTaskStepStatus.RUNNING.getValue()); updateProcessTaskStepStatus(currentProcessTaskStepVo); + List processTaskStepUserList = processTaskCrossoverMapper.getProcessTaskStepUserByStepId(currentProcessTaskStepVo.getId(), ProcessUserType.MAJOR.getValue()); + if (CollectionUtils.isNotEmpty(processTaskStepUserList)) { + String userUuid = processTaskStepUserList.get(0).getUserUuid(); + ProcessTaskStepWorkerVo processTaskStepWorkerVo = new ProcessTaskStepWorkerVo(); + processTaskStepWorkerVo.setProcessTaskId(currentProcessTaskStepVo.getProcessTaskId()); + processTaskStepWorkerVo.setProcessTaskStepId(currentProcessTaskStepVo.getId()); + processTaskStepWorkerVo.setUserType(ProcessUserType.MAJOR.getValue()); + processTaskStepWorkerVo.setUuid(userUuid); + processTaskStepWorkerVo.setType(GroupSearch.USER.getValue()); + processTaskCrossoverMapper.insertIgnoreProcessTaskStepWorker(processTaskStepWorkerVo); + } + + processStepUtilHandler.updateProcessTaskStepUserAndWorker(currentProcessTaskStepVo.getProcessTaskId(), currentProcessTaskStepVo.getId()); currentProcessTaskStepVo.getParamObj().put("operateTime", new Date()); ProcessTaskOperatePostProcessorFactory.invokePostProcessorsAfterProcessTaskStepOperate(currentProcessTaskStepVo, ProcessTaskOperationType.STEP_RECOVER); /* 触发通知 **/ @@ -1611,6 +1624,10 @@ public abstract class ProcessStepHandlerBase implements IProcessStepHandler { .build() .checkAndNoPermissionThrowException(); try { + IProcessStepInternalHandler processStepUtilHandler = ProcessStepInternalHandlerFactory.getHandler(this.getHandler()); + if (processStepUtilHandler == null) { + throw new ProcessStepUtilHandlerNotFoundException(this.getHandler()); + } stepMajorUserRegulate(currentProcessTaskStepVo); processStepHandlerCrossoverUtil.saveContentAndFile(currentProcessTaskStepVo, ProcessTaskOperationType.STEP_PAUSE); myPause(currentProcessTaskStepVo); @@ -1618,8 +1635,26 @@ public abstract class ProcessStepHandlerBase implements IProcessStepHandler { /* 更新工单步骤状态为 “已挂起” **/ currentProcessTaskStepVo.setStatus(ProcessTaskStepStatus.HANG.getValue()); updateProcessTaskStepStatus(currentProcessTaskStepVo); - // processStepUtilHandler.updateProcessTaskStepUserAndWorker(currentProcessTaskStepVo.getProcessTaskId(), - // currentProcessTaskStepVo.getId()); + /* 判断主处理人是否有步骤暂停权限,如果没有需要将`processtask_step_worker`中主处理人数据删除 **/ + boolean majorUserHasStepPauseAuth = false; + List processTaskStepUserList = processTaskCrossoverMapper.getProcessTaskStepUserByStepId(currentProcessTaskStepVo.getId(), ProcessUserType.MAJOR.getValue()); + if (CollectionUtils.isNotEmpty(processTaskStepUserList)) { + String userUuid = processTaskStepUserList.get(0).getUserUuid(); + majorUserHasStepPauseAuth = new ProcessAuthManager + .StepOperationChecker(currentProcessTaskStepVo.getId(), ProcessTaskOperationType.STEP_RECOVER) + .withUserUuid(userUuid) + .build() + .check(); + } + if (!majorUserHasStepPauseAuth) { + ProcessTaskStepWorkerVo processTaskStepWorkerVo = new ProcessTaskStepWorkerVo(); + processTaskStepWorkerVo.setProcessTaskId(currentProcessTaskStepVo.getProcessTaskId()); + processTaskStepWorkerVo.setProcessTaskStepId(currentProcessTaskStepVo.getId()); + processTaskStepWorkerVo.setUserType(ProcessUserType.MAJOR.getValue()); + processTaskCrossoverMapper.deleteProcessTaskStepWorker(processTaskStepWorkerVo); + } + + processStepUtilHandler.updateProcessTaskStepUserAndWorker(currentProcessTaskStepVo.getProcessTaskId(), currentProcessTaskStepVo.getId()); currentProcessTaskStepVo.getParamObj().put("operateTime", new Date()); ProcessTaskOperatePostProcessorFactory.invokePostProcessorsAfterProcessTaskStepOperate(currentProcessTaskStepVo, ProcessTaskOperationType.STEP_PAUSE); /* 写入时间审计 **/ diff --git a/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepInternalHandlerBase.java b/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepInternalHandlerBase.java index cede3ed6..5c2aaa66 100644 --- a/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepInternalHandlerBase.java +++ b/src/main/java/neatlogic/framework/process/stephandler/core/ProcessStepInternalHandlerBase.java @@ -9,10 +9,7 @@ import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.framework.dao.mapper.TeamMapper; import neatlogic.framework.dao.mapper.UserMapper; import neatlogic.framework.file.dao.mapper.FileMapper; -import neatlogic.framework.process.constvalue.ProcessFlowDirection; -import neatlogic.framework.process.constvalue.ProcessTaskStepTaskUserStatus; -import neatlogic.framework.process.constvalue.ProcessTaskStepUserStatus; -import neatlogic.framework.process.constvalue.ProcessUserType; +import neatlogic.framework.process.constvalue.*; import neatlogic.framework.process.crossover.*; import neatlogic.framework.process.dto.*; import neatlogic.framework.process.exception.process.ProcessStepUtilHandlerNotFoundException; @@ -230,70 +227,79 @@ public abstract class ProcessStepInternalHandlerBase implements IProcessStepInte protected void defaultUpdateProcessTaskStepUserAndWorker(Long processTaskId, Long processTaskStepId) { IProcessTaskCrossoverMapper processTaskCrossoverMapper = CrossoverServiceFactory.getApi(IProcessTaskCrossoverMapper.class); - ProcessTaskStepUserVo processTaskStepUserVo = new ProcessTaskStepUserVo(processTaskStepId, ProcessUserType.MINOR.getValue()); - processTaskCrossoverMapper.deleteProcessTaskStepUser(processTaskStepUserVo); - ProcessTaskStepWorkerVo processTaskStepWorkerVo = new ProcessTaskStepWorkerVo(); - processTaskStepWorkerVo.setProcessTaskId(processTaskId); - processTaskStepWorkerVo.setProcessTaskStepId(processTaskStepId); - processTaskStepWorkerVo.setUserType(ProcessUserType.MINOR.getValue()); - processTaskCrossoverMapper.deleteProcessTaskStepWorker(processTaskStepWorkerVo); - IProcessTaskStepTaskCrossoverMapper processTaskStepTaskCrossoverMapper = CrossoverServiceFactory.getApi(IProcessTaskStepTaskCrossoverMapper.class); - List stepTaskList = processTaskStepTaskCrossoverMapper.getStepTaskListByProcessTaskStepId(processTaskStepId); - if (CollectionUtils.isNotEmpty(stepTaskList)) { - processTaskStepUserVo.setProcessTaskId(processTaskId); - processTaskStepWorkerVo.setType(GroupSearch.USER.getValue()); - /** 查出processtask_step_task表中当前步骤任务处理人列表 **/ - Set runningTaskUserUuidSet = new HashSet<>(); - Set insertedRunningTaskUserUuidSet = new HashSet<>(); - Set insertedsucceedTaskUserUuidSet = new HashSet<>(); - List stepTaskIdList = new ArrayList<>(); - Map processTaskStepTaskVoMap = new HashMap<>(); - for (ProcessTaskStepTaskVo processTaskStepTaskVo : stepTaskList) { - stepTaskIdList.add(processTaskStepTaskVo.getId()); - processTaskStepTaskVoMap.put(processTaskStepTaskVo.getId(), processTaskStepTaskVo); - } - - List stepTaskUserList = processTaskStepTaskCrossoverMapper.getStepTaskUserByStepTaskIdList(stepTaskIdList); - for (ProcessTaskStepTaskUserVo stepTaskUserVo : stepTaskUserList) { - if (Objects.equals(stepTaskUserVo.getIsDelete(), 1)) { - continue; - } - if (!Objects.equals(stepTaskUserVo.getStatus(), ProcessTaskStepTaskUserStatus.SUCCEED.getValue())) { - runningTaskUserUuidSet.add(stepTaskUserVo.getUserUuid()); - } - } - for (ProcessTaskStepTaskUserVo stepTaskUserVo : stepTaskUserList) { - if (Objects.equals(stepTaskUserVo.getIsDelete(), 1)) { - continue; + ProcessTaskStepVo processTaskStepVo = processTaskCrossoverMapper.getProcessTaskStepBaseInfoById(processTaskStepId); + if (Objects.equals(processTaskStepVo.getStatus(), ProcessTaskStepStatus.RUNNING.getValue())) { + ProcessTaskStepUserVo processTaskStepUserVo = new ProcessTaskStepUserVo(processTaskStepId, ProcessUserType.MINOR.getValue()); + processTaskCrossoverMapper.deleteProcessTaskStepUser(processTaskStepUserVo); + ProcessTaskStepWorkerVo processTaskStepWorkerVo = new ProcessTaskStepWorkerVo(); + processTaskStepWorkerVo.setProcessTaskId(processTaskId); + processTaskStepWorkerVo.setProcessTaskStepId(processTaskStepId); + processTaskStepWorkerVo.setUserType(ProcessUserType.MINOR.getValue()); + processTaskCrossoverMapper.deleteProcessTaskStepWorker(processTaskStepWorkerVo); + IProcessTaskStepTaskCrossoverMapper processTaskStepTaskCrossoverMapper = CrossoverServiceFactory.getApi(IProcessTaskStepTaskCrossoverMapper.class); + List stepTaskList = processTaskStepTaskCrossoverMapper.getStepTaskListByProcessTaskStepId(processTaskStepId); + if (CollectionUtils.isNotEmpty(stepTaskList)) { + processTaskStepUserVo.setProcessTaskId(processTaskId); + processTaskStepWorkerVo.setType(GroupSearch.USER.getValue()); + /** 查出processtask_step_task表中当前步骤任务处理人列表 **/ + Set runningTaskUserUuidSet = new HashSet<>(); + Set insertedRunningTaskUserUuidSet = new HashSet<>(); + Set insertedsucceedTaskUserUuidSet = new HashSet<>(); + List stepTaskIdList = new ArrayList<>(); + Map processTaskStepTaskVoMap = new HashMap<>(); + for (ProcessTaskStepTaskVo processTaskStepTaskVo : stepTaskList) { + stepTaskIdList.add(processTaskStepTaskVo.getId()); + processTaskStepTaskVoMap.put(processTaskStepTaskVo.getId(), processTaskStepTaskVo); } - ProcessTaskStepTaskVo processTaskStepTaskVo = processTaskStepTaskVoMap.get(stepTaskUserVo.getProcessTaskStepTaskId()); - processTaskStepUserVo.setActiveTime(processTaskStepTaskVo.getCreateTime()); - processTaskStepUserVo.setStartTime(processTaskStepTaskVo.getCreateTime()); - String userUuid = stepTaskUserVo.getUserUuid(); - processTaskStepUserVo.setUserUuid(userUuid); - if (Objects.equals(stepTaskUserVo.getStatus(), ProcessTaskStepTaskUserStatus.SUCCEED.getValue())) { - if (runningTaskUserUuidSet.contains(userUuid)) { + List stepTaskUserList = processTaskStepTaskCrossoverMapper.getStepTaskUserByStepTaskIdList(stepTaskIdList); + for (ProcessTaskStepTaskUserVo stepTaskUserVo : stepTaskUserList) { + if (Objects.equals(stepTaskUserVo.getIsDelete(), 1)) { continue; } - if (insertedsucceedTaskUserUuidSet.contains(userUuid)) { - continue; + if (!Objects.equals(stepTaskUserVo.getStatus(), ProcessTaskStepTaskUserStatus.SUCCEED.getValue())) { + runningTaskUserUuidSet.add(stepTaskUserVo.getUserUuid()); } - insertedsucceedTaskUserUuidSet.add(userUuid); - processTaskStepUserVo.setStatus(ProcessTaskStepUserStatus.DONE.getValue()); - processTaskStepUserVo.setEndTime(stepTaskUserVo.getEndTime()); - } else { - if (insertedRunningTaskUserUuidSet.contains(userUuid)) { + } + for (ProcessTaskStepTaskUserVo stepTaskUserVo : stepTaskUserList) { + if (Objects.equals(stepTaskUserVo.getIsDelete(), 1)) { continue; } - insertedRunningTaskUserUuidSet.add(userUuid); - processTaskStepUserVo.setStatus(ProcessTaskStepUserStatus.DOING.getValue()); + ProcessTaskStepTaskVo processTaskStepTaskVo = processTaskStepTaskVoMap.get(stepTaskUserVo.getProcessTaskStepTaskId()); + processTaskStepUserVo.setActiveTime(processTaskStepTaskVo.getCreateTime()); + processTaskStepUserVo.setStartTime(processTaskStepTaskVo.getCreateTime()); + String userUuid = stepTaskUserVo.getUserUuid(); + processTaskStepUserVo.setUserUuid(userUuid); - processTaskStepWorkerVo.setUuid(userUuid); - processTaskCrossoverMapper.insertIgnoreProcessTaskStepWorker(processTaskStepWorkerVo); + if (Objects.equals(stepTaskUserVo.getStatus(), ProcessTaskStepTaskUserStatus.SUCCEED.getValue())) { + if (runningTaskUserUuidSet.contains(userUuid)) { + continue; + } + if (insertedsucceedTaskUserUuidSet.contains(userUuid)) { + continue; + } + insertedsucceedTaskUserUuidSet.add(userUuid); + processTaskStepUserVo.setStatus(ProcessTaskStepUserStatus.DONE.getValue()); + processTaskStepUserVo.setEndTime(stepTaskUserVo.getEndTime()); + } else { + if (insertedRunningTaskUserUuidSet.contains(userUuid)) { + continue; + } + insertedRunningTaskUserUuidSet.add(userUuid); + processTaskStepUserVo.setStatus(ProcessTaskStepUserStatus.DOING.getValue()); + + processTaskStepWorkerVo.setUuid(userUuid); + processTaskCrossoverMapper.insertIgnoreProcessTaskStepWorker(processTaskStepWorkerVo); + } + processTaskCrossoverMapper.insertIgnoreProcessTaskStepUser(processTaskStepUserVo); } - processTaskCrossoverMapper.insertIgnoreProcessTaskStepUser(processTaskStepUserVo); } + } else { + ProcessTaskStepWorkerVo processTaskStepWorkerVo = new ProcessTaskStepWorkerVo(); + processTaskStepWorkerVo.setProcessTaskId(processTaskId); + processTaskStepWorkerVo.setProcessTaskStepId(processTaskStepId); + processTaskStepWorkerVo.setUserType(ProcessUserType.MINOR.getValue()); + processTaskCrossoverMapper.deleteProcessTaskStepWorker(processTaskStepWorkerVo); } } -- Gitee