This commit is contained in:
AKurakin 2023-11-15 11:53:09 +03:00
parent 15242a0a75
commit 3fbb5931df
2 changed files with 10 additions and 8 deletions

View file

@ -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<SDf01> {
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<SDf01> orderedSdf = new ArrayList<>(sdf);
orderedSdf.sort(Comparator.comparing(SDf01::getId));// Сортировка по возрастанию id, чтобы сохранить последовательность строк SDF02, как в SDF01
for (SDf01 sdf01 : orderedSdf) {
IValidator validator = sDf01Validator.apply(sdf01);
Optional<EnumMessage> error = validator.tillFirstError();
Company company = validator.getStored(ValidationStored.Sdf01Company);

View file

@ -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<SpcexObjectBase>(tableRows);
((ArrayList<SpcexObjectBase>) tableRows).sort(Comparator.comparing(SpcexObjectBase::getId));
}
for (SpcexObjectBase value : tableRows) {
Object[] values;
if (value instanceof SDf02 sDf02Value) values = s_df02_converter.toObjectArray(sDf02Value);