From 7efde73c9e53c22ea36d3ff83c87ddea7ea6bf3b Mon Sep 17 00:00:00 2001 From: akulikov Date: Fri, 13 Dec 2024 12:51:37 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-795 --- .../ks/KSRepLccValueReportBuilder.java | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/ks/KSRepLccValueReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/ks/KSRepLccValueReportBuilder.java index 4bd609cda..6e2b0fdd4 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/ks/KSRepLccValueReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/ks/KSRepLccValueReportBuilder.java @@ -2,7 +2,6 @@ package ru.spcex.clearing.reports.builders.ks; import java.math.BigDecimal; import java.math.RoundingMode; -import java.time.DayOfWeek; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; @@ -14,6 +13,7 @@ import java.util.stream.Collectors; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.misc.Currency; import ru.clearing.classes.statics.data.registry.Registry; +import ru.clearing.classes.statics.data.scheduler.ClearingCalendar; import ru.clearing.classes.statics.data.security.Rates; import ru.clearing.classes.statics.data.security.RiskParameter; import ru.clearing.platform.dictionary.CurrencyPairDictionary; @@ -21,6 +21,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.reports.builders.CSVReportBuilder; import ru.spcex.clearing.reports.builders.EmptyParams; import ru.spcex.clearing.reports.builders.bean.KSRepLccValueReport; +import ru.spcex.platform.enumeration.DayStatus; import ru.spcex.platform.enumeration.RegistryDesignation; import ru.spcex.platform.enumeration.RegistryInstrumentType; import ru.spcex.platform.enumeration.RegistryStatus; @@ -42,6 +43,7 @@ public class KSRepLccValueReportBuilder extends CSVReportBuilder currencyImdg; private final Imdg riskParameterImdg; private final Imdg currencyPairDictionaryImdg; + private final Imdg clearingCalendarImdg; private List rows = null; @@ -51,6 +53,7 @@ public class KSRepLccValueReportBuilder extends CSVReportBuilder currencyRates = new HashMap<>(); - LocalDateTime reportDate = LocalDateTime.now(); - if (reportDate.getDayOfWeek() == DayOfWeek.MONDAY) reportDate = reportDate.minusDays(3); - else if (reportDate.getDayOfWeek() == DayOfWeek.SUNDAY) reportDate = reportDate.minusDays(2); - else reportDate = reportDate.minusDays(1); + + + + LocalDateTime reportDate = LocalDateTime.now().minusDays(1); + ImdgPredicateBuilder pb = clearingCalendarImdg.predicateBuilder(); + do { + ClearingCalendar clearingDate = clearingCalendarImdg.getFirstObjectByPredicate(pb.equals("clearing_date", reportDate)); + if (clearingDate == null) { + log.warn("Can't find clearing_date for report_date, use {}", reportDate.toLocalDate()); + break; + } + DayStatus status = IEnumKey.getEnumByKey(DayStatus.class, clearingDate.getDayStatus()); + if (status == DayStatus.Workday) break; + reportDate = reportDate.minusDays(1); + } while (true); + for (Map.Entry> entryTKR : groupedByTKR.entrySet()) { currencyRates.clear(); try {