etreschenkov 2024-04-27 18:03:51 +03:00
parent 53df6b6b62
commit bbef81e867
2 changed files with 39 additions and 36 deletions

View file

@ -1,5 +1,10 @@
package ru.spcex.clearing.account.service; package ru.spcex.clearing.account.service;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.function.Function;
import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.producer.Producer; import org.apache.kafka.clients.producer.Producer;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -21,12 +26,8 @@ import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.CreateRegistryByTCRListRequest; import ru.spcex.clearing.platform.messaging.domain.cud.clearing.CreateRegistryByTCRListRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.CreateRegistryRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonIdRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryListNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryListNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryListUpdateRequest; import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryListUpdateRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryUpdateRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.reports.NotificationRequest;
import ru.spcex.clearing.platform.messaging.serialization.LogFormatter; import ru.spcex.clearing.platform.messaging.serialization.LogFormatter;
import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
@ -35,19 +36,12 @@ import ru.spcex.clearing.util.security.UserRoleVerification;
import ru.spcex.clearing.util.services.RequestHelper; import ru.spcex.clearing.util.services.RequestHelper;
import ru.spcex.clearing.validation.common.ValidationHelper; import ru.spcex.clearing.validation.common.ValidationHelper;
import ru.spcex.platform.enumeration.ServiceStatus; import ru.spcex.platform.enumeration.ServiceStatus;
import ru.spcex.platform.enumeration.TradingClearingRegistryPurpose;
import ru.spcex.platform.enumeration.TradingClearingRegistryType;
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.ImdgPredicateBuilder;
import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.enumeration.IMessageResolver;
import ru.spcex.platform.utils.log.ExceptionUtils; import ru.spcex.platform.utils.log.ExceptionUtils;
import ru.spcex.platform.utils.validation.IValidator; import ru.spcex.platform.utils.validation.IValidator;
import java.time.Instant;
import java.util.*;
import java.util.function.Function;
@Service @Service
public class TradingClearingRegistryListService extends QueueConsumer implements InitializingBean { public class TradingClearingRegistryListService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass()); private final Logger log = LoggerFactory.getLogger(getClass());
@ -141,7 +135,9 @@ public class TradingClearingRegistryListService extends QueueConsumer implements
return requestInfoUpdate; return requestInfoUpdate;
} }
TradingClearingRegistryListNewRequest req = userRequest.getRequestPayload(); TradingClearingRegistryListNewRequest req = userRequest.getRequestPayload();
Account account = accountImdg.getSingleObjectByID(req.getAccountId());
Instant now = Instant.now(); Instant now = Instant.now();
List<Long> newIds=new ArrayList<>(); List<Long> newIds=new ArrayList<>();
@ -153,6 +149,7 @@ public class TradingClearingRegistryListService extends QueueConsumer implements
tradingClearingRegistryList.setUpdated(now); tradingClearingRegistryList.setUpdated(now);
tradingClearingRegistryList.setTradingClearingRegistryId(req.getTradingClearingRegistryId()); tradingClearingRegistryList.setTradingClearingRegistryId(req.getTradingClearingRegistryId());
tradingClearingRegistryList.setAccountId(currAccId); tradingClearingRegistryList.setAccountId(currAccId);
tradingClearingRegistryList.setCurrency(account.getCurrency());
if (req.getStatus() == null) { if (req.getStatus() == null) {
tradingClearingRegistryList.setStatus(ServiceStatus.Active.getKey()); tradingClearingRegistryList.setStatus(ServiceStatus.Active.getKey());
log.trace("TCRList status in request not set. Use default: {}", tradingClearingRegistryList.getStatus()); log.trace("TCRList status in request not set. Use default: {}", tradingClearingRegistryList.getStatus());
@ -210,6 +207,7 @@ public class TradingClearingRegistryListService extends QueueConsumer implements
} }
TradingClearingRegistryListNewRequest req = userRequest.getRequestPayload(); TradingClearingRegistryListNewRequest req = userRequest.getRequestPayload();
Account account = accountImdg.getSingleObjectByID(req.getAccountId());
Instant now = Instant.now(); Instant now = Instant.now();
Long id = tradingClearingRegistryListImdg.nextIDSequenceFor(); Long id = tradingClearingRegistryListImdg.nextIDSequenceFor();
@ -219,6 +217,7 @@ public class TradingClearingRegistryListService extends QueueConsumer implements
tradingClearingRegistryList.setUpdated(now); tradingClearingRegistryList.setUpdated(now);
tradingClearingRegistryList.setTradingClearingRegistryId(req.getTradingClearingRegistryId()); tradingClearingRegistryList.setTradingClearingRegistryId(req.getTradingClearingRegistryId());
tradingClearingRegistryList.setAccountId(req.getAccountId()); tradingClearingRegistryList.setAccountId(req.getAccountId());
tradingClearingRegistryList.setCurrency(account.getCurrency());
if (req.getStatus() == null) { if (req.getStatus() == null) {
tradingClearingRegistryList.setStatus(ServiceStatus.Active.getKey()); tradingClearingRegistryList.setStatus(ServiceStatus.Active.getKey());
log.trace("TCRList status in request not set. Use default: {}", tradingClearingRegistryList.getStatus()); log.trace("TCRList status in request not set. Use default: {}", tradingClearingRegistryList.getStatus());
@ -231,26 +230,26 @@ public class TradingClearingRegistryListService extends QueueConsumer implements
if (!innerCall) { if (!innerCall) {
// Для каждого счета из списка (currencyAccountList) должна быть создана отдельная запись объекте clientCode с данным счетом для данного клиента, т.е. у одного клиента может быть несколько валютных счетов. // Для каждого счета из списка (currencyAccountList) должна быть создана отдельная запись объекте clientCode с данным счетом для данного клиента, т.е. у одного клиента может быть несколько валютных счетов.
try { // try {
TradingClearingRegistry tcr = tradingClearingRegistryImdg.getSingleObjectByID(req.getTradingClearingRegistryId()); // TradingClearingRegistry tcr = tradingClearingRegistryImdg.getSingleObjectByID(req.getTradingClearingRegistryId());
ClientCodeNewRequest cCodeReq = new ClientCodeNewRequest(); // ClientCodeNewRequest cCodeReq = new ClientCodeNewRequest();
cCodeReq.setTradingClearingRegistryId(req.getTradingClearingRegistryId()); // cCodeReq.setTradingClearingRegistryId(req.getTradingClearingRegistryId());
cCodeReq.setDepoAccountId(tcr.getDepoAccountId()); // cCodeReq.setDepoAccountId(tcr.getDepoAccountId());
cCodeReq.setMoneyAccountId(tcr.getMoneyAccountId()); // cCodeReq.setMoneyAccountId(tcr.getMoneyAccountId());
cCodeReq.setCompanyId(tcr.getCompanyId()); // cCodeReq.setCompanyId(tcr.getCompanyId());
cCodeReq.setCurrencyAccountList(Arrays.asList(req.getAccountId())); // todo rewrite API // cCodeReq.setCurrencyAccountList(Arrays.asList(req.getAccountId())); // todo rewrite API
cCodeReq.setStatus(tradingClearingRegistryList.getStatus()); // cCodeReq.setStatus(tradingClearingRegistryList.getStatus());
//todo cCodeReq.setCode(); // //todo cCodeReq.setCode();
BaseRequest<ClientCodeNewRequest> request2 = new BaseRequest<>(); // BaseRequest<ClientCodeNewRequest> request2 = new BaseRequest<>();
request2.setRequestPayload(cCodeReq); // request2.setRequestPayload(cCodeReq);
requestInfoUpdate = clientCodeService.clientCodeNew0(request2, true); // requestInfoUpdate = clientCodeService.clientCodeNew0(request2, true);
if (requestInfoUpdate != null) return requestInfoUpdate; // if (requestInfoUpdate != null) return requestInfoUpdate;
} catch (Exception e) { // } catch (Exception e) {
log.error("Can not wait creation of tradingClearingRegistryList. request id={}; {}", // log.error("Can not wait creation of tradingClearingRegistryList. request id={}; {}",
userRequest.getId(), // userRequest.getId(),
ExceptionUtils.getStackTrace(e)); // ExceptionUtils.getStackTrace(e));
return requestHelper.makeErrorResponse(userRequest, AccountError.GeneralError, "Can not create TCR: " + e.getMessage()); // return requestHelper.makeErrorResponse(userRequest, AccountError.GeneralError, "Can not create TCR: " + e.getMessage());
} // }
} }

View file

@ -1,5 +1,12 @@
package ru.spcex.clearing.account.service; package ru.spcex.clearing.account.service;
import java.time.Instant;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.producer.Producer; import org.apache.kafka.clients.producer.Producer;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -40,10 +47,6 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.enumeration.IMessageResolver;
import ru.spcex.platform.utils.validation.IValidator; import ru.spcex.platform.utils.validation.IValidator;
import java.time.Instant;
import java.util.*;
import java.util.function.Function;
@Service @Service
public class TradingClearingRegistryService extends QueueConsumer implements InitializingBean { public class TradingClearingRegistryService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass()); private final Logger log = LoggerFactory.getLogger(getClass());
@ -394,7 +397,8 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
if (code.length() > 4) if (code.length() > 4)
code = code.substring(code.length() - 4); code = code.substring(code.length() - 4);
code = "%4s".formatted(code).replace(' ', '0'); code = "%4s".formatted(code).replace(' ', '0');
code += registryPurpose.getKey(); // C / M / ... // code += registryPurpose.getKey(); // C / M / ...
code += "C";//пока ставим всегда С, возможно придется откатить
String trType = tradingRegistryType + "T"; // 2 символа String trType = tradingRegistryType + "T"; // 2 символа
code += trType; code += trType;
String sId = "%5s".formatted(id).replace(' ', '0'); String sId = "%5s".formatted(id).replace(' ', '0');