From ed69bd7ec233a6b57522b2a894c405d875df107a Mon Sep 17 00:00:00 2001 From: Ivan Nikolaev-Axenov Date: Wed, 7 Aug 2024 16:39:47 +0300 Subject: [PATCH] notification sending on duplicate transaction number added in dbf-importer http://jira.mfd.msk:8088/browse/CLS-724 --- .../logic/data/tables/AbstractTable.java | 10 +++--- .../logic/data/tables/SDf57Table.java | 13 ++++--- .../logic/stages/DbfImportKafkaMessenger.java | 15 ++++---- .../dbf/importer/logic/stages/ImportToDB.java | 36 ++++++++++++------- 4 files changed, 40 insertions(+), 34 deletions(-) diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/AbstractTable.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/AbstractTable.java index b5644ab41..a1c501ebc 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/AbstractTable.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/AbstractTable.java @@ -1,13 +1,12 @@ package ru.spcex.clearing.dbf.importer.logic.data.tables; +import java.math.BigDecimal; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.imdg.iml.hazelcast.adapter.ImdgHazelcast; import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; -import java.math.BigDecimal; - public abstract class AbstractTable { private final Logger log = LoggerFactory.getLogger(getClass()); private final String prefix; @@ -42,14 +41,13 @@ public abstract class AbstractTable { if (map == null) { bootMap(); } - if (checkOnExisting(obj)) { - map.insert(obj); - } + map.insert(obj); } - protected boolean checkOnExisting(T obj){ + public boolean checkOnExisting(T obj){ return true; } + protected void bootMap() { map = (ImdgHazelcast) hazelcastService.getImdg(nameOfMap, clazz); } diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf57Table.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf57Table.java index f2ce982fa..c7185b89e 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf57Table.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf57Table.java @@ -1,15 +1,14 @@ package ru.spcex.clearing.dbf.importer.logic.data.tables; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import ru.clearing.classes.statics.data.sdf.SDf57; -import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable; -import ru.spcex.clearing.imdg.IMDGDistributedNames; - import java.math.BigDecimal; import java.time.Instant; import java.util.Collection; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ru.clearing.classes.statics.data.sdf.SDf57; +import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable; +import ru.spcex.clearing.imdg.IMDGDistributedNames; public class SDf57Table extends AbstractTable { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -83,7 +82,7 @@ public class SDf57Table extends AbstractTable { } @Override - protected boolean checkOnExisting(SDf57 obj) { + public boolean checkOnExisting(SDf57 obj) { if (map == null) { bootMap(); } 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 3b6bf3287..597e99404 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 @@ -1,5 +1,11 @@ package ru.spcex.clearing.dbf.importer.logic.stages; +import static ru.spcex.clearing.platform.messaging.domain.Consts.PAIR_SDF; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.Consumer; +import java.util.function.Supplier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; @@ -19,13 +25,6 @@ import ru.spcex.platform.enumeration.ObjectType; import ru.spcex.platform.enumeration.Priority; import ru.spcex.platform.enumeration.SdfTable; -import java.util.HashMap; -import java.util.Map; -import java.util.function.Consumer; -import java.util.function.Supplier; - -import static ru.spcex.clearing.platform.messaging.domain.Consts.PAIR_SDF; - @Component public class DbfImportKafkaMessenger implements InitializingBean { final Logger log = LoggerFactory.getLogger(getClass()); @@ -82,7 +81,7 @@ public class DbfImportKafkaMessenger implements InitializingBean { } } - private void sendUserNotification(ObjectType objectType, String comment, Priority priority) { + public void sendUserNotification(ObjectType objectType, String comment, Priority priority) { final String destination = Consts.NOTIFICATION_NEW; NotificationNewRequest request = new NotificationNewRequest(); //request.setObjectId(); 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 c92470d1b..22c53dc83 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 @@ -1,23 +1,26 @@ package ru.spcex.clearing.dbf.importer.logic.stages; -import com.linuxense.javadbf.DBFReader; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.stereotype.Component; -import ru.spcex.clearing.dbf.importer.config.settings.ImportDBFServiceSettings; -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.dbf.importer.logic.data.tables.AbstractTable; -import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; -import ru.spcex.platform.utils.log.ExceptionUtils; +import static ru.spcex.clearing.dbf.importer.logic.data.enums.ETable.DF_01; +import com.linuxense.javadbf.DBFReader; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; import java.util.Map; - -import static ru.spcex.clearing.dbf.importer.logic.data.enums.ETable.DF_01; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.sdf.SDf57; +import ru.spcex.clearing.dbf.importer.config.settings.ImportDBFServiceSettings; +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.dbf.importer.logic.data.tables.AbstractTable; +import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.enumeration.ObjectType; +import ru.spcex.platform.enumeration.Priority; +import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; +import ru.spcex.platform.utils.log.ExceptionUtils; /** * Заливка проверенных данных в базу @@ -58,7 +61,14 @@ public class ImportToDB extends Stage { log.warn("record index {} null", i); continue; } - table.injectEntity(table.getEntity(entity)); + SpcexObjectBase entityTable = table.getEntity(entity); + if (!table.checkOnExisting(entityTable) && entityTable instanceof SDf57) { + kafkaMessenger.sendUserNotification(ObjectType.rgst, + "Номер транзакции " + ((SDf57) entityTable).getDbfId() + " в полученном df57 уже был обработан ранее", + Priority.HIGH); + } else { + table.injectEntity(entityTable); + } } if (DF_01.equals(currTable)){ kafkaMessenger.sendPairSdfRequest(table, currTable.getPrefix());