akulikov 2024-12-13 12:51:37 +03:00
parent 394782a6d0
commit 7efde73c9e

View file

@ -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<EmptyParams, KS
private final Imdg<Currency> currencyImdg;
private final Imdg<RiskParameter> riskParameterImdg;
private final Imdg<CurrencyPairDictionary> currencyPairDictionaryImdg;
private final Imdg<ClearingCalendar> clearingCalendarImdg;
private List<KSRepLccValueReport> rows = null;
@ -51,6 +53,7 @@ public class KSRepLccValueReportBuilder extends CSVReportBuilder<EmptyParams, KS
riskParameterImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_RiskParameter, RiskParameter.class);
currencyPairDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyPairDictionary, CurrencyPairDictionary.class);
currencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Currency, Currency.class);
clearingCalendarImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingCalendar, ClearingCalendar.class);
}
@Override
@ -111,10 +114,22 @@ public class KSRepLccValueReportBuilder extends CSVReportBuilder<EmptyParams, KS
.collect(Collectors.groupingBy(Registry::getTradingClearingRegistry));
Map<String, Rates> 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<String, List<Registry>> entryTKR : groupedByTKR.entrySet()) {
currencyRates.clear();
try {