From 89bf4fe820ab4642cb20338dc3a3c40d507fb24b Mon Sep 17 00:00:00 2001 From: AKurakin Date: Fri, 12 Apr 2024 19:09:47 +0300 Subject: [PATCH] account-service utility-service http://jira.mfd.msk:8088/browse/CLS-588 --- .../service/ClearingAccountService.java | 29 +++++++++++++++++ .../account/service/DepoAccountService.java | 32 +++++++++++++++++-- .../platform/enumeration/ObjectType.java | 3 +- 3 files changed, 61 insertions(+), 3 deletions(-) diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java index 21767011c..cf442d1f7 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java @@ -187,6 +187,10 @@ public class ClearingAccountService extends QueueConsumer implements Initializin imdgTransaction.rollbackTransaction(); } } + + if (txOk && account != null) { + sendNotificationAccountNewRequest(account); + } return null; } @@ -242,6 +246,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin AccountSdf01Request req = userRequest.getRequestPayload(); List accountToStatement = new ArrayList<>(); + List accountsToNotification = new ArrayList<>(); ImdgTransaction imdgTransaction = imdgProvider.newTransaction(); boolean txOk = false; @@ -289,6 +294,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin Long accountId = -1L; ClearingAccount clearingAccount = null; accountId = accountImdg.insert(account); + accountsToNotification.add(account); clearingAccount = new ClearingAccount(); clearingAccount.setCompanyId(accountReq.getCompanyId()); @@ -317,6 +323,11 @@ public class ClearingAccountService extends QueueConsumer implements Initializin sendStatementRequestBack(req.getGroupingSdf01Id(), req.getGroupingSdf02Id(), accountToStatement); + + if (txOk) { + for (Account account : accountsToNotification) + sendNotificationAccountNewRequest(account); + } log.debug("successfully processed, grouping id={}, processed number={}", req.getGroupingSdf01Id(), accountToStatement.size()); return null; @@ -531,6 +542,24 @@ public class ClearingAccountService extends QueueConsumer implements Initializin } + /** + * Формирование уведомления о добавлении счёта + */ + public Long sendNotificationAccountNewRequest(Account account) { + String message = String.format("Добавлен новый счет %s", account.getAccount()); + final String destination = Consts.NOTIFICATION_NEW; + NotificationNewRequest request = new NotificationNewRequest(); + //request.setObjectId(account.getId()); + request.setObjectType(ObjectType.registry.getKey()); + request.setPriority(Priority.HIGH.getKey()); + request.setComment(message); + log.debug("Send message to kafka \"{}\": {}", destination, LogFormatter.toStringWrapper(request)); + Long rKey = kafkaSender.sendRequestToQueue(destination, request); + log.trace("About account.id={} send notification request id={}", account.getId(), rKey); + return rKey; + } + + // --------- notification apply system ----------- public static class SDF52WaitingData { public BaseRequest systemRequest; diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/DepoAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/DepoAccountService.java index f8b99f355..d962b4825 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/DepoAccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/DepoAccountService.java @@ -18,6 +18,7 @@ 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.AccountSdfToStatementRequestPart; import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.utilities.NotificationNewRequest; import ru.spcex.clearing.platform.messaging.serialization.LogFormatter; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; @@ -129,6 +130,9 @@ public class DepoAccountService extends QueueConsumer implements InitializingBea imdgTransaction.rollbackTransaction(); } } + if (txOk && depoAccount != null) { + sendNotificationAccountNewRequest(account); + } return null; } @@ -137,6 +141,7 @@ public class DepoAccountService extends QueueConsumer implements InitializingBea AccountSdf01Request req = userRequest.getRequestPayload(); List accountToStatement = new ArrayList<>(); + List accountsToNotification = new ArrayList<>(); ImdgTransaction imdgTransaction = imdgProvider.newTransaction(); boolean txOk = false; @@ -184,7 +189,8 @@ public class DepoAccountService extends QueueConsumer implements InitializingBea Long depoAccountId = -1L; Long accountId = -1L; - accountId = accountImdg.insert(account); + accountId = accountImdg.insert(account); + accountsToNotification.add(account); DepoAccount depoAccount = new DepoAccount(); depoAccount.setCompanyId(accountReq.getCompanyId()); @@ -219,6 +225,11 @@ public class DepoAccountService extends QueueConsumer implements InitializingBea } sendStatementRequestBack(req.getGroupingSdf01Id(), req.getGroupingSdf02Id(), accountToStatement); + + if (txOk) { + for (Account account : accountsToNotification) + sendNotificationAccountNewRequest(account); + } log.debug("successfully processed, grouping id={}, processed number={}", req.getGroupingSdf01Id(), accountToStatement.size()); return null; @@ -228,10 +239,27 @@ public class DepoAccountService extends QueueConsumer implements InitializingBea StatementRequest request = new StatementRequest(); request.setGroupId(groupingSdf01Id); request.setChildGenerationId(groupingSdf02Id); - request.setContinueSdf(true); //fixme???? + request.setContinueSdf(true); request.setAccountCreationResults(results); request.setTable(SdfTable.SDF_08); // по нему запрос получили log.debug("Send message to kafka \"{}\": {}", Consts.STATEMENT_PROCESS, LogFormatter.toStringWrapper(request)); kafkaSender.sendRequestToQueue(Consts.STATEMENT_PROCESS, request); } + + /** + * Формирование уведомления о добавлении счёта + */ + public Long sendNotificationAccountNewRequest(Account account) { + String message = String.format("Добавлен новый счет %s", account.getAccount()); + final String destination = Consts.NOTIFICATION_NEW; + NotificationNewRequest request = new NotificationNewRequest(); + //request.setObjectId(account.getId()); + request.setObjectType(ObjectType.registry.getKey()); + request.setPriority(Priority.HIGH.getKey()); + request.setComment(message); + log.debug("Send message to kafka \"{}\": {}", destination, LogFormatter.toStringWrapper(request)); + Long rKey = kafkaSender.sendRequestToQueue(destination, request); + log.trace("About account.id={} send notification request id={}", account.getId(), rKey); + return rKey; + } } diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java index 05e64e121..0b0346366 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java @@ -4,7 +4,8 @@ import ru.spcex.platform.utils.enumeration.IEnumKey; public enum ObjectType implements IEnumKey { statement("STMT"), vfrs("VFRS"), rgst("RGST"), gateway("GTWY"), session("SESN"), - account_block("ACCB"), account_active("ACCA"), diff("DIFF"); + account_block("ACCB"), account_active("ACCA"), diff("DIFF"), + registry("RGST"); private final String key;