From 828ba91ba09dc995c8ddecc1973360bfee6d8ae5 Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 19 Jul 2023 18:10:29 +0300 Subject: [PATCH] =?UTF-8?q?5=20=D1=88=D0=B0=D0=B3=20=D0=BF=D0=BE=20=D1=81?= =?UTF-8?q?=D0=B5=D1=81=D1=81=D0=B8=D1=8F=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/session/StateBnConfig.java | 1 + .../session/stage/FinalMkrSession.java | 1 + .../session/stage/IntermediateMkrSession.java | 1 + .../stage/PrimaryAuctionB0Session.java | 1 + .../stage/PrimaryAuctionBnSession.java | 1 + .../stage/PrimaryAuctionT0Session.java | 1 + .../stage/SecondaryAuctionT0Session.java | 1 + .../stage/impl/InclusionObligations.java | 33 +++++++++++++++---- .../InspectionObligationsDepositReturn.java | 3 ++ 9 files changed, 36 insertions(+), 7 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/session/StateBnConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/session/StateBnConfig.java index e8adad924..006393491 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/session/StateBnConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/session/StateBnConfig.java @@ -74,6 +74,7 @@ public class StateBnConfig extends EnumStateMachineConfigurerAdapter registryImdg; private KafkaSender kafkaSender; private final List registryConditions = new ArrayList<>(); + private SessionType sessionType; + private final ImdgPredicateBuilder rgsPb; @Autowired public InclusionObligations(ImdgProvider imdgProvider) { this.imdgProvider = imdgProvider; this.idGenerator = imdgProvider.getImdgIdGenerator(); this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); + this.rgsPb = registryImdg.predicateBuilder(); } /** @@ -65,7 +65,7 @@ public class InclusionObligations implements ISessionStage { InclusionToPoolPayload payload = (InclusionToPoolPayload) task.getData(); switch (task.getTaskType()) { case InclusionToPool -> { - return inclusionToPool(payload.getSessionId(), payload.getSessionType(), payload.getCounterPartyId()); + return inclusionToPool(payload.getSessionId(), payload.getCounterPartyId()); } default -> { throw new IllegalStateException("Unknown task type: " + task.getTaskType()); @@ -74,7 +74,7 @@ public class InclusionObligations implements ISessionStage { } - private StageResult inclusionToPool(Long sessionId, String sessionType, Long counterPartyId) { + private StageResult inclusionToPool(Long sessionId, Long counterPartyId) { String sqlCondition = String.format("registryDesignation in ('%s', '%s') and " + "registryInstrumentType in ('%s', '%s') and " + "registryUnit = '%s'", @@ -85,7 +85,7 @@ public class InclusionObligations implements ISessionStage { ImdgPredicate defaultCondition = prdctBuilder.sql(sqlCondition); if (sessionType != null) { //не всегда нужное условие - defaultCondition = prdctBuilder.and(defaultCondition, prdctBuilder.equals("sessionType", sessionType)); + defaultCondition = prdctBuilder.and(defaultCondition, sessionTypePredicate()); } ImdgPredicate registryPredicate; if (registryConditions.size() > 0) { @@ -116,4 +116,23 @@ public class InclusionObligations implements ISessionStage { return new StageResult(null, true); } + + public void setSessionType(SessionType sessionType) { + this.sessionType = sessionType; + } + + private ImdgPredicate sessionTypePredicate() { + if (this.sessionType != null) { + if (SessionType.FINL.equals(sessionType)) { + return rgsPb.or( + rgsPb.equals("sessionType", sessionType.getKey()), + rgsPb.equals("sessionType", SessionType.MEDM.getKey()) + ); + } else { + return rgsPb.equals("sessionType", sessionType.getKey()); + } + } else { + return rgsPb.alwaysTrue(); + } + } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsDepositReturn.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsDepositReturn.java index 28c782dbc..744a352bf 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsDepositReturn.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsDepositReturn.java @@ -3,6 +3,8 @@ package ru.spcex.clearing.session.stage.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; import ru.clearing.classes.statics.data.registry.Registry; import ru.spcex.clearing.imdg.IMDGDistributedNames; @@ -26,6 +28,7 @@ import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD; @Service +@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class InspectionObligationsDepositReturn implements ISessionStage { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg registryImdg;