From c5c56f5d79338f0f904cc7b8c4316402975c8808 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 26 Dec 2022 20:28:31 +0300 Subject: [PATCH] =?UTF-8?q?reports-service=20http://jira.mfd.msk:8088/brow?= =?UTF-8?q?se/CLS-29=20=D0=BD=D0=B0=D1=87=D0=B0=D0=BB=D0=BE,=20=D1=80?= =?UTF-8?q?=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D0=BD=D0=B3=20?= =?UTF-8?q?=D0=BE=D0=BF=D1=8F=D1=82=D1=8C.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reports/bt_17_5/ReportBR_0420312_P1.java | 35 +++++++--- .../reports/services/ReportDataCollector.java | 6 ++ .../collector/Bt17_1_P1_collector.java | 4 +- .../collector/Bt17_1_P2_collector.java | 4 +- .../services/collector/Bt17_2_collector.java | 4 +- .../collector/Bt17_5_P1_collector.java | 65 +++++++++++++------ 6 files changed, 79 insertions(+), 39 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java index af4884919..dce10d12a 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java @@ -6,6 +6,8 @@ import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; @XStreamAlias("clearingCoverage1") public class ReportBR_0420312_P1 extends ReportWithPeriod { @@ -13,9 +15,27 @@ public class ReportBR_0420312_P1 extends ReportWithPeriod { @XStreamAlias("destination") private String destination; - @XStreamAlias("part_1") - private final Info_0420312_P1 part_1; + @XStreamAlias("rows") + private final List rows = new ArrayList<>(); + + public ReportBR_0420312_P1(LocalDate startDate, + LocalDate endDate, + String destination) { + super("0.0.1", + "0420312", + "Сведения о клиринговом обеспечении, часть 1", + startDate, + endDate); + this.destination = destination; + } + + + public List getRows() { + return rows; + } + + @Deprecated public ReportBR_0420312_P1(LocalDate startDate, LocalDate endDate, String companyClearingCode, @@ -26,19 +46,14 @@ public class ReportBR_0420312_P1 extends ReportWithPeriod { String companySymbolValue, String companyInfoCountryCode, String clearingMemberCategoryClearingMemberCategory) { - super("0.0.1", - "0420312", - "Сведения о клиринговом обеспечении, часть 1", - startDate, - endDate); - this.destination = destination; - part_1 = new Info_0420312_P1(companyClearingCode, + this(startDate, endDate, destination); + getRows().add(new Info_0420312_P1(companyClearingCode, liabilitiesClaimsAssetsCompanyId, liabilitiesClaimsAssetsFullName, companySymbolCode, companySymbolValue, companyInfoCountryCode, - clearingMemberCategoryClearingMemberCategory); + clearingMemberCategoryClearingMemberCategory)); } public static class Info_0420312_P1 { diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java index f7dc466ba..82a8d0001 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java @@ -34,6 +34,12 @@ public abstract class ReportDataCollector { abstract public Class getReportClass(); + protected void validateDateRange(LocalDate startDate, LocalDate endDate) throws IllegalArgumentException { + if (startDate.isAfter(endDate)) { + throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")"); + } + } + protected String toString(Long val) { if (val == null) return null; return val.toString(); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java index d11b7e256..824306394 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java @@ -56,9 +56,7 @@ public class Bt17_1_P1_collector extends ReportDataCollector endDate(" + endDate + ")"); - } + validateDateRange(startDate, endDate); ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(startDate, endDate, "BR", "I,V", // cmc.getClearingMemberCategory() diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java index 3c18e6922..bed4787d1 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java @@ -25,9 +25,7 @@ public class Bt17_1_P2_collector extends ReportDataCollector endDate(" + endDate + ")"); - } + validateDateRange(startDate, endDate); String ql = String.format("'%s' <= refundDate and refundDate <= '%s'", startDate, endDate); Collection liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java index 4d9b8ddae..b85eed586 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java @@ -32,9 +32,7 @@ public class Bt17_2_collector extends ReportDataCollector { @Override public ReportBR_0420317 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { - if (startDate.isAfter(endDate)) { - throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")"); - } + validateDateRange(startDate, endDate); String ql = String.format("'%s' <= updated and updated <= '%s' and service='MKR'", startDate, endDate); // todo обговорить про updatedAt updated, todo enum MKR diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java index 23e4b2d38..11ccb81d6 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java @@ -5,52 +5,77 @@ import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.company.relation.Relation; +import ru.clearing.classes.statics.data.generated.ClearingMemberCategory; +import ru.clearing.classes.transaction.data.execution.LiabilitiesClaimsAssets; +import ru.clearing.platform.dictionary.CountryCodeDictionary; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_2.ReportBR_0420317; import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P1; import ru.spcex.clearing.reports.services.ReportDataCollector; +import ru.spcex.platform.enumeration.DocumentTypes; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import java.time.LocalDate; -import java.time.LocalDateTime; import java.util.Collection; +import java.util.List; import java.util.Map; @Component public class Bt17_5_P1_collector extends ReportDataCollector { private Imdg companyImdg; - private Imdg relationImdg; + // private Imdg relationImdg; private Imdg companySymbolsImdg; + private Imdg countryCodeDictionaryImdg; + private Imdg clearingMemberCategoryImdg; + private Imdg liabilitiesClaimsAssetsImdg; @Autowired public Bt17_5_P1_collector(ImdgProvider imdgProvider) { companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); - relationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class); + liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); +// relationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class); companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); + countryCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CountryCodeDictionary, CountryCodeDictionary.class); + } + + protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) { + CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of( + "companySymbol", docType.getKey(), + "companyId", companyId + )); + return companySymbol; } @Override public ReportBR_0420312_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { - if (startDate.isAfter(endDate)) { - throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")"); - } + validateDateRange(startDate, endDate); - // TODO ВСЁ по CLS-29... - String ql = String.format("'%s' <= updated and updated <= '%s' and service='MKR'", startDate, endDate); + ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(startDate, endDate, "BR"); // todo обговорить про updatedAt updated, todo enum MKR - Collection relations = relationImdg.getCollectionObjectsBySQL(ql); - ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(LocalDate.now(), - LocalDate.now(), - "companyClearingCode", - "BR", - "liabilitesClaimsAssetsCompanyId", - "liabilitesClaimsAssetsFullName", - "companySymbolCode", - "companySymbolValue", - "companyInfoCountryCode", - "clearingMemberCategory"); + String ql = String.format("'%s' <= refundDate and refundDate <= '%s'", + startDate, endDate); + Collection liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql); + Map> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId); + for (Map.Entry> companyEntry : indexByCompany.entrySet()) { + final Long companyId = companyEntry.getKey(); + Company company = companyImdg.getSingleObjectByID(companyId); + CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId()); + CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId()); + ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId)); + String clearingMemberCategory = cmc == null ? null : cmc.getClearingMemberCategory(); + ReportBR_0420312_P1.Info_0420312_P1 info_0420312_p1 = new ReportBR_0420312_P1.Info_0420312_P1( + company.getClearingCode(), + toString(companyId), + company.getFullName(), + companySymbolINN == null ? null : companySymbolINN.getCompanySymbolValue(), + companySymbolOGRN == null ? null : companySymbolOGRN.getCompanySymbolValue(), + company.getProfile().getCountryCode(), + clearingMemberCategory + ); + reportBR_0420312P1.getRows().add(info_0420312_p1); + } return reportBR_0420312P1; }