fix 修复 抄送后有多条记录信息展示错误

fix 修复 调整模型部署错误
add 增加 流程记录版本信息
2.X
疯狂的狮子Li 10 months ago
parent 8db7fb661b
commit 54eccf5ce3

Binary file not shown.

@ -67,4 +67,12 @@ public interface RemoteWorkflowService {
*/ */
void setVariablesLocal(String taskId, Map<String, Object> variables); void setVariablesLocal(String taskId, Map<String, Object> variables);
/**
* idid
*
* @param businessKey id
* @return
*/
String getInstanceIdByBusinessKey(String businessKey);
} }

@ -36,6 +36,10 @@ public class ActHistoryInfoVo implements Serializable {
* id * id
*/ */
private String processInstanceId; private String processInstanceId;
/**
*
*/
private Integer version;
/** /**
* *
*/ */

@ -56,4 +56,15 @@ public class RemoteWorkflowServiceImpl implements RemoteWorkflowService {
public void setVariablesLocal(String taskId, Map<String, Object> variables) { public void setVariablesLocal(String taskId, Map<String, Object> variables) {
workflowService.setVariablesLocal(taskId, variables); workflowService.setVariablesLocal(taskId, variables);
} }
/**
* idid
*
* @param businessKey id
* @return
*/
@Override
public String getInstanceIdByBusinessKey(String businessKey) {
return workflowService.getInstanceIdByBusinessKey(businessKey);
}
} }

@ -65,4 +65,12 @@ public interface WorkflowService {
* @param variables * @param variables
*/ */
void setVariablesLocal(String taskId, Map<String, Object> variables); void setVariablesLocal(String taskId, Map<String, Object> variables);
/**
* idid
*
* @param businessKey id
* @return
*/
String getInstanceIdByBusinessKey(String businessKey);
} }

