ialbert 2023-05-22 20:10:49 +03:00
parent bea0c96d64
commit d39797a52b
3 changed files with 126 additions and 1 deletions

View file

@ -0,0 +1,101 @@
package ru.spcex.clearing.session.stage;
import org.apache.kafka.clients.consumer.Consumer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.misc.Session;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
import ru.spcex.clearing.session.stage.impl.*;
import ru.spcex.platform.enumeration.Section;
import ru.spcex.platform.enumeration.SessionStatus;
import ru.spcex.platform.enumeration.SessionType;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.utils.enumeration.IMessageResolver;
import java.util.concurrent.atomic.AtomicBoolean;
@Service
public class PrimaryAuctionBnSession extends QueueConsumer {
private final Logger log = LoggerFactory.getLogger(getClass());
private final BalanceRevise balanceRevise;
private final DealsPrepare dealsPrepare;
private final RequirementsAndObligationCreation requirementsAndObligationCreation;
private final ObligationAdmission obligationsAdmission;
private final InclusionObligations inclusionObligations;
private final FormingRegistersOnOS formingRegistersOnOS;
private final FormingPaymentInstruction formingPaymentInstruction;
private final UnlockResources unlockResources;
private final EndStageNotification endStageNotification;
//
private final AtomicBoolean running;
private Long sessionId;
private Imdg<Session> sessionImdg;
private final IMessageResolver messageResolver;
public PrimaryAuctionBnSession(
@Qualifier("createConsumer") Consumer<String, Object> kafkaQueue,
ImdgProvider imdgProvider,
BalanceRevise balanceRevise,
DealsPrepare dealsPrepare,
RequirementsAndObligationCreation requirementsAndObligationCreation,
ObligationAdmission obligationsAdmission,
InclusionObligations inclusionObligations,
FormingRegistersOnOS formingRegistersOnOS,
FormingPaymentInstruction formingPaymentInstruction,
UnlockResources unlockResources,
EndStageNotification endStageNotification, IMessageResolver messageResolver) {
super(kafkaQueue);
this.balanceRevise = balanceRevise;
this.dealsPrepare = dealsPrepare;
this.requirementsAndObligationCreation = requirementsAndObligationCreation;
this.obligationsAdmission = obligationsAdmission;
this.inclusionObligations = inclusionObligations;
this.formingRegistersOnOS = formingRegistersOnOS;
this.formingPaymentInstruction = formingPaymentInstruction;
this.unlockResources = unlockResources;
this.endStageNotification = endStageNotification;
//
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
this.messageResolver = messageResolver;
this.running = new AtomicBoolean(false);
}
public void runSession() {
synchronized (this.running) {
if (this.running.get()) {
log.info("already running session.id={}", this.sessionId);
return;
} else {
this.running.set(true);
}
}
Session newSession = new Session();
newSession.setSection(Section.FOND.getKey());
newSession.setSessionType(SessionType.IPOB.getKey());
newSession.setSessionStatus(SessionStatus.CLRN.getKey());
//todo companyId/securityId/userId передается из сообщения очереди
sessionImdg.insert(newSession);
sessionId = newSession.getId();
//java.util.function.Consumer<StageResult<?>> logError = stageResult -> {
// if (!stageResult.success) {
// log.error("stageResult.error={}", messageResolver.resolve(stageResult.error));
// newSession.setSessionStatus(SessionStatus.CLOS.getKey());
// }
//};
//{
// StageResult<?> reviseResult = balanceRevise.submit(task(TaskType.StartRevise));
// logError.accept(reviseResult);
//}
}
private Task<?> task(TaskType taskType) {
return new Task<>(taskType, null);
}
}

View file

@ -62,8 +62,8 @@ public class BalanceRevise implements ISessionStage {
cashFlow(); //((SdfClearingRequest) task.getData()).getGroupId() if needed
return revise();
}
default -> throw new IllegalStateException("unknown task " + task.getTaskType());
}
return null;
}

View file

@ -0,0 +1,24 @@
package ru.spcex.platform.enumeration;
import ru.spcex.platform.utils.enumeration.IEnumKey;
public enum SessionType implements IEnumKey {
IPOB("IPOB"),
;
SessionType(String key) {
this.key = key;
}
private String key;
@Override
public String getKey() {
return this.key;
}
@Override
public boolean equalsByKey(String key) {
return IEnumKey.super.equalsByKey(key);
}
}