registry-service http://jira.mfd.msk:8088/browse/CLS-680 сделал неповторяющиеся записи по дням для DepoBalanceRegisterReportBuilder, MoneyBalanceRegisterReportBuilder
This commit is contained in:
parent
4ff7dbf586
commit
5f2dcba539
2 changed files with 52 additions and 4 deletions
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue