ialbert 2026-07-08 13:11:19 +03:00
parent 56bc00bcad
commit 0e3cdcac4c

View file

@ -85,7 +85,7 @@ public class PrepareXMLFile implements InitializingBean {
if (template.needSftpFiles()) {
xmlFile = new File(template.getFileName(resultContainer, files));
} else {
AtomicInteger counter = getOrInitCounter(table, template);
AtomicInteger counter = getOrInitCounter(resultContainer, template);
xmlFile = new File(template.getFileName(resultContainer, counter));
}
if (sftpConnectionError) {
@ -109,16 +109,24 @@ public class PrepareXMLFile implements InitializingBean {
return StageResult.OK;
}
private AtomicInteger getOrInitCounter(Table table, FilenameTemplate template) {
private AtomicInteger getOrInitCounter(ResultContainer resultContainer, FilenameTemplate template) {
LocalDate today = LocalDate.now();
if (!today.equals(lastCounterDate)) {
counters.clear();
this.lastCounterDate = today;
}
Table table = resultContainer.getTableForExport();
return counters.computeIfAbsent(table, k -> {
imdgProvider.waitAvailable();
Imdg<SpcexObjectBase> imdg = imdgProvider.getImdg(k.getHazelcastMapName(), SpcexObjectBase.class);
ImdgPredicate counterPredicate = template.counterPredicate(imdg.predicateBuilder());
var pb = imdg.predicateBuilder();
ImdgPredicate counterPredicate = template.counterPredicate(pb);
if (resultContainer.getGroupId() != null) {
counterPredicate = pb.and(
counterPredicate,
pb.not(pb.equals("generationId", resultContainer.getGroupId()))
);
}
Collection<SpcexObjectBase> items = imdg.getCollectionObjectsByPredicate(counterPredicate);
return new AtomicInteger(items.size());
}