mirror of
https://github.com/dromara/RuoYi-Vue-Plus.git
synced 2025-09-30 15:16:41 +08:00
add 添加驳回申请人
This commit is contained in:
parent
f58f12c603
commit
7847a80bc2
@ -189,4 +189,15 @@ public class ActTaskController extends BaseController {
|
||||
return toAjax(iActTaskService.deleteMultiInstanceExecution(deleteMultiBo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 驳回审批
|
||||
*
|
||||
* @param backProcessBo 参数
|
||||
*/
|
||||
@Log(title = "任务管理", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/backProcess")
|
||||
public R<String> backProcess(@RequestBody BackProcessBo backProcessBo) {
|
||||
return R.ok(iActTaskService.backProcess(backProcessBo));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,37 @@
|
||||
package org.dromara.workflow.domain.bo;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
/**
|
||||
* 驳回参数请求
|
||||
*
|
||||
* @author may
|
||||
*/
|
||||
@Data
|
||||
public class BackProcessBo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 任务ID
|
||||
*/
|
||||
@NotBlank(message = "任务ID不能为空", groups = AddGroup.class)
|
||||
private String taskId;
|
||||
|
||||
/**
|
||||
* 驳回的节点id(目前未使用,直接驳回到申请人)
|
||||
*/
|
||||
private String targetActivityId;
|
||||
|
||||
/**
|
||||
* 办理意见
|
||||
*/
|
||||
private String message;
|
||||
}
|
@ -101,4 +101,12 @@ public interface IActTaskService {
|
||||
* @return 结果
|
||||
*/
|
||||
boolean deleteMultiInstanceExecution(DeleteMultiBo deleteMultiBo);
|
||||
|
||||
/**
|
||||
* 驳回审批
|
||||
*
|
||||
* @param backProcessBo 参数
|
||||
* @return 流程实例id
|
||||
*/
|
||||
String backProcess(BackProcessBo backProcessBo);
|
||||
}
|
||||
|
@ -38,6 +38,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 任务 服务层实现
|
||||
@ -521,4 +522,48 @@ public class ActTaskServiceImpl implements IActTaskService {
|
||||
throw new ServiceException(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 驳回审批
|
||||
*
|
||||
* @param backProcessBo 参数
|
||||
*/
|
||||
@Override
|
||||
public String backProcess(BackProcessBo backProcessBo) {
|
||||
Task task = taskService.createTaskQuery().taskId(backProcessBo.getTaskId()).taskTenantId(TenantHelper.getTenantId())
|
||||
.taskAssignee(String.valueOf(LoginHelper.getUserId())).singleResult();
|
||||
if (ObjectUtil.isEmpty(task)) {
|
||||
throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL);
|
||||
}
|
||||
if (task.isSuspended()) {
|
||||
throw new ServiceException(FlowConstant.MESSAGE_SUSPENDED);
|
||||
}
|
||||
try {
|
||||
String processInstanceId = task.getProcessInstanceId();
|
||||
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
|
||||
//校验单据
|
||||
BusinessStatusEnum.checkStatus(processInstance.getBusinessStatus());
|
||||
//判断是否有多个任务
|
||||
List<Task> taskList = taskService.createTaskQuery().processInstanceId(processInstanceId).taskTenantId(TenantHelper.getTenantId()).list();
|
||||
//申请人节点
|
||||
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().finished().orderByHistoricTaskInstanceEndTime().asc().list().get(0);
|
||||
String backTaskDefinitionKey = historicTaskInstance.getTaskDefinitionKey();
|
||||
if (taskList.size() > 1) {
|
||||
//当前多个任务驳回到单个节点
|
||||
runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId)
|
||||
.moveActivityIdsToSingleActivityId(taskList.stream().map(Task::getTaskDefinitionKey).distinct().collect(Collectors.toList()), backTaskDefinitionKey)
|
||||
.changeState();
|
||||
} else {
|
||||
//当前单个节点驳回单个节点
|
||||
runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId)
|
||||
.moveActivityIdTo(task.getTaskDefinitionKey(), backTaskDefinitionKey)
|
||||
.changeState();
|
||||
}
|
||||
taskService.setAssignee(task.getId(), historicTaskInstance.getAssignee());
|
||||
runtimeService.updateBusinessStatus(processInstanceId, BusinessStatusEnum.BACK.getStatus());
|
||||
} catch (Exception e) {
|
||||
throw new ServiceException(e.getMessage());
|
||||
}
|
||||
return task.getProcessInstanceId();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user