From 6b036c8e91df52abb289cd8ad749876a17192251 Mon Sep 17 00:00:00 2001 From: etreshenkov Date: Fri, 30 Jun 2023 09:28:09 +0300 Subject: [PATCH] fix reset-balance --- .../clearing/service/RegistryService.java | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryService.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryService.java index 0a250883c..a3a240a72 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryService.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryService.java @@ -92,24 +92,44 @@ public class RegistryService { ); for (Registry registry : registriesA) { - if (RegistryUnit.F.equalsByKey(registry.getRegistryUnit())) { - continue; - } if (RegistryUnit.B.equalsByKey(registry.getRegistryUnit())) { registry.setBalance(BigDecimal.ZERO); - Optional registryFOptional = registriesA.stream().filter(rgs -> rgs.getSecurityId().equals(registry.getSecurityId()) && - rgs.getCompanyId().equals(registry.getCompanyId()) && - RegistryUnit.F.equalsByKey(rgs.getRegistryUnit())).findFirst(); - registryFOptional.ifPresent(rgsF -> rgsF.getBalance().subtract(registry.getBalance())); + } + if (RegistryUnit.F.equalsByKey(registry.getRegistryUnit())) { + Optional registryBOptional = registriesA.stream().filter(rgs -> + rgs.getAccount() != null && rgs.getSecurityId() != null && + rgs.getTradingClearingRegistryId() != null && rgs.getCompanyId() != null && + RegistryUnit.B.equalsByKey(rgs.getRegistryUnit()) && + rgs.getSecurityId().equals(registry.getSecurityId()) && + rgs.getCompanyId().equals(registry.getCompanyId()) && + rgs.getAccount().equals(registry.getAccount()) && + rgs.getTradingClearingRegistryId().equals(registry.getTradingClearingRegistryId())).findFirst(); + Optional registryTOptional = registriesA.stream().filter(rgs -> + rgs.getAccount() != null && rgs.getSecurityId() != null && + rgs.getTradingClearingRegistryId() != null && rgs.getCompanyId() != null && + RegistryUnit.T.equalsByKey(rgs.getRegistryUnit()) && + rgs.getSecurityId().equals(registry.getSecurityId()) && + rgs.getCompanyId().equals(registry.getCompanyId()) && + rgs.getAccount().equals(registry.getAccount()) && + rgs.getTradingClearingRegistryId().equals(registry.getTradingClearingRegistryId())).findFirst(); + BigDecimal balanceB; + if (registryBOptional.isPresent()) { + balanceB = registryBOptional.get().getBalance(); + } else { + balanceB = BigDecimal.ZERO; + } + registryTOptional.ifPresent(rgsT -> registry.setBalance(rgsT.getBalance().subtract(balanceB))); } if (RegistryUnit.T.equalsByKey(registry.getRegistryUnit())) { registry.setOpenBalance(registry.getBalance()); } - registry.setCloseBalance(BigDecimal.ZERO); - registry.setCheckBalance(BigDecimal.ZERO); - registry.setDiffBalance(BigDecimal.ZERO); + registry.setDebit(BigDecimal.ZERO); + registry.setSettledDebit(BigDecimal.ZERO); + registry.setCredit(BigDecimal.ZERO); + registry.setSettledCredit(BigDecimal.ZERO); registry.setPlanBalance(BigDecimal.ZERO); + registry.setCloseBalance(registry.getBalance()); registry.setUpdated(Instant.now()); registryImdg.update(registry);