From 99e98f6a28cef44158ad623907f5fbaa2e30ea97 Mon Sep 17 00:00:00 2001 From: ialbert Date: Thu, 7 Sep 2023 19:36:10 +0300 Subject: [PATCH] IPO0, FINL, MEDM --- .../service/executors/Sdf04Executor.java | 5 +- .../service/executors/Sdf57Executor.java | 36 +++++------ .../service/registry/RegistryManager.java | 1 + .../session/stage/FinalMkrSession.java | 20 +++--- .../session/stage/IntermediateMkrSession.java | 20 +++--- .../stage/PrimaryAuctionB0Session.java | 20 +++--- .../FormingPaymentInstructionReturnMkr.java | 8 ++- .../stage/impl/InspectionObligations.java | 10 +-- .../stage/monitor/SessionMonitorFactory.java | 21 +++++++ .../ru/spcex/clearing/statement/SdfGroup.java | 16 ++--- .../clearing/statement/SdfGroupManager.java | 63 ++++++++----------- .../statement/StatementServiceV2.java | 25 +++++--- 12 files changed, 140 insertions(+), 105 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf04Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf04Executor.java index 2f2f632ba..3459ff88d 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf04Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf04Executor.java @@ -121,11 +121,8 @@ public class Sdf04Executor extends AbstractExecutor { Optional registryUnitF = registryManager.findRegByUnit(registry.getCompanyId(), registry.getAccountId(), registry.getContract(), registry, RegistryUnit.F); Optional registryUnitT = registryManager.findRegByUnit(registry.getCompanyId(), registry.getAccountId(), registry.getContract(), registry, RegistryUnit.T); if (registryUnitF.isPresent() && registryUnitT.isPresent()) { - registryUnitF.get().setBalance(registryUnitT.get().getBalance().subtract(registry.getBalance())); - registryUnitF.get().setUpdated(now); - registryImdg.update(registryUnitF.get()); + assets.process(registry, registryUnitT.get(), registryUnitF.get(), BigDecimal.ZERO); } - registry.setUpdated(now); registryImdg.update(registry); }); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java index aa126b54a..f543510f4 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java @@ -28,7 +28,9 @@ import ru.spcex.clearing.service.LoggingService; import ru.spcex.clearing.service.builder.RegistryBuilder; import ru.spcex.clearing.service.integration.GatewayRequestCreator; import ru.spcex.clearing.service.model.Result; +import ru.spcex.clearing.service.registry.AssetTBFProcessing; import ru.spcex.clearing.service.registry.DmiService; +import ru.spcex.clearing.service.registry.RegistryManager; import ru.spcex.clearing.service.schedule.TradingTimeService; import ru.spcex.clearing.service.validation.ValidationStored; import ru.spcex.clearing.session.stage.util.RegistryUtil; @@ -84,13 +86,14 @@ public class Sdf57Executor extends AbstractExecutor { private final DmiService dmiService; private final TradingTimeService timeService; private final KafkaSender kafka; + private final AssetTBFProcessing assets; private final Pattern pattern = Pattern.compile("№.*"); public Sdf57Executor(@Qualifier("sdf57Validator") Function sDf57Validator, LoggingService errorLogger, ImdgProvider imdgProvider, IMessageResolver errorResolver, AnltSearcher anltSearcher, IMessageResolver messageResolver, DmiService dmiService, TradingTimeService timeService, - @Qualifier("kafkaSenderWithoutRequestInfo") KafkaSender kafka) { + @Qualifier("kafkaSenderWithoutRequestInfo") KafkaSender kafka, AssetTBFProcessing assets) { this.statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class); this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); this.sdf02Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf02, SDf02.class); @@ -110,6 +113,7 @@ public class Sdf57Executor extends AbstractExecutor { this.dmiService = dmiService; this.timeService = timeService; this.kafka = kafka; + this.assets = assets; } //todo доделать контроль sdf01 и sdf57 @@ -206,23 +210,25 @@ public class Sdf57Executor extends AbstractExecutor { updateReg(stmt, rgs); //добавил создание если не найдены Registry registryUnitB = findRegByUnit(company.getId(), account.getId(), stmt.getContract(), rgs, RegistryUnit.B).orElse(copyRegB(rgs)); - Registry registryUnitF = findRegByUnit(company.getId(), account.getId(), stmt.getContract(), rgs, RegistryUnit.F).orElse(copyRegF(rgs, null)); //передаю null т.к. отнимется ниже по коду - registryUnitF.setBalance(rgs.getBalance().subtract(registryUnitB.getBalance())); - registryUnitF.setUpdated(Instant.now()); + Registry registryUnitF = findRegByUnit(company.getId(), account.getId(), stmt.getContract(), rgs, RegistryUnit.F).orElse(copyRegF(rgs)); //передаю null т.к. отнимется ниже по коду +// registryUnitF.setBalance(rgs.getBalance().subtract(registryUnitB.getBalance())); +// registryUnitF.setUpdated(Instant.now()); //registry F всегда меняется if (registryUnitF.getId() == null) { registryImdg.insert(registryUnitF); log.debug("stmt.id={}, new AM*F.id={}", stmt.getId(), registryUnitF.getId()); - } else { - registryImdg.update(registryUnitF); - log.debug("stmt.id={}, updated AM*F.id={}", stmt.getId(), registryUnitF.getId()); } +// else { +// registryImdg.update(registryUnitF); +// log.debug("stmt.id={}, updated AM*F.id={}", stmt.getId(), registryUnitF.getId()); +// } //нужно сохранить registry B только если его не было if (registryUnitB.getId() == null) { registryImdg.insert(registryUnitB); log.debug("stmt.id={}, new AM*B.id={}", stmt.getId(), registryUnitB.getId()); } registryImdg.update(rgs); + assets.process(registryUnitB, rgs, registryUnitF, BigDecimal.ZERO); log.debug("stmt.id={}, updated AM*T.id={}: balance {}/debit {}/ credit {}", stmt.getId(), rgs.getId(), @@ -239,7 +245,7 @@ public class Sdf57Executor extends AbstractExecutor { .build(); calcBalance(registry, stmt); Registry registryB = copyRegB(registry); - Registry registryF = copyRegF(registry, registryB.getBalance()); + Registry registryF = copyRegF(registry); registryImdg.insert(registry); registryImdg.insert(registryF); @@ -412,24 +418,18 @@ public class Sdf57Executor extends AbstractExecutor { private Registry copyRegB(Registry rgs) { Registry rgsB = rgs.clone(); + RegistryManager.zeroState(rgsB); rgsB.setRegistryUnit(RegistryUnit.B.getKey()); rgsB.setRegistryCode(RegistryUtil.clearingCode(rgsB)); - rgsB.setBalance(BigDecimal.ZERO); - rgsB.setDebit(BigDecimal.ZERO); - rgsB.setCredit(BigDecimal.ZERO); - rgsB.setDiffBalance(BigDecimal.ZERO); - rgsB.setCheckBalance(BigDecimal.ZERO); return rgsB; } - private Registry copyRegF(Registry rgs, BigDecimal rgsBBalance) { + private Registry copyRegF(Registry rgs) { Registry rgsF = rgs.clone(); + RegistryManager.zeroState(rgsF); rgsF.setRegistryUnit(RegistryUnit.F.getKey()); rgsF.setRegistryCode(RegistryUtil.clearingCode(rgsF)); - rgsF.setBalance(safeBD(rgs.getBalance()).subtract(safeBD(rgsBBalance))); - rgsF.setCredit(BigDecimal.ZERO); - rgsF.setDiffBalance(BigDecimal.ZERO); - rgsF.setCheckBalance(BigDecimal.ZERO); + rgsF.setBalance(safeBD(rgs.getBalance())); return rgsF; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/RegistryManager.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/RegistryManager.java index 4d04161f1..1609f0983 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/RegistryManager.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/RegistryManager.java @@ -183,6 +183,7 @@ public class RegistryManager { rgs.setCredit(BigDecimal.ZERO); rgs.setDiffBalance(BigDecimal.ZERO); rgs.setCheckBalance(BigDecimal.ZERO); + rgs.setPlanBalance(BigDecimal.ZERO); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/FinalMkrSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/FinalMkrSession.java index 3c81a6aaf..22e891809 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/FinalMkrSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/FinalMkrSession.java @@ -139,15 +139,17 @@ public class FinalMkrSession extends AbstractSession implements InitializingBean if (firstReviseMonitor != null && isMonitorPassed(firstReviseMonitor, req.getRequestPayload())) { firstReviseMonitor = null; firstPart(); + return; } if (afterPaymentsSdf4Monitor != null && isMonitorPassed(afterPaymentsSdf4Monitor, req.getRequestPayload())) { afterPaymentsSdf4Monitor = null; - sendSdf56(); - } - if (afterPaymentsReviseMonitor != null && isMonitorPassed(afterPaymentsReviseMonitor, req.getRequestPayload())) { - afterPaymentsReviseMonitor = null; finishPart(); + return; } + //if (afterPaymentsReviseMonitor != null && isMonitorPassed(afterPaymentsReviseMonitor, req.getRequestPayload())) { + // afterPaymentsReviseMonitor = null; + // finishPart(); + //} } catch (StageException e) { //already logged } @@ -211,11 +213,13 @@ public class FinalMkrSession extends AbstractSession implements InitializingBean paymentResult = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstructionDeals); } if (paymentResult.getStageResult().getPaymentInstructions().isEmpty()) { - log.info("no payment instructions were created, sending SDF56"); - sendSdf56(); + log.info("no payment instructions were created"); + finishPart(); } else { - log.info("created {} PaymentInstructions, waiting for SDF04", paymentResult.getStageResult().getPaymentInstructions().size()); - this.afterPaymentsSdf4Monitor = SessionMonitorFactory.paymentsWereCreated(section()); + this.afterPaymentsSdf4Monitor = SessionMonitorFactory.waitStep7(section()); + log.info("created {} PaymentInstructions, waiting for {}", + paymentResult.getStageResult().getPaymentInstructions().size(), + this.afterPaymentsSdf4Monitor.allConditions()); } } catch (StageException e) { //already logged diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/IntermediateMkrSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/IntermediateMkrSession.java index e22e148ff..7ac9e372c 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/IntermediateMkrSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/IntermediateMkrSession.java @@ -133,15 +133,17 @@ public class IntermediateMkrSession extends AbstractSession implements Initializ if (firstReviseMonitor != null && isMonitorPassed(firstReviseMonitor, req.getRequestPayload())) { firstReviseMonitor = null; firstPart(); + return; } if (afterPaymentsSdf4Monitor != null && isMonitorPassed(afterPaymentsSdf4Monitor, req.getRequestPayload())) { afterPaymentsSdf4Monitor = null; - sendSdf56(); - } - if (afterPaymentsReviseMonitor != null && isMonitorPassed(afterPaymentsReviseMonitor, req.getRequestPayload())) { - afterPaymentsReviseMonitor = null; finishPart(); + return; } + //if (afterPaymentsReviseMonitor != null && isMonitorPassed(afterPaymentsReviseMonitor, req.getRequestPayload())) { + // afterPaymentsReviseMonitor = null; + // finishPart(); + //} } catch (StageException e) { //already logged } @@ -195,11 +197,13 @@ public class IntermediateMkrSession extends AbstractSession implements Initializ paymentResult = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstructionDeals); } if (paymentResult.getStageResult().getPaymentInstructions().isEmpty()) { - log.info("no payment instructions were created, sending SDF56"); - sendSdf56(); + log.info("no payment instructions were created"); + finishPart(); } else { - log.info("created {} PaymentInstructions, waiting for SDF04", paymentResult.getStageResult().getPaymentInstructions().size()); - this.afterPaymentsSdf4Monitor = SessionMonitorFactory.paymentsWereCreated(section()); + this.afterPaymentsSdf4Monitor = SessionMonitorFactory.waitStep7(section()); + log.info("created {} PaymentInstructions, waiting for {}", + paymentResult.getStageResult().getPaymentInstructions().size(), + this.afterPaymentsSdf4Monitor.allConditions()); } } catch (StageException e) { //already logged diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionB0Session.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionB0Session.java index 2b7a51980..79d2148f9 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionB0Session.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionB0Session.java @@ -127,15 +127,17 @@ public class PrimaryAuctionB0Session extends AbstractSession implements Initiali if (firstReviseMonitor != null && isMonitorPassed(firstReviseMonitor, req.getRequestPayload())) { firstReviseMonitor = null; firstPart(); + return; } if (afterPaymentsSdf4And13Monitor != null && isMonitorPassed(afterPaymentsSdf4And13Monitor, req.getRequestPayload())) { afterPaymentsSdf4And13Monitor = null; - sendSdf56(); - } - if (afterPaymentsReviseMonitor != null && isMonitorPassed(afterPaymentsReviseMonitor, req.getRequestPayload())) { - afterPaymentsReviseMonitor = null; finishPart(); + return; } + //if (afterPaymentsReviseMonitor != null && isMonitorPassed(afterPaymentsReviseMonitor, req.getRequestPayload())) { + // afterPaymentsReviseMonitor = null; + // finishPart(); + //} } catch (StageException e) { //already logged } @@ -187,11 +189,13 @@ public class PrimaryAuctionB0Session extends AbstractSession implements Initiali paymentResult = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstruction); } if (paymentResult.getStageResult().isEmpty()) { - log.info("no payment instructions were created, sending SDF56"); - sendSdf56(); + log.info("no payment instructions were created"); + finishPart(); } else { - log.info("created {} PaymentInstructions, waiting for SDF04/SDF13", paymentResult.getStageResult().size()); - this.afterPaymentsSdf4And13Monitor = SessionMonitorFactory.paymentsWereCreated(section()); + this.afterPaymentsSdf4And13Monitor = SessionMonitorFactory.waitStep7(section()); + log.info("created {} PaymentInstructions, waiting for {}", + paymentResult.getStageResult().size(), + this.afterPaymentsSdf4And13Monitor.allConditions()); } } catch (StageException e) { //already logged diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionReturnMkr.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionReturnMkr.java index 74dbb794e..ab3c45525 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionReturnMkr.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionReturnMkr.java @@ -22,6 +22,7 @@ import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; import ru.spcex.clearing.service.SpecifUtil; import ru.spcex.clearing.service.builder.PaymentInstructionBuilder; import ru.spcex.clearing.service.builder.PaymentInstructionBuilderFinalMkrDeals; +import ru.spcex.clearing.service.registry.AssetTBFProcessing; import ru.spcex.clearing.service.registry.RegistryManager; import ru.spcex.clearing.session.stage.ISessionStage; import ru.spcex.clearing.session.stage.StageResult; @@ -62,12 +63,14 @@ public class FormingPaymentInstructionReturnMkr implements ISessionStage { private Imdg companyImdg; private Imdg sDf03Imdg; private Imdg sDf12Imdg; + private final AssetTBFProcessing assets; private KafkaSender kafkaSender; private final RegistryManager rgsMng; @Autowired public FormingPaymentInstructionReturnMkr(ImdgProvider imdgProvider, - KafkaSender kafkaSender, RegistryManager rgsMng) { + AssetTBFProcessing assets, KafkaSender kafkaSender, RegistryManager rgsMng) { + this.assets = assets; this.kafkaSender = kafkaSender; this.imdgProvider = imdgProvider; this.idGenerator = imdgProvider.getImdgIdGenerator(); @@ -196,6 +199,9 @@ public class FormingPaymentInstructionReturnMkr implements ISessionStage { amt.setSettledDebit(safeBD(amt.getSettledDebit()).add(safeBD(lm_t.getBalance()))); setUpdatedStoreInImdg(amt, now); }); + if (amfO.isPresent() && ambO.isPresent() && payerAmtO.isPresent()) { + assets.process(ambO.get(), payerAmtO.get(), amfO.get(), lm_t.getBalance()); + } } Pair pmts = PaymentInstructionBuilderFinalMkrDeals.builder(imdgProvider) .lm_t(lm_t) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligations.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligations.java index 46c77388f..74e0cbaa9 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligations.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligations.java @@ -11,6 +11,7 @@ import org.springframework.stereotype.Service; import ru.clearing.classes.statics.data.registry.Registry; import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.service.registry.AssetTBFProcessing; import ru.spcex.clearing.service.registry.RegistryManager; import ru.spcex.clearing.session.stage.ISessionStage; import ru.spcex.clearing.session.stage.StageResult; @@ -27,6 +28,7 @@ import ru.spcex.platform.utils.enumeration.IEnumKey; import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.enumeration.SimpleMessageResolver; +import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; import java.util.*; @@ -45,11 +47,13 @@ public class InspectionObligations implements ISessionStage { private final IMessageResolver msgResolver = new SimpleMessageResolver(); private SessionType sessionType; private Section section; + private final AssetTBFProcessing assets; @Autowired - public InspectionObligations(ImdgProvider imdgProvider, RegistryManager registryManager) { + public InspectionObligations(ImdgProvider imdgProvider, RegistryManager registryManager, AssetTBFProcessing assets) { this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); this.registryManager = registryManager; + this.assets = assets; } public void setSessionType(SessionType sessionType) { @@ -150,9 +154,7 @@ public class InspectionObligations implements ISessionStage { Optional registryUnitF = registryManager.findRegByUnit(registry.getCompanyId(), registry.getAccountId(), registry.getContract(), blockedRegistry, RegistryUnit.F); Optional registryUnitT = registryManager.findRegByUnit(registry.getCompanyId(), registry.getAccountId(), registry.getContract(), blockedRegistry, RegistryUnit.T); if (registryUnitF.isPresent() && registryUnitT.isPresent()) { - registryUnitF.get().setBalance(registryUnitT.get().getBalance().subtract(blockedRegistry.getBalance())); - registryUnitF.get().setUpdated(now); - registryImdg.update(registryUnitF.get()); + assets.process(blockedRegistry, registryUnitT.get(), registryUnitF.get(), BigDecimal.ZERO); } } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/monitor/SessionMonitorFactory.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/monitor/SessionMonitorFactory.java index a7e989149..5ee0e3804 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/monitor/SessionMonitorFactory.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/monitor/SessionMonitorFactory.java @@ -21,6 +21,27 @@ public class SessionMonitorFactory { } } + public static SessionMonitor waitStep7(Section section) { + switch (section) { + case MKR -> { + return SessionMonitor.create() + .addCondition(new SdfCondition(SdfTable.SDF_04)) + .addCondition(new SdfCondition(SdfTable.SDF_01)) + .addCondition(new SdfCondition(SdfTable.SDF_57)); + } + case FOND -> { + return SessionMonitor.create() + .addCondition(new SdfCondition(SdfTable.SDF_04)) + .addCondition(new SdfCondition(SdfTable.SDF_13)) + .addCondition(new SdfCondition(SdfTable.SDF_08)) + .addCondition(new SdfCondition(SdfTable.SDF_21)) + .addCondition(new SdfCondition(SdfTable.SDF_01)) + .addCondition(new SdfCondition(SdfTable.SDF_57)); + } + default -> throw new IllegalStateException("unknown wait conditions for section " + section); + } + } + public static SessionMonitor waitRevise() { return SessionMonitor.create() .addCondition(new SdfCondition(SdfTable.SDF_01)) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroup.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroup.java index d48c42cee..56c575ae9 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroup.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroup.java @@ -11,14 +11,14 @@ public enum SdfGroup { Sdf01And57(SdfTable.SDF_01, SdfTable.SDF_57), Sdf08And21(SdfTable.SDF_08, SdfTable.SDF_21), - //------ session groups ------ - session_Triple(SdfTable.SDF_04, SdfTable.SDF_01, SdfTable.SDF_57), - session_Six(SdfTable.SDF_04, - SdfTable.SDF_13, - SdfTable.SDF_08, - SdfTable.SDF_21, - SdfTable.SDF_01, - SdfTable.SDF_57), + //------ session groups ------ (4), (1 57), (13), (8 21) + //session_Triple(SdfTable.SDF_04, SdfTable.SDF_01, SdfTable.SDF_57), + //session_Six(SdfTable.SDF_04, + // SdfTable.SDF_13, + // SdfTable.SDF_08, + // SdfTable.SDF_21, + // SdfTable.SDF_01, + // SdfTable.SDF_57), ; private final Collection group; diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroupManager.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroupManager.java index 877681bc8..e7e12ef16 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroupManager.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroupManager.java @@ -4,19 +4,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.misc.Session; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.session.stage.TaskType; -import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.enumeration.SdfTable; -import ru.spcex.platform.enumeration.Section; -import ru.spcex.platform.enumeration.SessionStatus; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; -import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; -import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; -import ru.spcex.platform.utils.enumeration.IEnumKey; -import ru.spcex.platform.utils.text.TextUtil; -import java.util.Collection; import java.util.Optional; @Component @@ -29,33 +20,33 @@ public class SdfGroupManager { } public Optional getGroup(SdfTable table) { - ImdgPredicateBuilder pb = sessImdg.predicateBuilder(); - ImdgPredicate prdct = pb.and( - pb.equals("workflowStatus", SessionStatus.ACTV.getKey()), - pb.equals("sessionStatus", TaskType.FormingPaymentInstruction.getKey()) - ); - Collection sessions = sessImdg.getCollectionObjectsByPredicate(prdct); - if (sessions.size() > 1) { - throw new IllegalStateException("more than one active session found by predicate " - + prdct - + " ids " + sessions.stream() - .map(SpcexObjectBase::getId) - .map(Object::toString) - .collect(TextUtil.join)); - } - if (sessions.size() == 0) { + //ImdgPredicateBuilder pb = sessImdg.predicateBuilder(); + //ImdgPredicate prdct = pb.and( + // pb.equals("workflowStatus", SessionStatus.ACTV.getKey()), + // pb.equals("sessionStatus", TaskType.FormingPaymentInstruction.getKey()) + //); + //Collection sessions = sessImdg.getCollectionObjectsByPredicate(prdct); + //if (sessions.size() > 1) { + // throw new IllegalStateException("more than one active session found by predicate " + // + prdct + // + " ids " + sessions.stream() + // .map(SpcexObjectBase::getId) + // .map(Object::toString) + // .collect(TextUtil.join)); + //} + //if (sessions.size() == 0) { return SdfGroup.groupByTable(table); - } else { - Session session = sessions.iterator().next(); - Section section = IEnumKey.getEnumByKey(Section.class, session.getSection()); - if (section == null) { - throw new IllegalStateException("couldn't determine section of session.id=" + session.getId()); - } - if (Section.MKR.equals(section)) { - return Optional.of(SdfGroup.session_Triple); - } else if (Section.FOND.equals(section)) { - return Optional.of(SdfGroup.session_Six); - } else throw new IllegalStateException("unknown section '" + section + "' of session.id=" + session.getId()); - } + //} else { + // Session session = sessions.iterator().next(); + // Section section = IEnumKey.getEnumByKey(Section.class, session.getSection()); + // if (section == null) { + // throw new IllegalStateException("couldn't determine section of session.id=" + session.getId()); + // } + // if (Section.MKR.equals(section)) { + // return Optional.of(SdfGroup.session_Triple); + // } else if (Section.FOND.equals(section)) { + // return Optional.of(SdfGroup.session_Six); + // } else throw new IllegalStateException("unknown section '" + section + "' of session.id=" + session.getId()); + //} } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/StatementServiceV2.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/StatementServiceV2.java index 2814e108d..5a5705d93 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/StatementServiceV2.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/StatementServiceV2.java @@ -123,15 +123,18 @@ public class StatementServiceV2 { processSdf08And21(find(SdfTable.SDF_08, fullGroup), find(SdfTable.SDF_21, fullGroup)); } else if (sdfGroup.get() == SdfGroup.Sdf01And57) { processSdf01And57(find(SdfTable.SDF_01, fullGroup), find(SdfTable.SDF_57, fullGroup)); - } else if (sdfGroup.get() == SdfGroup.session_Triple) { - processSdf04(find(SdfTable.SDF_04, fullGroup)); - processSdf01And57(find(SdfTable.SDF_01, fullGroup), find(SdfTable.SDF_57, fullGroup)); - } else if (sdfGroup.get() == SdfGroup.session_Six) { - processSdf04(find(SdfTable.SDF_04, fullGroup)); - processSdf13(find(SdfTable.SDF_13, fullGroup)); - processSdf08And21(find(SdfTable.SDF_08, fullGroup), find(SdfTable.SDF_21, fullGroup)); - processSdf01And57(find(SdfTable.SDF_01, fullGroup), find(SdfTable.SDF_57, fullGroup)); - } else { + } + //else if (sdfGroup.get() == SdfGroup.session_Triple) { + // processSdf04(find(SdfTable.SDF_04, fullGroup)); + // processSdf01And57(find(SdfTable.SDF_01, fullGroup), find(SdfTable.SDF_57, fullGroup)); + //} + //else if (sdfGroup.get() == SdfGroup.session_Six) { + // processSdf04(find(SdfTable.SDF_04, fullGroup)); + // processSdf13(find(SdfTable.SDF_13, fullGroup)); + // processSdf08And21(find(SdfTable.SDF_08, fullGroup), find(SdfTable.SDF_21, fullGroup)); + // processSdf01And57(find(SdfTable.SDF_01, fullGroup), find(SdfTable.SDF_57, fullGroup)); + //} + else { throw new IllegalStateException("not implemented"); } } @@ -160,7 +163,9 @@ public class StatementServiceV2 { processSdf21(sdf21); removeFirstWithSameTableAndGroupId(sdf21); //fixme ревизия для бумаг reviser.doRevise(pair.getFirst().getGroupId()); - log.info("pair sdf08/sdf21 processed successfully"); + SessionContinueEvent continueSessionBn = new SessionContinueEvent(SdfTable.SDF_08, SdfTable.SDF_21); + kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn); + log.info("pair sdf08/sdf21 processed successfully"); } /**