diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java index 134b3e325..93460adb3 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java @@ -41,9 +41,7 @@ import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.Collection; -import java.util.Map; -import java.util.Optional; +import java.util.*; import java.util.function.Function; @Service @@ -112,7 +110,9 @@ public class Sdf01Executor extends AbstractExecutor { result.setChildGenerationId(generationIdForGroup); result.setFileName(filenameObtainer.getFilename(sdf, sdf01Imdg, statementRequest.getGroupId())); log.info("SDF01 execution: sdf01 file={} number={}, groupId={}", result.getFileName(), sdf.size(), sdf.stream().findFirst().map(SDf01::getGenerationId).orElse(null)); - for (SDf01 sdf01 : sdf) { + ArrayList orderedSdf = new ArrayList<>(sdf); + orderedSdf.sort(Comparator.comparing(SDf01::getId));// Сортировка по возрастанию id, чтобы сохранить последовательность строк SDF02, как в SDF01 + for (SDf01 sdf01 : orderedSdf) { IValidator validator = sDf01Validator.apply(sdf01); Optional error = validator.tillFirstError(); Company company = validator.getStored(ValidationStored.Sdf01Company); diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/ExportFromHazelcast.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/ExportFromHazelcast.java index 582fdc00e..0cebae430 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/ExportFromHazelcast.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/ExportFromHazelcast.java @@ -18,10 +18,7 @@ import ru.spcex.platform.imdg.api.ImdgProvider; import java.io.File; import java.nio.charset.Charset; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; +import java.util.*; /** * Выгрузка данных из мапы hazelcast и их запись в файлы @@ -94,6 +91,11 @@ public class ExportFromHazelcast extends Stage implements InitializingBean { log.debug("uuid {}. Selected {} records from map {}, generationId {}", resultContainer.getUuid(), tableRows.size(), resultContainer.getTableForExport().getHazelcastMapName(), resultContainer.getGroupId()); } + if (Table.S_DF02 == resultContainer.getTableForExport()) { + log.trace("Sort S_DF02 items"); // Сортировка по возрастанию id, чтобы сохранить последовательность строк SDF02, как в SDF01 + tableRows = new ArrayList(tableRows); + ((ArrayList) tableRows).sort(Comparator.comparing(SpcexObjectBase::getId)); + } for (SpcexObjectBase value : tableRows) { Object[] values; if (value instanceof SDf02 sDf02Value) values = s_df02_converter.toObjectArray(sDf02Value);