fix: 流程详情状态筛选失效

This commit is contained in:
2024-07-23 10:19:45 +08:00
parent 487cb6548b
commit 5d104eef2b
2 changed files with 41 additions and 5 deletions
@@ -67,11 +67,15 @@ public class ProcessApprovalRecordService extends ServiceImpl<ProcessApprovalRec
if (StringUtils.isNotBlank(processApprovalRecord.getFinishFlagSearch())){ if (StringUtils.isNotBlank(processApprovalRecord.getFinishFlagSearch())){
wrapper.in("finish_flag", Arrays.asList(processApprovalRecord.getFinishFlagSearch().split(","))); wrapper.in("finish_flag", Arrays.asList(processApprovalRecord.getFinishFlagSearch().split(",")));
} }
wrapper.eq(processApprovalRecord.getFinishFlag() != null, "finish_flag", processApprovalRecord.getFinishFlag());
wrapper.eq("over_due", YesOrNoEnum.NO.getValue()); wrapper.eq("over_due", YesOrNoEnum.NO.getValue());
wrapper.eq("process_instance_id", processApprovalRecord.getProcessInstanceId()); wrapper.eq("process_instance_id", processApprovalRecord.getProcessInstanceId());
wrapper.last("ORDER BY IF(ISNULL(create_time), 1, 0) DESC ,create_time DESC, end_time DESC"); wrapper.last("ORDER BY IF(ISNULL(create_time), 1, 0) DESC ,create_time DESC, end_time DESC");
Page<ProcessApprovalRecord> pageList = this.page(page, wrapper); Page<ProcessApprovalRecord> pageList = this.page(page, wrapper);
List<ProcessApprovalRecord> records = pageList.getRecords(); List<ProcessApprovalRecord> records = pageList.getRecords();
if (CollUtil.isEmpty(records)) {
return pageList;
}
List<String> taskIdList = records.stream().map(ProcessApprovalRecord::getTaskId).collect(Collectors.toList()); List<String> taskIdList = records.stream().map(ProcessApprovalRecord::getTaskId).collect(Collectors.toList());
LambdaQueryWrapper<ProcessSnapshot> processSnapshotWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ProcessSnapshot> processSnapshotWrapper = new LambdaQueryWrapper<>();
processSnapshotWrapper.in(ProcessSnapshot::getTaskId, taskIdList); processSnapshotWrapper.in(ProcessSnapshot::getTaskId, taskIdList);
@@ -14,7 +14,10 @@ import com.jero.modules.activiti.mapper.ProcessModelNodeMapper;
import com.jero.modules.activiti.mapper.ProcessNodeMapper; import com.jero.modules.activiti.mapper.ProcessNodeMapper;
import com.jero.modules.activiti.process.common.enums.ProcessType; import com.jero.modules.activiti.process.common.enums.ProcessType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.HistoryService;
import org.activiti.engine.RuntimeService; 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.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@@ -22,6 +25,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -48,6 +52,9 @@ public class ProcessNodeService extends ServiceImpl<ProcessNodeMapper, ProcessNo
@Resource @Resource
private ProcessApprovalRecordService parService; private ProcessApprovalRecordService parService;
@Resource
private HistoryService historyService;
public void copyNodeFromModel(String modelId, String processDefinitionId) { public void copyNodeFromModel(String modelId, String processDefinitionId) {
LambdaQueryWrapper<ProcessModelNode> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ProcessModelNode> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessModelNode::getNodeType, "userTask"); wrapper.eq(ProcessModelNode::getNodeType, "userTask");
@@ -139,9 +146,34 @@ public class ProcessNodeService extends ServiceImpl<ProcessNodeMapper, ProcessNo
if (StrUtil.isBlank(processInstanceId)) { if (StrUtil.isBlank(processInstanceId)) {
return; return;
} }
boolean finish = false;
// 判断流程是否结束
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
if (historicProcessInstance != null) {
finish = historicProcessInstance.getEndTime() != null;
}
Object variable = null;
if (finish) {
// 查询流程变量
List<HistoricVariableInstance> variableInstances = historyService.createHistoricVariableInstanceQuery()
.processInstanceId(processInstanceId)
.list();
// 将变量转换为Map形式
Map<String, Object> 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); String mainInstanceId = (String) runtimeService.getVariable(processInstanceId, ActivitiCommon.MAIN_INSTANCE_ID);
Object variable = runtimeService.getVariable(mainInstanceId, DISTRIBUTE); variable = runtimeService.getVariable(mainInstanceId, DISTRIBUTE);
}
boolean distribute = ObjectUtil.isNotNull(variable) && YesOrNoEnum.YES.getValue().equals(variable.toString()); boolean distribute = ObjectUtil.isNotNull(variable) && YesOrNoEnum.YES.getValue().equals(variable.toString());
if (!distribute) { if (!distribute) {
processNodeList.removeIf(v -> v.getXmlNodeId().equals(MAIN_CHECK_USER_APPROVAL) processNodeList.removeIf(v -> v.getXmlNodeId().equals(MAIN_CHECK_USER_APPROVAL)