From 37bc4b72cd5a4ddc9ba96e496d39d28437d43784 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Wed, 31 May 2023 15:57:45 +0300 Subject: [PATCH] add check on exist sdf57 record by dbfId --- .../logic/data/tables/AbstractTable.java | 12 ++++++++++-- .../importer/logic/data/tables/SDf57Table.java | 18 +++++++++++++++++- 2 files changed, 27 insertions(+), 3 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 0856ee31c..a1e355406 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,10 +1,13 @@ package ru.spcex.clearing.dbf.importer.logic.data.tables; +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; public abstract class AbstractTable { + private final Logger log = LoggerFactory.getLogger(getClass()); private final String prefix; private final Class clazz; private final String nameOfMap; @@ -37,10 +40,15 @@ public abstract class AbstractTable { if (map == null) { bootMap(); } - map.insert(obj); + if (checkOnExisting(obj)) { + map.insert(obj); + } } - private void bootMap() { + protected 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 312320548..dbf1976e5 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,14 +1,18 @@ 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; public class SDf57Table extends AbstractTable { - + private final Logger log = LoggerFactory.getLogger(getClass()); private static final String PREFIX = ETable.DF_57.name(); private static final Class CLAZZ = SDf57.class; private static final String NAME_OF_HZ_MAP = IMDGDistributedNames.Map_SDf57; @@ -62,4 +66,16 @@ public class SDf57Table extends AbstractTable { result.setGenerationId(fileId); return result; } + + @Override + protected boolean checkOnExisting(SDf57 obj) { + if (map == null) { + bootMap(); + } + Collection sDf57s = map.getCollectionObjectsByFieldValues(Map.of("dbfId", obj.getDbfId())); + if (!sDf57s.isEmpty()) { + log.warn("Skip insert by {}, sdf57.dbfId: {}", PREFIX, obj.getDbfId()); + } + return sDf57s.isEmpty(); + } } \ No newline at end of file