From 2f0e2b842ee88a854bc25f3e214fc06ec25f706b Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Fri, 20 Jun 2025 17:55:17 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=87=AA=E5=8A=A8=E5=8C=96=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E6=9C=89=E6=AD=A5=E9=AA=A4=E5=A4=84=E7=90=86?= =?UTF-8?q?=E4=BA=BA=E6=97=B6=E5=B0=86=E5=A4=84=E7=90=86=E4=BA=BA=E4=BD=9C?= =?UTF-8?q?=E4=B8=BA=E4=BD=9C=E4=B8=9A=E7=9A=84=E6=89=A7=E8=A1=8C=E7=94=A8?= =?UTF-8?q?=E6=88=B7=EF=BC=8C=E5=90=A6=E5=88=99=E5=B0=86=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BD=9C=E4=B8=BA=E6=89=A7=E8=A1=8C=E7=94=A8?= =?UTF-8?q?=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1441937939202048]工单创建自动化作业时,有步骤处理人时将处理人作为作业的执行用户,否则将系统用户作为执行用户 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1441937939202048 --- .../component/CreateJobProcessComponent.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/java/neatlogic/module/autoexec/process/stephandler/component/CreateJobProcessComponent.java b/src/main/java/neatlogic/module/autoexec/process/stephandler/component/CreateJobProcessComponent.java index 4e2a57d0..3852c97b 100644 --- a/src/main/java/neatlogic/module/autoexec/process/stephandler/component/CreateJobProcessComponent.java +++ b/src/main/java/neatlogic/module/autoexec/process/stephandler/component/CreateJobProcessComponent.java @@ -146,6 +146,8 @@ public class CreateJobProcessComponent extends ProcessStepHandlerBase { protected int myActive(ProcessTaskStepVo currentProcessTaskStepVo) throws ProcessTaskException { currentProcessTaskStepVo.setStatus(ProcessTaskStatus.RUNNING.getValue()); currentProcessTaskStepVo.setUpdateStartTime(1); + IProcessTaskCrossoverMapper processTaskCrossoverMapper = CrossoverServiceFactory.getApi(IProcessTaskCrossoverMapper.class); + processTaskCrossoverMapper.deleteProcessTaskStepWorker(new ProcessTaskStepWorkerVo(currentProcessTaskStepVo.getId())); ProcessTaskStepVo processTaskStepVo = new ProcessTaskStepVo(); processTaskStepVo.setId(currentProcessTaskStepVo.getId()); processTaskStepVo.setName(currentProcessTaskStepVo.getName()); @@ -290,15 +292,22 @@ public class CreateJobProcessComponent extends ProcessStepHandlerBase { return; } String assignExecUser = SystemUser.SYSTEM.getUserUuid(); - List processTaskStepWorkerList = processTaskCrossoverMapper.getProcessTaskStepWorkerByProcessTaskIdAndProcessTaskStepId(processTaskStepVo.getProcessTaskId(), processTaskStepVo.getId()); - if (CollectionUtils.isNotEmpty(processTaskStepWorkerList)) { - for (ProcessTaskStepWorkerVo processTaskStepWorkerVo : processTaskStepWorkerList) { - if (Objects.equals(processTaskStepWorkerVo.getUserType(), ProcessUserType.MAJOR.getValue()) && Objects.equals(processTaskStepWorkerVo.getType(), GroupSearch.USER.getValue())) { + IProcessStepHandlerCrossoverUtil processStepHandlerCrossoverUtil = CrossoverServiceFactory.getApi(IProcessStepHandlerCrossoverUtil.class); + ProcessTaskStepAssignVo processTaskStepAssignVo = processStepHandlerCrossoverUtil.analysisAssignConfig(processTaskStepVo); + List finalStepWorkerList = processTaskStepAssignVo.getFinalStepWorkerList(); + if (CollectionUtils.isNotEmpty(finalStepWorkerList)) { + for (ProcessTaskStepWorkerVo processTaskStepWorkerVo : finalStepWorkerList) { + if (Objects.equals(processTaskStepWorkerVo.getType(), GroupSearch.USER.getValue())) { assignExecUser = processTaskStepWorkerVo.getUuid(); break; } } } + UserContext userContext = null; + // 如果作业的执行用户不是当前用户,创建作业的时候会切换用户上下文,这里先复制一份当前的用户上下文,等作业创建完成后再切回当前用户上下文 + if (!Objects.equals(assignExecUser, UserContext.get().getUserUuid())) { + userContext = UserContext.get().copy(); + } JSONArray errorMessageList = new JSONArray(); boolean flag = false; List jobIdList = new ArrayList<>(); @@ -333,6 +342,9 @@ public class CreateJobProcessComponent extends ProcessStepHandlerBase { flag = true; } } + if (userContext != null && !Objects.equals(userContext.getUserUuid(), UserContext.get().getUserUuid())) { + UserContext.init(userContext); + } // 如果有一个作业创建有异常,则根据失败策略执行操作 if (flag) { ProcessTaskStepDataVo processTaskStepDataVo = new ProcessTaskStepDataVo(); @@ -371,7 +383,6 @@ public class CreateJobProcessComponent extends ProcessStepHandlerBase { } } } - IProcessStepHandlerCrossoverUtil processStepHandlerCrossoverUtil = CrossoverServiceFactory.getApi(IProcessStepHandlerCrossoverUtil.class); /* 触发通知 **/ processStepHandlerCrossoverUtil.notify(processTaskStepVo, AutoexecNotifyTriggerType.CREATE_JOB_FAILED); } else { -- Gitee