|
@@ -261,63 +261,14 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
|
|
|
//先回滚历史数据
|
|
|
//获取历史的流水信息信息
|
|
|
AccountRunningWater oldAccountRunningWater = getById(accountRunningWaterDto.getId());
|
|
|
- //获取余额
|
|
|
- AccountRemainder accountRemainder = accountRemainderService.getOne(q -> q
|
|
|
- .eq(AccountRemainder::getAccountManagementId, oldAccountRunningWater.getAccountManagementId())
|
|
|
- .eq(AccountRemainder::getCurrency, oldAccountRunningWater.getCurrency())
|
|
|
- );
|
|
|
- if (ObjectUtil.isEmpty(accountRemainder)) {
|
|
|
- throw new ServiceException("历史数据 该账户不存在此币种,请前往资金账户添加");
|
|
|
- }
|
|
|
- boolean update = false;
|
|
|
- if ("10".equals(oldAccountRunningWater.getStatus())) {
|
|
|
- BigDecimal subtract = accountRemainder.getRemainder().subtract(oldAccountRunningWater.getAmount());
|
|
|
- if (subtract.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
- throw new ServiceException("修改前数据 账户余额不足");
|
|
|
- }
|
|
|
- update = accountRemainderService.update(q -> q
|
|
|
- .setSql("remainder = remainder - " + oldAccountRunningWater.getAmount())
|
|
|
- .setSql("change_remainder = " + oldAccountRunningWater.getAmount())
|
|
|
- .eq(AccountRemainder::getId, accountRemainder.getId())
|
|
|
- .apply("remainder - {0} >= 0", oldAccountRunningWater.getAmount())
|
|
|
- );
|
|
|
- } else {
|
|
|
- update = accountRemainderService.update(q -> q
|
|
|
- .setSql("remainder = remainder + " + oldAccountRunningWater.getAmount())
|
|
|
- .setSql("change_remainder = " + oldAccountRunningWater.getAmount())
|
|
|
- .eq(AccountRemainder::getId, accountRemainder.getId())
|
|
|
- );
|
|
|
- }
|
|
|
- Assert.eqTrue(update, "余额回滚操作失败");
|
|
|
+ //回滚余额 修改操作类型 收入变支出 支出变收入
|
|
|
+ String status = "10".equals(oldAccountRunningWater.getStatus()) ? "20" : "10";
|
|
|
+ oldAccountRunningWater.setStatus(status);
|
|
|
+ //回滚原数据
|
|
|
+ changeRemainder(oldAccountRunningWater);
|
|
|
+
|
|
|
//再操作修改后数据
|
|
|
- //获取余额
|
|
|
- AccountRemainder accountRemainder1 = accountRemainderService.getOne(q -> q
|
|
|
- .eq(AccountRemainder::getAccountManagementId, accountRunningWaterDto.getAccountManagementId())
|
|
|
- .eq(AccountRemainder::getCurrency, accountRunningWaterDto.getCurrency())
|
|
|
- );
|
|
|
- if (ObjectUtil.isEmpty(accountRemainder)) {
|
|
|
- throw new ServiceException("修改后数据 该账户不存在此币种,请前往资金账户添加");
|
|
|
- }
|
|
|
- boolean update1 = false;
|
|
|
- if ("10".equals(accountRunningWaterDto.getStatus())) {
|
|
|
- update1 = accountRemainderService.update(q -> q
|
|
|
- .setSql("remainder = remainder + " + accountRunningWaterDto.getAmount())
|
|
|
- .setSql("change_remainder = " + accountRunningWaterDto.getAmount())
|
|
|
- .eq(AccountRemainder::getId, accountRemainder1.getId())
|
|
|
- );
|
|
|
- } else {
|
|
|
- BigDecimal subtract = accountRemainder1.getRemainder().subtract(accountRunningWaterDto.getAmount());
|
|
|
- if (subtract.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
- throw new ServiceException("修改后数据 账户余额不足");
|
|
|
- }
|
|
|
- update1 = accountRemainderService.update(q -> q
|
|
|
- .setSql("remainder = remainder - " + accountRunningWaterDto.getAmount())
|
|
|
- .setSql("change_remainder = " + accountRunningWaterDto.getAmount())
|
|
|
- .eq(AccountRemainder::getId, accountRemainder1.getId())
|
|
|
- .apply("remainder - {0} >= 0", accountRunningWaterDto.getAmount())
|
|
|
- );
|
|
|
- }
|
|
|
- Assert.eqTrue(update1, "余额修改操作失败");
|
|
|
+ changeRemainder(accountRunningWaterDto);
|
|
|
|
|
|
this.updateById(accountRunningWaterDto);
|
|
|
}
|