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"),