diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3987aaa0b..43be7a066 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -26,6 +26,7 @@ preflight:
only:
- dev
- /^dev_.*$/
+ - new
resource_group: clearing-test
build:
@@ -41,6 +42,7 @@ build:
only:
- dev
- /^dev_.*$/
+ - new
resource_group: clearing-test
test:
@@ -52,7 +54,7 @@ test:
script:
- echo "Installing maven and python" && apk update && apk add maven python3
- echo "Copying jar files to clearing-all/bin" && cp -r /builds/mfd/clearing/z-distr/target/clearing/bin ./clr_test/clearing-all/bin
- - echo "Copying DDL.sql to db directory" && cp /builds/mfd/clearing/z-distr/target/clearing/db/DDL.sql ./db
+ - echo "Copying DDL.sql to db directory" && cp /builds/mfd/clearing/z-distr/target/clearing/db/DDL.sql ./clr_test/db/
- python3 clr_test/run_test_docker_containers.py
artifacts:
expire_in: 1 day
@@ -62,4 +64,5 @@ test:
only:
- dev
- /^dev_.*$/
+ - new
resource_group: clearing-test
\ No newline at end of file
diff --git a/clearing-parent/account-service/pom.xml b/clearing-parent/account-service/pom.xml
index 89a8dd67e..9acfdeb0c 100644
--- a/clearing-parent/account-service/pom.xml
+++ b/clearing-parent/account-service/pom.xml
@@ -5,7 +5,7 @@
clearing-parent
ru.spcex.clearing
- SPCEX-3.14.106
+ SPCEX-3.15.209
4.0.0
diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/settings/AccountServiceSettings.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/settings/AccountServiceSettings.java
index 1848ace41..ff1cde091 100644
--- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/settings/AccountServiceSettings.java
+++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/settings/AccountServiceSettings.java
@@ -3,6 +3,7 @@ package ru.spcex.clearing.account.config.settings;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
+import ru.spcex.clearing.account.config.settings.elem.AppSettings;
import ru.spcex.clearing.platform.messaging.config.element.KafkaConsumerSettings;
import ru.spcex.clearing.platform.messaging.config.element.KafkaProducerSettings;
import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams;
@@ -14,6 +15,7 @@ public class AccountServiceSettings {
private HazelcastClientParams hazelcast;
private KafkaConsumerSettings kafkaConsumer;
private KafkaProducerSettings kafkaProducer;
+ private AppSettings app;
public HazelcastClientParams getHazelcast() {
return hazelcast;
@@ -38,4 +40,12 @@ public class AccountServiceSettings {
public void setKafkaProducer(KafkaProducerSettings kafkaProducer) {
this.kafkaProducer = kafkaProducer;
}
+
+ public AppSettings getApp() {
+ return app;
+ }
+
+ public void setApp(AppSettings app) {
+ this.app = app;
+ }
}
diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/settings/elem/AppSettings.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/settings/elem/AppSettings.java
new file mode 100644
index 000000000..399cba941
--- /dev/null
+++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/settings/elem/AppSettings.java
@@ -0,0 +1,13 @@
+package ru.spcex.clearing.account.config.settings.elem;
+
+public class AppSettings {
+ private String registryUnit = "T";
+
+ public String getRegistryUnit() {
+ return registryUnit;
+ }
+
+ public void setRegistryUnit(String registryUnit) {
+ this.registryUnit = registryUnit;
+ }
+}
diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java
index 669159287..5bf66bbee 100644
--- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java
+++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java
@@ -4,6 +4,7 @@ import java.time.Instant;
import java.util.Collection;
import java.util.Map;
import java.util.function.Function;
+import org.apache.commons.lang3.StringUtils;
import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.producer.Producer;
import org.slf4j.Logger;
@@ -42,6 +43,8 @@ import ru.spcex.platform.enumeration.WorkflowStatus;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.ImdgTransaction;
+import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
+import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import ru.spcex.platform.imdg.validation.Stored;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.enumeration.IMessageResolver;
@@ -145,9 +148,29 @@ public class AccountService extends QueueConsumer implements InitializingBean {
account.setCompanyId(req.getCompanyId());
account.setAccount(req.getAccount());
if (AccountType.Info.equalsByKey(req.getAccountType())) {
- Long infoSequenceId = informationAccountService.accountNextId(currencyCode, currencyCodeId);
+ Account anltAccount;
+ {
+ ImdgPredicateBuilder pb = accountMap.predicateBuilder();
+ ImdgPredicate andPredicate = pb.and(
+ pb.equals("accountType", AccountType.Anlt.getKey()),
+ pb.equals("currency", currency.getCurrencyCode())
+ );
+ Collection accountsAnlt = accountMap.getCollectionObjectsByPredicate(andPredicate);
+ if (accountsAnlt.isEmpty()) {
+ log.warn("Account with {} not exist.", andPredicate);
+ } else if (accountsAnlt.size() > 1) {
+ log.warn("Account for companyId 1 and accountType=ANLT contains multiply elements, use first");
+ }
+ anltAccount = accountsAnlt.iterator().next();
+ }
- String accountValue = informationAccountService.generateInfoAccount(currencyCodeId, infoSequenceId);
+ String specialAnltAccId = "7000";
+ if (anltAccount != null && StringUtils.isNotEmpty(anltAccount.getAccount()) && anltAccount.getAccount().length() >= 4) {
+ specialAnltAccId = anltAccount.getAccount().substring(anltAccount.getAccount().length() - 4);
+ }
+
+ Long infoSequenceId = informationAccountService.accountNextId(currencyCode, currencyCodeId);
+ String accountValue = informationAccountService.generateInfoAccount(currencyCodeId, infoSequenceId, specialAnltAccId);
log.trace("New info-account SequenceId={} account={}", infoSequenceId, accountValue);
account.setAccount(accountValue);
}
diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java
index e92187e32..f95716e4a 100644
--- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java
+++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java
@@ -793,7 +793,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin
}
if (returnTrigger) {
log.debug("Remove from waiting list accountId={} (list groupId={})", accountId, inWaitingLst.getGroupId());
- waitingList.remove(inWaitingLst);
+ waitingList.remove(accountId);
}
if (returnTrigger)
return inWaitingLst;
diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/InformationAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/InformationAccountService.java
index 1a98c6b2c..518ddb1cf 100644
--- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/InformationAccountService.java
+++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/InformationAccountService.java
@@ -119,9 +119,6 @@ public class InformationAccountService extends QueueConsumer implements Initiali
String currency = req.getCurrency() == null ? CurrencyCode.RUB.getKey() : req.getCurrency(); //userRequest.getRequestPayload().getCurrency();
Long newId = informationAccountImdg.nextIDSequenceFor();
- Long infoSequenceId = accountNextId(currency, 810L);
- String accountValue = generateInfoAccount(810L, infoSequenceId);
- log.trace("New info-account id={}, sequenceId={}, account={}", newId, infoSequenceId, accountValue);
ImdgPredicateBuilder accountPredicateBuilder = accountImdg.predicateBuilder();
ImdgPredicate companyIdPredicate = accountPredicateBuilder.equals("companyId", 1L);
@@ -215,15 +212,11 @@ public class InformationAccountService extends QueueConsumer implements Initiali
String currency = userRequest.getRequestPayload().getCurrency();
if (currency == null)
currency = CurrencyCode.RUB.getKey();
- Long newId = informationAccountImdg.nextIDSequenceFor();
- Long infoSequenceId = accountNextId(currency, 810L); // требуется последовательность n+1
- String accountValue = generateInfoAccount(810L, infoSequenceId);
- log.trace("New info-account id={}, sequenceId={}, account={}", newId, infoSequenceId, accountValue);
Long anltAccountId = null;
+ Account anltAccount;
{
ImdgPredicate andPredicate = pb.and(
- pb.equals("companyId", 1L),
pb.equals("accountType", AccountType.Anlt.getKey()),
pb.equals("currency", currency)
);
@@ -234,10 +227,20 @@ public class InformationAccountService extends QueueConsumer implements Initiali
} else if (accountsAnlt.size() > 1) {
log.warn("Account for companyId 1 and accountType=ANLT contains multiply elements, use first");
}
- Account anltAccount = accountsAnlt.iterator().next();
+ anltAccount = accountsAnlt.iterator().next();
anltAccountId = anltAccount.getId();
}
+
+ String specialAnltAccId = "7000";
+ if (anltAccount != null && StringUtils.isNotEmpty(anltAccount.getAccount()) && anltAccount.getAccount().length() >= 4) {
+ specialAnltAccId = anltAccount.getAccount().substring(anltAccount.getAccount().length() - 4);
+ }
+ Long newId = informationAccountImdg.nextIDSequenceFor();
+ Long infoSequenceId = accountNextId(currency, 810L); // требуется последовательность n+1
+ String accountValue = generateInfoAccount(810L, infoSequenceId, specialAnltAccId);
+ log.trace("New info-account id={}, sequenceId={}, account={}", newId, infoSequenceId, accountValue);
+
Instant now = Instant.now();
Account account = new Account();
account.setAccount(accountValue);
@@ -301,8 +304,8 @@ public class InformationAccountService extends QueueConsumer implements Initiali
kafkaSender.sendRequestToQueue(Consts.CREATE_NOTIFICATION_NCMP, request);
}
- public String generateInfoAccount(Long currencyCodeId, Long id) {
- return "%d%03d%08d%d".formatted(39911, currencyCodeId, id, 7000);
+ public String generateInfoAccount(Long currencyCodeId, Long id, String specialAnltAccId) {
+ return "%d%03d%08d%s".formatted(39911, currencyCodeId, id, specialAnltAccId);
}
public synchronized Long accountNextId(String currency) {
@@ -339,7 +342,7 @@ public class InformationAccountService extends QueueConsumer implements Initiali
infoCounter = new AtomicLong(1);
log.debug("No account information on map. n={}", infoCounter.get());
} else {
- Pattern accPattern = Pattern.compile("39911%s([0-9]{8})7000".formatted(idWithTrailingZero));
+ Pattern accPattern = Pattern.compile("39911%s([0-9]{8})\\d{4}".formatted(idWithTrailingZero));
int maxN = 1;
int parsedCount = 0;
String lastAccount = null; // for debug
diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java
index 236093a02..4e5ac27b8 100644
--- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java
+++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java
@@ -27,6 +27,7 @@ import ru.clearing.classes.statics.data.company.CompanySymbols;
import ru.clearing.classes.statics.data.company.relation.Relation;
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
import ru.clearing.classes.statics.data.registry.TradingClearingRegistryList;
+import ru.spcex.clearing.account.config.settings.AccountServiceSettings;
import ru.spcex.clearing.account.errors.AccountError;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
@@ -93,6 +94,7 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
private final IMessageResolver messageResolver;
private final Producer kafkaProducer;
private final KafkaSender kafkaSender;
+ private final AccountServiceSettings accountServiceSettings;
public TradingClearingRegistryService(Consumer kafkaQueue,
Producer kafkaProducer,
@@ -107,7 +109,7 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
@Qualifier("tradingClearingRegistryUpdateRequest")
Function tradingClearingRegistryUpdateRequestValidator,
@Qualifier("tradingClearingRegistryBlockRequest")
- Function tradingClearingRegistryBlockRequestValidator) {
+ Function tradingClearingRegistryBlockRequestValidator, AccountServiceSettings accountServiceSettings) {
super(kafkaQueue, kafkaProducer);
this.kafkaProducer = kafkaProducer;
this.kafkaSender = kafkaSender;
@@ -131,6 +133,7 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
this.tradingClearingRegistryUpdateRequestValidator = tradingClearingRegistryUpdateRequestValidator;
this.tradingClearingRegistryBlockRequestValidator = tradingClearingRegistryBlockRequestValidator;
this.messageResolver = messageResolver;
+ this.accountServiceSettings = accountServiceSettings;
}
@Override
@@ -444,7 +447,8 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
code = "%4s".formatted(code).replace(' ', '0');
// code += registryPurpose.getKey(); // C / M / ...
code += "C";//пока ставим всегда С, возможно придется откатить
- String trType = tradingRegistryType + "T"; // 2 символа
+ String registryUnit = accountServiceSettings.getApp() != null ? accountServiceSettings.getApp().getRegistryUnit() : "T";
+ String trType = tradingRegistryType + registryUnit; // 2 символа
code += trType;
String sId = "%5s".formatted(id).replace(' ', '0');
if (sId.length() > 5)
diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/listeners/ClientCodeMessageListener.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/listeners/ClientCodeMessageListener.java
index ee8a81f81..a2d20ec51 100644
--- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/listeners/ClientCodeMessageListener.java
+++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/listeners/ClientCodeMessageListener.java
@@ -132,7 +132,7 @@ public class ClientCodeMessageListener extends QueueConsumer implements Initiali
clientCodeNewRequest.setCompanyId(company.getId());
clientCodeNewRequest.setCode(tkrAccount.getClientCode());
clientCodeNewRequest.setDepoAccountId(depoAccountId);
- Account moneyAccount = accountByCurrency.get(CurrencyCode.RUB);
+ Account moneyAccount = accountByCurrency.get(CurrencyCode.RUB.getKey());
clientCodeNewRequest.setMoneyAccountId(moneyAccount.getId());
List foreignCurrencyList = accountByCurrency.entrySet()
diff --git a/clearing-parent/account-service/src/main/resources/application.properties b/clearing-parent/account-service/src/main/resources/application.properties
index b778da132..3592d4db7 100644
--- a/clearing-parent/account-service/src/main/resources/application.properties
+++ b/clearing-parent/account-service/src/main/resources/application.properties
@@ -16,4 +16,6 @@ account-service.kafka-producer.acks=all
account-service.kafka-producer.retries=0
account-service.kafka-producer.batch-size=16384
account-service.kafka-producer.linger-ms=1
-account-service.kafka-producer.buffer-memory=33554432
\ No newline at end of file
+account-service.kafka-producer.buffer-memory=33554432
+
+account-service.app.registry-unit=L
\ No newline at end of file
diff --git a/clearing-parent/backend-api/pom.xml b/clearing-parent/backend-api/pom.xml
index 7779ba371..2c285314f 100644
--- a/clearing-parent/backend-api/pom.xml
+++ b/clearing-parent/backend-api/pom.xml
@@ -11,7 +11,7 @@
clearing-parent
ru.spcex.clearing
- SPCEX-3.14.106
+ SPCEX-3.15.209
diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/MetaConfiguration.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/MetaConfiguration.java
index 515707844..e5527b883 100644
--- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/MetaConfiguration.java
+++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/MetaConfiguration.java
@@ -4,6 +4,8 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import java.nio.file.Files;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
@@ -12,9 +14,6 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import ru.spcex.clearing.backendapi.meta.MetaServer;
-import java.io.IOException;
-import java.nio.file.Files;
-
@Configuration
public class MetaConfiguration {
@Value("file:${spring.config.location}/meta.json")
diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/element/BackendApiSettings.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/element/BackendApiSettings.java
index 9b51e8890..42e5ad29d 100644
--- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/element/BackendApiSettings.java
+++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/element/BackendApiSettings.java
@@ -3,6 +3,7 @@ package ru.spcex.clearing.backendapi.config.element;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
+import ru.spcex.clearing.backendapi.security.element.JsConfigSettings;
import ru.spcex.clearing.backendapi.security.element.SecuritySettings;
import ru.spcex.clearing.platform.messaging.config.element.KafkaConsumerSettings;
import ru.spcex.clearing.platform.messaging.config.element.KafkaProducerSettings;
@@ -17,6 +18,7 @@ public class BackendApiSettings {
private KafkaProducerSettings kafkaProducer;
private KafkaConsumerSettings kafkaConsumer;
private SecuritySettings security;
+ private JsConfigSettings jsConfig;
private String exampleSetting;
public HazelcastClientParams getHazelcast() {
@@ -59,6 +61,14 @@ public class BackendApiSettings {
this.security = security;
}
+ public JsConfigSettings getJsConfig() {
+ return jsConfig;
+ }
+
+ public void setJsConfig(JsConfigSettings jsConfig) {
+ this.jsConfig = jsConfig;
+ }
+
public HazelcastClientParams getHazelcastSearch() {
return hazelcastSearch;
}
diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/misc/JsConfigController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/misc/JsConfigController.java
new file mode 100644
index 000000000..5dbb6cb11
--- /dev/null
+++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/misc/JsConfigController.java
@@ -0,0 +1,39 @@
+package ru.spcex.clearing.backendapi.controller.queue.misc;
+
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import ru.spcex.clearing.backendapi.config.element.BackendApiSettings;
+import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
+import ru.spcex.clearing.backendapi.security.element.JsConfigSettings;
+
+@Controller
+@RequestMapping("/")
+public class JsConfigController {
+ private final BackendApiSettings backendApiSettings;
+
+ public JsConfigController(BackendApiSettings backendApiSettings) {
+ this.backendApiSettings = backendApiSettings;
+ }
+
+ @ApiOperation(value = "get js config.")
+ @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
+ @RequestMapping(path = "/spcexConfig.js", method = RequestMethod.GET)
+ @ResponseBody
+ public Map getJsConfig() {
+ Map result = new HashMap<>();
+
+ String title = new String(backendApiSettings.getJsConfig().getServerTitle().getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
+ result.put(JsConfigSettings.SERVER_TITLE_PARAM_NAME, title);
+ result.put(JsConfigSettings.IS_CENTRAL_COUNTER_PARTY_PARAM_NAME, backendApiSettings.getJsConfig().getCentralCounterPartyEnable());
+
+ return result;
+ }
+}
diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/RatesController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/RatesController.java
new file mode 100644
index 000000000..43ec6d568
--- /dev/null
+++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/RatesController.java
@@ -0,0 +1,74 @@
+package ru.spcex.clearing.backendapi.controller.queue.securities;
+
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import java.util.Collection;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import ru.clearing.classes.statics.data.security.Rates;
+import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
+import ru.spcex.clearing.backendapi.controller.request.cud.securities.RatesNewAction;
+import ru.spcex.clearing.backendapi.controller.request.cud.securities.RatesUpdateAction;
+import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
+import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse;
+import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
+import ru.spcex.clearing.backendapi.service.IOperator;
+import ru.spcex.clearing.backendapi.service.IStateLoader;
+import ru.spcex.clearing.imdg.IMDGDistributedNames;
+import ru.spcex.clearing.platform.messaging.domain.Consts;
+
+@Controller
+@RequestMapping("/rates")
+public class RatesController extends AbstractQueueController {
+ private final IStateLoader stateLoader;
+
+ @Autowired
+ public RatesController(IOperator operator, IStateLoader stateLoader) {
+ super(operator);
+ this.stateLoader = stateLoader;
+ }
+
+ @ApiOperation(value = "get all rates.")
+ @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
+ @RequestMapping(method = RequestMethod.GET)
+ @ResponseBody
+ public CommonGetAllResponse getAll() {
+ Collection