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())){
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("process_instance_id", processApprovalRecord.getProcessInstanceId());
wrapper.last("ORDER BY IF(ISNULL(create_time), 1, 0) DESC ,create_time DESC, end_time DESC");
Page<ProcessApprovalRecord> pageList = this.page(page, wrapper);
List<ProcessApprovalRecord> records = pageList.getRecords();
if (CollUtil.isEmpty(records)) {
return pageList;
}
List<String> taskIdList = records.stream().map(ProcessApprovalRecord::getTaskId).collect(Collectors.toList());
LambdaQueryWrapper<ProcessSnapshot> processSnapshotWrapper = new LambdaQueryWrapper<>();
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.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<ProcessNodeMapper, ProcessNo
@Resource
private ProcessApprovalRecordService parService;
@Resource
private HistoryService historyService;
public void copyNodeFromModel(String modelId, String processDefinitionId) {
LambdaQueryWrapper<ProcessModelNode> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessModelNode::getNodeType, "userTask");
@@ -139,12 +146,37 @@ public class ProcessNodeService extends ServiceImpl<ProcessNodeMapper, ProcessNo
if (StrUtil.isBlank(processInstanceId)) {
return;
}
// 如果没分发 则不显示 主排查人单线审核 主排查人汇总节点
String mainInstanceId = (String) runtimeService.getVariable(processInstanceId, ActivitiCommon.MAIN_INSTANCE_ID);
Object variable = runtimeService.getVariable(mainInstanceId, DISTRIBUTE);
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);
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<ProcessNodeMapper, ProcessNo
parWrapper.eq(ProcessApprovalRecord::getNodeId, MAIN_CHECK_USER_REDISTRIBUTE);
List<ProcessApprovalRecord> 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));
}
}
}