add 添加撤销,终止,驳回,作废等状态校验

This commit is contained in:
songgaoshuai 2024-03-07 15:42:32 +08:00
parent e7907a4664
commit d4685e5f95
3 changed files with 64 additions and 11 deletions

View File

@ -89,5 +89,64 @@ public enum BusinessStatusEnum {
throw new ServiceException("流程状态为空!"); throw new ServiceException("流程状态为空!");
} }
} }
/**
* 撤销流程校验
*
* @param status 状态
*/
public static void checkCancelStatus(String status) {
if (CANCEL.getStatus().equals(status)) {
throw new ServiceException("该单据已撤销!");
} else if (FINISH.getStatus().equals(status)) {
throw new ServiceException("该单据已完成申请!");
} else if (INVALID.getStatus().equals(status)) {
throw new ServiceException("该单据已作废!");
} else if (TERMINATION.getStatus().equals(status)) {
throw new ServiceException("该单据已终止!");
} else if (BACK.getStatus().equals(status)) {
throw new ServiceException("该单据已退回!");
} else if (StringUtils.isBlank(status)) {
throw new ServiceException("流程状态为空!");
}
}
/**
* 驳回流程校验
*
* @param status 状态
*/
public static void checkBackStatus(String status) {
if (BACK.getStatus().equals(status)) {
throw new ServiceException("该单据已退回!");
} else if (FINISH.getStatus().equals(status)) {
throw new ServiceException("该单据已完成申请!");
} else if (INVALID.getStatus().equals(status)) {
throw new ServiceException("该单据已作废!");
} else if (TERMINATION.getStatus().equals(status)) {
throw new ServiceException("该单据已终止!");
} else if (CANCEL.getStatus().equals(status)) {
throw new ServiceException("该单据已撤销!");
} else if (StringUtils.isBlank(status)) {
throw new ServiceException("流程状态为空!");
}
}
/**
* 作废,终止流程校验
*
* @param status 状态
*/
public static void checkInvalidStatus(String status) {
if (FINISH.getStatus().equals(status)) {
throw new ServiceException("该单据已完成申请!");
} else if (INVALID.getStatus().equals(status)) {
throw new ServiceException("该单据已作废!");
} else if (TERMINATION.getStatus().equals(status)) {
throw new ServiceException("该单据已终止!");
} else if (StringUtils.isBlank(status)) {
throw new ServiceException("流程状态为空!");
}
}
} }

View File

@ -60,7 +60,6 @@ import java.util.List;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* 流程实例 服务层实现 * 流程实例 服务层实现
* *
@ -464,10 +463,8 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
for (Task task : StreamUtils.filter(list, e -> StringUtils.isBlank(e.getParentTaskId()))) { for (Task task : StreamUtils.filter(list, e -> StringUtils.isBlank(e.getParentTaskId()))) {
taskService.addComment(task.getId(), task.getProcessInstanceId(), TaskStatusEnum.INVALID.getStatus(), deleteReason); taskService.addComment(task.getId(), task.getProcessInstanceId(), TaskStatusEnum.INVALID.getStatus(), deleteReason);
} }
HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInvalidBo.getProcessInstanceId()).singleResult(); HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInvalidBo.getProcessInstanceId()).singleResult();
if (ObjectUtil.isNotEmpty(historicProcessInstance) && BusinessStatusEnum.FINISH.getStatus().equals(historicProcessInstance.getBusinessStatus())) { BusinessStatusEnum.checkInvalidStatus(historicProcessInstance.getBusinessStatus());
throw new ServiceException("该单据已完成申请!");
}
runtimeService.updateBusinessStatus(processInvalidBo.getProcessInstanceId(), BusinessStatusEnum.INVALID.getStatus()); runtimeService.updateBusinessStatus(processInvalidBo.getProcessInstanceId(), BusinessStatusEnum.INVALID.getStatus());
runtimeService.deleteProcessInstance(processInvalidBo.getProcessInstanceId(), deleteReason); runtimeService.deleteProcessInstance(processInvalidBo.getProcessInstanceId(), deleteReason);
FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(historicProcessInstance.getProcessDefinitionKey()); FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(historicProcessInstance.getProcessDefinitionKey());
@ -577,9 +574,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
if (processInstance.isSuspended()) { if (processInstance.isSuspended()) {
throw new ServiceException(FlowConstant.MESSAGE_SUSPENDED); throw new ServiceException(FlowConstant.MESSAGE_SUSPENDED);
} }
if (BusinessStatusEnum.CANCEL.getStatus().equals(processInstance.getBusinessStatus())) { BusinessStatusEnum.checkCancelStatus(processInstance.getBusinessStatus());
throw new ServiceException("该单据已撤销!");
}
List<Task> taskList = QueryUtils.taskQuery(processInstanceId).list(); List<Task> taskList = QueryUtils.taskQuery(processInstanceId).list();
for (Task task : taskList) { for (Task task : taskList) {
taskService.setAssignee(task.getId(), String.valueOf(LoginHelper.getUserId())); taskService.setAssignee(task.getId(), String.valueOf(LoginHelper.getUserId()));

View File

@ -474,9 +474,7 @@ public class ActTaskServiceImpl implements IActTaskService {
} }
HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery() HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery()
.processInstanceBusinessKey(task.getProcessInstanceId()).singleResult(); .processInstanceBusinessKey(task.getProcessInstanceId()).singleResult();
if (ObjectUtil.isNotEmpty(historicProcessInstance) && BusinessStatusEnum.TERMINATION.getStatus().equals(historicProcessInstance.getBusinessStatus())) { BusinessStatusEnum.checkInvalidStatus(historicProcessInstance.getBusinessStatus());
throw new ServiceException("该单据已终止!");
}
try { try {
if (StringUtils.isBlank(terminationBo.getComment())) { if (StringUtils.isBlank(terminationBo.getComment())) {
terminationBo.setComment(LoginHelper.getLoginUser().getNickname() + "终止了申请"); terminationBo.setComment(LoginHelper.getLoginUser().getNickname() + "终止了申请");
@ -654,6 +652,7 @@ public class ActTaskServiceImpl implements IActTaskService {
if (BusinessStatusEnum.BACK.getStatus().equals(processInstance.getBusinessStatus())) { if (BusinessStatusEnum.BACK.getStatus().equals(processInstance.getBusinessStatus())) {
throw new ServiceException("该单据已退回!"); throw new ServiceException("该单据已退回!");
} }
BusinessStatusEnum.checkBackStatus(processInstance.getBusinessStatus());
//判断是否有多个任务 //判断是否有多个任务
List<Task> taskList = QueryUtils.taskQuery(processInstanceId).list(); List<Task> taskList = QueryUtils.taskQuery(processInstanceId).list();
//申请人节点 //申请人节点