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 cf442d1f7..4d98310d8 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 @@ -550,7 +550,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin final String destination = Consts.NOTIFICATION_NEW; NotificationNewRequest request = new NotificationNewRequest(); //request.setObjectId(account.getId()); - request.setObjectType(ObjectType.registry.getKey()); + request.setObjectType(ObjectType.rgst.getKey()); request.setPriority(Priority.HIGH.getKey()); request.setComment(message); log.debug("Send message to kafka \"{}\": {}", destination, LogFormatter.toStringWrapper(request)); 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 d962b4825..471ad6a0e 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 @@ -254,7 +254,7 @@ public class DepoAccountService extends QueueConsumer implements InitializingBea final String destination = Consts.NOTIFICATION_NEW; NotificationNewRequest request = new NotificationNewRequest(); //request.setObjectId(account.getId()); - request.setObjectType(ObjectType.registry.getKey()); + request.setObjectType(ObjectType.rgst.getKey()); request.setPriority(Priority.HIGH.getKey()); request.setComment(message); log.debug("Send message to kafka \"{}\": {}", destination, LogFormatter.toStringWrapper(request)); diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/DbfImportKafkaMessenger.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/DbfImportKafkaMessenger.java index c5f42d148..1fcd0f8b6 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/DbfImportKafkaMessenger.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/DbfImportKafkaMessenger.java @@ -4,11 +4,17 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Component; +import ru.spcex.clearing.dbf.importer.logic.data.ResultContainer; import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable; +import ru.spcex.clearing.dbf.importer.logic.data.enums.StageResult; import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; import ru.spcex.clearing.platform.messaging.domain.cud.clearing.Sdf04Request; +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.sender.KafkaSender; +import ru.spcex.platform.enumeration.ObjectType; +import ru.spcex.platform.enumeration.Priority; import ru.spcex.platform.enumeration.SdfTable; import java.util.HashMap; @@ -50,6 +56,40 @@ public class DbfImportKafkaMessenger implements InitializingBean { } } + public void notifyUserAboutErrorParsing(Throwable error, ResultContainer resultContainer) { + if (resultContainer == null || resultContainer.getDbfFile() == null || resultContainer.getDbfFile() == null) + return; + ETable currTable = resultContainer.getDbfTable(); + String fileName = resultContainer.getDbfFile().getName(); + log.debug("Notify user about error {} \"{}\"", + resultContainer.getDbfTable(), fileName); + sendUserNotification(ObjectType.rgst, String.format("Файл \"%s\" не сохранен", fileName), Priority.HIGH); + } + + public void notifyUserAboutSuccessLoad(ResultContainer resultContainer) { + if (ETable.DF_04 == resultContainer.getDbfTable() || ETable.DF_09 == resultContainer.getDbfTable()) { + if (!(StageResult.OK == resultContainer.getLastStageStatus() || StageResult.COMPLETE == resultContainer.getLastStageStatus())) { + return; + } + String fileName = resultContainer.getDbfFile().getName(); + log.debug("Notify user about success {} \"{}\"", + resultContainer.getDbfTable(), fileName); + sendUserNotification(ObjectType.rgst, String.format("Загружен \"%s\" - успешно", fileName), Priority.LOW); + } + } + + private void sendUserNotification(ObjectType objectType, String comment, Priority priority) { + final String destination = Consts.NOTIFICATION_NEW; + NotificationNewRequest request = new NotificationNewRequest(); + //request.setObjectId(); + request.setObjectType(objectType.getKey()); + request.setPriority(priority.getKey()); + request.setComment(comment); + log.debug("Send message to kafka \"{}\": {}", destination, LogFormatter.toStringWrapper(request)); + Long rKey = kafka.get().sendRequestToQueue(destination, request); + log.trace("For user send message, request id={}", rKey); + } + private void messageStatement(Long groupId, SdfTable table) { messageStatement(groupId, table, Consts.STATEMENT_PROCESS); } diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java index f0259951f..10a94a7b6 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java @@ -59,11 +59,14 @@ public class ImportToDB extends Stage { table.injectEntity(table.getEntity(entity)); } kafkaMessenger.notifySystemIfNeeded(currTable, fileId); + kafkaMessenger.notifyUserAboutSuccessLoad(resultContainer); } catch (IOException exception) { log.warn(exception.getMessage()); + kafkaMessenger.notifyUserAboutErrorParsing(exception, resultContainer); return StageResult.ERROR; } catch (Throwable e) { log.error(ExceptionUtils.getStackTrace(e)); + kafkaMessenger.notifyUserAboutErrorParsing(e, resultContainer); return StageResult.ERROR; } diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/LoadFileFromDisk.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/LoadFileFromDisk.java index e97840025..8b534b15b 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/LoadFileFromDisk.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/LoadFileFromDisk.java @@ -1,5 +1,6 @@ package ru.spcex.clearing.dbf.importer.logic.stages; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import ru.spcex.clearing.dbf.importer.config.settings.ImportDBFServiceSettings; import ru.spcex.clearing.dbf.importer.logic.data.ResultContainer; @@ -16,8 +17,12 @@ import java.util.UUID; public class LoadFileFromDisk extends Stage { private final ImportDBFServiceSettings settings; - public LoadFileFromDisk(ImportDBFServiceSettings settings) { + private final DbfImportKafkaMessenger kafkaMessenger; + + @Autowired + public LoadFileFromDisk(ImportDBFServiceSettings settings, DbfImportKafkaMessenger kafkaMessenger) { this.settings = settings; + this.kafkaMessenger = kafkaMessenger; } @Override @@ -34,6 +39,9 @@ public class LoadFileFromDisk extends Stage { if (settings.getStore().isDeleteSrcFiles()) Files.delete(dbfFile.toPath()); } catch (IOException e) { log.error(String.format("uuid %s. Can't read file %s", taskUuid, resultContainer.getDbfFile().getName()), e); + if (kafkaMessenger != null) { + kafkaMessenger.notifyUserAboutErrorParsing(e, resultContainer); + } return StageResult.ERROR; } log.debug("uuid {}. Read all bytes from source file complete", taskUuid); diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDB.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDB.java index 929dd799c..9895d7fb2 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDB.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDB.java @@ -74,11 +74,14 @@ public class ImportToDB extends Stage { }); } while (swtReader.hasNextRecord()); kafkaMessenger.notifySystemIfNeeded(currTable, fileId); + kafkaMessenger.notifyUserAboutSuccessLoad(resultContainer); } catch (IOException exception) { log.warn(exception.getMessage()); + kafkaMessenger.notifyUserAboutErrorParsing(exception, resultContainer); return StageResult.ERROR; } catch (Throwable e) { log.error(ExceptionUtils.getStackTrace(e)); + kafkaMessenger.notifyUserAboutErrorParsing(e, resultContainer); return StageResult.ERROR; } diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/LoadFileFromDisk.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/LoadFileFromDisk.java index 4ebcb8ad1..53173facc 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/LoadFileFromDisk.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/LoadFileFromDisk.java @@ -15,9 +15,11 @@ import java.util.UUID; @Component public class LoadFileFromDisk extends Stage { private final ImportSWTServiceSettings settings; + private final SWTImportKafkaMessenger kafkaMessenger; - public LoadFileFromDisk(ImportSWTServiceSettings settings) { + public LoadFileFromDisk(ImportSWTServiceSettings settings, SWTImportKafkaMessenger kafkaMessenger) { this.settings = settings; + this.kafkaMessenger = kafkaMessenger; } @Override @@ -34,6 +36,9 @@ public class LoadFileFromDisk extends Stage { if (settings.getStore().isDeleteSrcFiles()) Files.delete(swtFile.toPath()); } catch (IOException e) { log.error(String.format("uuid %s. Can't read file %s", taskUuid, resultContainer.getSwtFile().getName()), e); + if (kafkaMessenger != null) { + kafkaMessenger.notifyUserAboutErrorParsing(e, resultContainer); + } return StageResult.ERROR; } log.debug("uuid {}. Read all bytes from source file complete", taskUuid); diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/SWTImportKafkaMessenger.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/SWTImportKafkaMessenger.java index f3d575196..952469534 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/SWTImportKafkaMessenger.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/SWTImportKafkaMessenger.java @@ -6,8 +6,14 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Component; import ru.spcex.clearing.platform.messaging.domain.Consts; 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.sender.KafkaSender; +import ru.spcex.clearing.swt.importer.logic.data.ResultContainer; import ru.spcex.clearing.swt.importer.logic.data.enums.ETable; +import ru.spcex.clearing.swt.importer.logic.data.enums.StageResult; +import ru.spcex.platform.enumeration.ObjectType; +import ru.spcex.platform.enumeration.Priority; import ru.spcex.platform.enumeration.SdfTable; import java.util.HashMap; @@ -56,4 +62,38 @@ public class SWTImportKafkaMessenger implements InitializingBean { log.debug("Send message id={}; groupId={}, table={} to kafka \"{}\"", rid, groupId, table, Consts.STATEMENT_PROCESS); } + public void notifyUserAboutErrorParsing(Throwable error, ResultContainer resultContainer) { + if (resultContainer == null || resultContainer.getSwtFile() == null || resultContainer.getSwtTable() == null) + return; + ETable currTable = resultContainer.getSwtTable(); + String fileName = resultContainer.getSwtFile().getName(); + log.debug("Notify user about error {} \"{}\"", + resultContainer.getSwtTable(), fileName); + sendUserNotification(ObjectType.rgst, String.format("Файл \"%s\" не сохранен", fileName), Priority.HIGH); + } + + public void notifyUserAboutSuccessLoad(ResultContainer resultContainer) { +// if (ETable.S_DF_02 == resultContainer.getSwtTable()) { +// if (!(StageResult.OK == resultContainer.getLastStageStatus() || StageResult.COMPLETE == resultContainer.getLastStageStatus())) { +// return; +// } +// String fileName = resultContainer.getSwtFile().getName(); +// log.debug("Notify user about success {} \"{}\"", +// resultContainer.getSwtTable(), fileName); +// sendUserNotification(ObjectType.rgst, String.format("Загружен \"%s\" - успешно", fileName), Priority.LOW); +// } + } + + private void sendUserNotification(ObjectType objectType, String comment, Priority priority) { + final String destination = Consts.NOTIFICATION_NEW; + NotificationNewRequest request = new NotificationNewRequest(); + //request.setObjectId(); + request.setObjectType(objectType.getKey()); + request.setPriority(priority.getKey()); + request.setComment(comment); + log.debug("Send message to kafka \"{}\": {}", destination, LogFormatter.toStringWrapper(request)); + Long rKey = kafka.get().sendRequestToQueue(destination, request); + log.trace("For user send message, request id={}", 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 0b0346366..05e64e121 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,8 +4,7 @@ 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"), - registry("RGST"); + account_block("ACCB"), account_active("ACCA"), diff("DIFF"); private final String key;