extdb-importer http://jira.mfd.msk:8088/browse/CLS-641 ограничение по дате в SQL
This commit is contained in:
parent
686b15318d
commit
619b7d8767
2 changed files with 71 additions and 3 deletions
|
|
@ -56,9 +56,30 @@ public class ExtDBImporterService {
|
|||
process(false);
|
||||
}
|
||||
|
||||
protected String createSelectSQL() {
|
||||
SCrossRate maxCrossRate = sCrossRateImdg.aggregateByMax(
|
||||
"date",
|
||||
sCrossRateImdg.predicateBuilder().notNull("date")
|
||||
);
|
||||
LocalDate maxDate;
|
||||
if (maxCrossRate == null || maxCrossRate.getDate() == null) {
|
||||
maxDate = LocalDate.of(2024, 1, 1);
|
||||
log.trace("Mo record in SCrossRate/ use default maxDate={}", maxDate);
|
||||
} else {
|
||||
maxDate = maxCrossRate.getDate();
|
||||
log.trace("Found record in SCrossRate, maxDate={}", maxDate);
|
||||
}
|
||||
if (maxDate.isAfter(LocalDate.now())) {
|
||||
log.warn("maxDate={} too high, set current date", maxDate);
|
||||
maxDate = LocalDate.now();
|
||||
}
|
||||
return String.format("SELECT * FROM %s.crossRate where date>='%s'",
|
||||
schema, maxDate);
|
||||
}
|
||||
|
||||
public synchronized void process(boolean byCommand) {
|
||||
log.debug("Start process import SCrossRate from DB. byCommand={}", byCommand);
|
||||
String sql = String.format("SELECT * FROM %s.crossRate", schema);
|
||||
String sql = createSelectSQL();
|
||||
Collection<SCrossRate> crossRatesFromDB = jdbcTemplate.query(sql,
|
||||
(resultSet, i) -> readSCrossRate(resultSet));
|
||||
Instant currentInstant = Instant.now();
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package ru.spcex.clearing.extdb.importer.services;
|
|||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import ru.clearing.classes.statics.data.misc.SCrossRate;
|
||||
|
|
@ -10,6 +11,8 @@ import ru.spcex.clearing.extdb.importer.AbstractServiceTest;
|
|||
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
||||
import ru.spcex.clearing.test.MatcherFactory;
|
||||
import ru.spcex.platform.enumeration.Task;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.iml.hazelcast.adapter.ImdgHazelcast;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -56,8 +59,9 @@ class ExtDBImporterServiceTest extends AbstractServiceTest {
|
|||
* Тест проверяет обновление сущности {@link SCrossRate}.<br>
|
||||
* Входной запрос {@link LauncherCommandRequest}:<br>
|
||||
*/
|
||||
// @Test //для работы теста нужна тестовая база Microsoft SQL с данными
|
||||
void process() throws InterruptedException {
|
||||
@Disabled //для работы теста нужна тестовая база Microsoft SQL с данными
|
||||
@Test
|
||||
void process_by_queue() throws InterruptedException {
|
||||
SCrossRate sCrossRate = getSCrossRate();
|
||||
Long id = sCrossRateImdg.insert(sCrossRate);
|
||||
|
||||
|
|
@ -76,6 +80,49 @@ class ExtDBImporterServiceTest extends AbstractServiceTest {
|
|||
|
||||
/**
|
||||
* {@link ExtDBImporterService#process(boolean)}<br>
|
||||
* Тест проверяет обновление сущности {@link SCrossRate}.<br>
|
||||
* Входной запрос {@link LauncherCommandRequest}:<br>
|
||||
*/
|
||||
@Disabled //для работы теста нужна тестовая база Microsoft SQL с данными
|
||||
@Test
|
||||
void process_direct_call() throws InterruptedException {
|
||||
SCrossRate sCrossRate = getSCrossRate();
|
||||
sCrossRate.setDate(LocalDate.of(2024,2,13));
|
||||
Long id = sCrossRateImdg.insert(sCrossRate);
|
||||
assertEquals(1, sCrossRateImdg.size());
|
||||
|
||||
extDBImporterService.process(true);
|
||||
|
||||
assertEquals(6, sCrossRateImdg.size()); // резуьтат зависит от внешней тестовой базы
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link ExtDBImporterService#createSelectSQL()}<br>
|
||||
* Тест проверяет построение SQL.<br>
|
||||
* Входные данные {@link SCrossRate} в sCrossRateImdg<br>
|
||||
*/
|
||||
@Test
|
||||
void createSelectSQL() {
|
||||
((ImdgHazelcast) sCrossRateImdg).clear();
|
||||
String sql = extDBImporterService.createSelectSQL();
|
||||
assertEquals("SELECT * FROM dbo.crossRate where date>='2024-01-01'", sql);
|
||||
|
||||
{
|
||||
SCrossRate sCrossRate = getSCrossRate();
|
||||
sCrossRate.setDate(LocalDate.of(2024, 2, 13));
|
||||
Long id = sCrossRateImdg.insert(sCrossRate);
|
||||
}
|
||||
{
|
||||
SCrossRate sCrossRate = getSCrossRate();
|
||||
sCrossRate.setDate(LocalDate.of(2024, 1, 15));
|
||||
Long id = sCrossRateImdg.insert(sCrossRate);
|
||||
}
|
||||
sql = extDBImporterService.createSelectSQL();
|
||||
assertEquals("SELECT * FROM dbo.crossRate where date>='2024-02-13'", sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link ExtDBImporterService#getSCrossRateFromImdg(SCrossRate, Imdg)}<br>
|
||||
* Тест проверяет поиск сущности {@link SCrossRate}.<br>
|
||||
* Входной запрос {@link LauncherCommandRequest}:<br>
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue