Merge branch 'gateway' into dev

# Conflicts:
#	clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java
#	clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/DepoAccountService.java
This commit is contained in:
ialbert 2023-07-13 17:52:46 +03:00
commit 67149d08fe
5 changed files with 99 additions and 74 deletions

View file

@ -13,6 +13,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewR
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.company.SecurityMkrGatewayRequest;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.platform.utils.log.ExceptionUtils;
import java.util.List;
import java.util.UUID;
@ -34,28 +35,32 @@ public class IssueCompanyService {
public void sendRequest(FondListingsRequest request) {
List<IssuerCompany> issuerCompanyList = request.getIssuerCompanyList();
for (IssuerCompany issuerCompany : issuerCompanyList) {
UUID companyId = issuerCompany.getId();
log.debug("Grouping by companyId: {}", companyId);
List<IssuerCompanySymbols> issuerCompanySymbolsList = groupByCompanyId(request.getIssuerCompanySymbolsList(), companyId);
List<IssuerContact> issuerContactList = groupByCompanyId(request.getIssuerContactList(), companyId);
try {
UUID companyId = issuerCompany.getId();
log.debug("Grouping by companyId: {}", companyId);
List<IssuerCompanySymbols> issuerCompanySymbolsList = groupByCompanyId(request.getIssuerCompanySymbolsList(), companyId);
List<IssuerContact> issuerContactList = groupByCompanyId(request.getIssuerContactList(), companyId);
List<CompanySymbolNewRequest> companySymbolNewRequests = issuerCompanySymbolsList.stream().
map(issuerCompanyRequestAdapter::toCompanySymbolRequest).toList();
List<ContactNewRequest> contactNewRequests = issuerContactList.stream().
map(issuerCompanyRequestAdapter::toContactRequest).toList();
List<CompanySymbolNewRequest> companySymbolNewRequests = issuerCompanySymbolsList.stream().
map(issuerCompanyRequestAdapter::toCompanySymbolRequest).toList();
List<ContactNewRequest> contactNewRequests = issuerContactList.stream().
map(issuerCompanyRequestAdapter::toContactRequest).toList();
SecurityMkrGatewayRequest securityMkrGatewayRequest = new SecurityMkrGatewayRequest();
securityMkrGatewayRequest.setCompanyNewRequest(issuerCompanyRequestAdapter.toCompanyRequest(issuerCompany));
securityMkrGatewayRequest.setCompanySymbolNewRequests(companySymbolNewRequests);
securityMkrGatewayRequest.setContactNewRequests(contactNewRequests);
request.getIssuerCompanyInfoList()
.stream()
.filter(info -> info.getCompanyId().equals(companyId)).findFirst()
.map(issuerCompanyRequestAdapter::toCompanyInfoRequest)
.ifPresent(securityMkrGatewayRequest::setCompanyInfoUpdateRequest);
SecurityMkrGatewayRequest securityMkrGatewayRequest = new SecurityMkrGatewayRequest();
securityMkrGatewayRequest.setCompanyNewRequest(issuerCompanyRequestAdapter.toCompanyRequest(issuerCompany));
securityMkrGatewayRequest.setCompanySymbolNewRequests(companySymbolNewRequests);
securityMkrGatewayRequest.setContactNewRequests(contactNewRequests);
request.getIssuerCompanyInfoList()
.stream()
.filter(info -> info.getCompanyId().equals(companyId)).findFirst()
.map(issuerCompanyRequestAdapter::toCompanyInfoRequest)
.ifPresent(securityMkrGatewayRequest::setCompanyInfoUpdateRequest);
//todo реализовать на стороне security-service обработку и правильную группировку
//todo реализовать на стороне security-service обработку и правильную группировку
// kafkaSender.sendRequestToQueue(Consts.DESTINATION_ISSUER_COMPANY_GATEWAY_REQUEST, securityMkrGatewayRequest);
} catch (Throwable e) {
log.error("{}", ExceptionUtils.getStackTrace(e));
}
}
}

View file

@ -35,22 +35,22 @@ public class SecurityService {
public void sendRequest(FondListingsRequest request) {
List<FondSecurity> securityList = request.getSecurities();
for (FondSecurity security : securityList) {
log.debug("process security uuid: {}", security.getId());
UUID securityId = security.getId();
log.debug("Grouping by securityId: {}", securityId);
List<IncomeListing> incomeListings = groupByCompanyId(request.getListingList(), securityId);
List<CouponSchedule> couponSchedules = groupByCompanyId(request.getCouponSchedules(), securityId);
List<Nominal> nominals = groupByCompanyId(request.getNominalList(), securityId);
List<ListingNewRequest> listingRequests = incomeListings.stream().
map(securityRequestAdapter::toIncomeListing).toList();
List<CouponPeriodNewRequest> couponPeriodRequests = couponSchedules.stream().
map(securityRequestAdapter::toCouponPeriodRequest).toList();
List<FixedIncomeCashFlowNewRequest> cashFlowRequests = nominals.stream().
map(securityRequestAdapter::toFixedIncomeCashFlowRequest).toList();
SecurityFondGatewayRequest securityGatewayRequest;
try {
log.debug("process security uuid: {}", security.getId());
UUID securityId = security.getId();
log.debug("Grouping by securityId: {}", securityId);
List<IncomeListing> incomeListings = groupByCompanyId(request.getListingList(), securityId);
List<CouponSchedule> couponSchedules = groupByCompanyId(request.getCouponSchedules(), securityId);
List<Nominal> nominals = groupByCompanyId(request.getNominalList(), securityId);
List<ListingNewRequest> listingRequests = incomeListings.stream().
map(securityRequestAdapter::toIncomeListing).toList();
List<CouponPeriodNewRequest> couponPeriodRequests = couponSchedules.stream().
map(securityRequestAdapter::toCouponPeriodRequest).toList();
List<FixedIncomeCashFlowNewRequest> cashFlowRequests = nominals.stream().
map(securityRequestAdapter::toFixedIncomeCashFlowRequest).toList();
SecurityFondGatewayRequest securityGatewayRequest;
if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) {
FixedIncomeSecurityNewRequest fixedIncomeSecurityNewRequest = securityRequestAdapter.toFixedIncomeSecurityRequest(security);
securityGatewayRequest = new FixedIncomeGatewayRequest(fixedIncomeSecurityNewRequest);
@ -67,7 +67,6 @@ public class SecurityService {
} catch (Throwable e) {
log.error("{}", ExceptionUtils.getStackTrace(e));
}
}
}

View file

@ -10,6 +10,7 @@ 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.company.*;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.platform.utils.log.ExceptionUtils;
import java.util.List;
import java.util.UUID;
@ -31,39 +32,43 @@ public class CompanyProcessor {
public void process(CompaniesRequest request) {
List<Company> companyList = request.getCompanyList();
for (Company memberCompany : companyList) {
UUID companyId = memberCompany.getId();
log.debug("Grouping by companyId: {}", companyId);
List<CompanyClearingCategory> companyClearingCategories = groupByCompanyId(request.getCompanyClearingCategoryList(), companyId);
List<CompanySymbols> companySymbols = groupByCompanyId(request.getMemberCompanySymbolsList(), companyId);
List<Contact> contacts = groupByCompanyId(request.getContactList(), companyId);
List<ProfileDocument> profileDocuments = groupByCompanyId(request.getProfileDocumentList(), companyId);
List<Client> clients = groupByCompanyId(request.getClientList(), companyId);
try {
UUID companyId = memberCompany.getId();
log.debug("Grouping by companyId: {}", companyId);
List<CompanyClearingCategory> companyClearingCategories = groupByCompanyId(request.getCompanyClearingCategoryList(), companyId);
List<CompanySymbols> companySymbols = groupByCompanyId(request.getMemberCompanySymbolsList(), companyId);
List<Contact> contacts = groupByCompanyId(request.getContactList(), companyId);
List<ProfileDocument> profileDocuments = groupByCompanyId(request.getProfileDocumentList(), companyId);
List<Client> clients = groupByCompanyId(request.getClientList(), companyId);
List<CompanySymbolNewRequest> companySymbolNewRequests = companySymbols.stream().
map(companyRequestAdapter::toCompanySymbolsRequest).toList();
List<ContactNewRequest> contactNewRequests = contacts.stream().
map(companyRequestAdapter::toContactRequest).toList();
List<ProfileDocumentNewRequest> profileDocumentNewRequests = profileDocuments.stream().
map(companyRequestAdapter::toProfileDocumentRequest).toList();
List<ClientCodeNewRequest> clientCodeNewRequests = clients.stream().
map(companyRequestAdapter::toClientRequest).toList();
List<ClearingMemberCategoryNewRequest> categories = companyClearingCategories.stream().
map(companyRequestAdapter::toCategoryRequest).toList();
List<CompanySymbolNewRequest> companySymbolNewRequests = companySymbols.stream().
map(companyRequestAdapter::toCompanySymbolsRequest).toList();
List<ContactNewRequest> contactNewRequests = contacts.stream().
map(companyRequestAdapter::toContactRequest).toList();
List<ProfileDocumentNewRequest> profileDocumentNewRequests = profileDocuments.stream().
map(companyRequestAdapter::toProfileDocumentRequest).toList();
List<ClientCodeNewRequest> clientCodeNewRequests = clients.stream().
map(companyRequestAdapter::toClientRequest).toList();
List<ClearingMemberCategoryNewRequest> categories = companyClearingCategories.stream().
map(companyRequestAdapter::toCategoryRequest).toList();
CompanyGatewayRequest companyGatewayRequest = new CompanyGatewayRequest();
companyGatewayRequest.setCompany(companyRequestAdapter.toCompanyRequest(memberCompany));
request.getCompanyInfoList()
.stream()
.filter(info -> info.getCompanyId().equals(companyId)).findFirst()
.map(companyRequestAdapter::toCompanyInfoRequest)
.ifPresent(companyGatewayRequest::setCompanyInfo);
companyGatewayRequest.setCompanySymbols(companySymbolNewRequests);
companyGatewayRequest.setContacts(contactNewRequests);
companyGatewayRequest.setProfileDocuments(profileDocumentNewRequests);
companyGatewayRequest.setClientCodes(clientCodeNewRequests);
companyGatewayRequest.setCategories(categories);
CompanyGatewayRequest companyGatewayRequest = new CompanyGatewayRequest();
companyGatewayRequest.setCompany(companyRequestAdapter.toCompanyRequest(memberCompany));
request.getCompanyInfoList()
.stream()
.filter(info -> info.getCompanyId().equals(companyId)).findFirst()
.map(companyRequestAdapter::toCompanyInfoRequest)
.ifPresent(companyGatewayRequest::setCompanyInfo);
companyGatewayRequest.setCompanySymbols(companySymbolNewRequests);
companyGatewayRequest.setContacts(contactNewRequests);
companyGatewayRequest.setProfileDocuments(profileDocumentNewRequests);
companyGatewayRequest.setClientCodes(clientCodeNewRequests);
companyGatewayRequest.setCategories(categories);
kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_GATEWAY_REQUEST, companyGatewayRequest);
kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_GATEWAY_REQUEST, companyGatewayRequest);
} catch (Throwable e) {
log.error("{}", ExceptionUtils.getStackTrace(e));
}
}
}

View file

@ -10,6 +10,7 @@ import ru.spcex.clearing.gatewayapi.service.adapter.MoneyMarketSecurityRequestAd
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.platform.utils.log.ExceptionUtils;
import java.util.List;
import java.util.UUID;
@ -30,16 +31,19 @@ public class ListingMMProcessor {
public void process(MMListingsRequest request) {
List<ExchangeInstrument> exchangeInstrumentList = request.getExchangeInstrumentList();
for (ExchangeInstrument exchangeInstrument : exchangeInstrumentList) {
UUID exchangeInstrumentId = exchangeInstrument.getId();
log.debug("Process exchangeInstrumentId : {}", exchangeInstrumentId);
if (StringUtils.isEmpty(exchangeInstrument.getCode()) || exchangeInstrument.getCode().length() < 6) {
log.warn("Incorrect code : {}, skip record", exchangeInstrument.getCode());
try {
UUID exchangeInstrumentId = exchangeInstrument.getId();
log.debug("Process exchangeInstrumentId : {}", exchangeInstrumentId);
if (StringUtils.isEmpty(exchangeInstrument.getCode()) || exchangeInstrument.getCode().length() < 6) {
log.warn("Incorrect code : {}, skip record", exchangeInstrument.getCode());
continue;
}
MoneyMarketSecurityNewRequest moneyMarketSecurityNewRequest = moneyMarketSecurityRequestAdapter
.toMoneyMarketSecurityNewRequest(exchangeInstrument);
kafkaSender.sendRequestToQueue(Consts.DESTINATION_GATEWAY_MONEY_MARKET_SECURITY, moneyMarketSecurityNewRequest);
} catch (Throwable e) {
log.error("{}", ExceptionUtils.getStackTrace(e));
}
MoneyMarketSecurityNewRequest moneyMarketSecurityNewRequest = moneyMarketSecurityRequestAdapter
.toMoneyMarketSecurityNewRequest(exchangeInstrument);
kafkaSender.sendRequestToQueue(Consts.DESTINATION_GATEWAY_MONEY_MARKET_SECURITY, moneyMarketSecurityNewRequest);
}
}
}

View file

@ -13,6 +13,7 @@ import ru.clearing.classes.statics.data.misc.STrades;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.cud.utilities.STradesImportedRequest;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.platform.enumeration.Side;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.utils.enumeration.EnumMessage;
@ -122,6 +123,16 @@ public class TradeImporterService {
}
}
private static String mapOperation(String fromDb) {
if (fromDb == null) return null;
if ("Купля".equalsIgnoreCase(fromDb)) {
return Side.BUY.getKey();
} else if ("Продажа".equalsIgnoreCase(fromDb)) {
return Side.SELL.getKey();
}
return fromDb;
}
public STrades getSTradesFromImdg(STrades tradesDb, Imdg<STrades> sTradesImdg) {
return sTradesImdg.getFirstObjectByFieldValues(Map.of("tradeDate", tradesDb.getTradeDate(),
"tradeNum", tradesDb.getTradeNum(),
@ -139,7 +150,8 @@ public class TradeImporterService {
public STrades readSTrades(ResultSet resultSet) throws SQLException {
STrades sTrades = new STrades();
sTrades.setTradeNum(resultSet.getObject("TradeNum", Long.class));
sTrades.setOperation(resultSet.getObject("Operation", String.class));
String operation = resultSet.getObject("Operation", String.class);
sTrades.setOperation(mapOperation(operation));
sTrades.setClassCode(resultSet.getObject("ClassCode", String.class));
sTrades.setTradeDate(getLocalDateFromSqlDate(resultSet, "TradeDate"));
sTrades.setSecCode(resultSet.getObject("SecCode", String.class));