From 2a873a22b3a66f0275f1444bf89dbf3edcc292e2 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Wed, 31 May 2023 17:46:22 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-328 --- .../clearing/service/EventsReceiver.java | 3 ++ .../clearing/service/RegistryService.java | 54 +++++++++++++++---- 2 files changed, 46 insertions(+), 11 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java index a39ab9c5a..44a66d543 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java @@ -89,6 +89,9 @@ public class EventsReceiver extends QueueConsumer implements InitializingBean { callback(CreateRegistryRequest.class) .setConsumer(event -> registryService.createRegistry(event.getRequestPayload())) .forDestination(Consts.REGISTRY_NEW, callbacks::put); + callback(LauncherCommandRequest.class) + .setConsumer(event -> registryService.resetBalances()) + .forDestination(Task.createRegistry_GRYT.topic(), callbacks::put); init(); } } 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 d70722db4..de9045b2a 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 @@ -13,6 +13,9 @@ import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.utils.enumeration.IEnumKey; import java.math.BigDecimal; +import java.time.Instant; +import java.util.Collection; +import java.util.Map; @Service public class RegistryService { @@ -54,22 +57,51 @@ public class RegistryService { } - private RegistryTradingParams createRegistryInfoByType(String type){ + private RegistryTradingParams createRegistryInfoByType(String type) { TradingClearingRegistryType registryType = IEnumKey.getEnumByKey(TradingClearingRegistryType.class, type); RegistryTradingParams registryInfo = null; //todo спросить про дубль C и T - switch (registryType){ - case Owner_A -> registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.M, RegistryCapacity.A, RegistryUnit.T); - case Client_B -> registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.M, RegistryCapacity.B, RegistryUnit.T); - case Trustee_C, DepoOfShares_T -> registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.S, RegistryCapacity.A, RegistryUnit.T); - case TrusteeManager_D -> registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.S, RegistryCapacity.A, RegistryUnit.A); - case Issuer_E -> registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.S, RegistryCapacity.E, RegistryUnit.R); - case ToThePlacementOrRedeem_Z -> registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.S, RegistryCapacity.Z, RegistryUnit.R); - case DepoBond_H -> registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.S, RegistryCapacity.A, RegistryUnit.R); - case DepoOfTrustedBond_N -> registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.S, RegistryCapacity.C, RegistryUnit.R); - case DepoOfTrustedShares_S -> registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.S, RegistryCapacity.C, RegistryUnit.T); + switch (registryType) { + case Owner_A -> + registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.M, RegistryCapacity.A, RegistryUnit.T); + case Client_B -> + registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.M, RegistryCapacity.B, RegistryUnit.T); + case Trustee_C, DepoOfShares_T -> + registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.S, RegistryCapacity.A, RegistryUnit.T); + case TrusteeManager_D -> + registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.S, RegistryCapacity.A, RegistryUnit.A); + case Issuer_E -> + registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.S, RegistryCapacity.E, RegistryUnit.R); + case ToThePlacementOrRedeem_Z -> + registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.S, RegistryCapacity.Z, RegistryUnit.R); + case DepoBond_H -> + registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.S, RegistryCapacity.A, RegistryUnit.R); + case DepoOfTrustedBond_N -> + registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.S, RegistryCapacity.C, RegistryUnit.R); + case DepoOfTrustedShares_S -> + registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.S, RegistryCapacity.C, RegistryUnit.T); } return registryInfo; } + + public void resetBalances() { + Collection registriesA = registryImdg.getCollectionObjectsByFieldValues(Map.of( + "registryDesignation", RegistryDesignation.A.getKey()) + ); + + for (Registry registry : registriesA) { + if (RegistryUnit.B.equalsByKey(registry.getRegistryUnit())) { + registry.setBalance(BigDecimal.ZERO); + } + registry.setOpenBalance(BigDecimal.ZERO); + registry.setCloseBalance(BigDecimal.ZERO); + registry.setCheckBalance(BigDecimal.ZERO); + registry.setDiffBalance(BigDecimal.ZERO); + registry.setPlanBalance(BigDecimal.ZERO); + + registry.setUpdated(Instant.now()); + registryImdg.update(registry); + } + } }