Commit 376114a8741ad134ea13396c777ee176d07fddf6
1 parent
989c4e4b
fix:【BPM 工作流】修复子流程发起人为列表时实际发起人会变成主流程发起人 https://gitee.com/zhijiantianya/yudao-cloud/issues/ICNHA8
Showing
2 changed files
with
11 additions
and
6 deletions
yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java
| @@ -448,7 +448,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | @@ -448,7 +448,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | ||
| 448 | .setNodeType(BpmSimpleModelNodeTypeEnum.CHILD_PROCESS.getType()).setStatus(processInstanceStatus) | 448 | .setNodeType(BpmSimpleModelNodeTypeEnum.CHILD_PROCESS.getType()).setStatus(processInstanceStatus) |
| 449 | .setStartTime(DateUtils.of(activity.getStartTime())) | 449 | .setStartTime(DateUtils.of(activity.getStartTime())) |
| 450 | .setEndTime(DateUtils.of(activity.getEndTime())) | 450 | .setEndTime(DateUtils.of(activity.getEndTime())) |
| 451 | - .setProcessInstanceId(activity.getProcessInstanceId()); | 451 | + .setProcessInstanceId(activity.getCalledProcessInstanceId()); |
| 452 | approvalNodes.add(callActivity); | 452 | approvalNodes.add(callActivity); |
| 453 | } | 453 | } |
| 454 | }); | 454 | }); |
| @@ -520,7 +520,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | @@ -520,7 +520,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService | ||
| 520 | activityNode.setCandidateUserIds(CollUtil.sub(candidateUserIds, index + 1, candidateUserIds.size())); | 520 | activityNode.setCandidateUserIds(CollUtil.sub(candidateUserIds, index + 1, candidateUserIds.size())); |
| 521 | } | 521 | } |
| 522 | if (BpmSimpleModelNodeTypeEnum.CHILD_PROCESS.getType().equals(activityNode.getNodeType())) { | 522 | if (BpmSimpleModelNodeTypeEnum.CHILD_PROCESS.getType().equals(activityNode.getNodeType())) { |
| 523 | - activityNode.setProcessInstanceId(firstActivity.getProcessInstanceId()); | 523 | + activityNode.setProcessInstanceId(firstActivity.getCalledProcessInstanceId()); |
| 524 | } | 524 | } |
| 525 | return activityNode; | 525 | return activityNode; |
| 526 | }); | 526 | }); |
yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/listener/BpmCallActivityListener.java
| @@ -85,10 +85,15 @@ public class BpmCallActivityListener implements ExecutionListener { | @@ -85,10 +85,15 @@ public class BpmCallActivityListener implements ExecutionListener { | ||
| 85 | // 2.2 使用表单值,并兜底字符串转 Long 失败时使用主流程发起人 | 85 | // 2.2 使用表单值,并兜底字符串转 Long 失败时使用主流程发起人 |
| 86 | try { | 86 | try { |
| 87 | FlowableUtils.setAuthenticatedUserId(Long.parseLong(formFieldValue)); | 87 | FlowableUtils.setAuthenticatedUserId(Long.parseLong(formFieldValue)); |
| 88 | - } catch (Exception e) { | ||
| 89 | - log.error("[notify][监听器:{},子流程监听器设置流程的发起人字符串转 Long 失败,字符串:{}]", | ||
| 90 | - DELEGATE_EXPRESSION, formFieldValue); | ||
| 91 | - FlowableUtils.setAuthenticatedUserId(Long.parseLong(processInstance.getStartUserId())); | 88 | + } catch (NumberFormatException ex) { |
| 89 | + try { | ||
| 90 | + List<Long> formFieldValues = JsonUtils.parseArray(formFieldValue, Long.class); | ||
| 91 | + FlowableUtils.setAuthenticatedUserId(formFieldValues.get(0)); | ||
| 92 | + } catch (Exception e) { | ||
| 93 | + log.error("[notify][监听器:{},子流程监听器设置流程的发起人字符串转 Long 失败,字符串:{}]", | ||
| 94 | + DELEGATE_EXPRESSION, formFieldValue); | ||
| 95 | + FlowableUtils.setAuthenticatedUserId(Long.parseLong(processInstance.getStartUserId())); | ||
| 96 | + } | ||
| 92 | } | 97 | } |
| 93 | } | 98 | } |
| 94 | } | 99 | } |