From 9e5d54b1303463ca685fd5506ee65f6bed94b5ec Mon Sep 17 00:00:00 2001 From: AKurakin Date: Fri, 9 Feb 2024 11:56:30 +0300 Subject: [PATCH] extdb-importer http://jira.mfd.msk:8088/browse/CLS-641 --- .../queue/misc/SCrossRateControllerTest.java | 4 +-- .../services/ExtDBImporterService.java | 29 ++++++++++++++-- .../services/ExtDBImporterServiceTest.java | 34 ++++++++++++++++--- .../src/main/resources/distr/sh/kill_all.sh | 1 + 4 files changed, 58 insertions(+), 10 deletions(-) diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/SCrossRateControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/SCrossRateControllerTest.java index 3ba842fcc..1a191561e 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/SCrossRateControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/SCrossRateControllerTest.java @@ -31,8 +31,8 @@ class SCrossRateControllerTest extends AbstractControllerTest { sCrossRate.setUnitRate(new BigDecimal("1.00")); sCrossRate.setGenerationTime(Instant.now()); sCrossRate.setGenerationId(10L); - sCrossRate.setCreatedAt(Instant.now()); - sCrossRate.setUpdatedAt(sCrossRate.getCreatedAt()); + sCrossRate.setCreated(Instant.now()); + sCrossRate.setUpdated(sCrossRate.getCreated()); //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_SCrossRate, sCrossRate, REST_URL); diff --git a/clearing-parent/extdb-importer/src/main/java/ru/spex/clearing/extdb/importer/services/ExtDBImporterService.java b/clearing-parent/extdb-importer/src/main/java/ru/spex/clearing/extdb/importer/services/ExtDBImporterService.java index 6ea45bf99..8aece7bf3 100644 --- a/clearing-parent/extdb-importer/src/main/java/ru/spex/clearing/extdb/importer/services/ExtDBImporterService.java +++ b/clearing-parent/extdb-importer/src/main/java/ru/spex/clearing/extdb/importer/services/ExtDBImporterService.java @@ -75,9 +75,6 @@ public class ExtDBImporterService { crossRateDb.setId(sCrossRate.getId()); crossRateDb.setCreated(sCrossRate.getCreated()); crossRateDb.setUpdated(currentInstant); - // В extDb нет таких полей, оставляем как есть: - crossRateDb.setGenerationTime(sCrossRate.getGenerationTime()); - crossRateDb.setGenerationId(sCrossRate.getGenerationId()); sCrossRateImdg.update(crossRateDb); updated++; } else if (sCrossRate == null) { @@ -87,6 +84,10 @@ public class ExtDBImporterService { sCrossRateImdg.insert(crossRateDb); created++; } + // В extDb нет таких полей, заполнить: + crossRateDb.setGenerationTime(currentInstant); + + crossRateDb.setGenerationId(makeGenerationId(sCrossRate.getDate(), sCrossRate.getCurrCode())); } else { log.warn(messageResolver.resolve(new EnumMessage(crossRateNotValid, crossRateDb.getCurrCode()))); } @@ -105,6 +106,28 @@ public class ExtDBImporterService { } } + protected Long makeGenerationId(LocalDate date, String currCode) { + try { + long d = date.getYear() * 1_00_00L + date.getMonthValue() * 1_00L + date.getDayOfMonth(); + currCode = currCode.trim(); + if (!currCode.isEmpty()) { + int l = currCode.length(); + long cc = Long.parseLong(currCode); + if (cc < 0) { + cc = -cc; + l--; + } + for (int i = 0; i < l; i++) d *= 10L; // d = d * (int) Math.pow(10, currCode.length()); + d += cc; + } + return d; + } catch (Exception e) { + log.warn("Unparseable date={} and currCode={} - can not make number GenerationId", + date, currCode); + return null; + } + } + public SCrossRate getSCrossRateFromImdg(SCrossRate crossRateDb, Imdg sCrossRateImdg) { Map> query = new HashMap<>(); query.put("date", crossRateDb.getDate()); diff --git a/clearing-parent/extdb-importer/src/test/java/ru/spex/clearing/extdb/importer/services/ExtDBImporterServiceTest.java b/clearing-parent/extdb-importer/src/test/java/ru/spex/clearing/extdb/importer/services/ExtDBImporterServiceTest.java index 191b38db4..581fdb607 100644 --- a/clearing-parent/extdb-importer/src/test/java/ru/spex/clearing/extdb/importer/services/ExtDBImporterServiceTest.java +++ b/clearing-parent/extdb-importer/src/test/java/ru/spex/clearing/extdb/importer/services/ExtDBImporterServiceTest.java @@ -52,7 +52,7 @@ class ExtDBImporterServiceTest extends AbstractServiceTest { @BeforeEach - private void prepare(){ + private void prepare() { clearAllInImdg(sCrossRateImdg); } @@ -66,7 +66,7 @@ class ExtDBImporterServiceTest extends AbstractServiceTest { SCrossRate sCrossRate = getSCrossRate(); Long id = sCrossRateImdg.insert(sCrossRate); - addRecordToKafka((MockConsumer) launcherCommandReceiver.getConsumer(), Task.getCurrencyRates.topic(), 0, 1, getJsonStringForNew(new LauncherCommandRequest(),0)); + addRecordToKafka((MockConsumer) launcherCommandReceiver.getConsumer(), Task.getCurrencyRates.topic(), 0, 1, getJsonStringForNew(new LauncherCommandRequest(), 0)); //waiting for kafka producer send message // ArgumentCaptor captor = getCaptor(kafkaTemplate); @@ -85,7 +85,7 @@ class ExtDBImporterServiceTest extends AbstractServiceTest { * Входной запрос {@link LauncherCommandRequest}:
*/ @Test - void getSCrossRateFromImdg(){ + void getSCrossRateFromImdg() { SCrossRate sCrossRate = getSCrossRate(); Long id = sCrossRateImdg.insert(sCrossRate); SCrossRate sCrossRateRes = extDBImporterService.getSCrossRateFromImdg(sCrossRate, sCrossRateImdg); @@ -96,13 +96,37 @@ class ExtDBImporterServiceTest extends AbstractServiceTest { assertNull(sCrossRateRes); } - private SCrossRate getSCrossRate(){ + private SCrossRate getSCrossRate() { SCrossRate sCrossRate = new SCrossRate(); - sCrossRate.setDate(LocalDate.of(2024,2,8)); + sCrossRate.setDate(LocalDate.of(2024, 2, 8)); sCrossRate.setRate(new BigDecimal("10.1")); sCrossRate.setUnitRate(new BigDecimal("12.4")); sCrossRate.setCurrCode("RUB"); sCrossRate.setCurrency("RUB"); return sCrossRate; } + + @Test + void makeGenerationId() { + assertEquals(20240130840L, extDBImporterService.makeGenerationId( + LocalDate.of(2024, 1, 30), " 840 ")); + assertEquals(205612311230L, extDBImporterService.makeGenerationId( + LocalDate.of(2056, 12, 31), " 1230 ")); + + + assertEquals(20561231L, extDBImporterService.makeGenerationId( + LocalDate.of(2056, 12, 31), " ")); + assertEquals(205612310L, extDBImporterService.makeGenerationId( + LocalDate.of(2056, 12, 31), "0")); + assertEquals(205612315L, extDBImporterService.makeGenerationId( + LocalDate.of(2056, 12, 31), "-5")); + + assertEquals(null, extDBImporterService.makeGenerationId( + LocalDate.of(2056, 12, 31), " - ")); + assertEquals(null, extDBImporterService.makeGenerationId( + LocalDate.of(2056, 12, 31), null)); + assertEquals(null, extDBImporterService.makeGenerationId( + null, " 840 ")); + } + } \ No newline at end of file diff --git a/z-distr/src/main/resources/distr/sh/kill_all.sh b/z-distr/src/main/resources/distr/sh/kill_all.sh index 8af22de48..a8a23bd81 100644 --- a/z-distr/src/main/resources/distr/sh/kill_all.sh +++ b/z-distr/src/main/resources/distr/sh/kill_all.sh @@ -10,6 +10,7 @@ kill -9 $(ps -ef | grep java | grep lim-exporter.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep swt-exporter.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep dbf-importer.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep trade-importer.jar | awk '{print $2}') +kill -9 $(ps -ef | grep java | grep extdb-service.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep imdg.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep imdg-hist.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep securities-service.jar | awk '{print $2}')