From 523d5b4bc13c0200d5f0db38d8b548e7b1e303e3 Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 23 Aug 2023 17:04:25 +0300 Subject: [PATCH] =?UTF-8?q?CLRD=20=D1=81=D1=82=D0=B0=D1=82=D1=83=D1=81=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B3=D0=B8=D1=81=D1=82=D1=80=D0=BE=D0=B2=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=B2=D1=81=D0=B5=D1=85=20=D1=81=D0=B5=D1=81?= =?UTF-8?q?=D1=81=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../session/stage/impl/FinishingSession.java | 28 +++++++++++++++++++ .../platform/enumeration/RegistryStatus.java | 1 + 2 files changed, 29 insertions(+) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FinishingSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FinishingSession.java index 9ff28c253..c33d0560e 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FinishingSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FinishingSession.java @@ -20,6 +20,7 @@ import ru.spcex.clearing.session.stage.StageResult; import ru.spcex.clearing.session.stage.Task; import ru.spcex.clearing.session.stage.task.FinishingSessionPayload; import ru.spcex.platform.enumeration.RegistryDesignation; +import ru.spcex.platform.enumeration.RegistryStatus; import ru.spcex.platform.enumeration.RegistryTradingParams; import ru.spcex.platform.enumeration.Section; import ru.spcex.platform.imdg.api.Imdg; @@ -30,6 +31,7 @@ import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IMessageResolver; +import java.time.Instant; import java.util.Collection; import static ru.spcex.clearing.error.ClearingErrorInternal.SessionGeneralError; @@ -77,6 +79,14 @@ public class FinishingSession implements ISessionStage { } protected StageResult finishingSession(Long sessionId, String pr) { + Instant now = Instant.now(); + //установка CLRD для обработанных регистров + Collection claimsAndLiabilities = selectClaimsAndLiabilities(sessionId); + claimsAndLiabilities.forEach(rgs -> { + rgs.setRegistryStatus(RegistryStatus.CLRD.getKey()); + rgs.setUpdated(now); + registryImdg.update(rgs); + }); // 2. Отправка сообщений Collection forRegistries = selectRegistry(sessionId); log.debug("Found {} registries for sessionId={}", forRegistries.size(), sessionId); @@ -145,4 +155,22 @@ public class FinishingSession implements ISessionStage { log.trace("Selected {} registry's by sql: {}", result.size(), condition); return result; } + + protected Collection selectClaimsAndLiabilities(Long sessionId) { + ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); + ImdgPredicate prdct = pb.and( + pb.equals("sessionId", sessionId), + pb.equals("registryStatus", RegistryStatus.OK.getKey()), + pb.or( + pb.equals("registryDesignation", RegistryDesignation.O.getKey()), + pb.equals("registryDesignation", RegistryDesignation.T.getKey()), + pb.equals("registryDesignation", RegistryDesignation.C.getKey()), + pb.equals("registryDesignation", RegistryDesignation.L.getKey()) + ) + ); + log.debug("searching claims and liabilities by predicate: {}...", prdct); + Collection result = registryImdg.getCollectionObjectsByPredicate(prdct); + log.debug("found {} claims and liabilities", result.size()); + return result; + } } 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 46f490bda..4438e4b7e 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 @@ -4,6 +4,7 @@ import ru.spcex.platform.utils.enumeration.IEnumKey; public enum RegistryStatus implements IEnumKey { OK("OK"), + CLRD("CLRD"), PROC("PROC"), NACK("NACK"), NACC("NACC"),