UNIT session sdf14 - sdf12 condition
This commit is contained in:
parent
7c7848074a
commit
24fe8346d3
6 changed files with 49 additions and 13 deletions
|
|
@ -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.RequirementsAndObligationCreationCompound;
|
||||||
import ru.spcex.clearing.session.stage.impl.UnlockResources;
|
import ru.spcex.clearing.session.stage.impl.UnlockResources;
|
||||||
import ru.spcex.clearing.session.stage.impl.compound.CompoundStageDealsPrepare;
|
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.SessionMonitor;
|
||||||
import ru.spcex.clearing.session.stage.monitor.SessionMonitorFactory;
|
import ru.spcex.clearing.session.stage.monitor.SessionMonitorFactory;
|
||||||
import ru.spcex.clearing.session.stage.task.DealsPreparePayload;
|
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.RequirementsAndObligationCreationCompoundPayload;
|
||||||
import ru.spcex.clearing.session.stage.task.result.DealsPrepareCompoundResult;
|
import ru.spcex.clearing.session.stage.task.result.DealsPrepareCompoundResult;
|
||||||
import ru.spcex.platform.classes.base.interfaces.ExecutionType;
|
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.Section;
|
||||||
import ru.spcex.platform.enumeration.SessionStatus;
|
import ru.spcex.platform.enumeration.SessionStatus;
|
||||||
import ru.spcex.platform.enumeration.SessionType;
|
import ru.spcex.platform.enumeration.SessionType;
|
||||||
|
|
@ -170,9 +172,14 @@ public class UnitedSession extends AbstractSession implements InitializingBean {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (afterPaymentsSdf4And13Monitor != null && isMonitorPassed(afterPaymentsSdf4And13Monitor, req.getRequestPayload())) {
|
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;
|
afterPaymentsSdf4And13Monitor = null;
|
||||||
checkStageAndThrow(TaskType.FormingPaymentInstruction);
|
checkStageAndThrow(TaskType.FormingPaymentInstruction);
|
||||||
finishPart();
|
finishPart(wasDf12);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (afterReviseErrorMonitor != null && isMonitorPassed(afterReviseErrorMonitor, req.getRequestPayload())) {
|
if (afterReviseErrorMonitor != null && isMonitorPassed(afterReviseErrorMonitor, req.getRequestPayload())) {
|
||||||
|
|
@ -261,6 +268,10 @@ public class UnitedSession extends AbstractSession implements InitializingBean {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void finishPart() {
|
public void finishPart() {
|
||||||
|
finishPart(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void finishPart(Boolean was12) {
|
||||||
try {
|
try {
|
||||||
//stage 9 continue revision
|
//stage 9 continue revision
|
||||||
{
|
{
|
||||||
|
|
@ -278,6 +289,7 @@ public class UnitedSession extends AbstractSession implements InitializingBean {
|
||||||
FinishingSessionPayload payload = new FinishingSessionPayload();
|
FinishingSessionPayload payload = new FinishingSessionPayload();
|
||||||
payload.setSessionId(currSession.getId());
|
payload.setSessionId(currSession.getId());
|
||||||
payload.setPr("1");
|
payload.setPr("1");
|
||||||
|
payload.setWasDf12(was12);
|
||||||
runStage(TaskType.FinishingSession, payload, finishingSession);
|
runStage(TaskType.FinishingSession, payload, finishingSession);
|
||||||
}
|
}
|
||||||
//stage 11
|
//stage 11
|
||||||
|
|
|
||||||
|
|
@ -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.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.clearing.classes.statics.data.sdf.SDf05;
|
|
||||||
import static ru.spcex.clearing.error.ClearingErrorInternal.SessionGeneralError;
|
import static ru.spcex.clearing.error.ClearingErrorInternal.SessionGeneralError;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
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<ExecutionDeposit> executionDepositImdg;
|
||||||
private final Imdg<ExecutionCurrency> executionCurrencyImdg;
|
private final Imdg<ExecutionCurrency> executionCurrencyImdg;
|
||||||
private final Imdg<Session> sessionImdg;
|
private final Imdg<Session> sessionImdg;
|
||||||
private final Imdg<SDf05> sDf05Imdg;
|
|
||||||
private final KafkaSender kafkaSender;
|
private final KafkaSender kafkaSender;
|
||||||
private final IMessageResolver msgResolver;
|
private final IMessageResolver msgResolver;
|
||||||
private final Sdf05Sender sdf05Sender;
|
private final Sdf05Sender sdf05Sender;
|
||||||
|
|
@ -80,7 +78,6 @@ public class FinishingSession implements ISessionStage {
|
||||||
this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
|
this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
|
||||||
this.executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class);
|
this.executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class);
|
||||||
this.executionCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class);
|
this.executionCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class);
|
||||||
this.sDf05Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf05, SDf05.class);
|
|
||||||
this.kafkaSender = kafkaSender;
|
this.kafkaSender = kafkaSender;
|
||||||
this.msgResolver = msgResolver;
|
this.msgResolver = msgResolver;
|
||||||
this.sdf05Sender = sdf05Sender;
|
this.sdf05Sender = sdf05Sender;
|
||||||
|
|
@ -99,7 +96,7 @@ public class FinishingSession implements ISessionStage {
|
||||||
FinishingSessionPayload payload = (FinishingSessionPayload) task.getData();
|
FinishingSessionPayload payload = (FinishingSessionPayload) task.getData();
|
||||||
switch (task.getTaskType()) {
|
switch (task.getTaskType()) {
|
||||||
case FinishingSession -> {
|
case FinishingSession -> {
|
||||||
return finishingSession(payload.getSessionId(), payload.getPr());
|
return finishingSession(payload.getSessionId(), payload.getPr(), payload.getWasDf12());
|
||||||
}
|
}
|
||||||
default -> {
|
default -> {
|
||||||
throw new IllegalStateException("Unknown task type: " + task.getTaskType());
|
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();
|
Instant now = Instant.now();
|
||||||
//установка CLRD для обработанных регистров
|
//установка CLRD для обработанных регистров
|
||||||
Collection<Registry> claimsAndLiabilities = selectClaimsAndLiabilities(sessionId);
|
Collection<Registry> claimsAndLiabilities = selectClaimsAndLiabilities(sessionId);
|
||||||
|
|
@ -230,13 +227,21 @@ public class FinishingSession implements ISessionStage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sdf05Sender.sendSdf05(pr);
|
sdf05Sender.sendSdf05(pr);
|
||||||
if (Section.FOND.equals(section) || Section.MULT.equals(section)) {
|
if (df14condition(wasDf12)) {
|
||||||
sdf14Sender.sendSdf14(sessionId);
|
sdf14Sender.sendSdf14(sessionId);
|
||||||
}
|
}
|
||||||
StageResult<Collection<Registry>> res = new StageResult<>(null, true);
|
StageResult<Collection<Registry>> res = new StageResult<>(null, true);
|
||||||
return res;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* формирование операционного отчета об обязательствах
|
* формирование операционного отчета об обязательствах
|
||||||
**/
|
**/
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ public abstract class Condition {
|
||||||
this.metOnce = true;
|
this.metOnce = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void event(SessionContinueEvent req);
|
abstract void event(SessionContinueEvent req);
|
||||||
|
|
||||||
public abstract String logName();
|
public abstract String logName();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,12 @@ public class SdfCondition extends Condition {
|
||||||
this.targetSdf = targetSdf;
|
this.targetSdf = targetSdf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public SdfTable sdf() {
|
||||||
|
return targetSdf;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void event(SessionContinueEvent req) {
|
void event(SessionContinueEvent req) {
|
||||||
if (req.getSdfType() != null && req.getSdfType().stream().anyMatch(t -> t.equals(targetSdf))) {
|
if (req.getSdfType() != null && req.getSdfType().stream().anyMatch(t -> t.equals(targetSdf))) {
|
||||||
isMet();
|
isMet();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
package ru.spcex.clearing.session.stage.monitor;
|
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.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.SessionContinueEvent;
|
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 {
|
public class SessionMonitor {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
private final List<Condition> conditions = new ArrayList<>();
|
private final List<Condition> conditions = new ArrayList<>();
|
||||||
|
|
@ -37,6 +37,11 @@ public class SessionMonitor {
|
||||||
return isMonitorPassed();
|
return isMonitorPassed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Collection<Condition> getAllConditions() {
|
||||||
|
return conditions;
|
||||||
|
}
|
||||||
|
|
||||||
public String allConditions() {
|
public String allConditions() {
|
||||||
return conditions.stream().map(Condition::logName).collect(Collectors.joining(",", "[", "]"));
|
return conditions.stream().map(Condition::logName).collect(Collectors.joining(",", "[", "]"));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@ package ru.spcex.clearing.session.stage.task;
|
||||||
public class FinishingSessionPayload {
|
public class FinishingSessionPayload {
|
||||||
private Long sessionId;
|
private Long sessionId;
|
||||||
private String pr;
|
private String pr;
|
||||||
|
//nullable
|
||||||
|
private Boolean wasDf12;
|
||||||
|
|
||||||
public Long getSessionId() {
|
public Long getSessionId() {
|
||||||
return sessionId;
|
return sessionId;
|
||||||
|
|
@ -19,4 +21,12 @@ public class FinishingSessionPayload {
|
||||||
public void setPr(String pr) {
|
public void setPr(String pr) {
|
||||||
this.pr = pr;
|
this.pr = pr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Boolean getWasDf12() {
|
||||||
|
return wasDf12;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWasDf12(Boolean wasDf12) {
|
||||||
|
this.wasDf12 = wasDf12;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue