From d5c929f2a4f0b9b3d9f3869e4a38520bfb4ad98e Mon Sep 17 00:00:00 2001 From: psemenkov Date: Fri, 12 May 2023 11:34:54 +0300 Subject: [PATCH] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-262=20?= =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20.sh,=20=D1=81?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D0=B0=D0=BB=D0=B3=D0=BE=D1=80?= =?UTF-8?q?=D0=B8=D1=82=D0=BC=D1=8B=20=D0=B2=D1=8B=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=B8=20=D1=82=D0=B5=D1=81=D1=82=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../services/AbstractExporterService.java | 41 ++++++++- .../services/MoneyExporterService.java | 46 +++++----- .../services/SecurityExporterService.java | 29 +++---- .../lim/exporter/AbstractServiceTest.java | 59 +++++++++++++ .../services/MoneyExporterServiceTest.java | 83 +++++++++++++++++++ .../services/SecurityExporterServiceTest.java | 70 ++++++++++++++++ .../platform/messaging/domain/Consts.java | 1 + .../cud/utilities/LimExportedRequest.java | 16 ++++ .../src/main/resources/distr/bin/kill_all.sh | 1 + .../main/resources/distr/bin/launch_all.sh | 1 + .../main/resources/distr/bin/lim-exporter.sh | 10 +++ 11 files changed, 312 insertions(+), 45 deletions(-) create mode 100644 clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/AbstractServiceTest.java create mode 100644 clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/MoneyExporterServiceTest.java create mode 100644 clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/SecurityExporterServiceTest.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/LimExportedRequest.java create mode 100644 z-distr/src/main/resources/distr/bin/lim-exporter.sh diff --git a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/AbstractExporterService.java b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/AbstractExporterService.java index 61cb29394..5384a6358 100644 --- a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/AbstractExporterService.java +++ b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/AbstractExporterService.java @@ -1,8 +1,17 @@ package ru.spcex.clearing.lim.exporter.services; +import org.apache.kafka.clients.producer.Producer; +import org.apache.kafka.clients.producer.ProducerRecord; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.util.StringUtils; +import ru.clearing.classes.statics.data.registry.Registry; +import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; +import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.lim.exporter.config.SFTPConfig; +import ru.spcex.clearing.platform.messaging.domain.cud.utilities.LimExportedRequest; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; import java.io.File; import java.io.IOException; @@ -11,17 +20,28 @@ import java.nio.file.Path; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Collection; +import java.util.List; + +import static ru.spcex.clearing.platform.messaging.domain.Consts.LIM_EXPORTED; public abstract class AbstractExporterService { private final Logger log = LoggerFactory.getLogger(getClass()); - private static final DateTimeFormatter dtFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); + protected final Imdg registryImdg; + private final List validStatus = List.of("ACTV", "ROPN"); + private final Imdg tradingClearingRegistryImdg; + private final DateTimeFormatter dtFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); private final SFTPConfig.LimGateway gateway; + private final Producer producer; - protected AbstractExporterService(SFTPConfig.LimGateway gateway) { + protected AbstractExporterService(SFTPConfig.LimGateway gateway, Producer producer, ImdgProvider imdgProvider) { this.gateway = gateway; + this.producer = producer; + this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); + this.tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); } public abstract Collection getLimFileRows(); + public abstract String getTargetFileName(); public void process() { @@ -34,15 +54,19 @@ public abstract class AbstractExporterService { Files.write(limFilePath, getLimFileRows()); gateway.sendToSftp(limFile); - log.debug("Successfully exported {} file", fileName); Files.deleteIfExists(limFilePath); } catch (IOException e) { log.error("Failed export {} file", fileName); throw new RuntimeException(e); } + log.debug("Successfully exported {} file", fileName); + + LimExportedRequest limExportedRequest = new LimExportedRequest(); + limExportedRequest.setLimFileName(fileName); + producer.send(new ProducerRecord<>(LIM_EXPORTED, limExportedRequest)); } - protected String prepareFileName(String target){ + protected String prepareFileName(String target) { StringBuilder result = new StringBuilder(); String dt = dtFormatter.format(LocalDateTime.now()); @@ -53,4 +77,13 @@ public abstract class AbstractExporterService { result.append(".lim"); return result.toString(); } + + protected boolean checkNotBloked(Registry registry) { + if (registry.getTradingClearingRegistryId() == null) return false; + TradingClearingRegistry tradingClearingRegistry = tradingClearingRegistryImdg.getSingleObjectByID(registry.getTradingClearingRegistryId()); + if (tradingClearingRegistry != null && StringUtils.hasText(tradingClearingRegistry.getStatus())) { + return validStatus.contains(tradingClearingRegistry.getStatus()); + } + return false; + } } diff --git a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/MoneyExporterService.java b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/MoneyExporterService.java index c66f61648..324feffe2 100644 --- a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/MoneyExporterService.java +++ b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/MoneyExporterService.java @@ -1,13 +1,11 @@ package ru.spcex.clearing.lim.exporter.services; +import org.apache.kafka.clients.producer.Producer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import ru.clearing.classes.statics.data.registry.Registry; -import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; -import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.lim.exporter.config.SFTPConfig; -import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import java.math.BigDecimal; @@ -21,14 +19,11 @@ import java.util.stream.Collectors; @Service public class MoneyExporterService extends AbstractExporterService { private final Logger log = LoggerFactory.getLogger(getClass()); - private final Imdg registryImdg; - private final List validStatus = List.of("ACTV", "ROPN"); - private final Imdg tradingClearingRegistryImdg; - public MoneyExporterService(SFTPConfig.LimGateway gateway, ImdgProvider imdgProvider) { - super(gateway); - this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); - this.tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); + public MoneyExporterService(SFTPConfig.LimGateway gateway, + Producer producer, + ImdgProvider imdgProvider) { + super(gateway, producer, imdgProvider); } @Override @@ -56,13 +51,13 @@ public class MoneyExporterService extends AbstractExporterService { Map> byTcrD = registriesD.stream() .collect(Collectors.groupingBy(Registry::getTradingClearingRegistry)); - for(Map.Entry> entryA : byTcrA.entrySet()){ + for (Map.Entry> entryA : byTcrA.entrySet()) { List registriesListA = entryA.getValue(); List registriesListB = byTcrD.get(entryA.getKey()); - for (Registry registry : registriesListA){ - if(checkNotBloked(registry)){ - //из ТЗ пока не понятно как соотнести Registry из registriesListA и registriesListB по валюте(RUB, USD) и вычислить остаток на денежном счете -// limFileRows.add(getRow(...)); + for (Registry registryA : registriesListA) { + if (checkNotBloked(registryA)) { + Registry registryD = findRegistryBySecurityId(registryA.getSecurityId(), registriesListB); + limFileRows.add(getRow(registryA, registryD)); } } } @@ -70,13 +65,7 @@ public class MoneyExporterService extends AbstractExporterService { return limFileRows; } - private boolean checkNotBloked(Registry registry){ - TradingClearingRegistry tradingClearingRegistry = tradingClearingRegistryImdg.getSingleObjectByID(registry.getTradingClearingRegistryId()); - return validStatus.contains(tradingClearingRegistry.getStatus()); - } - - //поменяется при обновлении ТЗ - private String getRow(Registry registryA, Registry registryB){ + public String getRow(Registry registryA, Registry registryD) { StringBuilder row = new StringBuilder(); row.append("MONEY: FIRM_ID = "); @@ -85,14 +74,14 @@ public class MoneyExporterService extends AbstractExporterService { row.append("; TAG = SPVB"); row.append("; CURR_CODE = "); -// MoneyMarketSecurity mms = moneyMarketSecurityMap.getSingleObjectByFieldValues(Map.of("securityId", )); + row.append(registryA.getSecuritySymbol()); row.append("; CLIENT_CODE = "); row.append(registryA.getTradingClearingRegistry()); row.append("; OPEN_BALANCE = "); BigDecimal balance = registryA.getBalance() != null ? - registryB.getBalance() != null ? registryA.getBalance().subtract(registryB.getBalance()) : registryA.getBalance() : + registryD != null && registryD.getBalance() != null ? registryA.getBalance().subtract(registryD.getBalance()) : registryA.getBalance() : BigDecimal.ZERO; row.append(balance); @@ -101,4 +90,13 @@ public class MoneyExporterService extends AbstractExporterService { row.append("; LIMIT_KIND = 0;"); return row.toString(); } + + private Registry findRegistryBySecurityId(Long securityId, List registries) { + for (Registry registry : registries) { + if (securityId.equals(registry.getSecurityId())) { + return registry; + } + } + return null; + } } diff --git a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/SecurityExporterService.java b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/SecurityExporterService.java index 206bbfb42..46bc2f382 100644 --- a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/SecurityExporterService.java +++ b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/SecurityExporterService.java @@ -1,12 +1,11 @@ package ru.spcex.clearing.lim.exporter.services; +import org.apache.kafka.clients.producer.Producer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import ru.clearing.classes.statics.data.registry.Registry; -import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.lim.exporter.config.SFTPConfig; -import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import java.time.LocalDate; @@ -19,11 +18,10 @@ import java.util.Map; public class SecurityExporterService extends AbstractExporterService { private final Logger log = LoggerFactory.getLogger(getClass()); - private final Imdg registryImdg; - - public SecurityExporterService(SFTPConfig.LimGateway gateway, ImdgProvider imdgProvider) { - super(gateway); - this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); + public SecurityExporterService(SFTPConfig.LimGateway gateway, + Producer producer, + ImdgProvider imdgProvider) { + super(gateway, producer, imdgProvider); } @@ -33,7 +31,7 @@ public class SecurityExporterService extends AbstractExporterService { } @Override - public Collection getLimFileRows(){ + public Collection getLimFileRows() { log.debug("Started loading and formation of DEPO file lines"); LocalDate currentDate = LocalDate.now(); List limFileRows = new ArrayList<>(); @@ -42,21 +40,23 @@ public class SecurityExporterService extends AbstractExporterService { "registryInstrumentType", "S", "registryCode", "T", "clearingDate", currentDate)); - for (Registry registry : registries){ - limFileRows.add(getRow(registry)); + for (Registry registry : registries) { + if (checkNotBloked(registry)) { + limFileRows.add(getRow(registry)); + } } log.debug("Successfully completed the formation of rows: {} for export DEPO", limFileRows.size()); return limFileRows; } - private String getRow(Registry registry){ + public String getRow(Registry registry) { StringBuilder row = new StringBuilder(); row.append("DEPO: FIRM_ID = "); row.append(registry.getTradingCode()); row.append("; SECCODE = "); - row.append(getSecurityShortName(registry)); + row.append(registry.getSecuritySymbol()); row.append("; CLIENT_CODE = "); row.append(registry.getTradingClearingRegistry()); @@ -73,9 +73,4 @@ public class SecurityExporterService extends AbstractExporterService { return row.toString(); } - - //скорее всего в новой редакции ТЗ не понадобится - private String getSecurityShortName(Registry registry){ - return null; - } } diff --git a/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/AbstractServiceTest.java b/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/AbstractServiceTest.java new file mode 100644 index 000000000..d216e40dd --- /dev/null +++ b/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/AbstractServiceTest.java @@ -0,0 +1,59 @@ +package ru.spcex.clearing.lim.exporter; + +import org.apache.kafka.clients.producer.MockProducer; +import org.apache.kafka.clients.producer.ProducerRecord; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import ru.clearing.classes.statics.data.registry.Registry; +import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.test.TestUtils; +import ru.spcex.clearing.test.config.ImdgTestConfig; +import ru.spcex.clearing.test.config.KafkaTestConfig; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.time.LocalDate; + +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; +import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID; +import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = { + ImdgTestConfig.class, + KafkaTestConfig.class}) +public abstract class AbstractServiceTest { + protected static final long id = currentID.getAndIncrement(); + protected Imdg registryImdg; + protected Imdg tradingClearingRegistryImdg; + protected LocalDate currentDate = LocalDate.now(); + protected String tcrA = "1324A234"; + protected String tcrD = "124324A234"; + protected Long securityIdFirst = 12L; + protected Long securityIdSecond = 23L; + + @Captor + protected ArgumentCaptor producerRecord; + @MockBean + protected MockProducer mockProducer; + @Autowired + @Qualifier("hazelcastServiceTest") + protected ImdgProvider imdgProvider; + + protected void init() { + waitAvailableImdgProviderAndAddAdminWithDefaultId(); + this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); + this.tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); + + TestUtils.FutureRecordMetadata future = spy(new TestUtils.FutureRecordMetadata()); + doReturn(future).when(mockProducer).send(producerRecord.capture()); + } +} diff --git a/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/MoneyExporterServiceTest.java b/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/MoneyExporterServiceTest.java new file mode 100644 index 000000000..4880ba280 --- /dev/null +++ b/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/MoneyExporterServiceTest.java @@ -0,0 +1,83 @@ +package ru.spcex.clearing.lim.exporter.services; + +import org.junit.jupiter.api.Test; +import ru.clearing.classes.statics.data.registry.Registry; +import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; +import ru.spcex.clearing.lim.exporter.AbstractServiceTest; + +import javax.annotation.PostConstruct; +import java.math.BigDecimal; +import java.util.Collection; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static ru.spcex.clearing.test.TestUtils.clearAllInImdg; + +class MoneyExporterServiceTest extends AbstractServiceTest { + @PostConstruct + public void init() { + super.init(); + } + + /** + * {@link MoneyExporterService#getLimFileRows()}
+ * Тест проверяет создание строк документа lim.
+ */ + @Test + void getLimFileRows() { + clearAllInImdg(tradingClearingRegistryImdg); + Registry registryA = getRegistryA(tcrA, securityIdFirst); + Registry registryD = getRegistryD(tcrA, securityIdFirst); + registryImdg.insert(registryA); + registryImdg.insert(registryD); + registryA = getRegistryA(tcrD, securityIdSecond); + registryD = getRegistryD(tcrD, securityIdSecond); + registryImdg.insert(registryA); + registryImdg.insert(registryD); + + MoneyExporterService moneyExporterService = new MoneyExporterService(null, mockProducer, imdgProvider); + Collection limFileRows = moneyExporterService.getLimFileRows(); + assertEquals(0, limFileRows.size()); + + TradingClearingRegistry tradingClearingRegistry = new TradingClearingRegistry(); + tradingClearingRegistry.setId(securityIdFirst); + tradingClearingRegistry.setStatus("ACTV"); + tradingClearingRegistryImdg.insert(tradingClearingRegistry); + tradingClearingRegistry.setId(securityIdSecond); + tradingClearingRegistryImdg.insert(tradingClearingRegistry); + + limFileRows = moneyExporterService.getLimFileRows(); + assertEquals(2, limFileRows.size()); + assertTrue(limFileRows.contains(moneyExporterService.getRow(registryA, registryD))); + } + + private Registry getRegistryA(String tradingClearingRegistry, Long securityId) { + Registry registry = new Registry(); + registry.setTradingCode("1A12323"); + registry.setBalance(new BigDecimal("10.00")); + registry.setTradingClearingRegistry(tradingClearingRegistry); + registry.setRegistryDesignation("A"); + registry.setRegistryInstrumentType("M"); + registry.setRegistryCode("F"); + registry.setClearingDate(currentDate); + registry.setSecuritySymbol("RUB"); + registry.setSecurityId(securityId); + registry.setTradingClearingRegistryId(securityId); + return registry; + } + + private Registry getRegistryD(String tradingClearingRegistry, Long securityId) { + Registry registry = new Registry(); + registry.setTradingCode("1A12323"); + registry.setBalance(new BigDecimal("5.00")); + registry.setTradingClearingRegistry(tradingClearingRegistry); + registry.setRegistryDesignation("D"); + registry.setRegistryInstrumentType("M"); + registry.setRegistryCode("T"); + registry.setClearingDate(currentDate); + registry.setSecuritySymbol("RUB"); + registry.setSecurityId(securityId); + registry.setTradingClearingRegistryId(securityId); + return registry; + } +} \ No newline at end of file diff --git a/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/SecurityExporterServiceTest.java b/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/SecurityExporterServiceTest.java new file mode 100644 index 000000000..e6b3b4730 --- /dev/null +++ b/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/SecurityExporterServiceTest.java @@ -0,0 +1,70 @@ +package ru.spcex.clearing.lim.exporter.services; + +import org.junit.jupiter.api.Test; +import ru.clearing.classes.statics.data.registry.Registry; +import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; +import ru.spcex.clearing.lim.exporter.AbstractServiceTest; + +import javax.annotation.PostConstruct; +import java.math.BigDecimal; +import java.util.Collection; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static ru.spcex.clearing.test.TestUtils.clearAllInImdg; + +class SecurityExporterServiceTest extends AbstractServiceTest { + @PostConstruct + public void init() { + super.init(); + } + + /** + * {@link SecurityExporterService#getLimFileRows()}
+ * Тест проверяет создание строк документа lim.
+ */ + @Test + void getLimFileRows() { + clearAllInImdg(tradingClearingRegistryImdg); + Registry registry1 = getRegistry(tcrA, securityIdFirst); + Registry registry2 = getRegistry(tcrA, securityIdFirst); + registryImdg.insert(registry1); + registryImdg.insert(registry2); + registry1 = getRegistry(tcrD, securityIdSecond); + registry2 = getRegistry(tcrD, securityIdSecond); + registryImdg.insert(registry1); + registryImdg.insert(registry2); + + SecurityExporterService securityExporterService = new SecurityExporterService(null, mockProducer, imdgProvider); + Collection limFileRows = securityExporterService.getLimFileRows(); + assertEquals(0, limFileRows.size()); + + TradingClearingRegistry tradingClearingRegistry = new TradingClearingRegistry(); + tradingClearingRegistry.setId(securityIdFirst); + tradingClearingRegistry.setStatus("ACTV"); + tradingClearingRegistryImdg.insert(tradingClearingRegistry); + tradingClearingRegistry.setId(securityIdSecond); + tradingClearingRegistryImdg.insert(tradingClearingRegistry); + + limFileRows = securityExporterService.getLimFileRows(); + assertEquals(4, limFileRows.size()); + assertTrue(limFileRows.contains(securityExporterService.getRow(registry1))); + assertTrue(limFileRows.contains(securityExporterService.getRow(registry2))); + + } + + private Registry getRegistry(String tradingClearingRegistry, Long securityId) { + Registry registry = new Registry(); + registry.setTradingCode("1A12323"); + registry.setBalance(new BigDecimal("10.00")); + registry.setTradingClearingRegistry(tradingClearingRegistry); + registry.setRegistryDesignation("A"); + registry.setRegistryInstrumentType("S"); + registry.setRegistryCode("T"); + registry.setClearingDate(currentDate); + registry.setSecuritySymbol("RUB"); + registry.setSecurityId(securityId); + registry.setTradingClearingRegistryId(securityId); + return registry; + } +} \ No newline at end of file diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index 05abd71ff..71c01b606 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -104,6 +104,7 @@ public interface Consts { String SDF11_PROCESS = "sdf11-process"; String EXPORT_PROCESS = "export-process"; String S_TRADES_IMPORTED = "s_trades-imported"; + String LIM_EXPORTED = "lim_exported"; String ACCOUNT_TERMINATION = "account-termination"; String BALANCE_ACCOUNT_NEW = "balance-account-new"; String BALANCE_ACCOUNT_UPDATE = "balance-account-update"; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/LimExportedRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/LimExportedRequest.java new file mode 100644 index 000000000..57a81505c --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/LimExportedRequest.java @@ -0,0 +1,16 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.utilities; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class LimExportedRequest { + @JsonProperty + private String limFileName; + + public String getLimFileName() { + return limFileName; + } + + public void setLimFileName(String limFileName) { + this.limFileName = limFileName; + } +} diff --git a/z-distr/src/main/resources/distr/bin/kill_all.sh b/z-distr/src/main/resources/distr/bin/kill_all.sh index f4da3e400..ee3ee0994 100644 --- a/z-distr/src/main/resources/distr/bin/kill_all.sh +++ b/z-distr/src/main/resources/distr/bin/kill_all.sh @@ -6,6 +6,7 @@ kill -9 $(ps -ef | grep java | grep balance-service.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep company-service.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep clearing-service.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep dbf-exporter.jar | awk '{print $2}') +kill -9 $(ps -ef | grep java | grep lim-exporter.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep dbf-importer.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep trade-importer.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep imdg.jar | awk '{print $2}') diff --git a/z-distr/src/main/resources/distr/bin/launch_all.sh b/z-distr/src/main/resources/distr/bin/launch_all.sh index 18e90c4b0..08b924be8 100644 --- a/z-distr/src/main/resources/distr/bin/launch_all.sh +++ b/z-distr/src/main/resources/distr/bin/launch_all.sh @@ -7,6 +7,7 @@ cd /opt/mfd/clearing/bin /opt/mfd/clearing/bin/company-service.sh /opt/mfd/clearing/bin/clearing-service.sh /opt/mfd/clearing/bin/dbf-exporter.sh +/opt/mfd/clearing/bin/lim-exporter.sh /opt/mfd/clearing/bin/dbf-importer.sh /opt/mfd/clearing/bin/trade-importer.sh /opt/mfd/clearing/bin/securities-service.sh diff --git a/z-distr/src/main/resources/distr/bin/lim-exporter.sh b/z-distr/src/main/resources/distr/bin/lim-exporter.sh new file mode 100644 index 000000000..656f44ce2 --- /dev/null +++ b/z-distr/src/main/resources/distr/bin/lim-exporter.sh @@ -0,0 +1,10 @@ + +#!/bin/bash + +CLEARING_HOME=/opt/mfd/clearing/ +cd $CLEARING_HOME/bin + +CMD="java -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7090 -jar lim-exporter.jar --spring.config.location=$CLEARING_HOME/settings/lim-exporter/" + +$CMD >/dev/null 2>&1 & +