From 3ec26e9d91cdad657de57279930798c1384b65a4 Mon Sep 17 00:00:00 2001 From: akulikov Date: Fri, 1 Sep 2023 12:04:06 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-497 --- .../ks/KSRepCashNettoReportBuilder.java | 48 ++++++++++++----- .../ks/KSRepDepoNettoReportBuilder.java | 52 +++++++++++++------ 2 files changed, 73 insertions(+), 27 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepCashNettoReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepCashNettoReportBuilder.java index 2856e5c9b..f3f24523c 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepCashNettoReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepCashNettoReportBuilder.java @@ -17,7 +17,10 @@ import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder; import java.math.BigDecimal; import java.time.LocalDate; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; @Component @@ -83,8 +86,8 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder groupedRegistry = entry.getValue(); try { - if (groupedRegistry.size() > 2 || groupedRegistry.isEmpty()) { - log.warn("Invalid OM_T and TM_T registries for account = {} and session_id = {}. Registries with id = [{}] was skipped", + if (groupedRegistry.isEmpty()) { + log.warn("Empty OM_T and TM_T registries for account = {} and session_id = {}. Registries with id = [{}] was skipped", pairRegistryId.getAccount(), pairRegistryId.getSessionId(), groupedRegistry.stream().map(r -> String.valueOf(r.getId())).collect(Collectors.joining(", ")) @@ -92,18 +95,33 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder tmtRegistries = new ArrayList<>(); + List omtRegistries = new ArrayList<>(); Registry registry = null; for (Registry currRegistry : groupedRegistry) { registry = currRegistry; - if (RegistryDesignation.O.equalsByKey(currRegistry.getRegistryDesignation())) omtRegistry = currRegistry; - if (RegistryDesignation.T.equalsByKey(currRegistry.getRegistryDesignation())) tmtRegistry = currRegistry; + if (RegistryDesignation.O.equalsByKey(currRegistry.getRegistryDesignation())) + omtRegistries.add(currRegistry); + if (RegistryDesignation.T.equalsByKey(currRegistry.getRegistryDesignation())) + tmtRegistries.add(currRegistry); } - if (tmtRegistry != null && omtRegistry != null && !Objects.equals(tmtRegistry.getTradingCode(), omtRegistry.getTradingCode())) { - log.warn("Invalid TM_T and OM_T registry pair, tradingCode not equals. Registry pair was skipped"); - continue; + boolean invalid = false; + if (!tmtRegistries.isEmpty() || !omtRegistries.isEmpty()) { + String sourceTradingCode = tmtRegistries.iterator().next().getTradingCode(); + for (Registry currRegistry : tmtRegistries) { + if (sourceTradingCode.equals(currRegistry.getTradingCode())) continue; + invalid = true; + log.warn("Invalid TM_T registries set, tradingCode not equals. Registries was skipped"); + break; + } + for (Registry currRegistry : omtRegistries) { + if (sourceTradingCode.equals(currRegistry.getTradingCode())) continue; + invalid = true; + log.warn("Invalid OM_T registries set, tradingCode not equals. Registries was skipped"); + break; + } + if (invalid) continue; } Session session = sessionImdg.getSingleObjectByID(registry.getSessionId()); @@ -115,8 +133,14 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder groupedRegistry = entry.getValue(); try { - if (groupedRegistry.size() > 2 || groupedRegistry.isEmpty()) { - log.warn("Invalid OS_T and TS_T registries for account = {} and sessionId = {}. Registries with id = [{}] was skipped", + if (groupedRegistry.isEmpty()) { + log.warn("Empty OS_T and TS_T registries for account = {} and sessionId = {}. Registries with id = [{}] was skipped", pairRegistryId.getAccount(), pairRegistryId.getSessionId(), groupedRegistry.stream().map(r -> String.valueOf(r.getId())).collect(Collectors.joining(", ")) @@ -89,20 +92,33 @@ public class KSRepDepoNettoReportBuilder extends CSVReportBuilder tstRegistries = new ArrayList<>(); + List ostRegistries = new ArrayList<>(); Registry registry = null; for (Registry currRegistry : groupedRegistry) { registry = currRegistry; - if (RegistryDesignation.O.equalsByKey(currRegistry.getRegistryDesignation())) ostRegistry = currRegistry; - if (RegistryDesignation.T.equalsByKey(currRegistry.getRegistryDesignation())) tstRegistry = currRegistry; + if (RegistryDesignation.O.equalsByKey(currRegistry.getRegistryDesignation())) + ostRegistries.add(currRegistry); + if (RegistryDesignation.T.equalsByKey(currRegistry.getRegistryDesignation())) + tstRegistries.add(currRegistry); } - if ((tstRegistry != null && ostRegistry != null) && - (!Objects.equals(tstRegistry.getTradingCode(), ostRegistry.getTradingCode()) || - !Objects.equals(tstRegistry.getSecuritySymbol(), ostRegistry.getSecuritySymbol()))) { - log.warn("Invalid TS_T and OS_T registry pair, account/tradingCode/securityId not equals. Registry pair was skipped"); - continue; + boolean invalid = false; + if (!tstRegistries.isEmpty() || !ostRegistries.isEmpty()) { + String sourceTradingCode = tstRegistries.iterator().next().getTradingCode(); + for (Registry currRegistry : tstRegistries) { + if (sourceTradingCode.equals(currRegistry.getTradingCode())) continue; + invalid = true; + log.warn("Invalid TS_T registries set, tradingCode not equals. Registries was skipped"); + break; + } + for (Registry currRegistry : ostRegistries) { + if (sourceTradingCode.equals(currRegistry.getTradingCode())) continue; + invalid = true; + log.warn("Invalid OS_T registries set, tradingCode not equals. Registries was skipped"); + break; + } + if (invalid) continue; } KSRepDepoNettoReport ksRepDepoNettoReport = new KSRepDepoNettoReport(); @@ -115,9 +131,15 @@ public class KSRepDepoNettoReportBuilder extends CSVReportBuilder