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;
|
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 org.springframework.stereotype.Component;
|
||||||
import ru.spcex.clearing.registry.reports.bean.BusinessEvent;
|
import ru.spcex.clearing.registry.reports.bean.BusinessEvent;
|
||||||
import ru.spcex.clearing.registry.reports.bean.Registry;
|
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.loaders.helpers.IEnumKey;
|
||||||
import ru.spcex.clearing.registry.reports.report.DepoBalanceRegisterReport;
|
import ru.spcex.clearing.registry.reports.report.DepoBalanceRegisterReport;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.Collection;
|
import java.util.*;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class DepoBalanceRegisterReportBuilder extends XLSXReportBuilder<DepoBalanceRegisterReport, RegistryHistory> {
|
public class DepoBalanceRegisterReportBuilder extends XLSXReportBuilder<DepoBalanceRegisterReport, RegistryHistory> {
|
||||||
private final static DateTimeFormatter yyyyMMddFormat = DateTimeFormatter.ofPattern("yyyyMMdd");
|
private final static DateTimeFormatter yyyyMMddFormat = DateTimeFormatter.ofPattern("yyyyMMdd");
|
||||||
|
private Map<Pair<Long, LocalDate>, BigDecimal> previousValues;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String reportName() {
|
protected String reportName() {
|
||||||
|
|
@ -52,9 +56,29 @@ public class DepoBalanceRegisterReportBuilder extends XLSXReportBuilder<DepoBala
|
||||||
entity.setSecurity(input.getSecuritySymbol());
|
entity.setSecurity(input.getSecuritySymbol());
|
||||||
entity.setSum(input.getBalance());
|
entity.setSum(input.getBalance());
|
||||||
|
|
||||||
|
if (!putAndVerifyPreviousValues(now, input.getId(), input.getBalance()))
|
||||||
|
return null;
|
||||||
return entity;
|
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
|
@Override
|
||||||
protected Collection<RegistryHistory> sortInput(Collection<RegistryHistory> input) {
|
protected Collection<RegistryHistory> sortInput(Collection<RegistryHistory> input) {
|
||||||
return input.stream()
|
return input.stream()
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package ru.spcex.clearing.registry.reports.builders;
|
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 org.springframework.stereotype.Component;
|
||||||
import ru.spcex.clearing.registry.reports.bean.BusinessEvent;
|
import ru.spcex.clearing.registry.reports.bean.BusinessEvent;
|
||||||
import ru.spcex.clearing.registry.reports.bean.Registry;
|
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.loaders.helpers.IEnumKey;
|
||||||
import ru.spcex.clearing.registry.reports.report.MoneyBalanceRegisterReport;
|
import ru.spcex.clearing.registry.reports.report.MoneyBalanceRegisterReport;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.Collection;
|
import java.util.*;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class MoneyBalanceRegisterReportBuilder extends XLSXReportBuilder<MoneyBalanceRegisterReport, RegistryHistory> {
|
public class MoneyBalanceRegisterReportBuilder extends XLSXReportBuilder<MoneyBalanceRegisterReport, RegistryHistory> {
|
||||||
private final static DateTimeFormatter yyyyMMddFormat = DateTimeFormatter.ofPattern("yyyyMMdd");
|
private final static DateTimeFormatter yyyyMMddFormat = DateTimeFormatter.ofPattern("yyyyMMdd");
|
||||||
|
private Map<Pair<Long, LocalDate>, BigDecimal> previousValues;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String reportName() {
|
protected String reportName() {
|
||||||
|
|
@ -56,9 +60,29 @@ public class MoneyBalanceRegisterReportBuilder extends XLSXReportBuilder<MoneyBa
|
||||||
entity.setAccount(input.getAccount());
|
entity.setAccount(input.getAccount());
|
||||||
entity.setSum(input.getBalance());
|
entity.setSum(input.getBalance());
|
||||||
|
|
||||||
|
if (!putAndVerifyPreviousValues(now, input.getId(), input.getBalance()))
|
||||||
|
return null;
|
||||||
return entity;
|
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
|
@Override
|
||||||
protected Collection<RegistryHistory> sortInput(Collection<RegistryHistory> input) {
|
protected Collection<RegistryHistory> sortInput(Collection<RegistryHistory> input) {
|
||||||
return input.stream()
|
return input.stream()
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue