UNIT session sdf14 - sdf12 condition

This commit is contained in:
ialbert 2024-07-03 12:52:52 +03:00
parent 7c7848074a
commit 24fe8346d3
6 changed files with 49 additions and 13 deletions

View file

@ -28,6 +28,7 @@ import ru.spcex.clearing.session.stage.impl.PaymentInfo;
import ru.spcex.clearing.session.stage.impl.RequirementsAndObligationCreationCompound;
import ru.spcex.clearing.session.stage.impl.UnlockResources;
import ru.spcex.clearing.session.stage.impl.compound.CompoundStageDealsPrepare;
import ru.spcex.clearing.session.stage.monitor.SdfCondition;
import ru.spcex.clearing.session.stage.monitor.SessionMonitor;
import ru.spcex.clearing.session.stage.monitor.SessionMonitorFactory;
import ru.spcex.clearing.session.stage.task.DealsPreparePayload;
@ -39,6 +40,7 @@ import ru.spcex.clearing.session.stage.task.InspectionPoolPayload;
import ru.spcex.clearing.session.stage.task.RequirementsAndObligationCreationCompoundPayload;
import ru.spcex.clearing.session.stage.task.result.DealsPrepareCompoundResult;
import ru.spcex.platform.classes.base.interfaces.ExecutionType;
import ru.spcex.platform.enumeration.SdfTable;
import ru.spcex.platform.enumeration.Section;
import ru.spcex.platform.enumeration.SessionStatus;
import ru.spcex.platform.enumeration.SessionType;
@ -170,9 +172,14 @@ public class UnitedSession extends AbstractSession implements InitializingBean {
return;
}
if (afterPaymentsSdf4And13Monitor != null && isMonitorPassed(afterPaymentsSdf4And13Monitor, req.getRequestPayload())) {
boolean wasDf12 = afterPaymentsSdf4And13Monitor.getAllConditions()
.stream()
.filter(c -> c instanceof SdfCondition)
.map(c -> (SdfCondition) c)
.anyMatch(c -> SdfTable.SDF_13.equals(c.sdf()));
afterPaymentsSdf4And13Monitor = null;
checkStageAndThrow(TaskType.FormingPaymentInstruction);
finishPart();
finishPart(wasDf12);
return;
}
if (afterReviseErrorMonitor != null && isMonitorPassed(afterReviseErrorMonitor, req.getRequestPayload())) {
@ -261,6 +268,10 @@ public class UnitedSession extends AbstractSession implements InitializingBean {
}
public void finishPart() {
finishPart(null);
}
public void finishPart(Boolean was12) {
try {
//stage 9 continue revision
{
@ -278,6 +289,7 @@ public class UnitedSession extends AbstractSession implements InitializingBean {
FinishingSessionPayload payload = new FinishingSessionPayload();
payload.setSessionId(currSession.getId());
payload.setPr("1");
payload.setWasDf12(was12);
runStage(TaskType.FinishingSession, payload, finishingSession);
}
//stage 11

View file

@ -22,7 +22,6 @@ 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.registry.Registry;
import ru.clearing.classes.statics.data.sdf.SDf05;
import static ru.spcex.clearing.error.ClearingErrorInternal.SessionGeneralError;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts;
@ -64,7 +63,6 @@ public class FinishingSession implements ISessionStage {
private final Imdg<ExecutionDeposit> executionDepositImdg;
private final Imdg<ExecutionCurrency> executionCurrencyImdg;
private final Imdg<Session> sessionImdg;
private final Imdg<SDf05> sDf05Imdg;
private final KafkaSender kafkaSender;
private final IMessageResolver msgResolver;
private final Sdf05Sender sdf05Sender;
@ -80,7 +78,6 @@ public class FinishingSession implements ISessionStage {
this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
this.executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class);
this.executionCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class);
this.sDf05Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf05, SDf05.class);
this.kafkaSender = kafkaSender;
this.msgResolver = msgResolver;
this.sdf05Sender = sdf05Sender;
@ -99,7 +96,7 @@ public class FinishingSession implements ISessionStage {
FinishingSessionPayload payload = (FinishingSessionPayload) task.getData();
switch (task.getTaskType()) {
case FinishingSession -> {
return finishingSession(payload.getSessionId(), payload.getPr());
return finishingSession(payload.getSessionId(), payload.getPr(), payload.getWasDf12());
}
default -> {
throw new IllegalStateException("Unknown task type: " + task.getTaskType());
@ -107,7 +104,7 @@ public class FinishingSession implements ISessionStage {
}
}
protected StageResult<?> finishingSession(Long sessionId, String pr) {
protected StageResult<?> finishingSession(Long sessionId, String pr, Boolean wasDf12) {
Instant now = Instant.now();
//установка CLRD для обработанных регистров
Collection<Registry> claimsAndLiabilities = selectClaimsAndLiabilities(sessionId);
@ -230,13 +227,21 @@ public class FinishingSession implements ISessionStage {
}
}
sdf05Sender.sendSdf05(pr);
if (Section.FOND.equals(section) || Section.MULT.equals(section)) {
if (df14condition(wasDf12)) {
sdf14Sender.sendSdf14(sessionId);
}
StageResult<Collection<Registry>> res = new StageResult<>(null, true);
return res;
}
private boolean df14condition(Boolean wasDf12) {
if (Section.FOND.equals(section)) return true;
if (Section.MULT.equals(section) && wasDf12 != null && wasDf12) {
return true;
}
return false;
}
/**
* формирование операционного отчета об обязательствах
**/

View file

@ -14,7 +14,7 @@ public abstract class Condition {
this.metOnce = true;
}
public abstract void event(SessionContinueEvent req);
abstract void event(SessionContinueEvent req);
public abstract String logName();
}

View file

@ -11,8 +11,12 @@ public class SdfCondition extends Condition {
this.targetSdf = targetSdf;
}
public SdfTable sdf() {
return targetSdf;
}
@Override
public void event(SessionContinueEvent req) {
void event(SessionContinueEvent req) {
if (req.getSdfType() != null && req.getSdfType().stream().anyMatch(t -> t.equals(targetSdf))) {
isMet();
}

View file

@ -1,13 +1,13 @@
package ru.spcex.clearing.session.stage.monitor;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.SessionContinueEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class SessionMonitor {
private final Logger log = LoggerFactory.getLogger(getClass());
private final List<Condition> conditions = new ArrayList<>();
@ -37,6 +37,11 @@ public class SessionMonitor {
return isMonitorPassed();
}
public Collection<Condition> getAllConditions() {
return conditions;
}
public String allConditions() {
return conditions.stream().map(Condition::logName).collect(Collectors.joining(",", "[", "]"));
}

View file

@ -3,6 +3,8 @@ package ru.spcex.clearing.session.stage.task;
public class FinishingSessionPayload {
private Long sessionId;
private String pr;
//nullable
private Boolean wasDf12;
public Long getSessionId() {
return sessionId;
@ -19,4 +21,12 @@ public class FinishingSessionPayload {
public void setPr(String pr) {
this.pr = pr;
}
public Boolean getWasDf12() {
return wasDf12;
}
public void setWasDf12(Boolean wasDf12) {
this.wasDf12 = wasDf12;
}
}