mirror of
https://github.com/dromara/RuoYi-Vue-Plus.git
synced 2025-09-30 07:06:39 +08:00
update 调整撤销流程申请,当前登录人单据
This commit is contained in:
parent
d03d88a4e6
commit
f227c35fb4
@ -1,6 +1,8 @@
|
|||||||
package org.dromara.workflow.domain.vo;
|
package org.dromara.workflow.domain.vo;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.dromara.common.translation.annotation.Translation;
|
||||||
|
import org.dromara.common.translation.constant.TransConstant;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
@ -51,11 +53,12 @@ public class ActHistoryInfoVo implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 办理人id
|
* 办理人id
|
||||||
*/
|
*/
|
||||||
private String assignee;
|
private Long assignee;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 办理人名称
|
* 办理人名称
|
||||||
*/
|
*/
|
||||||
|
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "assignee")
|
||||||
private String nickName;
|
private String nickName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -5,6 +5,7 @@ import lombok.Data;
|
|||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 流程实例视图
|
* 流程实例视图
|
||||||
@ -86,4 +87,9 @@ public class ProcessInstanceVo implements Serializable {
|
|||||||
* 流程状态
|
* 流程状态
|
||||||
*/
|
*/
|
||||||
private String businessStatusName;
|
private String businessStatusName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 待办任务集合
|
||||||
|
*/
|
||||||
|
private List<TaskVo> taskVoList;
|
||||||
}
|
}
|
||||||
|
@ -13,8 +13,6 @@ import org.dromara.common.core.utils.StringUtils;
|
|||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
import org.dromara.common.tenant.helper.TenantHelper;
|
import org.dromara.common.tenant.helper.TenantHelper;
|
||||||
import org.dromara.system.domain.vo.SysUserVo;
|
|
||||||
import org.dromara.system.service.ISysUserService;
|
|
||||||
import org.dromara.workflow.common.constant.FlowConstant;
|
import org.dromara.workflow.common.constant.FlowConstant;
|
||||||
import org.dromara.workflow.common.enums.BusinessStatusEnum;
|
import org.dromara.workflow.common.enums.BusinessStatusEnum;
|
||||||
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
||||||
@ -22,6 +20,7 @@ import org.dromara.workflow.domain.bo.ProcessInvalidBo;
|
|||||||
import org.dromara.workflow.domain.vo.ActHistoryInfoVo;
|
import org.dromara.workflow.domain.vo.ActHistoryInfoVo;
|
||||||
import org.dromara.workflow.domain.vo.GraphicInfoVo;
|
import org.dromara.workflow.domain.vo.GraphicInfoVo;
|
||||||
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
||||||
|
import org.dromara.workflow.domain.vo.TaskVo;
|
||||||
import org.dromara.workflow.flowable.CustomDefaultProcessDiagramGenerator;
|
import org.dromara.workflow.flowable.CustomDefaultProcessDiagramGenerator;
|
||||||
import org.dromara.workflow.service.IActProcessInstanceService;
|
import org.dromara.workflow.service.IActProcessInstanceService;
|
||||||
import org.flowable.bpmn.model.*;
|
import org.flowable.bpmn.model.*;
|
||||||
@ -62,7 +61,6 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
|
|||||||
private final RepositoryService repositoryService;
|
private final RepositoryService repositoryService;
|
||||||
private final RuntimeService runtimeService;
|
private final RuntimeService runtimeService;
|
||||||
private final HistoryService historyService;
|
private final HistoryService historyService;
|
||||||
private final ISysUserService iSysUserService;
|
|
||||||
private final TaskService taskService;
|
private final TaskService taskService;
|
||||||
|
|
||||||
@Value("${flowable.activity-font-name}")
|
@Value("${flowable.activity-font-name}")
|
||||||
@ -249,18 +247,14 @@ 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()));
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
actHistoryInfoVo.setAssignee(StringUtils.isNotBlank(historicTaskInstance.getAssignee()) ? Long.valueOf(historicTaskInstance.getAssignee()) : null);
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
|
||||||
}
|
}
|
||||||
actHistoryInfoVoList.add(actHistoryInfoVo);
|
actHistoryInfoVoList.add(actHistoryInfoVo);
|
||||||
}
|
}
|
||||||
//翻译人员名称
|
|
||||||
if (CollUtil.isNotEmpty(actHistoryInfoVoList)) {
|
|
||||||
actHistoryInfoVoList.forEach(e -> {
|
|
||||||
if (StringUtils.isNotBlank(e.getAssignee())) {
|
|
||||||
SysUserVo sysUserVo = iSysUserService.selectUserById(Long.valueOf(e.getAssignee()));
|
|
||||||
e.setNickName(ObjectUtil.isNotEmpty(sysUserVo) ? sysUserVo.getNickName() : "");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
List<ActHistoryInfoVo> nodeInfoList = new ArrayList<>();
|
List<ActHistoryInfoVo> nodeInfoList = 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()) {
|
||||||
@ -421,6 +415,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public boolean cancelProcessApply(String processInstanceId) {
|
public boolean cancelProcessApply(String processInstanceId) {
|
||||||
|
try {
|
||||||
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
|
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
|
||||||
.processInstanceId(processInstanceId).processInstanceTenantId(TenantHelper.getTenantId()).startedBy(String.valueOf(LoginHelper.getUserId())).singleResult();
|
.processInstanceId(processInstanceId).processInstanceTenantId(TenantHelper.getTenantId()).startedBy(String.valueOf(LoginHelper.getUserId())).singleResult();
|
||||||
if (ObjectUtil.isNull(processInstance)) {
|
if (ObjectUtil.isNull(processInstance)) {
|
||||||
@ -432,14 +427,16 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
|
|||||||
BusinessStatusEnum.checkStatus(processInstance.getBusinessStatus());
|
BusinessStatusEnum.checkStatus(processInstance.getBusinessStatus());
|
||||||
List<Task> taskList = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).processInstanceId(processInstanceId).list();
|
List<Task> taskList = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).processInstanceId(processInstanceId).list();
|
||||||
for (Task task : taskList) {
|
for (Task task : taskList) {
|
||||||
taskService.addComment(task.getId(), processInstanceId, "申请人撤销申请");
|
taskService.setAssignee(task.getId(), String.valueOf(LoginHelper.getUserId()));
|
||||||
|
taskService.addComment(task.getId(), processInstanceId, LoginHelper.getUsername() + ":撤销申请");
|
||||||
}
|
}
|
||||||
try {
|
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().finished().orderByHistoricTaskInstanceEndTime().asc().list().get(0);
|
||||||
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().finished().orderByHistoricTaskInstanceEndTime().finished().list().get(0);
|
|
||||||
List<String> nodeIds = StreamUtils.toList(taskList, Task::getTaskDefinitionKey);
|
List<String> nodeIds = StreamUtils.toList(taskList, Task::getTaskDefinitionKey);
|
||||||
runtimeService.createChangeActivityStateBuilder()
|
runtimeService.createChangeActivityStateBuilder()
|
||||||
.processInstanceId(processInstanceId)
|
.processInstanceId(processInstanceId)
|
||||||
.moveActivityIdsToSingleActivityId(nodeIds, historicTaskInstance.getTaskDefinitionKey()).changeState();
|
.moveActivityIdsToSingleActivityId(nodeIds, historicTaskInstance.getTaskDefinitionKey()).changeState();
|
||||||
|
Task task = taskService.createTaskQuery().taskTenantId(TenantHelper.getTenantId()).processInstanceId(processInstanceId).list().get(0);
|
||||||
|
taskService.setAssignee(task.getId(), historicTaskInstance.getAssignee());
|
||||||
runtimeService.updateBusinessStatus(processInstanceId, BusinessStatusEnum.CANCEL.getStatus());
|
runtimeService.updateBusinessStatus(processInstanceId, BusinessStatusEnum.CANCEL.getStatus());
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -465,10 +462,26 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
|
|||||||
if (StringUtils.isNotBlank(processInstanceBo.getBusinessKey())) {
|
if (StringUtils.isNotBlank(processInstanceBo.getBusinessKey())) {
|
||||||
query.processInstanceBusinessKey(processInstanceBo.getBusinessKey());
|
query.processInstanceBusinessKey(processInstanceBo.getBusinessKey());
|
||||||
}
|
}
|
||||||
|
if (StringUtils.isNotBlank(processInstanceBo.getCategoryCode())) {
|
||||||
|
query.processInstanceBusinessKey(processInstanceBo.getCategoryCode());
|
||||||
|
}
|
||||||
|
query.orderByProcessInstanceStartTime().desc();
|
||||||
List<HistoricProcessInstance> historicProcessInstanceList = query.listPage(processInstanceBo.getPageNum(), processInstanceBo.getPageSize());
|
List<HistoricProcessInstance> historicProcessInstanceList = query.listPage(processInstanceBo.getPageNum(), processInstanceBo.getPageSize());
|
||||||
|
List<TaskVo> taskVoList = new ArrayList<>();
|
||||||
|
if (CollUtil.isNotEmpty(historicProcessInstanceList)) {
|
||||||
|
List<String> processInstanceIds = StreamUtils.toList(historicProcessInstanceList, HistoricProcessInstance::getId);
|
||||||
|
List<Task> taskList = taskService.createTaskQuery().processInstanceIdIn(processInstanceIds).taskTenantId(TenantHelper.getTenantId()).list();
|
||||||
|
for (Task task : taskList) {
|
||||||
|
taskVoList.add(BeanUtil.toBean(task, TaskVo.class));
|
||||||
|
}
|
||||||
|
}
|
||||||
for (HistoricProcessInstance processInstance : historicProcessInstanceList) {
|
for (HistoricProcessInstance processInstance : historicProcessInstanceList) {
|
||||||
ProcessInstanceVo processInstanceVo = BeanUtil.toBean(processInstance, ProcessInstanceVo.class);
|
ProcessInstanceVo processInstanceVo = BeanUtil.toBean(processInstance, ProcessInstanceVo.class);
|
||||||
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(processInstance.getBusinessStatus()));
|
processInstanceVo.setBusinessStatusName(BusinessStatusEnum.getEumByStatus(processInstance.getBusinessStatus()));
|
||||||
|
if (CollUtil.isNotEmpty(taskVoList)) {
|
||||||
|
List<TaskVo> collect = taskVoList.stream().filter(e -> e.getProcessInstanceId().equals(processInstance.getId())).collect(Collectors.toList());
|
||||||
|
processInstanceVo.setTaskVoList(CollUtil.isNotEmpty(collect) ? collect : Collections.emptyList());
|
||||||
|
}
|
||||||
list.add(processInstanceVo);
|
list.add(processInstanceVo);
|
||||||
}
|
}
|
||||||
long count = query.count();
|
long count = query.count();
|
||||||
|
Loading…
Reference in New Issue
Block a user