@ -33,7 +33,7 @@ import org.dromara.workflow.service.IWfNodeConfigService;
import org.dromara.workflow.service.IWfTaskBackNodeService; import org.dromara.workflow.service.IWfTaskBackNodeService;
import org.dromara.workflow.utils.QueryUtils; import org.dromara.workflow.utils.QueryUtils;
import org.dromara.workflow.utils.WorkflowUtils; import org.dromara.workflow.utils.WorkflowUtils;
import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.*;
import org.flowable.engine.*; import org.flowable.engine.*;
import org.flowable.engine.history.HistoricActivityInstance; import org.flowable.engine.history.HistoricActivityInstance;
import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.history.HistoricProcessInstance;
@ -280,7 +280,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
} }
} }
map.put("taskList", taskList); map.put("taskList", taskList);
List<ActHistoryInfoVo> historyTaskList = getHistoryTaskList(processInstanceId); List<ActHistoryInfoVo> historyTaskList = getHistoryTaskList(processInstanceId, processInstance.getProcessDefinitionVersion());
map.put("historyList", historyTaskList); map.put("historyList", historyTaskList);
InputStream inputStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), processDefinition.getResourceName()); InputStream inputStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), processDefinition.getResourceName());
xml.append(IoUtil.read(inputStream, StandardCharsets.UTF_8)); xml.append(IoUtil.read(inputStream, StandardCharsets.UTF_8));
@ -292,8 +292,9 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
* *
* *
* @param processInstanceId id * @param processInstanceId id
* @param version
*/ */
private List<ActHistoryInfoVo> getHistoryTaskList(String processInstanceId) { private List<ActHistoryInfoVo> getHistoryTaskList(String processInstanceId, Integer version) {
//查询任务办理记录 //查询任务办理记录
List<HistoricTaskInstance> list = QueryUtils.hisTaskInstanceQuery(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list(); List<HistoricTaskInstance> list = QueryUtils.hisTaskInstanceQuery(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list();
list = StreamUtils.sorted(list, Comparator.comparing(HistoricTaskInstance::getEndTime, Comparator.nullsFirst(Date::compareTo)).reversed()); list = StreamUtils.sorted(list, Comparator.comparing(HistoricTaskInstance::getEndTime, Comparator.nullsFirst(Date::compareTo)).reversed());
@ -305,27 +306,48 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
if (ObjectUtil.isNotEmpty(historicTaskInstance.getDurationInMillis())) { if (ObjectUtil.isNotEmpty(historicTaskInstance.getDurationInMillis())) {
actHistoryInfoVo.setRunDuration(getDuration(historicTaskInstance.getDurationInMillis())); actHistoryInfoVo.setRunDuration(getDuration(historicTaskInstance.getDurationInMillis()));
} }
actHistoryInfoVo.setVersion(version);
actHistoryInfoVoList.add(actHistoryInfoVo); actHistoryInfoVoList.add(actHistoryInfoVo);
} }
List<ActHistoryInfoVo> historyInfoVoList = new ArrayList<>(); List<ActHistoryInfoVo> historyInfoVoList = new ArrayList<>();
Map<String, List<ActHistoryInfoVo>> groupByKey = StreamUtils.groupByKey(actHistoryInfoVoList, ActHistoryInfoVo::getTaskDefinitionKey); Map<String, List<ActHistoryInfoVo>> groupByKey = StreamUtils.groupByKey(actHistoryInfoVoList, ActHistoryInfoVo::getTaskDefinitionKey);
for (Map.Entry<String, List<ActHistoryInfoVo>> entry : groupByKey.entrySet()) { for (Map.Entry<String, List<ActHistoryInfoVo>> entry : groupByKey.entrySet()) {
ActHistoryInfoVo historyInfoVo = new ActHistoryInfoVo(); ActHistoryInfoVo historyInfoVo = new ActHistoryInfoVo();
BeanUtils.copyProperties(entry.getValue().get(0), historyInfoVo); if (entry.getValue().size() > 1) {
actHistoryInfoVoList.stream().filter(e -> e.getTaskDefinitionKey().equals(entry.getKey()) && e.getEndTime() == null).findFirst() List<ActHistoryInfoVo> historyInfoVos = StreamUtils.filter(entry.getValue(), e -> StringUtils.isNotBlank(e.getAssignee()));
.ifPresent(e -> { if (CollUtil.isNotEmpty(historyInfoVos)) {
historyInfoVo.setStatus("待处理"); ActHistoryInfoVo infoVo = historyInfoVos.get(0);
historyInfoVo.setStartTime(e.getStartTime()); BeanUtils.copyProperties(infoVo, historyInfoVo);
historyInfoVo.setEndTime(null); historyInfoVo.setStatus(infoVo.getEndTime() == null ? "待处理" : "已处理");
historyInfoVo.setRunDuration(null); historyInfoVo.setStartTime(infoVo.getStartTime());
if (ObjectUtil.isEmpty(e.getAssignee())) { historyInfoVo.setEndTime(infoVo.getEndTime() == null ? null : infoVo.getEndTime());
ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(e.getId()); 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())) { if (ObjectUtil.isNotEmpty(participantVo) && CollUtil.isNotEmpty(participantVo.getCandidate())) {
historyInfoVo.setAssignee(StreamUtils.join(participantVo.getCandidate(), Convert::toStr)); 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); historyInfoVoList.add(historyInfoVo);
} }
return historyInfoVoList; return historyInfoVoList;
} }

@ -1,6 +1,9 @@
package org.dromara.workflow.service.impl; package org.dromara.workflow.service.impl;
import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.workflow.domain.ActHiProcinst;
import org.dromara.workflow.service.IActHiProcinstService;
import org.dromara.workflow.service.IActProcessInstanceService; import org.dromara.workflow.service.IActProcessInstanceService;
import org.dromara.workflow.service.WorkflowService; import org.dromara.workflow.service.WorkflowService;
import org.dromara.workflow.utils.WorkflowUtils; import org.dromara.workflow.utils.WorkflowUtils;
@ -19,9 +22,9 @@ import java.util.Map;
@Service @Service
public class WorkflowServiceImpl implements WorkflowService { public class WorkflowServiceImpl implements WorkflowService {
private final IActProcessInstanceService iActProcessInstanceService; private final IActProcessInstanceService actProcessInstanceService;
private final RuntimeService runtimeService; private final RuntimeService runtimeService;
private final IActHiProcinstService actHiProcinstService;
/** /**
* *
* *
@ -30,7 +33,7 @@ public class WorkflowServiceImpl implements WorkflowService {
*/ */
@Override @Override
public boolean deleteRunAndHisInstance(List<String> businessKeys) { public boolean deleteRunAndHisInstance(List<String> businessKeys) {
return iActProcessInstanceService.deleteRunAndHisInstance(businessKeys); return actProcessInstanceService.deleteRunAndHisInstance(businessKeys);
} }
/** /**
@ -98,4 +101,19 @@ public class WorkflowServiceImpl implements WorkflowService {
public void setVariablesLocal(String taskId, Map<String, Object> variables) { public void setVariablesLocal(String taskId, Map<String, Object> variables) {
runtimeService.setVariablesLocal(taskId, variables); runtimeService.setVariablesLocal(taskId, variables);
} }
/**
* idid
*
* @param businessKey id
* @return
*/
@Override
public String getInstanceIdByBusinessKey(String businessKey) {
ActHiProcinst actHiProcinst = actHiProcinstService.selectByBusinessKey(businessKey);
if (actHiProcinst == null) {
return StrUtil.EMPTY;
}
return actHiProcinst.getId();
}
} }

Loading…
Cancel
Save