This commit is contained in:
AKurakin 2024-10-31 15:16:12 +03:00
parent cf317b252b
commit bf63c85837
6 changed files with 39 additions and 16 deletions

View file

@ -30,9 +30,9 @@ registry-service.kafka-consumer.* и registry-service.kafka-producer.* не об
Соответствие отчётам
--------------------
executionDepositLoader + executionFondLoader = executionRegisterReportBuilder (contract_register)
executionDepositLoader + executionFondLoader = executionRegisterReportBuilder (contract_register) Реестр сделок
depoInstructionLoader = depoPaymentInstructionBuilder (rdc_register)
moneyPaymentInstructionLoader = moneyPaymentInstructionRegisterReportBuilder (prc_register)
moneyBalanceLoader = moneyBalanceRegisterReportBuilder (money_register)
depoBalanceLoader = depoBalanceRegisterReportBuilder (security_register)
registryLoader = liabilitiesRegistryReportBuilder (registry)
registryLoader = liabilitiesRegistryReportBuilder (registry) Реестр обязательств

View file

@ -23,6 +23,9 @@ public class AProperties {
@Value("${registry-service.outFolder}")
private String outFolder;
@Value("${registry-service.lck:false}")
private Boolean lckLoadExecutionCurrency;
public AProperties(CmdArgsParser argsParser) {
period = argsParser.parsePeriodProperties();
LoggerFactory.getLogger(getClass()).info("Period from CMD: {}", period);
@ -60,6 +63,14 @@ public class AProperties {
this.reportsStore = reportsStore;
}
public Boolean getLckLoadExecutionCurrency() {
return lckLoadExecutionCurrency;
}
public void setLckLoadExecutionCurrency(Boolean lckLoadExecutionCurrency) {
this.lckLoadExecutionCurrency = lckLoadExecutionCurrency;
}
public KafkaConsumerSettings getKafkaConsumer() {
return kafkaConsumer;
}

View file

@ -23,6 +23,7 @@ public abstract class IDBLoader<T extends IDBObject> {
public List<T> loadObjects() {
log.trace("Загрузчик {}", getClass().getSimpleName());
int count = 0;
long timer = System.currentTimeMillis();
try {
String sql = sqlQuery();
@ -34,13 +35,15 @@ public abstract class IDBLoader<T extends IDBObject> {
parameterSource.addValue("endDate", endDate);
log.debug("Запрос SQL: \"{}\", с параметрами: startDate={}, endDate={}",
sql, periodProperties.getStartDate(), endDate);
return clearingJdbc.query(sql, parameterSource, (rs, rowNum) -> fromRS(rs));
List<T> result = clearingJdbc.query(sql, parameterSource, (rs, rowNum) -> fromRS(rs));
count = result.size();
return result;
} catch (Exception e) {
log.error("Не могу загрузить объект класса %s, причина:".formatted(getDBObjectClass()), e);
throw new RuntimeException(e);
} finally {
timer = System.currentTimeMillis() - timer;
log.debug("Загрузка {} завершена за {} ms", getDBObjectClass().getSimpleName(), timer);
log.debug("Загрузка {} завершена за {} ms. {} записей прочитано.", getDBObjectClass().getSimpleName(), timer, count);
}
}

View file

@ -6,9 +6,7 @@ import org.springframework.stereotype.Component;
import ru.spcex.clearing.registry.conf.properties.AProperties;
import ru.spcex.clearing.registry.reports.ReportUtils;
import ru.spcex.clearing.registry.reports.bean.*;
import ru.spcex.clearing.registry.reports.loaders.helpers.ADictionaryRowMapper;
import ru.spcex.clearing.registry.reports.loaders.helpers.RegistryCodeSqlBuilder;
import ru.spcex.clearing.registry.reports.loaders.helpers.RegistryTradingParams;
import ru.spcex.clearing.registry.reports.loaders.helpers.*;
import java.math.BigDecimal;
import java.sql.ResultSet;
@ -75,7 +73,10 @@ public class RegistryLoader extends IDBLoader<Registry> {
@Override
protected String sqlQuery() {
RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.OM_T, RegistryTradingParams.OS_T);
RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(
RegistryTradingParams.OM_T, RegistryTradingParams.OS_T,
RegistryTradingParams.TM_T, RegistryTradingParams.TS_T
);
return ("select * from REGISTRY where SETTLEMENT_DATE >= :startDate and SETTLEMENT_DATE < :endDate " +
"and (%s) and REGISTRY_STATUS='%s'") // and TRADING_CLEARING_REGISTRY is not null
.formatted(registryCodeSqlBuilder.buildSql(), RegistryStatus.CLRD.getKey());

View file

@ -3,15 +3,13 @@ package ru.spcex.clearing.registry.service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import ru.spcex.clearing.registry.conf.properties.AProperties;
import ru.spcex.clearing.registry.reports.bean.*;
import ru.spcex.clearing.registry.reports.builders.*;
import ru.spcex.clearing.registry.reports.loaders.*;
import java.io.File;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.concurrent.*;
@Service
@ -34,6 +32,7 @@ public class RegisterUtilityRunner {
private final LiabilitiesRegistryReportBuilder liabilitiesRegistryReportBuilder;
private final File outFolder;
private final boolean executionCurrencyLCK;
public RegisterUtilityRunner(DepoInstructionLoader depoInstructionLoader,
DepoBalanceLoader depoBalanceLoader,
@ -49,7 +48,8 @@ public class RegisterUtilityRunner {
MoneyBalanceRegisterReportBuilder moneyBalanceRegisterReportBuilder,
ExecutionRegisterReportBuilder executionRegisterReportBuilder,
LiabilitiesRegistryReportBuilder liabilitiesRegistryReportBuilder,
File outFolder) {
File outFolder,
AProperties properties) {
this.depoInstructionLoader = depoInstructionLoader;
this.depoBalanceLoader = depoBalanceLoader;
this.moneyInstructionLoader = moneyInstructionLoader;
@ -65,7 +65,8 @@ public class RegisterUtilityRunner {
this.executionRegisterReportBuilder = executionRegisterReportBuilder;
this.liabilitiesRegistryReportBuilder = liabilitiesRegistryReportBuilder;
this.outFolder = outFolder;
log.info("Папка outFolder: {}", outFolder.getAbsolutePath());
this.executionCurrencyLCK = properties.getLckLoadExecutionCurrency() == null ? false : properties.getLckLoadExecutionCurrency();
log.info("Папка outFolder: \"{}\". Настройка LCK={}", outFolder.getAbsolutePath(), executionCurrencyLCK);
}
public void process() throws InterruptedException {
@ -113,10 +114,16 @@ public class RegisterUtilityRunner {
moneyBalanceRegisterReportBuilder.buildReport(moneyBalances, outFolder);
liabilitiesRegistryReportBuilder.buildReport(registrys, outFolder);
Set<ExecutionCommon> executionCommons = new HashSet<>();
Collection<ExecutionCommon> executionCommons = new HashSet<>();
executionCommons.addAll(executionDeposits);
executionCommons.addAll(executionFonds);
executionCommons.addAll(executionCurrencys);
if (executionCurrencyLCK) {
executionCommons = new ArrayList<>(executionCommons);
executionCommons.addAll(executionCurrencys); // без дедупликации по ExecutionCommon.ExchangeExecutionId
} else {
executionCommons.addAll(executionCurrencys);
}
log.debug("ExecutionCommons size={}, make execution report", executionCommons.size());
executionRegisterReportBuilder.buildReport(executionCommons, outFolder);
log.info("Все отчёты завершены.");
// todo возможно понадобится отсылать на SFTP ReportUtils.sendFilesToSftp

View file

@ -6,6 +6,7 @@ registry-service.db-clearing.username=clearing
registry-service.db-clearing.password=Aa111111
registry-service.outFolder=/opt/mfd/clearing/reestr_out/
registry-service.LCK=true
# use SFTP (not implemented):
#registry-service.reports-store.local-temp-dir=./reports_out_temp