This commit is contained in:
ialbert 2023-02-03 17:47:34 +03:00
parent ef0a4a09c7
commit e105aad7eb

View file

@ -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);