diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AccountBalanceService.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AccountBalanceService.java index 087df3786..7b96f2f26 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AccountBalanceService.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AccountBalanceService.java @@ -19,7 +19,6 @@ import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IEnumKey; -import ru.spcex.platform.utils.number.BigDecimalUtil; import ru.spcex.platform.utils.validation.IValidator; import java.math.BigDecimal; @@ -29,6 +28,8 @@ import java.util.Map; import java.util.Optional; import java.util.function.Function; +import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD; + @Component public class AccountBalanceService { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -99,7 +100,7 @@ public class AccountBalanceService { public void updateAccountBalanceByClearing(AccountBalanceClearingRequest req) { ClearingCategory category = getClearingCategoryByCompanyId(req.getCompanyId()); - req.setFirstLegAmount(BigDecimalUtil.safeBD(req.getFirstLegAmount())); + req.setFirstLegAmount(safeBD(req.getFirstLegAmount())); if (category.equals(ClearingCategory.I)) { updateAccountCategoryIClrn(req.getAccountId(), req.getCompanyId(), req.getFirstLegAmount()); updateAccountCategoryITran(req.getFirstLegAmount()); @@ -121,9 +122,9 @@ public class AccountBalanceService { private void updateAccountCategoryIClrn(Long accountId, Long companyId, BigDecimal firstLegAmount) { AccountBalance accountBalance = loadAccountBalance(accountId, companyId, AccountType.Clrn); log.trace("updating AccountBalance {} I CLRN", accountBalance.getId()); - BigDecimal previousFreeBalanceAmount = BigDecimalUtil.safeBD(accountBalance.getFreeBalanceAmount()); - BigDecimal previousChangeBalanceAmount = BigDecimalUtil.safeBD(accountBalance.getChangeBalanceAmount()); - BigDecimal previousBalanceAmount = BigDecimalUtil.safeBD(accountBalance.getBalanceAmount()); + BigDecimal previousFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount()); + BigDecimal previousChangeBalanceAmount = safeBD(accountBalance.getChangeBalanceAmount()); + BigDecimal previousBalanceAmount = safeBD(accountBalance.getBalanceAmount()); accountBalance.setFreeBalanceAmount(previousFreeBalanceAmount.subtract(firstLegAmount)); accountBalance.setChangeBalanceAmount(previousChangeBalanceAmount.subtract(firstLegAmount)); accountBalance.setBalanceAmount(previousBalanceAmount.subtract(firstLegAmount)); @@ -135,7 +136,7 @@ public class AccountBalanceService { private void updateAccountCategoryITran(BigDecimal firstLegAmount) { AccountBalance accountBalance = loadAccountBalance(AccountType.Tran); log.trace("updating AccountBalance {} I TRAN", accountBalance.getId()); - BigDecimal previousDebitAmount = BigDecimalUtil.safeBD(accountBalance.getDebitAmount()); + BigDecimal previousDebitAmount = safeBD(accountBalance.getDebitAmount()); accountBalance.setDebitAmount(previousDebitAmount.add(firstLegAmount.abs())); accountBalance.setUpdated(Instant.now()); log.trace("updateAccountCategoryITran: {}", accountBalance.getId()); @@ -145,9 +146,9 @@ public class AccountBalanceService { private void updateAccountCategoryVInfo(Long accountId, Long companyId, BigDecimal firstLegAmount) { AccountBalance accountBalance = loadAccountBalance(accountId, companyId, AccountType.Info); log.trace("updating AccountBalance {} V INFO", accountBalance.getId()); - BigDecimal previousFreeBalanceAmount = BigDecimalUtil.safeBD(accountBalance.getFreeBalanceAmount()); - BigDecimal changeBalanceAmount = BigDecimalUtil.safeBD(accountBalance.getChangeBalanceAmount()); - BigDecimal balanceAmount = BigDecimalUtil.safeBD(accountBalance.getBalanceAmount()); + BigDecimal previousFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount()); + BigDecimal changeBalanceAmount = safeBD(accountBalance.getChangeBalanceAmount()); + BigDecimal balanceAmount = safeBD(accountBalance.getBalanceAmount()); accountBalance.setFreeBalanceAmount(previousFreeBalanceAmount.subtract(firstLegAmount)); accountBalance.setChangeBalanceAmount(changeBalanceAmount.subtract(firstLegAmount)); accountBalance.setBalanceAmount(balanceAmount.subtract(firstLegAmount)); @@ -159,9 +160,9 @@ public class AccountBalanceService { private void updateAccountCategoryVAnlt(BigDecimal firstLegAmount) { AccountBalance accountBalance = loadAccountBalance(AccountType.Anlt); log.trace("updating AccountBalance {} V ANLT", accountBalance.getId()); - BigDecimal previousFreeBalanceAmount = BigDecimalUtil.safeBD(accountBalance.getFreeBalanceAmount()); - BigDecimal previousChangeBalanceAmount = BigDecimalUtil.safeBD(accountBalance.getChangeBalanceAmount()); - BigDecimal previousBalanceAmount = BigDecimalUtil.safeBD(accountBalance.getBalanceAmount()); + BigDecimal previousFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount()); + BigDecimal previousChangeBalanceAmount = safeBD(accountBalance.getChangeBalanceAmount()); + BigDecimal previousBalanceAmount = safeBD(accountBalance.getBalanceAmount()); accountBalance.setFreeBalanceAmount(previousFreeBalanceAmount.subtract(firstLegAmount)); accountBalance.setChangeBalanceAmount(previousChangeBalanceAmount.subtract(firstLegAmount)); accountBalance.setBalanceAmount(previousBalanceAmount.subtract(firstLegAmount)); @@ -173,8 +174,12 @@ public class AccountBalanceService { private void updateAccountCategoryBClrn(Long accountId, Long companyId, BigDecimal firstLegAmount) { AccountBalance accountBalance = loadAccountBalance(accountId, companyId, AccountType.Clrn); log.trace("updating AccountBalance {} B CLRN", accountBalance.getId()); - BigDecimal debitAmount = BigDecimalUtil.safeBD(accountBalance.getDebitAmount()); + BigDecimal debitAmount = safeBD(accountBalance.getDebitAmount()); + BigDecimal prevFreeBalanceAmount = safeBD(accountBalance.getFreeBalanceAmount()); + BigDecimal prevBalanceAmount = safeBD(accountBalance.getBalanceAmount()); accountBalance.setDebitAmount(plus(debitAmount, firstLegAmount.abs())); + accountBalance.setFreeBalanceAmount(plus(prevFreeBalanceAmount, firstLegAmount)); + accountBalance.setBalanceAmount(plus(prevBalanceAmount, firstLegAmount)); accountBalance.setUpdated(Instant.now()); log.trace("updateAccountCategoryBClrn: {}", accountBalance.getId()); accountBalanceImdg.update(accountBalance);