From 74697eb48f052feed12c53fcfbd3417fa268905f Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 31 May 2023 18:13:54 +0300 Subject: [PATCH] InclusionObligations --- .../stage/impl/InclusionObligations.java | 33 +++++++++++++++++-- .../platform/enumeration/RegistryStatus.java | 1 + .../platform/enumeration/SessionType.java | 2 +- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InclusionObligations.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InclusionObligations.java index 901c1fb15..16f74a20f 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InclusionObligations.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InclusionObligations.java @@ -13,11 +13,15 @@ import ru.spcex.clearing.session.stage.ISessionStage; import ru.spcex.clearing.session.stage.StageResult; import ru.spcex.clearing.session.stage.Task; import ru.spcex.clearing.session.stage.task.InclusionToPoolPayload; +import ru.spcex.platform.enumeration.RegistryStatus; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgId; import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import java.time.LocalDate; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; @@ -33,6 +37,7 @@ public class InclusionObligations implements ISessionStage { private ImdgId idGenerator; private Imdg registryImdg; private KafkaSender kafkaSender; + private final List registryConditions = new ArrayList<>(); @Autowired public InclusionObligations(ImdgProvider imdgProvider) { @@ -41,6 +46,17 @@ public class InclusionObligations implements ISessionStage { this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); } + /** + * для сессии возврата депозитов статус регистров + * proc ИЛИ mng + * proc не захардкожен для случая дополнительных условий + * указывать обязательно если есть дополнительные условия + */ + public InclusionObligations addRegistryCondition(ImdgPredicate imdgPredicate) { + this.registryConditions.add(imdgPredicate); + return this; + } + @Override public StageResult submit(Task task) { InclusionToPoolPayload payload = (InclusionToPoolPayload) task.getData(); @@ -59,14 +75,25 @@ public class InclusionObligations implements ISessionStage { String sqlCondition = String.format("registryDesignation in ('%s', '%s') and " + "registryInstrumentType in ('%s', '%s') and " + "registryUnit = '%s' and " + - "registryStatus = '%s' and " + "sessionType = '%s'", "O", "T", "S", "M", "T", - "PROC", sessionType); - Collection obligations = registryImdg.getCollectionObjectsBySQL(sqlCondition); + ImdgPredicateBuilder prdctBuilder = registryImdg.predicateBuilder(); + ImdgPredicate registryPredicate; + if (registryConditions.size() > 0) { + registryPredicate = prdctBuilder.and( + prdctBuilder.sql(sqlCondition), + prdctBuilder.and(registryConditions.toArray(new ImdgPredicate[0])) + ); + } else { + registryPredicate = prdctBuilder.and( + prdctBuilder.sql(sqlCondition), + prdctBuilder.equals("registryStatus", RegistryStatus.PROC.getKey()) + ); + } + Collection obligations = registryImdg.getCollectionObjectsByPredicate(registryPredicate); Map> registryByGroupId = obligations.stream() .filter(registry -> registry.getSettlementDate().isEqual(LocalDate.now())) .collect(Collectors.groupingBy(Registry::getGroupId)); diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/RegistryStatus.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/RegistryStatus.java index 4f1d3a5b1..256d7e49c 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/RegistryStatus.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/RegistryStatus.java @@ -8,6 +8,7 @@ public enum RegistryStatus implements IEnumKey { NACK("NACK"), FAIL("FAIL"), UNCV("UNCV"), + MNG("MNG"), POOL("POOL") ; diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/SessionType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/SessionType.java index 249369a27..1615a0e62 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/SessionType.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/SessionType.java @@ -3,7 +3,7 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; public enum SessionType implements IEnumKey { - IPOB("IPOB"), IPO0("IPO0"), IPOT("IPOT"), TRDT("TRDT"), MEDM("MEDM"), FINL("FINL"), + IPOB("IPOB"), IPO0("IPO0"), IPOT("IPOT"), TRDT("TRDT"), MEDM("MEDM"), FINL("FINL"), XDEP("XDEP"), ; SessionType(String key) {