diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/builders/DepoBalanceRegisterReportBuilder.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/builders/DepoBalanceRegisterReportBuilder.java index f3694d5f9..e90b645aa 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/builders/DepoBalanceRegisterReportBuilder.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/builders/DepoBalanceRegisterReportBuilder.java @@ -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 { private final static DateTimeFormatter yyyyMMddFormat = DateTimeFormatter.ofPattern("yyyyMMdd"); + private Map, BigDecimal> previousValues; @Override protected String reportName() { @@ -52,9 +56,29 @@ public class DepoBalanceRegisterReportBuilder extends XLSXReportBuilder 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 inputObj, File outFolder) { + previousValues = new HashMap<>(); + try { + return super.buildReport(inputObj, outFolder); + } finally { + previousValues = null; + } + } + @Override protected Collection sortInput(Collection input) { return input.stream() diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/builders/MoneyBalanceRegisterReportBuilder.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/builders/MoneyBalanceRegisterReportBuilder.java index 9292d643d..2c2080b81 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/builders/MoneyBalanceRegisterReportBuilder.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/builders/MoneyBalanceRegisterReportBuilder.java @@ -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 { private final static DateTimeFormatter yyyyMMddFormat = DateTimeFormatter.ofPattern("yyyyMMdd"); + private Map, BigDecimal> previousValues; @Override protected String reportName() { @@ -56,9 +60,29 @@ public class MoneyBalanceRegisterReportBuilder extends XLSXReportBuilder 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 inputObj, File outFolder) { + previousValues = new HashMap<>(); + try { + return super.buildReport(inputObj, outFolder); + } finally { + previousValues = null; + } + } + @Override protected Collection sortInput(Collection input) { return input.stream()