spring嵌套事务妙用

使用嵌套事务解决因事务回滚无法保存操作日志数据问题

外部事务

    //保存不可回收记录
    CarriageContractRecycleAmountHandler proxy = (CarriageContractRecycleAmountHandler) AopContext.currentProxy();
    logCommand.setMsg("回收量大于承运合同未执行量,不可回收");
    proxy.createContractNotRecycleRecord(contract, currentRecycleAmount, deliverAmountDTO, logCommand);
    throw new BizException(CommonCode.FAIL.getCode(), "回收量大于承运合同未执行量,不可回收");

内部事务

    /** 保存不可回收记录 **/
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void createContractNotRecycleRecord(CarriageContractInfo contract, BigDecimal currentRecycleAmount, DeliverAmountDTO deliverAmountDTO, CarriageContractRecycleLogCommand logCommand) {
        carriagePlanRecycleRecordDomainService.createRecycleRecord(CarriagePlanRecycleRecord.builder()
            .bizId(contract.getId())
            .bizType(CarriagePlanRecycleEnum.RecycleBizType.CARRIAGE_CONTRACT.getCode())
            .carriageContractNo(contract.getCarriageContractNo())
            .carriagePlanNo(null)
            .sysInvoiceNo(null)
            .currentRecycleAmount(currentRecycleAmount)
            .recycleAmount(currentRecycleAmount)
            .recycleStatus(CarriagePlanRecycleEnum.RecycleStatus.NOT_RECYCLE.getCode())
            .bizData(JsonUtil.toJson(logCommand))
            .createUserId(OperateLogEnum.SYS_USER_ID)
            .createTime(LocalDateTime.now())
            .createUserName(OperateLogEnum.SYS_USER_NAME)
            .build());
    }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值