手动抛出异常,事务回滚

2019-05-22  本文已影响0人  林太浪先生

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;

    }

上一篇 下一篇

猜你喜欢

热点阅读