registry-service http://jira.mfd.msk:8088/browse/CLS-680 сделал неповторяющиеся записи по дням для DepoBalanceRegisterReportBuilder, MoneyBalanceRegisterReportBuilder

This commit is contained in:
AKurakin 2024-06-04 15:22:23 +03:00
parent 4ff7dbf586
commit 5f2dcba539
2 changed files with 52 additions and 4 deletions

View file

@ -1,6 +1,8 @@
package ru.spcex.clearing.registry.reports.builders;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.springframework.stereotype.Component;
import ru.spcex.clearing.registry.reports.bean.BusinessEvent;
import ru.spcex.clearing.registry.reports.bean.Registry;
@ -9,17 +11,19 @@ import ru.spcex.clearing.registry.reports.loaders.helpers.AccountType;
import ru.spcex.clearing.registry.reports.loaders.helpers.IEnumKey;
import ru.spcex.clearing.registry.reports.report.DepoBalanceRegisterReport;
import java.io.File;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Collection;
import java.util.Comparator;
import java.util.*;
import java.util.stream.Collectors;
@Component
public class DepoBalanceRegisterReportBuilder extends XLSXReportBuilder<DepoBalanceRegisterReport, RegistryHistory> {
private final static DateTimeFormatter yyyyMMddFormat = DateTimeFormatter.ofPattern("yyyyMMdd");
private Map<Pair<Long, LocalDate>, BigDecimal> previousValues;
@Override
protected String reportName() {
@ -52,9 +56,29 @@ public class DepoBalanceRegisterReportBuilder extends XLSXReportBuilder<DepoBala
entity.setSecurity(input.getSecuritySymbol());
entity.setSum(input.getBalance());
if (!putAndVerifyPreviousValues(now, input.getId(), input.getBalance()))
return null;
return entity;
}
boolean putAndVerifyPreviousValues(LocalDate keyDate, Long keyId, BigDecimal value) {
Pair<Long, LocalDate> key = new ImmutablePair<>(keyId, keyDate);
if (previousValues.containsKey(key) && Objects.equals(previousValues.get(key), value))
return false;
previousValues.put(key, value);
return true;
}
@Override
public synchronized File buildReport(Collection<RegistryHistory> inputObj, File outFolder) {
previousValues = new HashMap<>();
try {
return super.buildReport(inputObj, outFolder);
} finally {
previousValues = null;
}
}
@Override
protected Collection<RegistryHistory> sortInput(Collection<RegistryHistory> input) {
return input.stream()

View file

@ -1,5 +1,7 @@
package ru.spcex.clearing.registry.reports.builders;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.springframework.stereotype.Component;
import ru.spcex.clearing.registry.reports.bean.BusinessEvent;
import ru.spcex.clearing.registry.reports.bean.Registry;
@ -8,17 +10,19 @@ import ru.spcex.clearing.registry.reports.loaders.helpers.AccountType;
import ru.spcex.clearing.registry.reports.loaders.helpers.IEnumKey;
import ru.spcex.clearing.registry.reports.report.MoneyBalanceRegisterReport;
import java.io.File;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Collection;
import java.util.Comparator;
import java.util.*;
import java.util.stream.Collectors;
@Component
public class MoneyBalanceRegisterReportBuilder extends XLSXReportBuilder<MoneyBalanceRegisterReport, RegistryHistory> {
private final static DateTimeFormatter yyyyMMddFormat = DateTimeFormatter.ofPattern("yyyyMMdd");
private Map<Pair<Long, LocalDate>, BigDecimal> previousValues;
@Override
protected String reportName() {
@ -56,9 +60,29 @@ public class MoneyBalanceRegisterReportBuilder extends XLSXReportBuilder<MoneyBa
entity.setAccount(input.getAccount());
entity.setSum(input.getBalance());
if (!putAndVerifyPreviousValues(now, input.getId(), input.getBalance()))
return null;
return entity;
}
boolean putAndVerifyPreviousValues(LocalDate keyDate, Long keyId, BigDecimal value) {
Pair<Long, LocalDate> key = new ImmutablePair<>(keyId, keyDate);
if (previousValues.containsKey(key) && Objects.equals(previousValues.get(key), value))
return false;
previousValues.put(key, value);
return true;
}
@Override
public synchronized File buildReport(Collection<RegistryHistory> inputObj, File outFolder) {
previousValues = new HashMap<>();
try {
return super.buildReport(inputObj, outFolder);
} finally {
previousValues = null;
}
}
@Override
protected Collection<RegistryHistory> sortInput(Collection<RegistryHistory> input) {
return input.stream()