registry-service http://jira.mfd.msk:8088/browse/CLS-788
This commit is contained in:
parent
cf317b252b
commit
bf63c85837
6 changed files with 39 additions and 16 deletions
|
|
@ -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)
|
depoInstructionLoader = depoPaymentInstructionBuilder (rdc_register)
|
||||||
moneyPaymentInstructionLoader = moneyPaymentInstructionRegisterReportBuilder (prc_register)
|
moneyPaymentInstructionLoader = moneyPaymentInstructionRegisterReportBuilder (prc_register)
|
||||||
moneyBalanceLoader = moneyBalanceRegisterReportBuilder (money_register)
|
moneyBalanceLoader = moneyBalanceRegisterReportBuilder (money_register)
|
||||||
depoBalanceLoader = depoBalanceRegisterReportBuilder (security_register)
|
depoBalanceLoader = depoBalanceRegisterReportBuilder (security_register)
|
||||||
registryLoader = liabilitiesRegistryReportBuilder (registry)
|
registryLoader = liabilitiesRegistryReportBuilder (registry) Реестр обязательств
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,9 @@ public class AProperties {
|
||||||
@Value("${registry-service.outFolder}")
|
@Value("${registry-service.outFolder}")
|
||||||
private String outFolder;
|
private String outFolder;
|
||||||
|
|
||||||
|
@Value("${registry-service.lck:false}")
|
||||||
|
private Boolean lckLoadExecutionCurrency;
|
||||||
|
|
||||||
public AProperties(CmdArgsParser argsParser) {
|
public AProperties(CmdArgsParser argsParser) {
|
||||||
period = argsParser.parsePeriodProperties();
|
period = argsParser.parsePeriodProperties();
|
||||||
LoggerFactory.getLogger(getClass()).info("Period from CMD: {}", period);
|
LoggerFactory.getLogger(getClass()).info("Period from CMD: {}", period);
|
||||||
|
|
@ -60,6 +63,14 @@ public class AProperties {
|
||||||
this.reportsStore = reportsStore;
|
this.reportsStore = reportsStore;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Boolean getLckLoadExecutionCurrency() {
|
||||||
|
return lckLoadExecutionCurrency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLckLoadExecutionCurrency(Boolean lckLoadExecutionCurrency) {
|
||||||
|
this.lckLoadExecutionCurrency = lckLoadExecutionCurrency;
|
||||||
|
}
|
||||||
|
|
||||||
public KafkaConsumerSettings getKafkaConsumer() {
|
public KafkaConsumerSettings getKafkaConsumer() {
|
||||||
return kafkaConsumer;
|
return kafkaConsumer;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ public abstract class IDBLoader<T extends IDBObject> {
|
||||||
|
|
||||||
public List<T> loadObjects() {
|
public List<T> loadObjects() {
|
||||||
log.trace("Загрузчик {}", getClass().getSimpleName());
|
log.trace("Загрузчик {}", getClass().getSimpleName());
|
||||||
|
int count = 0;
|
||||||
long timer = System.currentTimeMillis();
|
long timer = System.currentTimeMillis();
|
||||||
try {
|
try {
|
||||||
String sql = sqlQuery();
|
String sql = sqlQuery();
|
||||||
|
|
@ -34,13 +35,15 @@ public abstract class IDBLoader<T extends IDBObject> {
|
||||||
parameterSource.addValue("endDate", endDate);
|
parameterSource.addValue("endDate", endDate);
|
||||||
log.debug("Запрос SQL: \"{}\", с параметрами: startDate={}, endDate={}",
|
log.debug("Запрос SQL: \"{}\", с параметрами: startDate={}, endDate={}",
|
||||||
sql, periodProperties.getStartDate(), 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) {
|
} catch (Exception e) {
|
||||||
log.error("Не могу загрузить объект класса %s, причина:".formatted(getDBObjectClass()), e);
|
log.error("Не могу загрузить объект класса %s, причина:".formatted(getDBObjectClass()), e);
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
} finally {
|
} finally {
|
||||||
timer = System.currentTimeMillis() - timer;
|
timer = System.currentTimeMillis() - timer;
|
||||||
log.debug("Загрузка {} завершена за {} ms", getDBObjectClass().getSimpleName(), timer);
|
log.debug("Загрузка {} завершена за {} ms. {} записей прочитано.", getDBObjectClass().getSimpleName(), timer, count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,7 @@ import org.springframework.stereotype.Component;
|
||||||
import ru.spcex.clearing.registry.conf.properties.AProperties;
|
import ru.spcex.clearing.registry.conf.properties.AProperties;
|
||||||
import ru.spcex.clearing.registry.reports.ReportUtils;
|
import ru.spcex.clearing.registry.reports.ReportUtils;
|
||||||
import ru.spcex.clearing.registry.reports.bean.*;
|
import ru.spcex.clearing.registry.reports.bean.*;
|
||||||
import ru.spcex.clearing.registry.reports.loaders.helpers.ADictionaryRowMapper;
|
import ru.spcex.clearing.registry.reports.loaders.helpers.*;
|
||||||
import ru.spcex.clearing.registry.reports.loaders.helpers.RegistryCodeSqlBuilder;
|
|
||||||
import ru.spcex.clearing.registry.reports.loaders.helpers.RegistryTradingParams;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
|
@ -75,7 +73,10 @@ public class RegistryLoader extends IDBLoader<Registry> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String sqlQuery() {
|
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 " +
|
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
|
"and (%s) and REGISTRY_STATUS='%s'") // and TRADING_CLEARING_REGISTRY is not null
|
||||||
.formatted(registryCodeSqlBuilder.buildSql(), RegistryStatus.CLRD.getKey());
|
.formatted(registryCodeSqlBuilder.buildSql(), RegistryStatus.CLRD.getKey());
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,13 @@ package ru.spcex.clearing.registry.service;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.stereotype.Service;
|
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.bean.*;
|
||||||
import ru.spcex.clearing.registry.reports.builders.*;
|
import ru.spcex.clearing.registry.reports.builders.*;
|
||||||
import ru.spcex.clearing.registry.reports.loaders.*;
|
import ru.spcex.clearing.registry.reports.loaders.*;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.*;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -34,6 +32,7 @@ public class RegisterUtilityRunner {
|
||||||
private final LiabilitiesRegistryReportBuilder liabilitiesRegistryReportBuilder;
|
private final LiabilitiesRegistryReportBuilder liabilitiesRegistryReportBuilder;
|
||||||
|
|
||||||
private final File outFolder;
|
private final File outFolder;
|
||||||
|
private final boolean executionCurrencyLCK;
|
||||||
|
|
||||||
public RegisterUtilityRunner(DepoInstructionLoader depoInstructionLoader,
|
public RegisterUtilityRunner(DepoInstructionLoader depoInstructionLoader,
|
||||||
DepoBalanceLoader depoBalanceLoader,
|
DepoBalanceLoader depoBalanceLoader,
|
||||||
|
|
@ -49,7 +48,8 @@ public class RegisterUtilityRunner {
|
||||||
MoneyBalanceRegisterReportBuilder moneyBalanceRegisterReportBuilder,
|
MoneyBalanceRegisterReportBuilder moneyBalanceRegisterReportBuilder,
|
||||||
ExecutionRegisterReportBuilder executionRegisterReportBuilder,
|
ExecutionRegisterReportBuilder executionRegisterReportBuilder,
|
||||||
LiabilitiesRegistryReportBuilder liabilitiesRegistryReportBuilder,
|
LiabilitiesRegistryReportBuilder liabilitiesRegistryReportBuilder,
|
||||||
File outFolder) {
|
File outFolder,
|
||||||
|
AProperties properties) {
|
||||||
this.depoInstructionLoader = depoInstructionLoader;
|
this.depoInstructionLoader = depoInstructionLoader;
|
||||||
this.depoBalanceLoader = depoBalanceLoader;
|
this.depoBalanceLoader = depoBalanceLoader;
|
||||||
this.moneyInstructionLoader = moneyInstructionLoader;
|
this.moneyInstructionLoader = moneyInstructionLoader;
|
||||||
|
|
@ -65,7 +65,8 @@ public class RegisterUtilityRunner {
|
||||||
this.executionRegisterReportBuilder = executionRegisterReportBuilder;
|
this.executionRegisterReportBuilder = executionRegisterReportBuilder;
|
||||||
this.liabilitiesRegistryReportBuilder = liabilitiesRegistryReportBuilder;
|
this.liabilitiesRegistryReportBuilder = liabilitiesRegistryReportBuilder;
|
||||||
this.outFolder = outFolder;
|
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 {
|
public void process() throws InterruptedException {
|
||||||
|
|
@ -113,10 +114,16 @@ public class RegisterUtilityRunner {
|
||||||
moneyBalanceRegisterReportBuilder.buildReport(moneyBalances, outFolder);
|
moneyBalanceRegisterReportBuilder.buildReport(moneyBalances, outFolder);
|
||||||
liabilitiesRegistryReportBuilder.buildReport(registrys, outFolder);
|
liabilitiesRegistryReportBuilder.buildReport(registrys, outFolder);
|
||||||
|
|
||||||
Set<ExecutionCommon> executionCommons = new HashSet<>();
|
Collection<ExecutionCommon> executionCommons = new HashSet<>();
|
||||||
executionCommons.addAll(executionDeposits);
|
executionCommons.addAll(executionDeposits);
|
||||||
executionCommons.addAll(executionFonds);
|
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);
|
executionRegisterReportBuilder.buildReport(executionCommons, outFolder);
|
||||||
log.info("Все отчёты завершены.");
|
log.info("Все отчёты завершены.");
|
||||||
// todo возможно понадобится отсылать на SFTP ReportUtils.sendFilesToSftp
|
// todo возможно понадобится отсылать на SFTP ReportUtils.sendFilesToSftp
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ registry-service.db-clearing.username=clearing
|
||||||
registry-service.db-clearing.password=Aa111111
|
registry-service.db-clearing.password=Aa111111
|
||||||
|
|
||||||
registry-service.outFolder=/opt/mfd/clearing/reestr_out/
|
registry-service.outFolder=/opt/mfd/clearing/reestr_out/
|
||||||
|
registry-service.LCK=true
|
||||||
|
|
||||||
# use SFTP (not implemented):
|
# use SFTP (not implemented):
|
||||||
#registry-service.reports-store.local-temp-dir=./reports_out_temp
|
#registry-service.reports-store.local-temp-dir=./reports_out_temp
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue