5 шаг по сессиям
This commit is contained in:
parent
7660f88387
commit
828ba91ba0
9 changed files with 36 additions and 7 deletions
|
|
@ -74,6 +74,7 @@ public class StateBnConfig extends EnumStateMachineConfigurerAdapter<TaskType, S
|
|||
ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder();
|
||||
dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^B\\d{2}$"));
|
||||
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
|
||||
inclusionObligations.setSessionType(SessionType.IPOB);
|
||||
imdgProvider.waitAvailable();
|
||||
|
||||
//настройка адаптеров для State Machine
|
||||
|
|
|
|||
|
|
@ -100,6 +100,7 @@ public class FinalMkrSession extends AbstractSession implements InitializingBean
|
|||
rgsPrctBuilder.lessEqual("valueDate", LocalDate.now())
|
||||
)
|
||||
);
|
||||
inclusionObligations.setSessionType(sessionType());
|
||||
inspectionObligationsReturn.setSessionType(sessionType());
|
||||
inspectionObligations.setSessionType(sessionType());
|
||||
imdgProvider.waitAvailable();
|
||||
|
|
|
|||
|
|
@ -100,6 +100,7 @@ public class IntermediateMkrSession extends AbstractSession implements Initializ
|
|||
rgsPrctBuilder.lessEqual("valueDate", LocalDate.now())
|
||||
)
|
||||
);
|
||||
inclusionObligations.setSessionType(sessionType());
|
||||
inspectionObligationsReturn.setSessionType(sessionType());
|
||||
inspectionObligations.setSessionType(sessionType());
|
||||
imdgProvider.waitAvailable();
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ public class PrimaryAuctionB0Session extends AbstractSession implements Initiali
|
|||
ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder();
|
||||
dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^B0.*$"));
|
||||
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
|
||||
inclusionObligations.setSessionType(sessionType());
|
||||
imdgProvider.waitAvailable();
|
||||
initSessionIfPresent();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali
|
|||
ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder();
|
||||
dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^B\\d{2}$"));
|
||||
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
|
||||
inclusionObligations.setSessionType(sessionType());
|
||||
imdgProvider.waitAvailable();
|
||||
initSessionIfPresent();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali
|
|||
ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder();
|
||||
dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^T0.*$"));
|
||||
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
|
||||
inclusionObligations.setSessionType(sessionType());
|
||||
imdgProvider.waitAvailable();
|
||||
initSessionIfPresent();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@ public class SecondaryAuctionT0Session extends AbstractSession implements Initia
|
|||
ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder();
|
||||
dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^T0.*$"));
|
||||
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
|
||||
inclusionObligations.setSessionType(sessionType());
|
||||
imdgProvider.waitAvailable();
|
||||
initSessionIfPresent();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,10 +13,7 @@ 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.RegistryDesignation;
|
||||
import ru.spcex.platform.enumeration.RegistryInstrumentType;
|
||||
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||
import ru.spcex.platform.enumeration.RegistryUnit;
|
||||
import ru.spcex.platform.enumeration.*;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgId;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
|
@ -41,12 +38,15 @@ public class InclusionObligations implements ISessionStage {
|
|||
private Imdg<Registry> registryImdg;
|
||||
private KafkaSender kafkaSender;
|
||||
private final List<ImdgPredicate> 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<Registry> registryImdg;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue