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();
|
ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder();
|
||||||
dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^B\\d{2}$"));
|
dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^B\\d{2}$"));
|
||||||
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
|
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
|
||||||
|
inclusionObligations.setSessionType(SessionType.IPOB);
|
||||||
imdgProvider.waitAvailable();
|
imdgProvider.waitAvailable();
|
||||||
|
|
||||||
//настройка адаптеров для State Machine
|
//настройка адаптеров для State Machine
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,7 @@ public class FinalMkrSession extends AbstractSession implements InitializingBean
|
||||||
rgsPrctBuilder.lessEqual("valueDate", LocalDate.now())
|
rgsPrctBuilder.lessEqual("valueDate", LocalDate.now())
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
inclusionObligations.setSessionType(sessionType());
|
||||||
inspectionObligationsReturn.setSessionType(sessionType());
|
inspectionObligationsReturn.setSessionType(sessionType());
|
||||||
inspectionObligations.setSessionType(sessionType());
|
inspectionObligations.setSessionType(sessionType());
|
||||||
imdgProvider.waitAvailable();
|
imdgProvider.waitAvailable();
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,7 @@ public class IntermediateMkrSession extends AbstractSession implements Initializ
|
||||||
rgsPrctBuilder.lessEqual("valueDate", LocalDate.now())
|
rgsPrctBuilder.lessEqual("valueDate", LocalDate.now())
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
inclusionObligations.setSessionType(sessionType());
|
||||||
inspectionObligationsReturn.setSessionType(sessionType());
|
inspectionObligationsReturn.setSessionType(sessionType());
|
||||||
inspectionObligations.setSessionType(sessionType());
|
inspectionObligations.setSessionType(sessionType());
|
||||||
imdgProvider.waitAvailable();
|
imdgProvider.waitAvailable();
|
||||||
|
|
|
||||||
|
|
@ -87,6 +87,7 @@ public class PrimaryAuctionB0Session extends AbstractSession implements Initiali
|
||||||
ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder();
|
ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder();
|
||||||
dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^B0.*$"));
|
dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^B0.*$"));
|
||||||
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
|
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
|
||||||
|
inclusionObligations.setSessionType(sessionType());
|
||||||
imdgProvider.waitAvailable();
|
imdgProvider.waitAvailable();
|
||||||
initSessionIfPresent();
|
initSessionIfPresent();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -87,6 +87,7 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali
|
||||||
ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder();
|
ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder();
|
||||||
dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^B\\d{2}$"));
|
dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^B\\d{2}$"));
|
||||||
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
|
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
|
||||||
|
inclusionObligations.setSessionType(sessionType());
|
||||||
imdgProvider.waitAvailable();
|
imdgProvider.waitAvailable();
|
||||||
initSessionIfPresent();
|
initSessionIfPresent();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,7 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali
|
||||||
ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder();
|
ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder();
|
||||||
dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^T0.*$"));
|
dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^T0.*$"));
|
||||||
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
|
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
|
||||||
|
inclusionObligations.setSessionType(sessionType());
|
||||||
imdgProvider.waitAvailable();
|
imdgProvider.waitAvailable();
|
||||||
initSessionIfPresent();
|
initSessionIfPresent();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,7 @@ public class SecondaryAuctionT0Session extends AbstractSession implements Initia
|
||||||
ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder();
|
ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder();
|
||||||
dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^T0.*$"));
|
dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^T0.*$"));
|
||||||
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
|
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
|
||||||
|
inclusionObligations.setSessionType(sessionType());
|
||||||
imdgProvider.waitAvailable();
|
imdgProvider.waitAvailable();
|
||||||
initSessionIfPresent();
|
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.StageResult;
|
||||||
import ru.spcex.clearing.session.stage.Task;
|
import ru.spcex.clearing.session.stage.Task;
|
||||||
import ru.spcex.clearing.session.stage.task.InclusionToPoolPayload;
|
import ru.spcex.clearing.session.stage.task.InclusionToPoolPayload;
|
||||||
import ru.spcex.platform.enumeration.RegistryDesignation;
|
import ru.spcex.platform.enumeration.*;
|
||||||
import ru.spcex.platform.enumeration.RegistryInstrumentType;
|
|
||||||
import ru.spcex.platform.enumeration.RegistryStatus;
|
|
||||||
import ru.spcex.platform.enumeration.RegistryUnit;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgId;
|
import ru.spcex.platform.imdg.api.ImdgId;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
@ -41,12 +38,15 @@ public class InclusionObligations implements ISessionStage {
|
||||||
private Imdg<Registry> registryImdg;
|
private Imdg<Registry> registryImdg;
|
||||||
private KafkaSender kafkaSender;
|
private KafkaSender kafkaSender;
|
||||||
private final List<ImdgPredicate> registryConditions = new ArrayList<>();
|
private final List<ImdgPredicate> registryConditions = new ArrayList<>();
|
||||||
|
private SessionType sessionType;
|
||||||
|
private final ImdgPredicateBuilder rgsPb;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public InclusionObligations(ImdgProvider imdgProvider) {
|
public InclusionObligations(ImdgProvider imdgProvider) {
|
||||||
this.imdgProvider = imdgProvider;
|
this.imdgProvider = imdgProvider;
|
||||||
this.idGenerator = imdgProvider.getImdgIdGenerator();
|
this.idGenerator = imdgProvider.getImdgIdGenerator();
|
||||||
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
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();
|
InclusionToPoolPayload payload = (InclusionToPoolPayload) task.getData();
|
||||||
switch (task.getTaskType()) {
|
switch (task.getTaskType()) {
|
||||||
case InclusionToPool -> {
|
case InclusionToPool -> {
|
||||||
return inclusionToPool(payload.getSessionId(), payload.getSessionType(), payload.getCounterPartyId());
|
return inclusionToPool(payload.getSessionId(), payload.getCounterPartyId());
|
||||||
}
|
}
|
||||||
default -> {
|
default -> {
|
||||||
throw new IllegalStateException("Unknown task type: " + task.getTaskType());
|
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 " +
|
String sqlCondition = String.format("registryDesignation in ('%s', '%s') and " +
|
||||||
"registryInstrumentType in ('%s', '%s') and " +
|
"registryInstrumentType in ('%s', '%s') and " +
|
||||||
"registryUnit = '%s'",
|
"registryUnit = '%s'",
|
||||||
|
|
@ -85,7 +85,7 @@ public class InclusionObligations implements ISessionStage {
|
||||||
ImdgPredicate defaultCondition = prdctBuilder.sql(sqlCondition);
|
ImdgPredicate defaultCondition = prdctBuilder.sql(sqlCondition);
|
||||||
if (sessionType != null) {
|
if (sessionType != null) {
|
||||||
//не всегда нужное условие
|
//не всегда нужное условие
|
||||||
defaultCondition = prdctBuilder.and(defaultCondition, prdctBuilder.equals("sessionType", sessionType));
|
defaultCondition = prdctBuilder.and(defaultCondition, sessionTypePredicate());
|
||||||
}
|
}
|
||||||
ImdgPredicate registryPredicate;
|
ImdgPredicate registryPredicate;
|
||||||
if (registryConditions.size() > 0) {
|
if (registryConditions.size() > 0) {
|
||||||
|
|
@ -116,4 +116,23 @@ public class InclusionObligations implements ISessionStage {
|
||||||
|
|
||||||
return new StageResult(null, true);
|
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.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
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 org.springframework.stereotype.Service;
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
|
@ -26,6 +28,7 @@ import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD;
|
||||||
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||||
public class InspectionObligationsDepositReturn implements ISessionStage {
|
public class InspectionObligationsDepositReturn implements ISessionStage {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
private final Imdg<Registry> registryImdg;
|
private final Imdg<Registry> registryImdg;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue