From 4eb63277e05329024c7d356d37c7a2d232540598 Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 5 May 2025 18:44:46 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-838 --- .../service/executors/Sdf57Executor.java | 21 +++++++++++++++++++ .../enumeration/RegistryTradingParams.java | 5 +++++ .../domain/cud/balance/ReviseAmatRequest.java | 18 ++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/ReviseAmatRequest.java 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 e26ec7f8d..7b56ed604 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 @@ -4,12 +4,15 @@ import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Comparator; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import java.util.function.Function; @@ -36,6 +39,7 @@ 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.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.balance.ReviseAmatRequest; 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; @@ -207,6 +211,11 @@ public class Sdf57Executor extends AbstractExecutor { .toArray(new String[0])) )) != null; sdf = sdf.stream().sorted(Comparator.comparing(SpcexObjectBase::getId)).toList(); + final Set gvtfIds = new HashSet<>(); + Consumer acceptAMAT_Gvtf = (amat) -> { + boolean isAmat = RegistryManager.equalsByCode(RegistryTradingParams.AMAT, amat); + if (isAmat) gvtfIds.add(amat.getId()); + }; for (SDf57 sdf57 : sdf) { IValidator validator = sDf57Validator.apply(sdf57); Optional error = validator.tillFirstError(); @@ -308,6 +317,7 @@ public class Sdf57Executor extends AbstractExecutor { registryB.getId()); return new AssetTrio(registryF, registryB, registry); }); + acceptAMAT_Gvtf.accept(asts.a__t()); InOutDirection direction = IEnumKey.getEnumByKey(InOutDirection.class, stmt.getInOutDirection()); boolean dm_tWasCreated = false; if (!StringUtils.isEmpty(stmt.getContract()) && InOutDirection.in.equals(direction)) { @@ -522,6 +532,9 @@ 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 (!gvtfIds.isEmpty()) { + kafka.sendRequestToQueue(Task.GVTF.topic(), gvtfRequest(gvtfIds)); + } if (sessionIsNeededFlag.get()) { if (!timeService.timeForXdep()) { EnumMessage err = new EnumMessage(ClearingError.XdepTimeIntervalNotMatch); @@ -718,6 +731,14 @@ public class Sdf57Executor extends AbstractExecutor { r.setUpdated(Instant.now()); } + private ReviseAmatRequest gvtfRequest(Set amatIds) { + ReviseAmatRequest payload = new ReviseAmatRequest(); + ArrayList ids = new ArrayList<>(amatIds.size()); + ids.addAll(amatIds); + payload.setAmatIds(ids); + return payload; + } + private static class RegistrySearch { private final ImdgPredicateBuilder pb; private final Imdg registryImdg; diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/RegistryTradingParams.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/RegistryTradingParams.java index 3255ac403..5cd67d4d8 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/RegistryTradingParams.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/RegistryTradingParams.java @@ -122,6 +122,7 @@ public record RegistryTradingParams(RegistryDesignation registryDesignation, public final static RegistryTradingParams D__I; public final static RegistryTradingParams D__V; public final static RegistryTradingParams _S_T; + public final static RegistryTradingParams AMAT; static { OS_T = new RegistryTradingParams(RegistryDesignation.O, @@ -269,6 +270,10 @@ public record RegistryTradingParams(RegistryDesignation registryDesignation, RegistryInstrumentType.S, null, RegistryUnit.T); + AMAT = new RegistryTradingParams(RegistryDesignation.A, + RegistryInstrumentType.M, + RegistryCapacity.A, + RegistryUnit.T); } } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/ReviseAmatRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/ReviseAmatRequest.java new file mode 100644 index 000000000..5a5228c64 --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/ReviseAmatRequest.java @@ -0,0 +1,18 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.balance; + +import java.util.Collections; +import java.util.List; +import com.fasterxml.jackson.annotation.JsonProperty; + +public class ReviseAmatRequest { + @JsonProperty + private List amatIds = Collections.emptyList(); + + public List getAmatIds() { + return amatIds; + } + + public void setAmatIds(List amatIds) { + this.amatIds = amatIds; + } +} \ No newline at end of file