From 91b7b99f86cb2497c83bdaa66612652c13d00ad7 Mon Sep 17 00:00:00 2001 From: aalehin Date: Mon, 22 May 2023 16:50:58 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-280 --- registry service update --- .../data/register/MoneyBalanceRegister.java | 56 +++++++++--- .../AdmittedLiabilitiesRegisterService.java | 82 +++++++++++++----- .../CoveredLiabilitiesRegisterService.java | 85 ++++++++++++++----- .../service/DepoBalanceRegisterService.java | 57 +++++++++---- ...DepoPaymentInstructionRegisterService.java | 73 +++++++++++----- .../ExcludeLiabilitiesRegisterService.java | 64 ++++++++------ .../service/LiabilitiesRegisterService.java | 65 ++++++++------ .../service/MoneyBalanceRegisterService.java | 72 +++++++++++----- ...oneyPaymentInstructionRegisterService.java | 55 +++++++----- .../ru/spcex/platform/enumeration/Task.java | 2 + 10 files changed, 424 insertions(+), 187 deletions(-) diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/MoneyBalanceRegister.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/MoneyBalanceRegister.java index 90dd23ad5..dff2d1116 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/MoneyBalanceRegister.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/MoneyBalanceRegister.java @@ -7,7 +7,7 @@ import java.math.BigDecimal; /** * Реестр остатков денежных средств - * + *

* DB table: MONEY_BALANCE_REGISTER **/ public class MoneyBalanceRegister extends BusinessObject { @@ -24,74 +24,108 @@ public class MoneyBalanceRegister extends BusinessObject { private String companyFullName; private Long companyId; + public static MoneyBalanceRegister makeMoneyBalanceRegister(String setHouseName, + String account, + String infoAccount, + BigDecimal remainderSum, + BigDecimal blockedSum, + BigDecimal unblockedSum, + String inn, + Long sessionId, + String companyFullName, + Long companyId) { + MoneyBalanceRegister moneyBalanceRegister = new MoneyBalanceRegister(); + moneyBalanceRegister.setSetHouseName(setHouseName); + moneyBalanceRegister.setAccount(account); + moneyBalanceRegister.setInfoAccount(infoAccount); + moneyBalanceRegister.setRemainderSum(remainderSum); + moneyBalanceRegister.setBlockedSum(blockedSum); + moneyBalanceRegister.setUnblockedSum(unblockedSum); + moneyBalanceRegister.setInn(inn); + moneyBalanceRegister.setSessionId(sessionId); + moneyBalanceRegister.setCompanyFullName(companyFullName); + moneyBalanceRegister.setCompanyId(companyId); + return moneyBalanceRegister; + } + public String getSetHouseName() { return setHouseName; } + public void setSetHouseName(String value) { - this.setHouseName=value; + this.setHouseName = value; } public String getAccount() { return account; } + public void setAccount(String value) { - this.account=value; + this.account = value; } public String getInfoAccount() { return infoAccount; } + public void setInfoAccount(String value) { - this.infoAccount=value; + this.infoAccount = value; } public BigDecimal getRemainderSum() { return remainderSum; } + public void setRemainderSum(BigDecimal value) { - this.remainderSum=value; + this.remainderSum = value; } public BigDecimal getBlockedSum() { return blockedSum; } + public void setBlockedSum(BigDecimal value) { - this.blockedSum=value; + this.blockedSum = value; } public BigDecimal getUnblockedSum() { return unblockedSum; } + public void setUnblockedSum(BigDecimal value) { - this.unblockedSum=value; + this.unblockedSum = value; } public String getInn() { return inn; } + public void setInn(String value) { - this.inn=value; + this.inn = value; } public Long getSessionId() { return sessionId; } + public void setSessionId(Long value) { - this.sessionId=value; + this.sessionId = value; } public String getCompanyFullName() { return companyFullName; } + public void setCompanyFullName(String value) { - this.companyFullName=value; + this.companyFullName = value; } public Long getCompanyId() { return companyId; } + public void setCompanyId(Long value) { - this.companyId=value; + this.companyId = value; } } \ No newline at end of file diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/AdmittedLiabilitiesRegisterService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/AdmittedLiabilitiesRegisterService.java index 37a601135..221edb4db 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/AdmittedLiabilitiesRegisterService.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/AdmittedLiabilitiesRegisterService.java @@ -6,19 +6,31 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; +import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.register.AdmittedLiabilitiesRegister; +import ru.clearing.classes.statics.data.registry.Registry; +import ru.clearing.classes.statics.data.security.Security; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; -import ru.spcex.clearing.platform.messaging.domain.Consts; -import ru.spcex.clearing.platform.messaging.domain.cud.registry.AdmittedLiabilitiesRegisterNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Optional; + +import static ru.spcex.platform.enumeration.Task.createRegistry_GRRT; + public class AdmittedLiabilitiesRegisterService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg admittedLiabilitiesRegisterMap; + private final Imdg registryMap; + private final Imdg companyMap; + private final Imdg securityMap; @Autowired public AdmittedLiabilitiesRegisterService(Consumer kafkaQueue, @@ -26,33 +38,59 @@ public class AdmittedLiabilitiesRegisterService extends QueueConsumer implements ImdgProvider imdgProvider) { super(kafkaQueue, kafkaProducer); this.admittedLiabilitiesRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_AdmittedLiabilitiesRegister, AdmittedLiabilitiesRegister.class); + this.registryMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); + this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); + this.securityMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Security, Security.class); } @Override public void afterPropertiesSet() { - callback(AdmittedLiabilitiesRegisterNewRequest.class) + callback(LauncherCommandRequest.class) .setConsumer(this::admittedLiabilitiesRegisterNew) - .forDestination(Consts.REGISTRY_ADMITTED_LIABILITIES_REGISTER_NEW, callbacks::put); + .forDestination(createRegistry_GRRT.topic(), callbacks::put);//TODO FIX UP WHAT KIND OF TOPIC init(); } - public void admittedLiabilitiesRegisterNew(BaseRequest userRequest) { - AdmittedLiabilitiesRegisterNewRequest req = userRequest.getRequestPayload(); - log.debug("AdmittedLiabilitiesRegisterNewRequest received"); - AdmittedLiabilitiesRegister register = new AdmittedLiabilitiesRegister(); - register.setSecuritySymbol(req.getSecuritySymbol()); - register.setSecurityFullName(req.getSecurityFullName()); - register.setSessionId(req.getSessionId()); - register.setClearingCode(req.getClearingCode()); - register.setAccount(req.getAccount()); - register.setCompanyId(req.getCompanyId()); - register.setAmount(req.getAmount()); - register.setId(req.getId()); - register.setCreated(req.getCreatedAt()); - register.setUpdated(req.getUpdatedAt()); - register.setClearingDate(req.getClearingDate()); - register.setCompanyFullName(req.getCompanyFullName()); - admittedLiabilitiesRegisterMap.insert(register); - log.debug("successfully processed, id {}", register.getId()); + + public void admittedLiabilitiesRegisterNew(BaseRequest userRequest) { + log.debug("LauncherCommandRequest received from {}", createRegistry_GRRT.topic()); //TODO FIX UP WHAT KIND OF TOPIC + + List registries = registryMap.getAllValues().stream().filter((x) -> { + return x.getRegistryDesignation().equalsIgnoreCase("O") && + x.getRegistryCapacity().equalsIgnoreCase("P") && + x.getRegistryCode().equalsIgnoreCase("T") && + (x.getRegistryInstrumentType().equalsIgnoreCase("S") + || x.getRegistryInstrumentType().equalsIgnoreCase("M")); + } + ).toList(); + HashMap sessionIdByCompanyId = new HashMap<>(); + Collection collection = admittedLiabilitiesRegisterMap.getAllValues(); + collection.forEach(x -> sessionIdByCompanyId.put(x.getCompanyId(), x.getSessionId())); + registries.forEach(x -> { + Long existingCompanySessionId = sessionIdByCompanyId.get(x.getCompanyId()); + if (existingCompanySessionId == null) { + insertAdmittedLiabilitiesRegister(x); + } + }); + log.debug("successfully processed"); + } + + private void insertAdmittedLiabilitiesRegister(Registry registry) { + AdmittedLiabilitiesRegister admittedLiabilitiesRegister = new AdmittedLiabilitiesRegister(); + Optional company = companyMap.getAllValues().stream().filter((x)-> x.getId() == 1L).findFirst(); + Optional security = securityMap.getAllValues().stream().filter((x)-> x.getId().equals(registry.getSecurityId())).findFirst(); + String securitySymbol = security.map(Security::getSecuritySymbol).orElse(null); + String securityFullName = security.map(Security::getShortName).orElse(null); + String companyFullName = company.map(Company::getFullName).orElse(null); + admittedLiabilitiesRegister.setCompanyFullName(companyFullName); + admittedLiabilitiesRegister.setSessionId(registry.getSessionId()); + admittedLiabilitiesRegister.setSecuritySymbol(securitySymbol); + admittedLiabilitiesRegister.setSecurityFullName(securityFullName); + admittedLiabilitiesRegister.setCompanyId(registry.getCompanyId()); + admittedLiabilitiesRegister.setClearingCode(registry.getClearingCode()); + admittedLiabilitiesRegister.setAccount(registry.getAccount()); + admittedLiabilitiesRegister.setAmount(registry.getBalance()); + admittedLiabilitiesRegister.setClearingDate(registry.getClearingDate()); + admittedLiabilitiesRegisterMap.insert(admittedLiabilitiesRegister); } } diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/CoveredLiabilitiesRegisterService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/CoveredLiabilitiesRegisterService.java index f658cbdb8..1ccf30151 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/CoveredLiabilitiesRegisterService.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/CoveredLiabilitiesRegisterService.java @@ -6,19 +6,31 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; +import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.register.CoveredLiabilitiesRegister; +import ru.clearing.classes.statics.data.registry.Registry; +import ru.clearing.classes.statics.data.security.Security; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; -import ru.spcex.clearing.platform.messaging.domain.Consts; -import ru.spcex.clearing.platform.messaging.domain.cud.registry.CoveredLiabilitiesRegisterNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Optional; + +import static ru.spcex.platform.enumeration.Task.createRegistry_GRRT; + public class CoveredLiabilitiesRegisterService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg coveredLiabilitiesRegisterMap; + private final Imdg registryMap; + private final Imdg companyMap; + private final Imdg securityMap; @Autowired public CoveredLiabilitiesRegisterService(Consumer kafkaQueue, @@ -26,33 +38,62 @@ public class CoveredLiabilitiesRegisterService extends QueueConsumer implements ImdgProvider imdgProvider) { super(kafkaQueue, kafkaProducer); this.coveredLiabilitiesRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CoveredLiabilitiesRegister, CoveredLiabilitiesRegister.class); + this.registryMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); + this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); + this.securityMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Security, Security.class); } @Override public void afterPropertiesSet() { - callback(CoveredLiabilitiesRegisterNewRequest.class) + callback(LauncherCommandRequest.class) .setConsumer(this::coveredLiabilitiesRegisterNew) - .forDestination(Consts.REGISTRY_COVERED_LIABILITIES_REGISTER_NEW, callbacks::put); + .forDestination(createRegistry_GRRT.topic(), callbacks::put);//TODO FIX UP WHAT KIND OF TOPIC init(); } - public void coveredLiabilitiesRegisterNew(BaseRequest userRequest) { - CoveredLiabilitiesRegisterNewRequest req = userRequest.getRequestPayload(); - log.debug("CoveredLiabilitiesRegisterNewRequest received"); - CoveredLiabilitiesRegister register = new CoveredLiabilitiesRegister(); - register.setCompanyFullName(req.getCompanyFullName()); - register.setSessionId(req.getSessionId()); - register.setSecuritySymbol(req.getSecuritySymbol()); - register.setSecurityFullName(req.getSecurityFullName()); - register.setCompanyId(req.getCompanyId()); - register.setClearingCode(req.getClearingCode()); - register.setAccount(req.getAccount()); - register.setAmount(req.getAmount()); - register.setId(req.getId()); - register.setCreated(req.getCreatedAt()); - register.setUpdated(req.getUpdatedAt()); - register.setClearingDate(req.getClearingDate()); - coveredLiabilitiesRegisterMap.insert(register); - log.debug("successfully processed, id {}", register.getId()); + + public void coveredLiabilitiesRegisterNew(BaseRequest userRequest) { + log.debug("LauncherCommandRequest received from {}", createRegistry_GRRT.topic()); //TODO FIX UP WHAT KIND OF TOPIC + + HashMap sessionIdByCompanyId = new HashMap<>(); + List registries = registryMap.getAllValues().stream().filter((x) -> { + return x.getRegistryDesignation().equalsIgnoreCase("O") && + x.getRegistryCapacity().equalsIgnoreCase("P") && + x.getRegistryCode().equalsIgnoreCase("T") && + (x.getRegistryInstrumentType().equalsIgnoreCase("S") + || x.getRegistryInstrumentType().equalsIgnoreCase("M")) && + (x.getRegistryStatus().equalsIgnoreCase("OK") || + x.getRegistryStatus().equalsIgnoreCase("PROC")); + } + + ).toList(); + Collection collection = coveredLiabilitiesRegisterMap.getAllValues(); + collection.forEach(x -> sessionIdByCompanyId.put(x.getCompanyId(), x.getSessionId())); + registries.forEach(x -> { + Long existingCompanySessionId = sessionIdByCompanyId.get(x.getCompanyId()); + if (existingCompanySessionId == null) { + insertCoveredLiabilitiesRegister(x); + + } + }); + log.debug("successfully processed"); + } + + private void insertCoveredLiabilitiesRegister(Registry registry) { + CoveredLiabilitiesRegister coveredLiabilitiesRegister = new CoveredLiabilitiesRegister(); + Optional company = companyMap.getAllValues().stream().filter((x) -> x.getId() == 1L).findFirst(); + Optional security = securityMap.getAllValues().stream().filter((x) -> x.getId().equals(registry.getSecurityId())).findFirst(); + String securitySymbol = security.map(Security::getSecuritySymbol).orElse(null); + String securityFullName = security.map(Security::getShortName).orElse(null); + String companyFullName = company.map(Company::getFullName).orElse(null); + coveredLiabilitiesRegister.setCompanyFullName(companyFullName); + coveredLiabilitiesRegister.setSessionId(registry.getSessionId()); + coveredLiabilitiesRegister.setSecurityFullName(securityFullName); + coveredLiabilitiesRegister.setCompanyId(registry.getCompanyId()); + coveredLiabilitiesRegister.setClearingCode(registry.getClearingCode()); + coveredLiabilitiesRegister.setAccount(registry.getAccount()); + coveredLiabilitiesRegister.setAmount(registry.getBalance()); + coveredLiabilitiesRegister.setClearingDate(registry.getClearingDate()); + coveredLiabilitiesRegisterMap.insert(coveredLiabilitiesRegister); } } diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/DepoBalanceRegisterService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/DepoBalanceRegisterService.java index 9ca959a81..c56d0df36 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/DepoBalanceRegisterService.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/DepoBalanceRegisterService.java @@ -8,19 +8,27 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import ru.clearing.classes.statics.data.register.DepoBalanceRegister; +import ru.clearing.classes.statics.data.registry.Registry; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; -import ru.spcex.clearing.platform.messaging.domain.Consts; -import ru.spcex.clearing.platform.messaging.domain.cud.registry.DepoBalanceRegisterNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import java.time.Instant; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; + +import static ru.spcex.platform.enumeration.Task.createRegistry_GRRT; + @Service public class DepoBalanceRegisterService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg depoBalanceRegisterMap; + private final Imdg registryMap; @Autowired public DepoBalanceRegisterService(Consumer kafkaQueue, @@ -28,29 +36,42 @@ public class DepoBalanceRegisterService extends QueueConsumer implements Initial ImdgProvider imdgProvider) { super(kafkaQueue, kafkaProducer); this.depoBalanceRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_DepoBalanceRegister, DepoBalanceRegister.class); + this.registryMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); } @Override public void afterPropertiesSet() { - callback(DepoBalanceRegisterNewRequest.class) + callback(LauncherCommandRequest.class) .setConsumer(this::depoBalanceRegisterNew) - .forDestination(Consts.REGISTRY_DEPO_BALANCE_REGISTER_NEW, callbacks::put); + .forDestination(createRegistry_GRRT.topic(), callbacks::put); init(); } - public void depoBalanceRegisterNew(BaseRequest userRequest) { - DepoBalanceRegisterNewRequest req = userRequest.getRequestPayload(); - log.debug("DepoBalanceRegisterNewRequest received"); - DepoBalanceRegister register = new DepoBalanceRegister(); - register.setId(req.getId()); - register.setCreated(req.getCreatedAt()); - register.setUpdated(req.getUpdatedAt()); - register.setCompanyId(req.getCompanyId()); - register.setSessionId(req.getSessionId()); - register.setDepoCode(req.getDepoCode()); - register.setQuantity(req.getQuantity()); - register.setSecuritySymbol(req.getSecuritySymbol()); - depoBalanceRegisterMap.insert(register); - log.debug("successfully processed, id {}", register.getId()); + public void depoBalanceRegisterNew(BaseRequest userRequest) { + log.debug("LauncherCommandRequest received from {}", createRegistry_GRRT.topic()); + + HashMap sessionIdByCompanyId = new HashMap<>(); + List registries = registryMap.getAllValues().stream().filter((x) -> x.getAccountType().equalsIgnoreCase("DEPO")).toList(); + Collection collection = depoBalanceRegisterMap.getAllValues(); + collection.forEach(x -> sessionIdByCompanyId.put(x.getCompanyId(), x.getSessionId())); + registries.forEach(x -> { + Long existingCompanySessionId = sessionIdByCompanyId.get(x.getCompanyId()); + if (existingCompanySessionId == null) { + insertDepoBalanceRegister(x); + } + }); + log.debug("successfully processed"); + } + + private void insertDepoBalanceRegister(Registry registry) { + DepoBalanceRegister depoBalanceRegister = new DepoBalanceRegister(); + depoBalanceRegister.setUpdated(Instant.now()); + depoBalanceRegister.setCreated(Instant.now()); + depoBalanceRegister.setCompanyId(registry.getCompanyId()); + depoBalanceRegister.setSessionId(registry.getSessionId()); + depoBalanceRegister.setDepoCode(registry.getAccountType()); + depoBalanceRegister.setQuantity(registry.getCloseBalance()); + depoBalanceRegister.setSecuritySymbol(registry.getSecuritySymbol()); + depoBalanceRegisterMap.insert(depoBalanceRegister); } } \ No newline at end of file diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/DepoPaymentInstructionRegisterService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/DepoPaymentInstructionRegisterService.java index 263191948..e105c5703 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/DepoPaymentInstructionRegisterService.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/DepoPaymentInstructionRegisterService.java @@ -6,19 +6,31 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; +import ru.clearing.classes.statics.data.misc.Session; +import ru.clearing.classes.statics.data.payment.PaymentInstruction; import ru.clearing.classes.statics.data.register.DepoPaymentInstructionRegister; +import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; -import ru.spcex.clearing.platform.messaging.domain.Consts; -import ru.spcex.clearing.platform.messaging.domain.cud.registry.DepoPaymentInstructionRegisterNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; + +import static ru.spcex.platform.enumeration.Task.createRegistry_GORR; +import static ru.spcex.platform.enumeration.Task.createRegistry_GRRT; + public class DepoPaymentInstructionRegisterService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg depoPaymentInstructionRegisterMap; + private final Imdg paymentInstructionMap; + private final Imdg sessionMap; + private final Imdg tradingClearingRegistryMap; @Autowired public DepoPaymentInstructionRegisterService(Consumer kafkaQueue, @@ -26,31 +38,52 @@ public class DepoPaymentInstructionRegisterService extends QueueConsumer impleme ImdgProvider imdgProvider) { super(kafkaQueue, kafkaProducer); this.depoPaymentInstructionRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_DepoPaymentInstructionRegister, DepoPaymentInstructionRegister.class); + this.paymentInstructionMap = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class); + this.sessionMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); + this.tradingClearingRegistryMap = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); } @Override public void afterPropertiesSet() { - callback(DepoPaymentInstructionRegisterNewRequest.class) + callback(LauncherCommandRequest.class) .setConsumer(this::depoPaymentInstructionRegisterNew) - .forDestination(Consts.REGISTRY_DEPO_PAYMENT_INSTRUCTION_REGISTER_NEW, callbacks::put); + .forDestination(createRegistry_GRRT.topic(), callbacks::put); init(); } - public void depoPaymentInstructionRegisterNew(BaseRequest userRequest) { - DepoPaymentInstructionRegisterNewRequest req = userRequest.getRequestPayload(); - log.debug("DepoPaymentInstructionRegisterNewRequest received"); - DepoPaymentInstructionRegister register = new DepoPaymentInstructionRegister(); - register.setId(req.getId()); - register.setCreated(req.getCreatedAt()); - register.setUpdated(req.getUpdatedAt()); - register.setCompanyId(req.getCompanyId()); - register.setTradingClearingRegistryType(req.getTradingClearingRegistryType()); - register.setTradingClearingRegistry(req.getTradingClearingRegistry()); - register.setCbCode(req.getCbCode()); - register.setQuantity(req.getQuantity()); - register.setDirection(req.getDirection()); - register.setSessionId(req.getSessionId()); - depoPaymentInstructionRegisterMap.insert(register); - log.debug("successfully processed, id {}", register.getId()); + + public void depoPaymentInstructionRegisterNew(BaseRequest userRequest) { + log.debug("LauncherCommandRequest received from {}", createRegistry_GORR.topic()); + HashMap sessionIdByPaymentInstructions = new HashMap<>(); + paymentInstructionMap.getAllValues().stream().forEach(x -> sessionIdByPaymentInstructions.put(x.getSessionId(), x)); + List actualSession = sessionMap.getAllValues().stream().filter(x -> + sessionIdByPaymentInstructions.containsKey(x.getId()) && x.getSection().equalsIgnoreCase("FOND") + ).toList(); + HashMap sessionIdByCompanyId = new HashMap<>(); + Collection collection = depoPaymentInstructionRegisterMap.getAllValues(); + collection.forEach(x -> sessionIdByCompanyId.put(x.getCompanyId(), x.getSessionId())); + actualSession.forEach(x -> { + Long existingCompanySessionId = sessionIdByCompanyId.get(x.getCompanyId()); + if (existingCompanySessionId == null) { + insertDepoPaymentInstructionRegister(sessionIdByPaymentInstructions.get(x.getId())); + } + }); + + log.debug("successfully processed"); + } + + private void insertDepoPaymentInstructionRegister(PaymentInstruction paymentInstruction) { + DepoPaymentInstructionRegister depoPaymentInstructionRegister = new DepoPaymentInstructionRegister(); + //todo fix up Optional tradingClearingRegistry = tradingClearingRegistryMap.getAllValues().stream().filter((x)-> x.getCompanyId().equals(paymentInstruction.getCompanyId())).findFirst(); + + depoPaymentInstructionRegister.setCompanyId(paymentInstruction.getSenderId()); + //todo fix up depoPaymentInstructionRegister.setTradingClearingRegistryType(); + //todo fix up depoPaymentInstructionRegister.setTradingClearingRegistry(); + depoPaymentInstructionRegister.setCbCode("=RNCB-BE-01"); + depoPaymentInstructionRegister.setQuantity(paymentInstruction.getCreditLeg_amount()); + //todo fix up depoPaymentInstructionRegister.setDirection(paymentInstruction.getCreditLeg_direction()); + depoPaymentInstructionRegister.setSessionId(paymentInstruction.getSessionId()); + + depoPaymentInstructionRegisterMap.insert(depoPaymentInstructionRegister); } } diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ExcludeLiabilitiesRegisterService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ExcludeLiabilitiesRegisterService.java index f56dcd1b7..87759c1ee 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ExcludeLiabilitiesRegisterService.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/ExcludeLiabilitiesRegisterService.java @@ -7,18 +7,25 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import ru.clearing.classes.statics.data.register.ExcludeLiabilitiesRegister; +import ru.clearing.classes.statics.data.registry.Registry; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; -import ru.spcex.clearing.platform.messaging.domain.Consts; -import ru.spcex.clearing.platform.messaging.domain.cud.registry.ExcludeLiabilitiesRegisterNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; + +import static ru.spcex.platform.enumeration.Task.createRegistry_GRRT; + public class ExcludeLiabilitiesRegisterService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg excludeLiabilitiesRegisterMap; + private final Imdg registryMap; @Autowired public ExcludeLiabilitiesRegisterService(Consumer kafkaQueue, @@ -26,37 +33,44 @@ public class ExcludeLiabilitiesRegisterService extends QueueConsumer implements ImdgProvider imdgProvider) { super(kafkaQueue, kafkaProducer); this.excludeLiabilitiesRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ExcludeLiabilitiesRegister, ExcludeLiabilitiesRegister.class); + this.registryMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); } @Override public void afterPropertiesSet() { - callback(ExcludeLiabilitiesRegisterNewRequest.class) + callback(LauncherCommandRequest.class) .setConsumer(this::excludeLiabilitiesRegisterNew) - .forDestination(Consts.REGISTRY_DEPO_PAYMENT_INSTRUCTION_REGISTER_NEW, callbacks::put); + .forDestination(createRegistry_GRRT.topic(), callbacks::put);//TODO FIX UP WHAT KIND OF TOPIC init(); } - public void excludeLiabilitiesRegisterNew(BaseRequest userRequest) { - ExcludeLiabilitiesRegisterNewRequest req = userRequest.getRequestPayload(); - log.debug("ExcludeLiabilitiesRegisterNewRequest received"); - ExcludeLiabilitiesRegister register = new ExcludeLiabilitiesRegister(); - register.setId(req.getId()); - register.setCreated(req.getCreatedAt()); - register.setUpdated(req.getUpdatedAt()); - register.setSessionId(req.getSessionId()); - register.setValidFromDate(req.getValidFromDate()); - register.setValidToDate(req.getValidToDate()); - register.setCompanyId(req.getCompanyId()); - register.setCompanyFullName(req.getCompanyFullName()); - register.setInn(req.getInn()); - register.setSegment(req.getSegment()); - register.setRegistryCode(req.getRegistryCode()); - register.setAccount(req.getAccount()); - register.setRegistryStatus(req.getRegistryStatus()); - register.setCurrency(req.getCurrency()); - register.setSumLiabilities(req.getSumLiabilities()); - excludeLiabilitiesRegisterMap.insert(register); - log.debug("successfully processed, id {}", register.getId()); + public void excludeLiabilitiesRegisterNew(BaseRequest userRequest) { + log.debug("LauncherCommandRequest received from {}", createRegistry_GRRT.topic()); //TODO FIX UP WHAT KIND OF TOPIC + HashMap sessionIdByCompanyId = new HashMap<>(); + List registries = registryMap.getAllValues().stream().filter((x) -> { + return x.getRegistryDesignation().equalsIgnoreCase("O") && + x.getRegistryCapacity().equalsIgnoreCase("P") && + x.getRegistryCode().equalsIgnoreCase("T") && + (x.getRegistryInstrumentType().equalsIgnoreCase("S") + || x.getRegistryInstrumentType().equalsIgnoreCase("M")) && + x.getRegistryStatus().equalsIgnoreCase("FAIL"); + } + ).toList(); + Collection collection = excludeLiabilitiesRegisterMap.getAllValues(); + collection.forEach(x -> sessionIdByCompanyId.put(x.getCompanyId(), x.getSessionId())); + registries.forEach(x -> { + Long existingCompanySessionId = sessionIdByCompanyId.get(x.getCompanyId()); + if (existingCompanySessionId == null) { + insertExcludeLiabilitiesRegister(x); + } + }); + log.debug("successfully processed"); + } + + private void insertExcludeLiabilitiesRegister(Registry registry) { + ExcludeLiabilitiesRegister excludeLiabilitiesRegister = new ExcludeLiabilitiesRegister(); + //TODO MAPPING + excludeLiabilitiesRegisterMap.insert(excludeLiabilitiesRegister); } } diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/LiabilitiesRegisterService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/LiabilitiesRegisterService.java index f310b589a..1b4c48321 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/LiabilitiesRegisterService.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/LiabilitiesRegisterService.java @@ -7,18 +7,25 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import ru.clearing.classes.statics.data.register.LiabilitiesRegister; +import ru.clearing.classes.statics.data.registry.Registry; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; -import ru.spcex.clearing.platform.messaging.domain.Consts; -import ru.spcex.clearing.platform.messaging.domain.cud.registry.LiabilitiesRegisterNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; + +import static ru.spcex.platform.enumeration.Task.createRegistry_GRRT; + public class LiabilitiesRegisterService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg liabilitiesRegisterMap; + private final Imdg registryMap; @Autowired public LiabilitiesRegisterService(Consumer kafkaQueue, @@ -26,37 +33,43 @@ public class LiabilitiesRegisterService extends QueueConsumer implements Initial ImdgProvider imdgProvider) { super(kafkaQueue, kafkaProducer); this.liabilitiesRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesRegister, LiabilitiesRegister.class); + this.registryMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); } @Override public void afterPropertiesSet() { - callback(LiabilitiesRegisterNewRequest.class) + callback(LauncherCommandRequest.class) .setConsumer(this::liabilitiesRegisterNew) - .forDestination(Consts.REGISTRY_LIABILITIES_REGISTER_NEW, callbacks::put); + .forDestination(createRegistry_GRRT.topic(), callbacks::put);//TODO FIX UP WHAT KIND OF TOPIC init(); } - public void liabilitiesRegisterNew(BaseRequest userRequest) { - LiabilitiesRegisterNewRequest req = userRequest.getRequestPayload(); - log.debug("LiabilitiesRegisterNewRequest received"); - LiabilitiesRegister register = new LiabilitiesRegister(); - register.setId(req.getId()); - register.setCreated(req.getCreatedAt()); - register.setUpdated(req.getUpdatedAt()); - register.setSessionId(req.getSessionId()); - register.setValidFromDate(req.getValidFromDate()); - register.setValidToDate(req.getValidToDate()); - register.setCompanyId(req.getCompanyId()); - register.setCompanyFullName(req.getCompanyFullName()); - register.setInn(req.getInn()); - register.setSegment(req.getSegment()); - register.setRegistryCode(req.getRegistryCode()); - register.setAccount(req.getAccount()); - register.setRegistryStatus(req.getRegistryStatus()); - register.setCurrency(req.getCurrency()); - register.setSumLiabilities(req.getSumLiabilities()); - register.setSettlementDate(req.getSettlementDate()); - liabilitiesRegisterMap.insert(register); - log.debug("successfully processed, id {}", register.getId()); + + public void liabilitiesRegisterNew(BaseRequest userRequest) { + log.debug("LauncherCommandRequest received from {}", createRegistry_GRRT.topic()); //TODO FIX UP WHAT KIND OF TOPIC + HashMap sessionIdByCompanyId = new HashMap<>(); + List registries = registryMap.getAllValues().stream().filter((x) -> { + return x.getRegistryDesignation().equalsIgnoreCase("L") && + x.getRegistryCapacity().equalsIgnoreCase("P") && + x.getRegistryCode().equalsIgnoreCase("T") && + (x.getRegistryInstrumentType().equalsIgnoreCase("S") + || x.getRegistryInstrumentType().equalsIgnoreCase("M")); + } + ).toList(); + Collection collection = liabilitiesRegisterMap.getAllValues(); + collection.forEach(x -> sessionIdByCompanyId.put(x.getCompanyId(), x.getSessionId())); + registries.forEach(x -> { + Long existingCompanySessionId = sessionIdByCompanyId.get(x.getCompanyId()); + if (existingCompanySessionId == null) { + insertLiabilitiesRegister(x); + } + }); + log.debug("successfully processed"); + } + + private void insertLiabilitiesRegister(Registry registry) { + LiabilitiesRegister liabilitiesRegister = new LiabilitiesRegister(); + //TODO FIX UP + liabilitiesRegisterMap.insert(liabilitiesRegister); } } diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/MoneyBalanceRegisterService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/MoneyBalanceRegisterService.java index d4b26a1ba..da1ca3e8e 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/MoneyBalanceRegisterService.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/MoneyBalanceRegisterService.java @@ -6,19 +6,31 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; +import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.register.MoneyBalanceRegister; +import ru.clearing.classes.statics.data.registry.Registry; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; -import ru.spcex.clearing.platform.messaging.domain.Consts; -import ru.spcex.clearing.platform.messaging.domain.cud.registry.MoneyBalanceRegisterNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Optional; + +import static ru.spcex.platform.enumeration.Task.createRegistry_GBRR; + public class MoneyBalanceRegisterService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg moneyBalanceRegisterMap; + private final Imdg registryMap; + private final Imdg companySymbolsMap; + private final Imdg companyMap; @Autowired public MoneyBalanceRegisterService(Consumer kafkaQueue, @@ -26,34 +38,48 @@ public class MoneyBalanceRegisterService extends QueueConsumer implements Initia ImdgProvider imdgProvider) { super(kafkaQueue, kafkaProducer); this.moneyBalanceRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_MoneyBalanceRegister, MoneyBalanceRegister.class); + this.registryMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); + this.companySymbolsMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); } @Override public void afterPropertiesSet() { - callback(MoneyBalanceRegisterNewRequest.class) + callback(LauncherCommandRequest.class) .setConsumer(this::moneyBalanceRegisterNew) - .forDestination(Consts.REGISTRY_MONEY_BALANCE_REGISTER_NEW, callbacks::put); + .forDestination(createRegistry_GBRR.topic(), callbacks::put); init(); } - public void moneyBalanceRegisterNew(BaseRequest userRequest) { - MoneyBalanceRegisterNewRequest req = userRequest.getRequestPayload(); - log.debug("MoneyBalanceRegisterNewRequest received"); - MoneyBalanceRegister register = new MoneyBalanceRegister(); - register.setSetHouseName(req.getSetHouseName()); - register.setAccount(req.getAccount()); - register.setInfoAccount(req.getInfoAccount()); - register.setRemainderSum(req.getRemainderSum()); - register.setBlockedSum(req.getBlockedSum()); - register.setUnblockedSum(req.getUnblockedSum()); - register.setInn(req.getInn()); - register.setSessionId(req.getSessionId()); - register.setCompanyFullName(req.getCompanyFullName()); - register.setCompanyId(req.getCompanyId()); - register.setId(req.getId()); - register.setCreated(req.getCreatedAt()); - register.setUpdated(req.getUpdatedAt()); - moneyBalanceRegisterMap.insert(register); - log.debug("successfully processed, id {}", register.getId()); + public void moneyBalanceRegisterNew(BaseRequest userRequest) { + log.debug("LauncherCommandRequest received from {}", createRegistry_GBRR.topic()); + HashMap sessionIdByCompanyId = new HashMap<>(); + List registries = registryMap.getAllValues().stream().filter((x) -> x.getAccountType().equalsIgnoreCase("INFO") || x.getAccountType().equalsIgnoreCase("CLRN")).toList(); + Collection collection = moneyBalanceRegisterMap.getAllValues(); + collection.forEach(x -> sessionIdByCompanyId.put(x.getCompanyId(), x.getSessionId())); + registries.forEach(x -> { + Long existingCompanySessionId = sessionIdByCompanyId.get(x.getCompanyId()); + if (existingCompanySessionId == null) { + insertMoneyBalanceRegister(x); + } + }); + log.debug("successfully processed"); + } + + private void insertMoneyBalanceRegister(Registry registry){ + MoneyBalanceRegister moneyBalanceRegister = new MoneyBalanceRegister(); + Optional company = companyMap.getAllValues().stream().filter((x)-> x.getId() == 2L).findFirst(); + String setHouseName = company.map(Company::getShortName).orElse(null); + moneyBalanceRegister.setSetHouseName(setHouseName); + moneyBalanceRegister.setAccount(registry.getAccount()); + moneyBalanceRegister.setInfoAccount(registry.getAccountType()); + moneyBalanceRegister.setRemainderSum(registry.getCloseBalance()); + Optional companySymbol = companySymbolsMap.getAllValues().stream().filter((x)-> x.getCompanyId().equals(registry.getCompanyId())).findFirst(); + String inn = companySymbol.map(CompanySymbols::getCompanySymbolValue).orElse(null); + moneyBalanceRegister.setInn(inn); + moneyBalanceRegister.setSessionId(registry.getSessionId()); + //moneyBalanceRegister.setCompanyFullName(registry.getCompanyFullName()) todo resolve is it ok that it is empty technical task + moneyBalanceRegister.setCompanyId(registry.getCompanyId()); + moneyBalanceRegisterMap.insert(moneyBalanceRegister); } } diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/MoneyPaymentInstructionRegisterService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/MoneyPaymentInstructionRegisterService.java index a342fac19..ee4f711bc 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/MoneyPaymentInstructionRegisterService.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/MoneyPaymentInstructionRegisterService.java @@ -6,19 +6,27 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; +import ru.clearing.classes.statics.data.misc.Session; +import ru.clearing.classes.statics.data.payment.PaymentInstruction; import ru.clearing.classes.statics.data.register.MoneyPaymentInstructionRegister; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; -import ru.spcex.clearing.platform.messaging.domain.Consts; -import ru.spcex.clearing.platform.messaging.domain.cud.registry.MoneyPaymentInstructionRegisterNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import java.util.HashMap; +import java.util.List; + +import static ru.spcex.platform.enumeration.Task.createRegistry_GORR; + public class MoneyPaymentInstructionRegisterService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg moneyPaymentInstructionRegisterMap; + private final Imdg paymentInstructionMap; + private final Imdg sessionMap; @Autowired public MoneyPaymentInstructionRegisterService(Consumer kafkaQueue, @@ -26,31 +34,38 @@ public class MoneyPaymentInstructionRegisterService extends QueueConsumer implem ImdgProvider imdgProvider) { super(kafkaQueue, kafkaProducer); this.moneyPaymentInstructionRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_MoneyPaymentInstructionRegister, MoneyPaymentInstructionRegister.class); + this.paymentInstructionMap = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class); + this.sessionMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); } @Override public void afterPropertiesSet() { - callback(MoneyPaymentInstructionRegisterNewRequest.class) + callback(LauncherCommandRequest.class) .setConsumer(this::moneyPaymentInstructionRegisterNew) - .forDestination(Consts.REGISTRY_MONEY_PAYMENT_INSTRUCTION_REGISTER_NEW, callbacks::put); + .forDestination(createRegistry_GORR.topic(), callbacks::put); init(); } - public void moneyPaymentInstructionRegisterNew(BaseRequest userRequest) { - MoneyPaymentInstructionRegisterNewRequest req = userRequest.getRequestPayload(); - log.debug("MoneyPaymentInstructionRegisterNewRequest received"); - MoneyPaymentInstructionRegister register = new MoneyPaymentInstructionRegister(); - register.setCreditLegAccount(req.getCreditLegAccount()); - register.setCreditLegAmount(req.getCreditLegAmount()); - register.setCreditLegCurrencyCode(req.getCreditLegCurrencyCode()); - register.setDebitLegAccount(req.getDebitLegAccount()); - register.setSender(req.getSender()); - register.setAddressee(req.getAddressee()); - register.setId(req.getId()); - register.setCreated(req.getCreatedAt()); - register.setUpdated(req.getUpdatedAt()); - register.setClearingDate(req.getClearingDate()); - moneyPaymentInstructionRegisterMap.insert(register); - log.debug("successfully processed, id {}", register.getId()); + public void moneyPaymentInstructionRegisterNew(BaseRequest userRequest) { + log.debug("LauncherCommandRequest received from {}", createRegistry_GORR.topic()); + HashMap sessionIdByPaymentInstructions = new HashMap<>(); + paymentInstructionMap.getAllValues().stream().forEach(x -> sessionIdByPaymentInstructions.put(x.getSessionId(), x)); + List actualSession = sessionMap.getAllValues().stream().filter(x-> + sessionIdByPaymentInstructions.containsKey(x.getId()) && x.getSection().equalsIgnoreCase("MKR") + ).toList(); + actualSession.forEach(x -> insertMoneyPaymentInstructionRegister(sessionIdByPaymentInstructions.get(x.getId()))); + log.debug("successfully processed"); + } + + private void insertMoneyPaymentInstructionRegister(PaymentInstruction paymentInstruction){ + MoneyPaymentInstructionRegister moneyPaymentInstructionRegister = new MoneyPaymentInstructionRegister(); + moneyPaymentInstructionRegister.setCreditLegAccount(paymentInstruction.getCreditLeg_account()); + moneyPaymentInstructionRegister.setCreditLegAmount(paymentInstruction.getCreditLeg_amount()); + moneyPaymentInstructionRegister.setCreditLegCurrencyCode(paymentInstruction.getCreditLeg_currencyCode()); + moneyPaymentInstructionRegister.setDebitLegAccount(paymentInstruction.getDebitLeg_account()); + moneyPaymentInstructionRegister.setSender(paymentInstruction.getSenderId().toString()); + moneyPaymentInstructionRegister.setAddressee(paymentInstruction.getAddresseeId().toString()); + moneyPaymentInstructionRegister.setClearingDate(paymentInstruction.getClearingDate()); + moneyPaymentInstructionRegisterMap.insert(moneyPaymentInstructionRegister); } } diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java index e6b512d58..bdd0365e3 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java @@ -29,7 +29,9 @@ public enum Task implements IEnumKey { reconciliationRequest_RCHK("RCHK"),//Запрос на сверку активов createRegistry_GRYT("GRYT"),//Сформировать регистр на текущий день createRegistry_GRRT("GRRT"),//Сформировать реестр на текущий день + createRegistry_GBRR("GBRR"),//Сформировать реестр на текущий день createRegistry_GORD("GORD"), // Формирование реестра распоряжений, направленных расчетному депозитарию + createRegistry_GORR("GORR"), // Формирование реестра распоряжений, направленных расчетному депозитарию ; private final String key;