From 11f6ea0b8471a0011faf252c9a3323aea3f0019e Mon Sep 17 00:00:00 2001 From: ialbert Date: Thu, 28 Sep 2023 17:59:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D1=81=D0=BB=D0=B5=20=D0=B7=D0=B0?= =?UTF-8?q?=D1=87=D0=B8=D1=81=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=20DMA?= =?UTF-8?q?U=20=D0=B4=D0=BE=D0=BB=D0=B6=D0=BD=D0=BE=20=D0=B1=D1=8B=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BE=D0=B1=D1=80=D0=B0=D1=89=D0=B5=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=B2=20=D0=A2=D0=A1=20=D0=9F=D1=80=D0=B8=20DM=5FV=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BC=D0=B5=D0=BD=D1=8F=D1=82=D1=8C=20=D0=BD=D0=B0=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5,=20=D0=B7?= =?UTF-8?q?=D0=B0=D1=82=D0=B5=D0=BC=20=D0=B7=D0=B0=D0=BA=D0=BE=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BE?= =?UTF-8?q?=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D1=83=20=D0=B2=20=D0=A2?= =?UTF-8?q?=D0=A1.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clearing/service/RegistryService.java | 77 +++++++++++-------- .../integration/GatewayRequestCreator.java | 6 +- 2 files changed, 50 insertions(+), 33 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 81456f9bf..3bb4deeaf 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 @@ -12,11 +12,14 @@ import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.notification.NotificationSender; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.clearing.AssetOperationListRequest; import ru.spcex.clearing.platform.messaging.domain.cud.clearing.AssetOperationRequest; import ru.spcex.clearing.platform.messaging.domain.cud.clearing.CreateRegistryRequest; import ru.spcex.clearing.platform.messaging.domain.cud.registry.*; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; import ru.spcex.clearing.platform.messaging.service.Status; +import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; import ru.spcex.clearing.service.builder.PaymentInstructionBuilderV2; import ru.spcex.clearing.service.integration.GatewayRequestCreator; import ru.spcex.clearing.service.registry.AssetTBFProcessing; @@ -42,12 +45,11 @@ import ru.spcex.platform.utils.validation.IValidator; import java.math.BigDecimal; import java.time.Instant; import java.util.Collection; +import java.util.List; import java.util.Map; import java.util.Optional; import java.util.function.Function; -import java.util.function.Supplier; -import static ru.spcex.clearing.session.stage.impl.GatewayRequester.mapError; import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD; @Service @@ -66,6 +68,7 @@ public class RegistryService { private final GatewayRequester gateway; private final TradingTimeService trdTime; private final NotificationSender notification; + private final KafkaSender kafkaSender; private final IMessageResolver msgResolver; private final RequestHelper reqHelp; @@ -81,7 +84,7 @@ public class RegistryService { GatewayRequester gateway, TradingTimeService tradingTimeService, NotificationSender notification, - IMessageResolver msgResolver, + KafkaSender kafkaSender, IMessageResolver msgResolver, RequestHelper reqHelp, UserRoleVerification rights, AssetTBFProcessing assets) { @@ -97,6 +100,7 @@ public class RegistryService { this.gateway = gateway; this.trdTime = tradingTimeService; this.notification = notification; + this.kafkaSender = kafkaSender; this.assets = assets; this.gateway.setName("RgsService|DM*V"); this.msgResolver = msgResolver; @@ -207,24 +211,24 @@ public class RegistryService { return reqHelp.error(req.getId(), err.get()); } Registry rgs = validator.getStored(Stored.PresentById); - Supplier gtwBuilder = () -> GatewayRequestCreator.from(rgs); - Optional gatewayOk; - if (trdTime.isTradingTime()) { - gatewayOk = gateway.gatewayRequestAndWait(gtwBuilder); - } else { - log.debug("RegistryChangeStatusExtractRequest rgs.id={} not sending gateway request", rgs.getId()); - gatewayOk = Optional.of(true); - } - if (gatewayOk.isEmpty() || !gatewayOk.get()) { - String gtwErr = msgResolver.resolve(mapError(gatewayOk)); - log.error("{}.id={} {}", - rgs.getRegistryCode(), - rgs.getId(), - gtwErr); - notification.sendNotification(ObjectType.rgst, - "Отметка о получении выписки: %s".formatted(gtwErr), - Priority.HIGH); - } + //Supplier gtwBuilder = () -> GatewayRequestCreator.from(rgs, InOutDirection.in); + //Optional gatewayOk; + //if (trdTime.isTradingTime()) { + // gatewayOk = gateway.gatewayRequestAndWait(gtwBuilder); + //} else { + // log.debug("RegistryChangeStatusExtractRequest rgs.id={} not sending gateway request", rgs.getId()); + // gatewayOk = Optional.of(true); + //} + //if (gatewayOk.isEmpty() || !gatewayOk.get()) { + // String gtwErr = msgResolver.resolve(mapError(gatewayOk)); + // log.error("{}.id={} {}", + // rgs.getRegistryCode(), + // rgs.getId(), + // gtwErr); + // notification.sendNotification(ObjectType.rgst, + // "Отметка о получении выписки: %s".formatted(gtwErr), + // Priority.HIGH); + //} rgs.setRegistryStatus(payload.getRegistryStatus()); log.debug("changing registry.id={} status to {}", rgs.getId(), payload.getRegistryStatus()); registryImdg.update(rgs); @@ -281,22 +285,19 @@ public class RegistryService { .build(); pmt.setTransactionStatus(TransactionStatus.ok.getKey()); pmtImdg.insert(pmt); - //BankAccount bnkAcc = bnkAccImdg.getFirstObjectBySQL("accountId = %d".formatted(accDeb.getId())); - // if (bnkAcc != null) { - // pmt.setAddresseeBankName(bnkAcc.getBankIdentificationCode()); - // pmt.setDebit_csAccount(bnkAcc.getCorrespondentAccount()); - // } - // Currency currency = currImdg.getFirstObjectBySQL("currencyCode = '%s'".formatted(CurrencyCode.RUB.getKey())); - // if (currency != null) { - // pmt.setCreditLeg_securityId(currency.getId()); - // pmt.setDebitLeg_securityId(currency.getId()); - // } - // pmt.setTransactionStatus(TransactionStatus.stld.getKey()); registryImdg.update(dmau); registryImdg.update(asts.a__t()); assets.process(asts.a__b(), asts.a__t(), asts.a__f(), BigDecimal.ZERO); log.debug("IdentificationFundsRequest.id={} dmau.id={} am*t.id={} payment_instruction.id={}", req.getId(), dmau.getId(), asts.a__t().getId(), pmt.getId()); + if (trdTime.isTradingTime()) { + log.trace("sending gateway request for IdentificationFundsRequest.id={} dmau.id={}", + req.getId(), dmau.getId()); + kafkaSender.sendRequestToQueue(Consts.ASSET_OPERATION, + gatewayRequest(dmau, payload.getBalance(), + accCompTcr.getCompany().getTradingCode(), + asts.a__t().getTradingClearingRegistry())); + } return reqHelp.success(req.getId()); } @@ -516,4 +517,16 @@ public class RegistryService { return new RequestInfoUpdate(req.getId(), Status.Success, null); } + private AssetOperationListRequest gatewayRequest(Registry dmau, BigDecimal balance, String tradingCode, String tcrCode) { + AssetOperationListRequest gatewayRequest = new AssetOperationListRequest(); + AssetOperationRequest req = GatewayRequestCreator.from( + dmau.getId(), + null, + balance, + InOutDirection.in, + tradingCode, + tcrCode); + gatewayRequest.setAssetOperationRequests(List.of(req)); + return gatewayRequest; + } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/integration/GatewayRequestCreator.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/integration/GatewayRequestCreator.java index 52d773617..74886aa22 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/integration/GatewayRequestCreator.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/integration/GatewayRequestCreator.java @@ -23,10 +23,14 @@ public class GatewayRequestCreator { } public static AssetOperationRequest from(Registry rgs) { + return from(rgs, InOutDirection.out); + } + + public static AssetOperationRequest from(Registry rgs, InOutDirection dir) { return from(rgs.getId(), null, BigDecimalUtil.safeBD(rgs.getBalance()).abs(), - InOutDirection.out, + dir, rgs.getTradingCode(), rgs.getTradingClearingRegistry()); }