sessionId for executions
This commit is contained in:
parent
35151a172f
commit
624f0dfd29
1 changed files with 38 additions and 0 deletions
|
|
@ -6,6 +6,9 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||||
import org.springframework.context.annotation.Scope;
|
import org.springframework.context.annotation.Scope;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import ru.clearing.classes.statics.data.execution.ExecutionCommon;
|
||||||
|
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
|
||||||
|
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||||
import ru.clearing.classes.statics.data.misc.Session;
|
import ru.clearing.classes.statics.data.misc.Session;
|
||||||
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;
|
||||||
|
|
@ -22,6 +25,7 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
@ -36,6 +40,8 @@ public class InclusionObligations implements ISessionStage {
|
||||||
private ImdgId idGenerator;
|
private ImdgId idGenerator;
|
||||||
private Imdg<Registry> registryImdg;
|
private Imdg<Registry> registryImdg;
|
||||||
private Imdg<Session> sessionImdg;
|
private Imdg<Session> sessionImdg;
|
||||||
|
private final Imdg<ExecutionDeposit> executionDepositImdg;
|
||||||
|
private final Imdg<ExecutionFond> executionFondImdg;
|
||||||
private KafkaSender kafkaSender;
|
private KafkaSender kafkaSender;
|
||||||
private final List<ImdgPredicate> registryConditions = new ArrayList<>();
|
private final List<ImdgPredicate> registryConditions = new ArrayList<>();
|
||||||
private SessionType sessionType;
|
private SessionType sessionType;
|
||||||
|
|
@ -47,6 +53,8 @@ public class InclusionObligations implements ISessionStage {
|
||||||
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.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||||
|
this.executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class);
|
||||||
|
this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
|
||||||
this.rgsPb = registryImdg.predicateBuilder();
|
this.rgsPb = registryImdg.predicateBuilder();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -114,12 +122,42 @@ public class InclusionObligations implements ISessionStage {
|
||||||
registry.setSessionId(sessionId);
|
registry.setSessionId(sessionId);
|
||||||
obtainSessionType(sessionId).ifPresent(st -> registry.setSessionType(st.getKey()));
|
obtainSessionType(sessionId).ifPresent(st -> registry.setSessionType(st.getKey()));
|
||||||
registryImdg.update(registry);
|
registryImdg.update(registry);
|
||||||
|
updateExecutions(sessionId, entrySet.getKey());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new StageResult(null, true);
|
return new StageResult(null, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
private <T extends ExecutionCommon> void updateExecutions(Long sessionId, Long rgsGroupId) {
|
||||||
|
Instant now = Instant.now();
|
||||||
|
SessionType ssnTpe = obtainSessionType(sessionId).orElse(null);
|
||||||
|
if (ssnTpe == null || sessionId == null) {
|
||||||
|
log.debug("will not update executions#sessionId - couldn't determine session type");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Imdg<T> execImdg;
|
||||||
|
switch (ssnTpe) {
|
||||||
|
case MEDM, FINL, XDEP -> execImdg = (Imdg<T>) executionDepositImdg;
|
||||||
|
case IPO0, IPOB, TRDT, IPOT -> execImdg = (Imdg<T>) executionFondImdg;
|
||||||
|
default -> execImdg = null;
|
||||||
|
}
|
||||||
|
if (execImdg == null) {
|
||||||
|
log.warn("couldn't define Execution Type for session {}. Will not update executions#sessionId",
|
||||||
|
sessionType);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ImdgPredicateBuilder pb = execImdg.predicateBuilder();
|
||||||
|
ImdgPredicate prdct = pb.equals("exchangeExecutionId", rgsGroupId);
|
||||||
|
Collection<T> execs = execImdg.getCollectionObjectsByPredicate(prdct);
|
||||||
|
execs.forEach(e -> {
|
||||||
|
e.setUpdated(now);
|
||||||
|
e.setSessionId(sessionId);
|
||||||
|
execImdg.update(e);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private Optional<SessionType> obtainSessionType(Long sessionId) {
|
private Optional<SessionType> obtainSessionType(Long sessionId) {
|
||||||
if (this.sessionType != null) {
|
if (this.sessionType != null) {
|
||||||
return Optional.of(this.sessionType);
|
return Optional.of(this.sessionType);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue