From d9e27961854978da2611ce918b3b293bb48cffe3 Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 20 Sep 2023 16:39:47 +0300 Subject: [PATCH] =?UTF-8?q?SDF57=20DM*T/DM*X=20=D0=B7=D0=B0=D0=BF=D1=83?= =?UTF-8?q?=D1=81=D0=BA=D0=B0=D1=8E=D1=82=20=D1=81=D0=B5=D1=81=D1=81=D0=B8?= =?UTF-8?q?=D1=8E=20=D0=BF=D0=BE=20=D0=B2=D0=BE=D0=B7=D0=B2=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D0=B0=D0=BC=20=D0=B4=D0=B5=D0=BF=D0=BE=D0=B7=D0=B8=D1=82?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=BF=D0=B5=D1=80=D0=B5=D1=80=D0=B0=D1=81=D1=87?= =?UTF-8?q?=D0=B5=D1=82=20=D0=B0=D1=81=D1=81=D0=B5=D1=82=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D0=BF=D1=80=D0=BE=D1=81=D1=82=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=9E=D0=9A=20DM*V?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/spcex/clearing/service/RegistryService.java | 12 +++++++++++- .../clearing/service/executors/Sdf57Executor.java | 13 ++++++++++++- 2 files changed, 23 insertions(+), 2 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 7e44d6b48..907e255ec 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 @@ -19,6 +19,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.registry.RegistrySplitDep import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; import ru.spcex.clearing.platform.messaging.service.Status; import ru.spcex.clearing.service.integration.GatewayRequestCreator; +import ru.spcex.clearing.service.registry.AssetTBFProcessing; import ru.spcex.clearing.service.schedule.TradingTimeService; import ru.spcex.clearing.service.validation.ValidationStored; import ru.spcex.clearing.session.stage.impl.GatewayRequester; @@ -66,6 +67,7 @@ public class RegistryService { private final IMessageResolver msgResolver; private final RequestHelper reqHelp; private final UserRoleVerification rights; + private final AssetTBFProcessing assets; public RegistryService(ImdgProvider imdgProvider, @Qualifier("returnDepositValidator") Function returnDepositVal, @@ -73,7 +75,7 @@ public class RegistryService { @Qualifier("splitDepositValidator") Function splitDepositActionVal, @Qualifier("statusExtractValidator") Function statusExtractVal, GatewayRequester gateway, TradingTimeService tradingTimeService, NotificationSender notification, IMessageResolver msgResolver, - RequestHelper reqHelp, UserRoleVerification rights) { + RequestHelper reqHelp, UserRoleVerification rights, AssetTBFProcessing assets) { this.imdgProvider = imdgProvider; this.tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); @@ -84,6 +86,7 @@ public class RegistryService { this.gateway = gateway; this.trdTime = tradingTimeService; this.notification = notification; + this.assets = assets; this.gateway.setName("RgsService|DM*V"); this.msgResolver = msgResolver; this.reqHelp = reqHelp; @@ -214,6 +217,13 @@ public class RegistryService { rgs.setRegistryStatus(payload.getRegistryStatus()); log.debug("changing registry.id={} status to {}", rgs.getId(), payload.getRegistryStatus()); registryImdg.update(rgs); + assets.searchMoneyByAccAndCompany(rgs.getCompanyId(), rgs.getAccountId()) + .ifPresentOrElse( + astTrio -> assets.process(astTrio.a__b(), + astTrio.a__t(), + astTrio.a__f(), + BigDecimal.ZERO), + () -> log.error("RegistryChangeStatusExtractRequest rgs.id={} assets not found", rgs.getId())); return reqHelp.success(req.getId()); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java index 27db1406e..cd2015eb8 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java @@ -23,6 +23,7 @@ import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; 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.schedule.LauncherCommandRequest; import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; import ru.spcex.clearing.service.AnltSearcher; import ru.spcex.clearing.service.AssetTrio; @@ -57,6 +58,7 @@ import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import java.util.function.Function; import java.util.regex.Pattern; @@ -160,6 +162,7 @@ public class Sdf57Executor extends AbstractExecutor { Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId(); result.setChildGenerationId(generationIdForGroup); log.info("SDF57 execution: sdf57 number={}, groupId={}", sdf.size(), sdf.stream().findFirst().map(SDf57::getGenerationId).orElse(null)); + AtomicReference sessionIsNeededFlag = new AtomicReference<>(false); for (SDf57 sdf57 : sdf) { IValidator validator = sDf57Validator.apply(sdf57); Optional error = validator.tillFirstError(); @@ -268,7 +271,7 @@ public class Sdf57Executor extends AbstractExecutor { //1. у stmt accountId 3021, addresseId 2610034, contract DT1000S001U/280623/8/7 // Optional dm__Found = RegistrySearch.builder(registryImdg) - .rgsCode(RegistryTradingParams.DM__) + .rgsCode(RegistryTradingParams.DM_T) .companyId(company.getId()) .accountId(account.getId()) .contract(stmt.getContract()) @@ -314,6 +317,7 @@ public class Sdf57Executor extends AbstractExecutor { sdf57.getSpecif(), om_t.getId(), registryD.getId()); + sessionIsNeededFlag.set(true); } else if (tm_tFound.isPresent()) { Registry tm_t = tm_tFound.get(); Registry registryD = copyRegD(tm_t, stmt, RegistryUnit.X); @@ -323,6 +327,7 @@ public class Sdf57Executor extends AbstractExecutor { sdf57.getSpecif(), tm_t.getId(), registryD.getId()); + sessionIsNeededFlag.set(true); } } stmt.setOperationStatus(OperationStatus.Executed.getKey()); @@ -410,6 +415,12 @@ public class Sdf57Executor extends AbstractExecutor { statementDeb.map(stmt -> new StmtCmpAcc(stmt, companyDeb, accountDeb)).ifPresent(registersUpdate); statementCred.map(stmt -> new StmtCmpAcc(stmt, companyCred, accountCred)).ifPresent(registersUpdate); } + if (sessionIsNeededFlag.get()) { + LauncherCommandRequest sessionTask = new LauncherCommandRequest(); + sessionTask.setSection(Section.MKR.getKey()); + sessionTask.setSessionType(SessionType.XDEP.getKey()); + kafka.sendRequestToQueue(Task.startOfClearing.topic(), sessionTask); + } return result; }