From 95791254a9ca91811d85c579b33effbba7ccac74 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Mon, 3 Jun 2024 22:27:25 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E6=8A=84=E9=80=81?= =?UTF-8?q?=E5=90=8E=E6=9C=89=E5=A4=9A=E6=9D=A1=E8=AE=B0=E5=BD=95=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=B1=95=E7=A4=BA=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ActProcessInstanceServiceImpl.java | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java index 5a4697836..e790438be 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java @@ -313,21 +313,41 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService Map> groupByKey = StreamUtils.groupByKey(actHistoryInfoVoList, ActHistoryInfoVo::getTaskDefinitionKey); for (Map.Entry> entry : groupByKey.entrySet()) { ActHistoryInfoVo historyInfoVo = new ActHistoryInfoVo(); - BeanUtils.copyProperties(entry.getValue().get(0), historyInfoVo); - actHistoryInfoVoList.stream().filter(e -> e.getTaskDefinitionKey().equals(entry.getKey()) && e.getEndTime() == null).findFirst() - .ifPresent(e -> { - historyInfoVo.setStatus("待处理"); - historyInfoVo.setStartTime(e.getStartTime()); - historyInfoVo.setEndTime(null); - historyInfoVo.setRunDuration(null); - if (ObjectUtil.isEmpty(e.getAssignee())) { - ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(e.getId()); + if (entry.getValue().size() > 1) { + List historyInfoVos = StreamUtils.filter(entry.getValue(), e -> StringUtils.isNotBlank(e.getAssignee())); + if (CollUtil.isNotEmpty(historyInfoVos)) { + ActHistoryInfoVo infoVo = historyInfoVos.get(0); + BeanUtils.copyProperties(infoVo, historyInfoVo); + historyInfoVo.setStatus(infoVo.getEndTime() == null ? "待处理" : "已处理"); + historyInfoVo.setStartTime(infoVo.getStartTime()); + historyInfoVo.setEndTime(infoVo.getEndTime() == null ? null : infoVo.getEndTime()); + historyInfoVo.setRunDuration(infoVo.getEndTime() == null ? null : infoVo.getRunDuration()); + if (ObjectUtil.isEmpty(infoVo.getAssignee())) { + ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(infoVo.getId()); if (ObjectUtil.isNotEmpty(participantVo) && CollUtil.isNotEmpty(participantVo.getCandidate())) { historyInfoVo.setAssignee(StreamUtils.join(participantVo.getCandidate(), Convert::toStr)); } } - }); + } + } else { + actHistoryInfoVoList.stream().filter(e -> e.getTaskDefinitionKey().equals(entry.getKey())).findFirst() + .ifPresent(e -> { + BeanUtils.copyProperties(e, historyInfoVo); + historyInfoVo.setStatus(e.getEndTime() == null ? "待处理" : "已处理"); + historyInfoVo.setStartTime(e.getStartTime()); + historyInfoVo.setEndTime(e.getEndTime() == null ? null : e.getEndTime()); + historyInfoVo.setRunDuration(e.getEndTime() == null ? null : e.getRunDuration()); + if (ObjectUtil.isEmpty(e.getAssignee())) { + ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(e.getId()); + if (ObjectUtil.isNotEmpty(participantVo) && CollUtil.isNotEmpty(participantVo.getCandidate())) { + historyInfoVo.setAssignee(StreamUtils.join(participantVo.getCandidate(), Convert::toStr)); + } + } + }); + + } historyInfoVoList.add(historyInfoVo); + } return historyInfoVoList; }