From 521749db7cacac22c2bcbcedc26168ef7629d81b Mon Sep 17 00:00:00 2001 From: AKurakin Date: Tue, 10 Jan 2023 19:06:37 +0300 Subject: [PATCH] =?UTF-8?q?reports-service=20=D0=BF=D0=BE=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BB=20CLS-27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reports/bt_17_3/ReportBR_0420318.java | 3 +- .../collector/ReportBR_0420318_Collector.java | 96 ++++++++++++------- .../clearing/imdg/IMDGDistributedNames.java | 1 + 3 files changed, 63 insertions(+), 37 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java index 7910b9ab3..e42c06933 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java @@ -51,10 +51,9 @@ public class ReportBR_0420318 extends ReportWithClearingStatus { @XStreamAsAttribute @XStreamAlias("companySymbols_code") String companySymbolsCode, @XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_countryCode") String liabilitiesClaimsAssetsCountryCode, @XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_settlementDate") String liabilitiesClaimsAssetsSettlementDate, - @XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_accountType") String liabilitiesClaimsAssetsAccountType, @XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_Contract") String liabilitiesClaimsAssetsContract, @XStreamAsAttribute @XStreamAlias("liabilitiesClaimsMoney_currencyCode") String liabilitiesClaimsMoneyCurrencyCode, - @XStreamAsAttribute @XStreamAlias("liabilitiesAmount_amount") String liabilitiesAmountAmount, + @XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_liabilitiesQuantity") String liabilitiesClaimsAssetsLiabilitiesQuantity, @XStreamAsAttribute @XStreamAlias("liabilitiesClaimsMoney_name") String liabilitiesClaimsMoneyName, @XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_liabilities") String liabilitiesClaimsAssetsLiabilities, @XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_comment") String liabilitiesClaimsAssetsComment, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420318_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420318_Collector.java index e6e2eb06f..0b7cdcb3b 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420318_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420318_Collector.java @@ -19,8 +19,8 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; -import java.util.Collection; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; public class ReportBR_0420318_Collector extends ReportWithPeriodCollector { @@ -34,7 +34,8 @@ public class ReportBR_0420318_Collector extends ReportWithPeriodCollector liabilities = searchLiabilitiesClaimsAssets(startDate, endDate); + Collection allLiabilities = searchLiabilitiesClaimsAssets(startDate, endDate); ReportBR_0420318 reportBR_0420318 = new ReportBR_0420318(startDate, endDate); - for (LiabilitiesClaimsAssets liability: liabilities) { - final Long companyId = liability.getCompanyId(); + Map> indexByCompany = MapUtil.indexList(allLiabilities, LiabilitiesClaimsAssets::getCompanyId); + + for (Map.Entry> liabilitysByCompanyE : indexByCompany.entrySet()) { + final Long companyId = liabilitysByCompanyE.getKey(); + final List liabilitysByCompany = liabilitysByCompanyE.getValue(); + Company company = companyImdg.getSingleObjectByID(companyId); - CompanySymbols companySymbolCntr = findSymbol(DocumentTypes.cntr, company.getId()); CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId()); CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId()); @@ -78,35 +82,57 @@ public class ReportBR_0420318_Collector extends ReportWithPeriodCollector cmcLst = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(Map.of("companyId", companyId)); boolean checkCategoryB = cmcLst.stream().anyMatch(cmc -> ClearingCategory.B.equalsByKey(cmc.getClearingMemberCategory())); - boolean checkCategoryIV = cmcLst.stream().anyMatch(cmc -> ClearingCategory.I.equalsByKey(cmc.getClearingMemberCategory()) || ClearingCategory.V.equalsByKey(cmc.getClearingMemberCategory())); - if (checkCategoryB) { - liabilitiesClaimsAssets_settlementDate = liability.getRefundDate(); + boolean checkCategoryIV = cmcLst.stream().anyMatch(cmc -> ClearingCategory.I.equalsByKey(cmc.getClearingMemberCategory()) || ClearingCategory.V.equalsByKey(cmc.getClearingMemberCategory())); + + Map> indexByCurrency = MapUtil.indexList(liabilitysByCompany, LiabilitiesClaimsAssets::getCurrency); + + for (Map.Entry> entryCurrency: indexByCurrency.entrySet()) { + final String currencyCode = entryCurrency.getKey(); + final List claimsAssets = entryCurrency.getValue(); + LiabilitiesClaimsAssets firstLiability = claimsAssets.get(0); + + if (checkCategoryB) { + liabilitiesClaimsAssets_settlementDate = firstLiability.getRefundDate(); + } + if (checkCategoryIV) { + liabilitiesClaimsAssets_settlementDate = firstLiability.getSettlementDate(); + } + + BigDecimal liabilitiesClaimsAssets_liabilitiesQuantity = claimsAssets.stream() + .map(LiabilitiesClaimsAssets::getLiabilitiesQuantity) + .filter(Objects::nonNull) + .reduce(BigDecimal::add) + .orElse(BigDecimal.ZERO); + + LiabilitiesClaimsMoney liabilitiesClaimsMoney = liabilitiesClaimsMoneyImdg.getSingleObjectByFieldValues(Map.of("currency", currencyCode)); + + long liabilitiesCount = claimsAssets.size(); + String contracts = claimsAssets.stream() + .map(LiabilitiesClaimsAssets::getContract) + .distinct() + .collect(Collectors.joining(",")); + String comments = claimsAssets.stream() + .map(LiabilitiesClaimsAssets::getContract) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.joining(",")); + + ReportBR_0420318.Info_0420318 info_0420318 = new ReportBR_0420318.Info_0420318( + toString(firstLiability.getFullName()), + toString(companySymbolINN == null ? null : companySymbolINN.getCompanySymbolValue()), + company.getProfile().getCountryCode(), + toString(liabilitiesClaimsAssets_settlementDate), + contracts, + currencyCode, + toString(liabilitiesClaimsAssets_liabilitiesQuantity), + (liabilitiesClaimsMoney == null ? null : liabilitiesClaimsMoney.getFullName()), + toString(liabilitiesCount), + comments, + toString(companySymbolINN == null ? null : companySymbolINN.getCompanySymbolValue()), // второй раз по ТЗ + firstLiability.getFullName() + ); + reportBR_0420318.getRows().add(info_0420318); } - if (checkCategoryIV) { - liabilitiesClaimsAssets_settlementDate = liability.getSettlementDate(); - } - - BigDecimal liabilitiesQuantity = liability.getLiabilitiesQuantity(); //todo summ? - - final String currencyCode = liability.getCurrency(); - LiabilitiesClaimsMoney liabilitiesClaimsMoney = liabilitiesClaimsMoneyImdg.getSingleObjectByFieldValues(Map.of("currency", currencyCode)); - - ReportBR_0420318.Info_0420318 info_0420318 = new ReportBR_0420318.Info_0420318( - toString(liability.getFullName()), - toString(companySymbolINN == null? null: companySymbolINN.getCompanySymbolValue()), - company.getProfile().getCountryCode(), - toString(liabilitiesClaimsAssets_settlementDate), - "liabilitiesClaimsAssets_accountType", - liability.getContract(), - currencyCode, - "liabilitiesAmount_amount",//fixme liabilitiesClaimsAssets_liabilitiesQuantity toString(liabilitiesQuantity) - (liabilitiesClaimsMoney == null ? null : liabilitiesClaimsMoney.getFullName()),//todo уточнить объект ли "liabilitiesClaimsMoney_name", использовать? - "liabilitiesClaimsAssets_liabilities", - "liabilitiesClaimsAssets_comment", - "companySymbol_value", - "liabilitiesClaimsAssets_fullNames" - ); - reportBR_0420318.getRows().add(info_0420318); } diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java index dd7db6001..80fd2eb00 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java @@ -108,6 +108,7 @@ public final class IMDGDistributedNames { public static final String Map_Session = "Map_Session"; public static final String Map_Notification = "Map_Notification"; public static final String Map_LiabilitiesClaimsAssets = "Map_LiabilitiesClaimsAssets"; + public static final String Map_LiabilitiesClaimsMoney = "Map_LiabilitiesClaimsMoney"; public static final String Map_ClearMemberRegister = "Map_ClearMemberRegister"; public static final String Map_BalanceRegister = "Map_BalanceRegister"; public static final String Map_ExecutionDeposit = "Map_ExecutionDeposit";