From 5d104eef2b81d6a051ce2d09a9a6e581add00eb6 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Tue, 23 Jul 2024 10:19:29 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B5=81=E7=A8=8B=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E7=AD=9B=E9=80=89=E5=A4=B1=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ProcessApprovalRecordService.java | 4 ++ .../activiti/service/ProcessNodeService.java | 42 ++++++++++++++++--- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessApprovalRecordService.java b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessApprovalRecordService.java index 1c39a040..63f0c844 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessApprovalRecordService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessApprovalRecordService.java @@ -67,11 +67,15 @@ public class ProcessApprovalRecordService extends ServiceImpl pageList = this.page(page, wrapper); List records = pageList.getRecords(); + if (CollUtil.isEmpty(records)) { + return pageList; + } List taskIdList = records.stream().map(ProcessApprovalRecord::getTaskId).collect(Collectors.toList()); LambdaQueryWrapper processSnapshotWrapper = new LambdaQueryWrapper<>(); processSnapshotWrapper.in(ProcessSnapshot::getTaskId, taskIdList); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessNodeService.java b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessNodeService.java index 23e65950..62ac5b30 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessNodeService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessNodeService.java @@ -14,7 +14,10 @@ import com.jero.modules.activiti.mapper.ProcessModelNodeMapper; import com.jero.modules.activiti.mapper.ProcessNodeMapper; import com.jero.modules.activiti.process.common.enums.ProcessType; import lombok.extern.slf4j.Slf4j; +import org.activiti.engine.HistoryService; import org.activiti.engine.RuntimeService; +import org.activiti.engine.history.HistoricProcessInstance; +import org.activiti.engine.history.HistoricVariableInstance; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; @@ -22,6 +25,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -48,6 +52,9 @@ public class ProcessNodeService extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ProcessModelNode::getNodeType, "userTask"); @@ -139,12 +146,37 @@ public class ProcessNodeService extends ServiceImpl variableInstances = historyService.createHistoricVariableInstanceQuery() + .processInstanceId(processInstanceId) + .list(); + + // 将变量转换为Map形式 + Map variableMap = new HashMap<>(); + for (HistoricVariableInstance variableInstance : variableInstances) { + variableMap.put(variableInstance.getVariableName(), variableInstance.getValue()); + } + variable = variableMap.get(DISTRIBUTE); + } else { + // 如果没分发 则不显示 主排查人单线审核 主排查人汇总节点 + String mainInstanceId = (String) runtimeService.getVariable(processInstanceId, ActivitiCommon.MAIN_INSTANCE_ID); + variable = runtimeService.getVariable(mainInstanceId, DISTRIBUTE); + } + boolean distribute = ObjectUtil.isNotNull(variable) && YesOrNoEnum.YES.getValue().equals(variable.toString()); if (!distribute) { - processNodeList.removeIf( v -> v.getXmlNodeId().equals(MAIN_CHECK_USER_APPROVAL) + processNodeList.removeIf(v -> v.getXmlNodeId().equals(MAIN_CHECK_USER_APPROVAL) || v.getXmlNodeId().equals(MAIN_CHECK_USER_COLLECT)); } // 判断有没有 主排查人重新分批下发 节点 @@ -153,7 +185,7 @@ public class ProcessNodeService extends ServiceImpl list = parService.list(parWrapper); if (CollectionUtils.isEmpty(list)) { - processNodeList.removeIf( v -> v.getXmlNodeId().equals(MAIN_CHECK_USER_REDISTRIBUTE)); + processNodeList.removeIf(v -> v.getXmlNodeId().equals(MAIN_CHECK_USER_REDISTRIBUTE)); } } }