diff --git a/clearing-parent/account-service/pom.xml b/clearing-parent/account-service/pom.xml
index 215a70afa..cc3103e57 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.12.0.0
+ SPCEX-3.12.2
4.0.0
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 781ae04ba..1a98c6b2c 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
@@ -302,7 +302,7 @@ public class InformationAccountService extends QueueConsumer implements Initiali
}
public String generateInfoAccount(Long currencyCodeId, Long id) {
- return "%d%d%08d%d".formatted(39911, currencyCodeId, id, 7000);
+ return "%d%03d%08d%d".formatted(39911, currencyCodeId, id, 7000);
}
public synchronized Long accountNextId(String currency) {
@@ -316,6 +316,7 @@ public class InformationAccountService extends QueueConsumer implements Initiali
* @return infoCounter++
*/
public synchronized Long accountNextId(String currency, Long currencyCodeId) {
+ String idWithTrailingZero = String.format("%03d", currencyCodeId);
if (currency == null)
currency = CurrencyCode.RUB.getKey(); // default
AtomicLong infoCounter = infoCounterByCurrency.get(currency);
@@ -338,7 +339,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%d([0-9]{8})7000".formatted(currencyCodeId));
+ Pattern accPattern = Pattern.compile("39911%s([0-9]{8})7000".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 675c3d7bb..646decd21 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
@@ -49,7 +49,9 @@ import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.clearing.util.security.UserRoleVerification;
import ru.spcex.clearing.util.services.RequestHelper;
import ru.spcex.clearing.validation.common.ValidationHelper;
+import ru.spcex.platform.enumeration.AccountType;
import ru.spcex.platform.enumeration.CompanySymbol;
+import ru.spcex.platform.enumeration.CurrencyCode;
import ru.spcex.platform.enumeration.ServiceStatus;
import ru.spcex.platform.enumeration.Status;
import static ru.spcex.platform.enumeration.Task.makeFiles_MTCR;
@@ -460,13 +462,13 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
return requestHelper.makeErrorResponse(userRequest, AccountError.WrongFieldValue, "MoneyAccountId", req.getMoneyAccountId());
}
if (tradingClearingRegistry.getDepoAccountId() != null && // но можно с null заменить
- req.getDepoAccountId() != null && !req.getDepoAccountId().equals(tradingClearingRegistry.getDepoAccountId())) {
+ req.getDepoAccountId() != null && !req.getDepoAccountId().equals(tradingClearingRegistry.getDepoAccountId())) {
return requestHelper.makeErrorResponse(userRequest, AccountError.WrongFieldValue, "DepoAccountId", req.getDepoAccountId());
}
// tradingClearingRegistry.setMoneyAccountId(req.getMoneyAccountId());
if (req.getStatus() != null && !Objects.equals(req.getStatus(), tradingClearingRegistry.getStatus())
- || req.getDepoAccountId() != null && !req.getDepoAccountId().equals(tradingClearingRegistry.getDepoAccountId())
+ || req.getDepoAccountId() != null && !req.getDepoAccountId().equals(tradingClearingRegistry.getDepoAccountId())
) {
Instant now = Instant.now();
tradingClearingRegistry.setUpdated(now);
@@ -586,6 +588,7 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
MoneyAccountMsgResponse moneyAccountMsg = new MoneyAccountMsgResponse();
moneyAccountMsg.setAccount(moneyAccount.getAccount());
moneyAccountMsg.setCurrCode(StringUtils.hasText(moneyAccount.getCurrency()) ? moneyAccount.getCurrency() : "RUB");
+ getEksAccount(moneyAccount).ifPresent(moneyAccountMsg::setEksAccount);
moneyAccountMsg.setActive(Status.Active.equalsByKey(moneyAccount.getStatus()));
tkr.getMoneyAccounts().add(moneyAccountMsg);
}
@@ -600,6 +603,7 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
Account additionalAcc = accountImdg.getSingleObjectByID(tkrList.getAccountId());
MoneyAccountMsgResponse moneyAccountMsg = new MoneyAccountMsgResponse();
moneyAccountMsg.setAccount(additionalAcc.getAccount());
+ getEksAccount(additionalAcc).ifPresent(moneyAccountMsg::setEksAccount);
moneyAccountMsg.setCurrCode(StringUtils.hasText(additionalAcc.getCurrency()) ? additionalAcc.getCurrency() : "RUB");
moneyAccountMsg.setActive(Status.Active.equalsByKey(additionalAcc.getStatus()));
tkr.getMoneyAccounts().add(moneyAccountMsg);
@@ -610,6 +614,22 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
return Optional.empty();
}
+ private Optional getEksAccount(Account account) {
+ if (AccountType.Info.equalsByKey(account.getAccountType())) {
+ String currency = StringUtils.hasText(account.getCurrency()) ? account.getCurrency() : CurrencyCode.RUB.getKey();
+ Account anltAcc = accountImdg.getFirstObjectByFieldValues(
+ Map.of(
+ "currency", currency,
+ "accountType", AccountType.Anlt.getKey()
+ )
+ );
+ if (anltAcc != null) {
+ return Optional.of(anltAcc.getAccount());
+ }
+ }
+ return Optional.empty();
+ }
+
/**
* company-service сообщение об успешном добавлении ТКР клиента с параметром tradingClearingRegistry.code
*/
diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/GatewayClientCodeValidationRule.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/GatewayClientCodeValidationRule.java
index a61c012ef..8add6baf9 100644
--- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/GatewayClientCodeValidationRule.java
+++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/GatewayClientCodeValidationRule.java
@@ -35,7 +35,7 @@ public enum GatewayClientCodeValidationRule implements IValidationRule companyImdg = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class);
Company company = companyImdg.getFirstObjectByFieldValues(
- Map.of("trading_code", String.valueOf(tradingCode))
+ Map.of("tradingCode", String.valueOf(tradingCode))
);
if (company == null) {
return of(AccountError.COMPANY_NOT_FOUND_GTW, "trading_code");
@@ -62,6 +62,9 @@ public enum GatewayClientCodeValidationRule implements IValidationRule
clearing-parent
ru.spcex.clearing
- SPCEX-3.12.0.0
+ SPCEX-3.12.2
diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/sdf/SdfsController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/sdf/SdfsController.java
index e94098463..df8b94763 100644
--- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/sdf/SdfsController.java
+++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/sdf/SdfsController.java
@@ -237,6 +237,19 @@ public class SdfsController extends AbstractQueueController {
return response;
}
+ @ApiOperation(value = "get all S_DF51")
+ @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
+ @RequestMapping(value = "s-df51", method = RequestMethod.GET)
+ @ResponseBody
+ public CommonGetAllResponse getAllSdf51() {
+ Collection