From a448a78415addbae9f41c0cee628958d0ea2be3c Mon Sep 17 00:00:00 2001 From: AKurakin Date: Wed, 30 Aug 2023 14:28:25 +0300 Subject: [PATCH] =?UTF-8?q?clearing-service=20Sdf04=20=D0=BE=D0=B6=D0=B8?= =?UTF-8?q?=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=D0=BB=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=8C=D1=8E=20=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D0=BE?= =?UTF-8?q?=D0=B9=20=D0=B3=D1=80=D1=83=D0=BF=D0=BF=D1=8B=20=D0=B2=20Sessio?= =?UTF-8?q?nMonitor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clearing/service/StatementService.java | 22 ++++++++++++++++++- .../service/executors/Sdf04Executor.java | 5 +++++ .../spcex/clearing/service/model/Result.java | 9 ++++++++ .../stage/monitor/SessionMonitorFactory.java | 3 +++ 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/StatementService.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/StatementService.java index 0af38e60c..0f1ce0536 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/StatementService.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/StatementService.java @@ -15,12 +15,15 @@ import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdf0 import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdfRequestPart; import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; import ru.spcex.clearing.platform.messaging.domain.cud.clearing.SessionContinueEvent; +import ru.spcex.clearing.platform.messaging.domain.cud.utilities.NotificationNewRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; import ru.spcex.clearing.service.executors.AbstractExecutor; import ru.spcex.clearing.service.executors.Reviser; import ru.spcex.clearing.service.model.Result; import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.enumeration.ObjectType; +import ru.spcex.platform.enumeration.Priority; import ru.spcex.platform.enumeration.SdfTable; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -236,7 +239,15 @@ public class StatementService extends QueueConsumer implements InitializingBean if (service != null) { Result res = service.execute(sdfGroup, statementRequest); SessionContinueEvent continueSessionBn = new SessionContinueEvent(SdfTable.SDF_04); - kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn); + if (res.isAnyHasError()) { + NotificationNewRequest nRequest = new NotificationNewRequest(); + nRequest.setObjectType(ObjectType.rgst.getKey()); + nRequest.setPriority(Priority.HIGH.getKey()); + nRequest.setComment(String.format("Ошибка : некоторые из новых SDF_04 имеют неправильный статус")); + kafkaSender.sendRequestToQueue(Consts.NOTIFICATION_NEW, nRequest); + } else { // отправить в SessionMonitor + kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn); + } } else { log.warn("Executor for SDF_04 not set"); } @@ -272,6 +283,15 @@ public class StatementService extends QueueConsumer implements InitializingBean AbstractExecutor service = executorsMap.get(SdfTable.SDF_13); Result res = service.execute(sdfGroup, statementRequest); SessionContinueEvent continueSessionBn = new SessionContinueEvent(SdfTable.SDF_13); +// if (res.isAnyHasError()) { todo +// NotificationNewRequest nRequest = new NotificationNewRequest(); +// nRequest.setObjectType(ObjectType.rgst.getKey()); +// nRequest.setPriority(Priority.HIGH.getKey()); +// nRequest.setComment(String.format("Ошибка : некоторые из новых SDF_13 имеют неправильный статус")); +// kafkaSender.sendRequestToQueue(Consts.NOTIFICATION_NEW, nRequest); +// } else { +// kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn); +// } kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn); // finishSendCommand(res, service, statementRequest); } 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 b15a4d044..deb1e0472 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 @@ -71,7 +71,12 @@ public class Sdf04Executor extends AbstractExecutor { Result result = new Result(); Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId(); result.setChildGenerationId(generationIdForGroup); + result.setAnyHasError(false); for (SDf04 sdf04 : sdf) { + if (!("OK!".equals(sdf04.getImp_result()))) { + log.trace("sdf04[{}].Imp_result=\"{}\" was not ok.", sdf04.getId(), sdf04.getImp_result()); + result.setAnyHasError(true); + } //обычно мы ищем по группу sdf04, здесь как будто всегда только одна запись, todo нужно прочекать этот момент log.debug("Process sdf04 record; sdf04.id: {}", sdf04.getId()); Collection registries; diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/model/Result.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/model/Result.java index b43ed0eb7..b0b59ebbe 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/model/Result.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/model/Result.java @@ -9,6 +9,7 @@ public class Result { private List accountRequests = new ArrayList<>(); private Long childGenerationId; private String fileName; + private boolean anyHasError; public List getAccountRequests() { return accountRequests; @@ -33,4 +34,12 @@ public class Result { public void setFileName(String fileName) { this.fileName = fileName; } + + public boolean isAnyHasError() { + return anyHasError; + } + + public void setAnyHasError(boolean anyHasError) { + this.anyHasError = anyHasError; + } } 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 b391c93ee..a7e989149 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 @@ -3,6 +3,9 @@ package ru.spcex.clearing.session.stage.monitor; import ru.spcex.platform.enumeration.SdfTable; import ru.spcex.platform.enumeration.Section; +/** + * @see ru.spcex.clearing.platform.messaging.domain.cud.clearing.SessionContinueEvent + */ public class SessionMonitorFactory { public static SessionMonitor paymentsWereCreated(Section section) { switch (section) {