dbf-export поправил работу с IMDG

This commit is contained in:
AKurakin 2023-01-13 18:46:56 +03:00
parent 5b529484a5
commit f6a60c023c
4 changed files with 22 additions and 7 deletions

View file

@ -100,7 +100,8 @@ public class ExportFromHazelcast extends Stage implements InitializingBean {
writeOk = true;
emptyMap = tableRows.isEmpty();
} catch (Exception e) {
log.error(String.format("uuid %s. Can't export table %s to file %s. Table was skipped.", resultContainer.getUuid(), table, dbfFile), e);
log.error(String.format("uuid %s. Can't export table %s (map %s) to file %s. Table was skipped.",
resultContainer.getUuid(), table, table.getHazelcastMapName(), dbfFile), e);
return StageResult.ERROR;
} finally {
if (!writeOk || emptyMap) {

View file

@ -1,24 +1,37 @@
package ru.spcex.clearing.dbf.exporter.services;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import ru.spcex.clearing.dbf.exporter.logic.Processor;
import ru.spcex.clearing.dbf.exporter.logic.data.ResultContainer;
import ru.spcex.clearing.dbf.exporter.logic.data.enums.Table;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.util.Arrays;
@Service("dbfExportService")
public class DBFExportService {
Logger log = LoggerFactory.getLogger(getClass());
private final ThreadPoolTaskExecutor executor;
private final Processor processor;
protected final ImdgProvider imdgProvider;
public DBFExportService(@Qualifier("executor") ThreadPoolTaskExecutor executor,
@Qualifier("processor") Processor processor) {
@Qualifier("processor") Processor processor,
ImdgProvider imdgProvider) {
this.executor = executor;
this.processor = processor;
this.imdgProvider = imdgProvider;
log.debug("Check IMDG...");
imdgProvider.waitAvailable();
log.debug("IMDG ready...");
}
public void run() {
log.debug("Do export for all: {}", Arrays.toString(Table.values()));
for (Table tableForExport : Table.values()) {
executor.submit(() -> processor.process(ResultContainer.createNewTask(tableForExport)));
}

View file

@ -7,6 +7,7 @@ import ru.clearing.classes.statics.data.sdf.SDf08;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.LinkedList;
import java.util.List;
@ -17,7 +18,7 @@ public class S_DF08_Converter extends DFConverter<SDf08> {
public Object[] toObjectArray(SDf08 entity) {
List<Object> values = new LinkedList<>();
values.add(convertStrToLong(entity.getNumber()));
values.add(typeMatch(entity.getDatetime()));
values.add(typeMatch(convertStrToDate(entity.getDatetime())));
return values.toArray(Object[]::new);
}
@ -40,9 +41,9 @@ public class S_DF08_Converter extends DFConverter<SDf08> {
Object convertStrToDate(String s) {
if (s == null) return null;
if (s.matches("\\d{2}.\\d{2}.\\d{4}")) {
return typeMatch(LocalDate.parse(s, DATE_FMT));
return LocalDate.parse(s, DATE_FMT).atStartOfDay(ZoneId.systemDefault()).toInstant();
} else {
return typeMatch(LocalDateTime.parse(s, DATE_TIME_FMT));
return LocalDateTime.parse(s, DATE_TIME_FMT).atZone(ZoneId.systemDefault()).toInstant();
}
}
}

View file

@ -15,7 +15,7 @@ public class S_DF08_ConverterTest {
public void testTestConvertStrToDate() {
S_DF08_Converter converter = new S_DF08_Converter();
Assert.assertNull(converter.convertStrToDate(null));
Assert.assertEquals("2022-12-29", converter.convertStrToDate("29.12.2022").toString());
Assert.assertEquals("2023-01-13T15:32:01", converter.convertStrToDate("13.01.2023 15:32:01").toString());
Assert.assertEquals("2022-12-29 00:00:00.0", converter.convertStrToDate("29.12.2022").toString());
Assert.assertEquals("2023-01-13 15:32:01.0", converter.convertStrToDate("13.01.2023 15:32:01").toString());
}
}