diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java index 358604067..111a222aa 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java @@ -10,6 +10,7 @@ import org.springframework.stereotype.Service; import ru.spcex.clearing.dbf.importer.logic.Processor; import ru.spcex.clearing.dbf.importer.logic.data.ResultContainer; import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable; +import ru.spcex.platform.utils.collection.Pair; import java.io.File; import java.nio.file.Path; @@ -59,13 +60,22 @@ public class DBFImporterService { } else { log.trace("no files were found"); } + + // Сортировка по возрастанию времени изменения - обрабатывать только в таком порядке + List> orderByTimeFiles = new ArrayList<>(); for (Map.Entry> newFilesEntry : newFiles.entrySet()) { ETable currTable = newFilesEntry.getKey(); List fileList = newFilesEntry.getValue(); for (File dbfFile : fileList) { - processor.process(ResultContainer.createNewTask(currTable, dbfFile)); + orderByTimeFiles.add(new Pair<>(dbfFile, currTable)); } } + orderByTimeFiles.sort(Comparator.comparingLong(iF -> iF.getFirst().lastModified())); + for (Pair newFilesEntry : orderByTimeFiles) { + ETable currTable = newFilesEntry.getSecond(); + File dbfFile = newFilesEntry.getFirst(); + processor.process(ResultContainer.createNewTask(currTable, dbfFile)); + } } finally { if (newFiles != null && newFiles.size() > 0) { cleanFiles(newFiles); diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/services/SWTImporterService.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/services/SWTImporterService.java index b7b65395f..1a2b841c1 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/services/SWTImporterService.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/services/SWTImporterService.java @@ -10,6 +10,7 @@ import org.springframework.stereotype.Service; import ru.spcex.clearing.swt.importer.logic.Processor; import ru.spcex.clearing.swt.importer.logic.data.ResultContainer; import ru.spcex.clearing.swt.importer.logic.data.enums.ETable; +import ru.spcex.platform.utils.collection.Pair; import java.io.File; import java.nio.file.Path; @@ -81,13 +82,21 @@ public class SWTImporterService { } else { log.trace("no files were found"); } + // Сортировка по возрастанию времени изменения - обрабатывать только в таком порядке + List> orderByTimeFiles = new ArrayList<>(); for (Map.Entry> newFilesEntry : newFiles.entrySet()) { ETable currTable = newFilesEntry.getKey(); List fileList = newFilesEntry.getValue(); for (File swtFile : fileList) { - processor.process(ResultContainer.createNewTask(currTable, swtFile)); + orderByTimeFiles.add(new Pair<>(swtFile, currTable)); } } + orderByTimeFiles.sort(Comparator.comparingLong(iF -> iF.getFirst().lastModified())); + for (Pair newFilesEntry : orderByTimeFiles) { + ETable currTable = newFilesEntry.getSecond(); + File swtFile = newFilesEntry.getFirst(); + processor.process(ResultContainer.createNewTask(currTable, swtFile)); + } } finally { if (newFiles != null && newFiles.size() > 0) { cleanFiles(newFiles);