手动抛出异常,事务回滚
https://blog.csdn.net/qq_38283331/article/details/79861973
public class CommonExceptionextends RuntimeException {
private ErrorCodeEnumcodeEnum;
public CommonException(ErrorCodeEnum codeEnum) {
this.codeEnum = codeEnum;
}
public ErrorCodeEnumgetCodeEnum() {
return codeEnum;
}
public void setCodeEnum(ErrorCodeEnum codeEnum) {
this.codeEnum = codeEnum;
}
}
//涉及回滚,发生异常就会事务回滚
@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateTask(TaskUpdateVO taskVO) {
Date startTime = taskVO.getPlanStartTime();
Date endTime = taskVO.getPlanEndTime();
List newEvaluators = taskVO.getEvaluatorList();
checkSelfTime(startTime, endTime);
checkParentTime(taskVO.getParentId(), startTime, endTime);
checkSonTime(taskVO.getId(), startTime, endTime);
TaskDetailVO oldTask =this.queryTaskDetail(taskVO.getId());
if (oldTask ==null) {
//手动抛出异常
throw new CommonException(ErrorCodeEnum.NO_OLD_TASK_ERROR);
}
if (oldTask.getTaskStatus().equals(TaskStatusEnum.HAVE_FINISH.getCode())) {
//手动抛出异常
throw new CommonException(ErrorCodeEnum.TASK_IS_FINISH);
}
List oldEvaluators = oldTask.getEvaluatorList();
String oldResponsibleId = oldTask.getResponsiblePersonId();
String responsiblePersonId = taskVO.getResponsiblePersonId();
taskMapper.update(taskVO);
TaskDetailVO newTask =this.queryTaskDetail(taskVO.getId());
// Set responsiblePersonIdSet = new HashSet<>(Splitter.on(",").trimResults().omitEmptyStrings().splitToList(responsiblePersonId));
if (responsiblePersonId.equals(oldResponsibleId)) {
//只是修改了任务内容,发送邮件
if (!isChangeTask(oldTask, newTask)) {
mailService.sendUpdateTaskNotifyMail(oldTask, newTask);
}
}else {
//负责人修改,对他来说任务被删除
Person deletePerson =personMapper.selectByPrimaryKey(RequestContextUtil.getUserId());
mailService.sendDeleteTaskNotifyMail(oldTask, deletePerson.getPersonName());
// 新的人员认为是新增了任务,发送邮件
mailService.sendAddTaskNotifyMail(newTask);
}
if (!CollectionUtils.isEmpty(newEvaluators)) {
for (EvaluatorVO newEvaluator : newEvaluators) {
if (isEvaluator(oldEvaluators, newEvaluator)) {
if (!(isChangeTask(oldTask, newTask) && oldTask.getResponsiblePersonId().equals(newTask.getResponsiblePersonId())))
mailService.sendUpdateToEvaluator(oldTask, newTask, newEvaluator.getEvaluatorId());
}else {
//评价人变更,新评价人发送被选为评价人邮件
TaskAddVO taskAddVO =new TaskAddVO();
BeanUtils.copyProperties(newTask, taskAddVO);
insertEvaluator(newEvaluator,newTask.getId());
//被选为评价人通知
mailService.sendBeEvaluatorNotifyMail(taskAddVO, newEvaluator, responsiblePersonId);
}
}
}
if (!CollectionUtils.isEmpty(oldEvaluators)) {
for (EvaluatorVO oldEvaluator : oldEvaluators) {
if (!isEvaluator(newEvaluators, oldEvaluator)) {
//数据库删除
evaluateMapper.delete(oldEvaluator.getId());
//向删除的评价人发送评价任务删除提醒
mailService.sendDeleteEvaluateNotifyMail(newTask, oldEvaluator);
}
}
}
return true;
}