Commit 376114a8741ad134ea13396c777ee176d07fddf6

Authored by YunaiV
1 parent 989c4e4b

fix:【BPM 工作流】修复子流程发起人为列表时实际发起人会变成主流程发起人 https://gitee.com/zhijiantianya/yudao-cloud/issues/ICNHA8

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 }