This commit is contained in:
parent
d07f2e491c
commit
c6a7ab20c1
6 changed files with 56 additions and 5 deletions
|
|
@ -4,13 +4,14 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import ru.clearing.classes.statics.data.misc.Session;
|
import ru.clearing.classes.statics.data.misc.Session;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
|
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
public class AbstractSession {
|
public abstract class AbstractSession {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
protected final Imdg<Session> sessionImdg;
|
protected final Imdg<Session> sessionImdg;
|
||||||
|
|
@ -46,6 +47,7 @@ public class AbstractSession {
|
||||||
return (StageResult<R>) stgRes;
|
return (StageResult<R>) stgRes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected abstract void runSession(BaseRequest<?> req);
|
||||||
protected void endSession() {
|
protected void endSession() {
|
||||||
synchronized (this.currStage) {
|
synchronized (this.currStage) {
|
||||||
this.currStage.set(null);
|
this.currStage.set(null);
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@ public class PrimaryAuctionB0Session extends AbstractSession implements Initiali
|
||||||
dealsPrepare.addExecutionFondCondition(execFondPb.equals("marketType", MarketType.PRMR.getKey()));
|
dealsPrepare.addExecutionFondCondition(execFondPb.equals("marketType", MarketType.PRMR.getKey()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void runSession(BaseRequest<?> req) {
|
public void runSession(BaseRequest<?> req) {
|
||||||
if (!startSession()) {
|
if (!startSession()) {
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,7 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali
|
||||||
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
|
dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0])));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void runSession(BaseRequest<?> req) {
|
public void runSession(BaseRequest<?> req) {
|
||||||
if (!startSession()) {
|
if (!startSession()) {
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali
|
||||||
dealsPrepare.addExecutionFondCondition(execFondPb.equals("marketType", MarketType.PRMR.getKey()));
|
dealsPrepare.addExecutionFondCondition(execFondPb.equals("marketType", MarketType.PRMR.getKey()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void runSession(BaseRequest<?> req) {
|
public void runSession(BaseRequest<?> req) {
|
||||||
if (!startSession()) {
|
if (!startSession()) {
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
package ru.spcex.clearing.session.stage;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
||||||
|
import ru.spcex.platform.enumeration.Section;
|
||||||
|
import ru.spcex.platform.enumeration.SessionType;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class SessionManager {
|
||||||
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
private final PrimaryAuctionT0Session primaryAuctionT0Session;
|
||||||
|
private final PrimaryAuctionBnSession primaryAuctionBnSession;
|
||||||
|
private final PrimaryAuctionB0Session primaryAuctionB0Session;
|
||||||
|
|
||||||
|
public SessionManager(PrimaryAuctionT0Session primaryAuctionT0Session,
|
||||||
|
PrimaryAuctionBnSession primaryAuctionBnSession,
|
||||||
|
PrimaryAuctionB0Session primaryAuctionB0Session) {
|
||||||
|
this.primaryAuctionT0Session = primaryAuctionT0Session;
|
||||||
|
this.primaryAuctionBnSession = primaryAuctionBnSession;
|
||||||
|
this.primaryAuctionB0Session = primaryAuctionB0Session;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void defineAndStartSession(LauncherCommandRequest commandRequest) {
|
||||||
|
Long sessionId = commandRequest.getSessionId();
|
||||||
|
SessionType sessionType = IEnumKey.getEnumByKey(SessionType.class, commandRequest.getSessionType());
|
||||||
|
Section section = IEnumKey.getEnumByKey(Section.class, commandRequest.getSection());
|
||||||
|
if (sessionType == null || section == null) {
|
||||||
|
log.warn("Unknown sessionType: {} or section: {}", section, sessionType);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
BaseRequest<?> baseRequest = new BaseRequest<>();
|
||||||
|
AbstractSession session = null;
|
||||||
|
switch (sessionType){
|
||||||
|
case IPOB : session = primaryAuctionBnSession;
|
||||||
|
case IPOT : session = primaryAuctionT0Session;
|
||||||
|
case IPO0 : session = primaryAuctionBnSession;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (session != null) {
|
||||||
|
session.runSession(baseRequest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -60,17 +60,16 @@ public class InclusionObligations implements ISessionStage {
|
||||||
"registryInstrumentType in ('%s', '%s') and " +
|
"registryInstrumentType in ('%s', '%s') and " +
|
||||||
"registryUnit = '%s' and " +
|
"registryUnit = '%s' and " +
|
||||||
"registryStatus = '%s' and " +
|
"registryStatus = '%s' and " +
|
||||||
"settlementDate = '%s' and " +
|
|
||||||
"sessionType = '%s'",
|
"sessionType = '%s'",
|
||||||
"O", "T",
|
"O", "T",
|
||||||
"S", "M",
|
"S", "M",
|
||||||
"T",
|
"T",
|
||||||
"PROC",
|
"PROC",
|
||||||
LocalDate.now(),
|
|
||||||
sessionType);
|
sessionType);
|
||||||
Collection<Registry> obligations = registryImdg.getCollectionObjectsBySQL(sqlCondition);
|
Collection<Registry> obligations = registryImdg.getCollectionObjectsBySQL(sqlCondition);
|
||||||
Map<Long, List<Registry>> registryByGroupId = obligations.stream().
|
Map<Long, List<Registry>> registryByGroupId = obligations.stream()
|
||||||
collect(Collectors.groupingBy(Registry::getGroupId));
|
.filter(registry -> registry.getSettlementDate().isEqual(LocalDate.now()))
|
||||||
|
.collect(Collectors.groupingBy(Registry::getGroupId));
|
||||||
|
|
||||||
for (Map.Entry<Long, List<Registry>> entrySet : registryByGroupId.entrySet()) {
|
for (Map.Entry<Long, List<Registry>> entrySet : registryByGroupId.entrySet()) {
|
||||||
log.debug("Processing set of registry with groupId: {}", entrySet.getKey());
|
log.debug("Processing set of registry with groupId: {}", entrySet.getKey());
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue