registry-service http://jira.mfd.msk:8088/browse/CLS-638 LiabilitiesRegisterService теперь только в файл, backend-api meta после CLS-635 удалили лишнее - вернул
This commit is contained in:
parent
d4285494af
commit
24c203a83f
8 changed files with 333 additions and 82 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
"version": "3.9.0.72",
|
"version": "3.9.0.73",
|
||||||
|
|
||||||
"enums": {
|
"enums": {
|
||||||
|
|
||||||
|
|
@ -5492,6 +5492,17 @@
|
||||||
"fields": []
|
"fields": []
|
||||||
}
|
}
|
||||||
,
|
,
|
||||||
|
{"method":"post",
|
||||||
|
|
||||||
|
"destination": "LBSR",
|
||||||
|
|
||||||
|
"group": "Формирование реестров",
|
||||||
|
|
||||||
|
"name": "Формирование реестра учета обязательств",
|
||||||
|
|
||||||
|
"fields": []
|
||||||
|
}
|
||||||
|
,
|
||||||
{"method":"post",
|
{"method":"post",
|
||||||
|
|
||||||
"destination": "ECNR",
|
"destination": "ECNR",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!--?xml-stylesheet type="text/xsl" href="\..\corp-reports\src\data\meta\meta.server.xslt"?-->
|
<!--?xml-stylesheet type="text/xsl" href="\..\corp-reports\src\data\meta\meta.server.xslt"?-->
|
||||||
<meta version="3.9.0.72">
|
<meta version="3.9.0.73">
|
||||||
<!-- _xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" _xsi:noNamespaceSchemaLocation="file:///E:/d/projects/meta/from/meta.xsd" -->
|
<!-- _xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" _xsi:noNamespaceSchemaLocation="file:///E:/d/projects/meta/from/meta.xsd" -->
|
||||||
<!--Здесь словари-->
|
<!--Здесь словари-->
|
||||||
<enums>
|
<enums>
|
||||||
|
|
@ -1270,6 +1270,8 @@
|
||||||
</post>
|
</post>
|
||||||
<post destination="GORD" group="Формирование реестров" name="Формирование реестра распоряжений, направленных расчетному депозитарию">
|
<post destination="GORD" group="Формирование реестров" name="Формирование реестра распоряжений, направленных расчетному депозитарию">
|
||||||
</post>
|
</post>
|
||||||
|
<post destination="LBSR" group="Формирование реестров" name="Формирование реестра учета обязательств">
|
||||||
|
</post>
|
||||||
<post destination="ECNR" group="Формирование реестров" name="Формирование реестра сделок">
|
<post destination="ECNR" group="Формирование реестров" name="Формирование реестра сделок">
|
||||||
</post>
|
</post>
|
||||||
<post destination="GRET" group="Формирование отчетности" name="Формирование отчетности PFX64/PFX65">
|
<post destination="GRET" group="Формирование отчетности" name="Формирование отчетности PFX64/PFX65">
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
"version": "3.9.0.72",
|
"version": "3.9.0.73",
|
||||||
|
|
||||||
"enums": {
|
"enums": {
|
||||||
|
|
||||||
|
|
@ -5492,6 +5492,17 @@
|
||||||
"fields": []
|
"fields": []
|
||||||
}
|
}
|
||||||
,
|
,
|
||||||
|
{"method":"post",
|
||||||
|
|
||||||
|
"destination": "LBSR",
|
||||||
|
|
||||||
|
"group": "Формирование реестров",
|
||||||
|
|
||||||
|
"name": "Формирование реестра учета обязательств",
|
||||||
|
|
||||||
|
"fields": []
|
||||||
|
}
|
||||||
|
,
|
||||||
{"method":"post",
|
{"method":"post",
|
||||||
|
|
||||||
"destination": "ECNR",
|
"destination": "ECNR",
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,121 @@
|
||||||
|
package ru.spcex.clearing.registry.reports.bean;
|
||||||
|
|
||||||
|
import com.opencsv.bean.CsvBindByName;
|
||||||
|
import com.opencsv.bean.CsvBindByPosition;
|
||||||
|
import com.opencsv.bean.CsvDate;
|
||||||
|
import com.opencsv.bean.CsvNumber;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
public class LiabilitiesRegistryReport implements FileReport {
|
||||||
|
@CsvBindByName(column = "клиринговый код")
|
||||||
|
@CsvBindByPosition(position = 0)
|
||||||
|
private String clearing_code;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "счет")
|
||||||
|
@CsvBindByPosition(position = 1)
|
||||||
|
private String account;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "код регистра")
|
||||||
|
@CsvBindByPosition(position = 2)
|
||||||
|
private String registry_code;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "статус")
|
||||||
|
@CsvBindByPosition(position = 3)
|
||||||
|
private String registry_status;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "инструмент валюта")
|
||||||
|
@CsvBindByPosition(position = 4)
|
||||||
|
private String security_symbol;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "баланс")
|
||||||
|
@CsvBindByPosition(position = 5)
|
||||||
|
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||||
|
private BigDecimal balance;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "дата расчета")
|
||||||
|
@CsvBindByPosition(position = 6)
|
||||||
|
@CsvDate(value = "dd.MM.yyyy")
|
||||||
|
private LocalDate settlement_date;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "продукт")
|
||||||
|
@CsvBindByPosition(position = 7)
|
||||||
|
private String contract;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "тип сессии")
|
||||||
|
@CsvBindByPosition(position = 8)
|
||||||
|
private String session_type;
|
||||||
|
|
||||||
|
public String getClearing_code() {
|
||||||
|
return clearing_code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClearing_code(String clearing_code) {
|
||||||
|
this.clearing_code = clearing_code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAccount() {
|
||||||
|
return account;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAccount(String account) {
|
||||||
|
this.account = account;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRegistry_code() {
|
||||||
|
return registry_code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegistry_code(String registry_code) {
|
||||||
|
this.registry_code = registry_code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRegistry_status() {
|
||||||
|
return registry_status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegistry_status(String registry_status) {
|
||||||
|
this.registry_status = registry_status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSecurity_symbol() {
|
||||||
|
return security_symbol;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSecurity_symbol(String security_symbol) {
|
||||||
|
this.security_symbol = security_symbol;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getBalance() {
|
||||||
|
return balance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBalance(BigDecimal balance) {
|
||||||
|
this.balance = balance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDate getSettlement_date() {
|
||||||
|
return settlement_date;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSettlement_date(LocalDate settlement_date) {
|
||||||
|
this.settlement_date = settlement_date;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getContract() {
|
||||||
|
return contract;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setContract(String contract) {
|
||||||
|
this.contract = contract;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSession_type() {
|
||||||
|
return session_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSession_type(String session_type) {
|
||||||
|
this.session_type = session_type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,74 @@
|
||||||
|
package ru.spcex.clearing.registry.reports.builders;
|
||||||
|
|
||||||
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
|
import ru.clearing.platform.dictionary.RegistryStatusDictionary;
|
||||||
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
import ru.spcex.clearing.registry.reports.bean.LiabilitiesRegistryReport;
|
||||||
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class LiabilitiesRegistryReportBuilder extends XLSXReportBuilder<LiabilitiesRegistryReport, Registry> {
|
||||||
|
|
||||||
|
private final Imdg<RegistryStatusDictionary> registryStatusDictionaryImdg;
|
||||||
|
|
||||||
|
public LiabilitiesRegistryReportBuilder(ImdgProvider imdgProvider) {
|
||||||
|
registryStatusDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_RegistryStatusDictionary, RegistryStatusDictionary.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String reportName() {
|
||||||
|
return "registry";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Class<LiabilitiesRegistryReport> getReportClass() {
|
||||||
|
return LiabilitiesRegistryReport.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected LiabilitiesRegistryReport toRow(Registry input) {
|
||||||
|
LiabilitiesRegistryReport entity = new LiabilitiesRegistryReport();
|
||||||
|
|
||||||
|
entity.setClearing_code(input.getClearingCode());
|
||||||
|
entity.setAccount(input.getAccount());
|
||||||
|
entity.setRegistry_code(input.getRegistryCode());
|
||||||
|
entity.setRegistry_status(describeRegistryStatus(input.getRegistryStatus())); // CLRD
|
||||||
|
entity.setSecurity_symbol(input.getSecuritySymbol());
|
||||||
|
entity.setBalance(input.getBalance());
|
||||||
|
entity.setSettlement_date(input.getSettlementDate());
|
||||||
|
entity.setContract(input.getContract());
|
||||||
|
entity.setSession_type(input.getSessionType());
|
||||||
|
|
||||||
|
return entity;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param registryStatus 'CLRD', ...
|
||||||
|
* @return из справочника
|
||||||
|
*/
|
||||||
|
private String describeRegistryStatus(String registryStatus) {
|
||||||
|
if (registryStatus == null)
|
||||||
|
return registryStatus;
|
||||||
|
RegistryStatusDictionary dictionary = registryStatusDictionaryImdg.getFirstObjectByFieldValues(Map.of(
|
||||||
|
"code", registryStatus
|
||||||
|
));
|
||||||
|
if (dictionary == null) {
|
||||||
|
log.warn("Dictionary not found for status=\"{}\"", dictionary);
|
||||||
|
return registryStatus;
|
||||||
|
}
|
||||||
|
return dictionary.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Collection<Registry> sortInput(Collection<Registry> input) {
|
||||||
|
return input.stream()
|
||||||
|
.sorted(Comparator.comparing(Registry::getCreated))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -70,6 +70,7 @@ public abstract class XLSXReportBuilder<R extends FileReport, I extends SpcexObj
|
||||||
rows = sortOutput(rows).stream().toList();
|
rows = sortOutput(rows).stream().toList();
|
||||||
|
|
||||||
File reportFile = new File(outFolder, normalizeFilenameForOS(getReportFilename() + ".xlsx"));
|
File reportFile = new File(outFolder, normalizeFilenameForOS(getReportFilename() + ".xlsx"));
|
||||||
|
log.debug("Создание отчёта {} в файл \"{}\"", reportName(), reportFile.getPath());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Constructor<? extends R> constructor = Objects.requireNonNull(getReportClass()).getDeclaredConstructor();
|
Constructor<? extends R> constructor = Objects.requireNonNull(getReportClass()).getDeclaredConstructor();
|
||||||
|
|
@ -166,6 +167,7 @@ public abstract class XLSXReportBuilder<R extends FileReport, I extends SpcexObj
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.trace("Отчёт {} создан.", reportName());
|
||||||
return reportFile;
|
return reportFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||||
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
|
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
|
||||||
|
|
@ -20,17 +21,26 @@ import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.registry.LiabilitiesRegisterNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.registry.LiabilitiesRegisterNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||||
|
import ru.spcex.clearing.registry.config.SFTPReportsConfig;
|
||||||
|
import ru.spcex.clearing.registry.config.settings.RegistryServiceSettings;
|
||||||
|
import ru.spcex.clearing.registry.reports.ReportUtils;
|
||||||
|
import ru.spcex.clearing.registry.reports.builders.LiabilitiesRegistryReportBuilder;
|
||||||
import ru.spcex.clearing.registry.util.PreClearMap;
|
import ru.spcex.clearing.registry.util.PreClearMap;
|
||||||
import ru.spcex.platform.enumeration.*;
|
import ru.spcex.platform.enumeration.*;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||||
import ru.spcex.platform.imdg.api.predicate.specific.SecuritySelector;
|
import ru.spcex.platform.imdg.api.predicate.specific.SecuritySelector;
|
||||||
import ru.spcex.platform.utils.time.TimeUtil;
|
import ru.spcex.platform.utils.time.TimeUtil;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
@ -48,12 +58,20 @@ public class LiabilitiesRegisterService extends QueueConsumer implements Initial
|
||||||
private final SecuritySelector<Security> securitySelector;
|
private final SecuritySelector<Security> securitySelector;
|
||||||
private final Function<Map<String, ?>, IValidator> fieldValuesValidator;
|
private final Function<Map<String, ?>, IValidator> fieldValuesValidator;
|
||||||
private final PreClearMap<LiabilitiesRegister> preClearMap;
|
private final PreClearMap<LiabilitiesRegister> preClearMap;
|
||||||
|
private final LiabilitiesRegistryReportBuilder reportBuilder;
|
||||||
|
private final File outFolder;
|
||||||
|
private final RegistryServiceSettings settings;
|
||||||
|
private final SFTPReportsConfig.ReportsGateway reportsSftpGateway;
|
||||||
|
private final boolean deleteAfterSend;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public LiabilitiesRegisterService(Consumer<String, Object> kafkaQueue,
|
public LiabilitiesRegisterService(Consumer<String, Object> kafkaQueue,
|
||||||
Producer<String, Object> kafkaProducer,
|
Producer<String, Object> kafkaProducer,
|
||||||
ImdgProvider imdgProvider,
|
ImdgProvider imdgProvider,
|
||||||
Function<Map<String, ?>, IValidator> fieldValuesValidator) {
|
Function<Map<String, ?>, IValidator> fieldValuesValidator,
|
||||||
|
@Qualifier("reportOutDir") File outFolder,
|
||||||
|
RegistryServiceSettings settings,
|
||||||
|
SFTPReportsConfig.ReportsGateway reportsSftpGateway) {
|
||||||
super(kafkaQueue, kafkaProducer);
|
super(kafkaQueue, kafkaProducer);
|
||||||
this.liabilitiesRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesRegister, LiabilitiesRegister.class);
|
this.liabilitiesRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesRegister, LiabilitiesRegister.class);
|
||||||
this.registryMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
this.registryMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||||
|
|
@ -62,6 +80,11 @@ public class LiabilitiesRegisterService extends QueueConsumer implements Initial
|
||||||
this.securitySelector = new SecuritySelector<>(imdgProvider, Security.class);
|
this.securitySelector = new SecuritySelector<>(imdgProvider, Security.class);
|
||||||
this.fieldValuesValidator = fieldValuesValidator;
|
this.fieldValuesValidator = fieldValuesValidator;
|
||||||
preClearMap = PreClearMap.instanceForInstantField(liabilitiesRegisterMap, "created");
|
preClearMap = PreClearMap.instanceForInstantField(liabilitiesRegisterMap, "created");
|
||||||
|
reportBuilder = new LiabilitiesRegistryReportBuilder(imdgProvider);
|
||||||
|
this.outFolder = outFolder;
|
||||||
|
this.settings = settings;
|
||||||
|
this.reportsSftpGateway = reportsSftpGateway;
|
||||||
|
this.deleteAfterSend = settings.getReportsStore().isDeleteAfterSend();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -77,90 +100,97 @@ public class LiabilitiesRegisterService extends QueueConsumer implements Initial
|
||||||
|
|
||||||
|
|
||||||
public void liabilitiesRegisterNew(BaseRequest<?> userRequest) {
|
public void liabilitiesRegisterNew(BaseRequest<?> userRequest) {
|
||||||
log.debug("LiabilitiesRegisterNewRequest received from {}", Consts.REGISTRY_LIABILITIES_REGISTER_NEW);
|
log.debug("LiabilitiesRegisterNewRequest received from {}", createRegistry_LBSR.topic());
|
||||||
String sqlConditionForRegistry = getSqlForRegistries();
|
boolean csvMode = settings.isCsvMode();
|
||||||
Collection<Registry> registries = registryMap.getCollectionObjectsBySQL(sqlConditionForRegistry);
|
|
||||||
log.debug("Found {} Registry by query {}", registries.size(), sqlConditionForRegistry);
|
ImdgPredicate conditionForRegistry = getPredicateForRegistries();
|
||||||
preClearMap.preClearMap();
|
Collection<Registry> registries = registryMap.getCollectionObjectsByPredicate(conditionForRegistry);
|
||||||
registries.forEach((registry -> {
|
log.debug("Found {} Registry by query {}", registries.size(), conditionForRegistry);
|
||||||
if (isDuplicateInMap(registry).isEmpty()) {
|
if (!csvMode)
|
||||||
insertLiabilitiesRegister(registry);
|
preClearMap.preClearMap();
|
||||||
}
|
// registries.forEach((registry -> {
|
||||||
|
// if (isDuplicateInMap(registry).isEmpty()) {
|
||||||
|
// if (!csvMode || LocalDate.now().equals(registry.getTradingDate()))
|
||||||
|
// insertLiabilitiesRegister(registry);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// ));
|
||||||
|
if (csvMode) {
|
||||||
|
File reportFile = reportBuilder.buildReport(registries, outFolder);
|
||||||
|
ReportUtils.sendFilesToSftp(List.of(reportFile), reportsSftpGateway, deleteAfterSend);
|
||||||
}
|
}
|
||||||
));
|
|
||||||
log.debug("successfully processed");
|
log.debug("successfully processed");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void insertLiabilitiesRegister(Registry registry) {
|
// private void insertLiabilitiesRegister(Registry registry) {
|
||||||
log.trace("Started generating LiabilitiesRegister entity...");
|
// log.trace("Started generating LiabilitiesRegister entity...");
|
||||||
LiabilitiesRegister liabilitiesRegister = new LiabilitiesRegister();
|
// LiabilitiesRegister liabilitiesRegister = new LiabilitiesRegister();
|
||||||
Session session = sessionMap.getSingleObjectByID(registry.getSessionId());
|
// Session session = sessionMap.getSingleObjectByID(registry.getSessionId());
|
||||||
CompanySymbols companySymbols = companySymbolsMap.getFirstObjectByFieldValues(
|
// CompanySymbols companySymbols = companySymbolsMap.getFirstObjectByFieldValues(
|
||||||
Map.of("companyId", registry.getCompanyId(),
|
// Map.of("companyId", registry.getCompanyId(),
|
||||||
"companySymbol", CompanySymbol.INN.getKey()
|
// "companySymbol", CompanySymbol.INN.getKey()
|
||||||
)
|
// )
|
||||||
);
|
// );
|
||||||
Security security = securitySelector.selectSecurityById(registry.getSecurityId());
|
// Security security = securitySelector.selectSecurityById(registry.getSecurityId());
|
||||||
if (session == null) {
|
// if (session == null) {
|
||||||
log.warn("Session is empty!");
|
// log.warn("Session is empty!");
|
||||||
} else {
|
// } else {
|
||||||
liabilitiesRegister.setValidFromDate(session.getClearingDate());
|
// liabilitiesRegister.setValidFromDate(session.getClearingDate());
|
||||||
liabilitiesRegister.setValidToDate(TimeUtil.toLocalDate(session.getUpdated()));
|
// liabilitiesRegister.setValidToDate(TimeUtil.toLocalDate(session.getUpdated()));
|
||||||
}
|
// }
|
||||||
if (companySymbols == null) {
|
// if (companySymbols == null) {
|
||||||
log.warn("CompanySymbols not found, for companyId={}", registry.getCompanyId());
|
// log.warn("CompanySymbols not found, for companyId={}", registry.getCompanyId());
|
||||||
} else {
|
// } else {
|
||||||
liabilitiesRegister.setInn(companySymbols.getCompanySymbolValue());
|
// liabilitiesRegister.setInn(companySymbols.getCompanySymbolValue());
|
||||||
}
|
// }
|
||||||
if (security == null) {
|
// if (security == null) {
|
||||||
log.warn("Security id={} not found for registry id={}", registry.getSecurityId(), registry.getId());
|
// log.warn("Security id={} not found for registry id={}", registry.getSecurityId(), registry.getId());
|
||||||
} else {
|
// } else {
|
||||||
if (InstrumentType.RATE.equalsByKey(security.getInstrumentType())) {
|
// if (InstrumentType.RATE.equalsByKey(security.getInstrumentType())) {
|
||||||
liabilitiesRegister.setCurrency(((MoneyMarketSecurity) security).getNominalCurrency());
|
// liabilitiesRegister.setCurrency(((MoneyMarketSecurity) security).getNominalCurrency());
|
||||||
} else if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) {
|
// } else if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) {
|
||||||
liabilitiesRegister.setCurrency(((FixedIncomeSecurity) security).getNominalCurrency());
|
// liabilitiesRegister.setCurrency(((FixedIncomeSecurity) security).getNominalCurrency());
|
||||||
} else if (InstrumentType.EQTY.equalsByKey(security.getInstrumentType())) {
|
// } else if (InstrumentType.EQTY.equalsByKey(security.getInstrumentType())) {
|
||||||
// не заполняется Currency
|
// // не заполняется Currency
|
||||||
} else { // never
|
// } else { // never
|
||||||
log.warn("Unexpected security[{}] type {}", security.getId(), security.getInstrumentType());
|
// log.warn("Unexpected security[{}] type {}", security.getId(), security.getInstrumentType());
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
liabilitiesRegister.setSessionId(registry.getSessionId());
|
// liabilitiesRegister.setSessionId(registry.getSessionId());
|
||||||
liabilitiesRegister.setValidFromDate(session.getClearingDate());
|
// liabilitiesRegister.setValidFromDate(session.getClearingDate());
|
||||||
LocalDate validToDate = TimeUtil.toLocalDate(session.getUpdated());
|
// LocalDate validToDate = TimeUtil.toLocalDate(session.getUpdated());
|
||||||
liabilitiesRegister.setValidToDate(validToDate);
|
// liabilitiesRegister.setValidToDate(validToDate);
|
||||||
liabilitiesRegister.setCompanyId(registry.getCompanyId());
|
// liabilitiesRegister.setCompanyId(registry.getCompanyId());
|
||||||
liabilitiesRegister.setCompanyFullName(registry.getFullName());
|
// liabilitiesRegister.setCompanyFullName(registry.getFullName());
|
||||||
liabilitiesRegister.setRegistryCode(registry.getRegistryCode());
|
// liabilitiesRegister.setRegistryCode(registry.getRegistryCode());
|
||||||
liabilitiesRegister.setAccount(registry.getAccount());
|
// liabilitiesRegister.setAccount(registry.getAccount());
|
||||||
liabilitiesRegister.setRegistryStatus(registry.getRegistryStatus());
|
// liabilitiesRegister.setRegistryStatus(registry.getRegistryStatus());
|
||||||
liabilitiesRegister.setSumLiabilities(registry.getBalance());
|
// liabilitiesRegister.setSumLiabilities(registry.getBalance());
|
||||||
liabilitiesRegister.setSettlementDate(registry.getSettlementDate());
|
// liabilitiesRegister.setSettlementDate(registry.getSettlementDate());
|
||||||
liabilitiesRegister.setCreated(Instant.now());
|
// liabilitiesRegister.setCreated(Instant.now());
|
||||||
liabilitiesRegister.setUpdated(liabilitiesRegister.getCreated());
|
// liabilitiesRegister.setUpdated(liabilitiesRegister.getCreated());
|
||||||
liabilitiesRegisterMap.insert(liabilitiesRegister);
|
// liabilitiesRegisterMap.insert(liabilitiesRegister);
|
||||||
log.debug("inserted successfully LiabilitiesRegister entity with id: {}", liabilitiesRegister.getId());
|
// log.debug("inserted successfully LiabilitiesRegister entity with id: {}", liabilitiesRegister.getId());
|
||||||
}
|
// }
|
||||||
|
|
||||||
protected String getSqlForRegistries() {
|
protected ImdgPredicate getPredicateForRegistries() {
|
||||||
return String.format("registryDesignation = '%s' and " +
|
ImdgPredicateBuilder pb = registryMap.predicateBuilder();
|
||||||
"registryInstrumentType in ('%s','%s') and " +
|
return pb.and(
|
||||||
"registryUnit = '%s'",
|
RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.OM_T, RegistryTradingParams.OS_T).buildPredicate(pb),
|
||||||
RegistryDesignation.L.getKey(),
|
pb.equals("registryStatus", RegistryStatus.CLRD.getKey()),
|
||||||
RegistryInstrumentType.S.getKey(),
|
pb.equals("settlementDate", LocalDate.now())
|
||||||
RegistryInstrumentType.M.getKey(),
|
);
|
||||||
RegistryUnit.T.getKey());
|
// return String.format("registryDesignation = '%s' and " +
|
||||||
|
// "registryInstrumentType in ('%s','%s') and " +
|
||||||
|
// "registryUnit = '%s'",
|
||||||
|
// RegistryDesignation.L.getKey(),
|
||||||
|
// RegistryInstrumentType.S.getKey(),
|
||||||
|
// RegistryInstrumentType.M.getKey(),
|
||||||
|
// RegistryUnit.T.getKey());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<LiabilitiesRegister> isDuplicateInMap(Registry entity) {
|
public Optional<LiabilitiesRegister> isDuplicateInMap(Registry entity) {
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
// Map<String, ? extends Comparable<?>> fieldValues = Map.of("companyId", entity.getCompanyId(), "sessionId", entity.getSessionId());
|
|
||||||
// Optional<EnumMessage> message = fieldValuesValidator.apply(fieldValues).tillFirstError();
|
|
||||||
// if (message.isPresent()) {
|
|
||||||
// log.warn("Illegal value in map for request to imdg: {}", message.get());
|
|
||||||
// throw new IllegalArgumentException(MessageFormat.format("Illegal value in request to imdg: {0}", message.get()));
|
|
||||||
// }
|
|
||||||
// return Optional.ofNullable(liabilitiesRegisterMap.getFirstObjectByFieldValues(fieldValues));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -40,9 +40,9 @@ public enum Task implements IEnumKey {
|
||||||
createRegistry_GCMR("GCMR"), // Формирование реестра участников клиринга
|
createRegistry_GCMR("GCMR"), // Формирование реестра участников клиринга
|
||||||
createRegistry_GSRR("GSRR"), // Формирование реестра отправленных отчетов
|
createRegistry_GSRR("GSRR"), // Формирование реестра отправленных отчетов
|
||||||
createRegistry_GACA("GACA"), // Создание файла остатков CSV по клиринговым счетам
|
createRegistry_GACA("GACA"), // Создание файла остатков CSV по клиринговым счетам
|
||||||
createRegistry_ADLR("ADLR"), // формирование admittedLiabilitiesRegister
|
@Deprecated createRegistry_ADLR("ADLR"), // формирование admittedLiabilitiesRegister
|
||||||
createRegistry_CDLR("CDLR"), // формирование coveredLiabilitiesRegister
|
@Deprecated createRegistry_CDLR("CDLR"), // формирование coveredLiabilitiesRegister
|
||||||
createRegistry_EXLR("EXLR"), // формирование excludeLiabilitiesRegister
|
@Deprecated createRegistry_EXLR("EXLR"), // формирование excludeLiabilitiesRegister
|
||||||
createRegistry_LBSR("LBSR"), // формирование liabilitiesRegister
|
createRegistry_LBSR("LBSR"), // формирование liabilitiesRegister
|
||||||
createRegistry_ECNR("ECNR"), // формирование executionRegister
|
createRegistry_ECNR("ECNR"), // формирование executionRegister
|
||||||
createRegistry_STRS("STRS"), // Начало торговой сессии
|
createRegistry_STRS("STRS"), // Начало торговой сессии
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue