поправлены баги при создании компаний и инструментов
This commit is contained in:
parent
8da9583854
commit
343277caa3
10 changed files with 108 additions and 54 deletions
|
|
@ -2,8 +2,8 @@ package ru.spcex.clearing.company.config.validation;
|
||||||
|
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||||
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.platform.dictionary.ClearingCategoryDictionary;
|
import ru.clearing.platform.dictionary.ClearingCategoryDictionary;
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
|
@ -11,10 +11,8 @@ import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteReques
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest;
|
||||||
import ru.spcex.clearing.validation.common.rules.DictionaryPresentRule;
|
import ru.spcex.clearing.validation.common.rules.DictionaryPresentRule;
|
||||||
import ru.spcex.clearing.validation.common.rules.EnumPresentRule;
|
|
||||||
import ru.spcex.clearing.validation.common.rules.IdPresentRule;
|
import ru.spcex.clearing.validation.common.rules.IdPresentRule;
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
|
||||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
|
|
@ -44,8 +42,7 @@ public class ClearingMemberCategoryValidationConfig {
|
||||||
IMDGDistributedNames.Map_Company,
|
IMDGDistributedNames.Map_Company,
|
||||||
Company.class,
|
Company.class,
|
||||||
CompanyErrors.RequiredFieldEmpty,
|
CompanyErrors.RequiredFieldEmpty,
|
||||||
CompanyErrors.CompanyNotFound,
|
CompanyErrors.CompanyNotFound),
|
||||||
company -> WorkflowStatus.Active.getKey().equals(company.getWorkflowStatus()) ? null : CompanyErrors.CompanyDisabled),
|
|
||||||
DictionaryPresentRule.instance("clearingMemberCategory",
|
DictionaryPresentRule.instance("clearingMemberCategory",
|
||||||
ClearingMemberCategoryNewRequest::getClearingMemberCategory,
|
ClearingMemberCategoryNewRequest::getClearingMemberCategory,
|
||||||
IMDGDistributedNames.Map_ClearingCategoryDictionary,
|
IMDGDistributedNames.Map_ClearingCategoryDictionary,
|
||||||
|
|
|
||||||
|
|
@ -28,11 +28,8 @@ import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
import static ru.spcex.platform.utils.enumeration.IEnumKey.getEnumByKey;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class ClearingMemberCategoryService extends QueueConsumer implements InitializingBean {
|
public class ClearingMemberCategoryService extends QueueConsumer implements InitializingBean {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
@ -85,7 +82,7 @@ public class ClearingMemberCategoryService extends QueueConsumer implements Init
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
private RequestInfoUpdate clearingMemberCategoryNew(BaseRequest<ClearingMemberCategoryNewRequest> userRequest) {
|
protected RequestInfoUpdate clearingMemberCategoryNew(BaseRequest<ClearingMemberCategoryNewRequest> userRequest) {
|
||||||
log.debug("ClearingMemberCategoryNewRequest received {}", userRequest.getId());
|
log.debug("ClearingMemberCategoryNewRequest received {}", userRequest.getId());
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@ import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteReques
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
|
||||||
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;
|
||||||
import ru.spcex.clearing.platform.messaging.service.Status;
|
|
||||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
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;
|
||||||
|
|
@ -66,11 +65,11 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
||||||
ValidationHelper validationHelper,
|
ValidationHelper validationHelper,
|
||||||
UserRoleVerification userRoleVerification,
|
UserRoleVerification userRoleVerification,
|
||||||
@Qualifier("companyNewRequestValidator")
|
@Qualifier("companyNewRequestValidator")
|
||||||
Function<CompanyNewRequest, IValidator> companyNewRequestValidator,
|
Function<CompanyNewRequest, IValidator> companyNewRequestValidator,
|
||||||
@Qualifier("companyUpdateRequestValidator")
|
@Qualifier("companyUpdateRequestValidator")
|
||||||
Function<CompanyNewRequest, IValidator> companyUpdateRequestValidator,
|
Function<CompanyNewRequest, IValidator> companyUpdateRequestValidator,
|
||||||
@Qualifier("CompanyDeleteRequestValidator")
|
@Qualifier("CompanyDeleteRequestValidator")
|
||||||
Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator,
|
Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator,
|
||||||
CompanySymbolService companySymbolService,
|
CompanySymbolService companySymbolService,
|
||||||
AccountNotificationHelper accountNotification,
|
AccountNotificationHelper accountNotification,
|
||||||
RelationService relationService) {
|
RelationService relationService) {
|
||||||
|
|
@ -127,7 +126,7 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
||||||
}
|
}
|
||||||
create(companyNewRequest);
|
create(companyNewRequest);
|
||||||
}
|
}
|
||||||
case UPDATE -> update((CompanyNewRequest) request.getRequestPayload());
|
case UPDATE -> update((CompanyNewRequest) request.getRequestPayload(), true);
|
||||||
}
|
}
|
||||||
return requestInfoUpdate;
|
return requestInfoUpdate;
|
||||||
}
|
}
|
||||||
|
|
@ -144,7 +143,11 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
||||||
company.setTradingCode(companyNewRequest.getTradingCode());
|
company.setTradingCode(companyNewRequest.getTradingCode());
|
||||||
company.setClearingCode(companyNewRequest.getClearingCode());
|
company.setClearingCode(companyNewRequest.getClearingCode());
|
||||||
company.setRegistrationCode(companyNewRequest.getRegistrationCode());
|
company.setRegistrationCode(companyNewRequest.getRegistrationCode());
|
||||||
company.setWorkflowStatus(companyNewRequest.getWorkflowStatus());
|
if (companyNewRequest.getWorkflowStatus() != null) {
|
||||||
|
company.setWorkflowStatus(companyNewRequest.getWorkflowStatus());
|
||||||
|
} else {
|
||||||
|
company.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||||
|
}
|
||||||
fillNewCompanyInfo(company, companyNewRequest);
|
fillNewCompanyInfo(company, companyNewRequest);
|
||||||
|
|
||||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
|
|
@ -178,13 +181,14 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
||||||
return company.getId();
|
return company.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void update(CompanyNewRequest updateRequest) throws ValidationException {
|
public synchronized void update(CompanyNewRequest updateRequest, boolean validationIsEnable) throws ValidationException {
|
||||||
IValidator validator = companyUpdateRequestValidator.apply(updateRequest);
|
if (validationIsEnable) {
|
||||||
Optional<EnumMessage> error = validator.tillFirstError();
|
IValidator validator = companyUpdateRequestValidator.apply(updateRequest);
|
||||||
if (error.isPresent()) {
|
Optional<EnumMessage> error = validator.tillFirstError();
|
||||||
throw new ValidationException(error.get());
|
if (error.isPresent()) {
|
||||||
|
throw new ValidationException(error.get());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
transaction.beginTransaction();
|
transaction.beginTransaction();
|
||||||
boolean txOk = false;
|
boolean txOk = false;
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||||
import ru.clearing.classes.statics.data.profile.Contact;
|
import ru.clearing.classes.statics.data.profile.Contact;
|
||||||
|
|
@ -54,12 +55,14 @@ public class MultiCompanyService
|
||||||
final ContactService contactService;
|
final ContactService contactService;
|
||||||
final AccountNotificationHelper accountNotification;
|
final AccountNotificationHelper accountNotification;
|
||||||
final RelationService relationService;
|
final RelationService relationService;
|
||||||
|
final ClearingMemberCategoryService clearingMemberCategoryService;
|
||||||
|
|
||||||
final ImdgProvider imdgProvider;
|
final ImdgProvider imdgProvider;
|
||||||
final Imdg<Company> companyIMap;
|
final Imdg<Company> companyIMap;
|
||||||
final Imdg<CompanySymbols> companySymbolsImdg;
|
final Imdg<CompanySymbols> companySymbolsImdg;
|
||||||
final Imdg<ProfileDocument> profileDocumentImdg;
|
final Imdg<ProfileDocument> profileDocumentImdg;
|
||||||
final Imdg<Contact> contactImdg;
|
final Imdg<Contact> contactImdg;
|
||||||
|
final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public MultiCompanyService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
public MultiCompanyService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
||||||
|
|
@ -74,8 +77,8 @@ public class MultiCompanyService
|
||||||
AccountNotificationHelper accountNotification,
|
AccountNotificationHelper accountNotification,
|
||||||
RelationService relationService,
|
RelationService relationService,
|
||||||
ValidationHelper validationHelper,
|
ValidationHelper validationHelper,
|
||||||
UserRoleVerification userRoleVerification
|
UserRoleVerification userRoleVerification,
|
||||||
) {
|
ClearingMemberCategoryService clearingMemberCategoryService) {
|
||||||
super(kafkaQueue, kafkaProducer);
|
super(kafkaQueue, kafkaProducer);
|
||||||
this.imdgProvider = imdgProvider;
|
this.imdgProvider = imdgProvider;
|
||||||
this.requestHelper = requestHelper.setLogger(log);
|
this.requestHelper = requestHelper.setLogger(log);
|
||||||
|
|
@ -92,6 +95,8 @@ public class MultiCompanyService
|
||||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||||
profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||||
contactImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
contactImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
||||||
|
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||||
|
this.clearingMemberCategoryService = clearingMemberCategoryService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -123,7 +128,7 @@ public class MultiCompanyService
|
||||||
fillCompanyId(req, companyId);
|
fillCompanyId(req, companyId);
|
||||||
} else {
|
} else {
|
||||||
fillCompanyId(req, companyId);
|
fillCompanyId(req, companyId);
|
||||||
companyService.update(req.getCompany());
|
companyService.update(req.getCompany(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
RequestInfoUpdate replyI;
|
RequestInfoUpdate replyI;
|
||||||
|
|
@ -171,6 +176,20 @@ public class MultiCompanyService
|
||||||
validateReply(companyId, "contactUpdate", replyI);
|
validateReply(companyId, "contactUpdate", replyI);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (ClearingMemberCategoryNewRequest partRequest : req.getCategories()) {
|
||||||
|
ClearingMemberCategory existCategory = findCategory(partRequest);
|
||||||
|
if (existCategory == null) {
|
||||||
|
log.trace("For company[{}] do new category", companyId);
|
||||||
|
replyI = clearingMemberCategoryService.clearingMemberCategoryNew(wrapRequest(baseRequest, partRequest, ActionType.NEW));
|
||||||
|
validateReply(companyId, "contactNew", replyI);
|
||||||
|
} else {
|
||||||
|
log.trace("For company[{}] do update category[{}]", companyId, existCategory.getId());
|
||||||
|
ClearingMemberCategoryUpdateRequest partUpdateRequest = createUpdateRequest(existCategory, partRequest);
|
||||||
|
replyI = clearingMemberCategoryService.clearingMemberCategoryUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
||||||
|
validateReply(companyId, "categoryUpdate", replyI);
|
||||||
|
}
|
||||||
|
}
|
||||||
txOk = true;
|
txOk = true;
|
||||||
} catch (ValidationException vex) {
|
} catch (ValidationException vex) {
|
||||||
log.error("For companyId={} error: {}", companyId, ExceptionUtils.getStackTrace(vex));
|
log.error("For companyId={} error: {}", companyId, ExceptionUtils.getStackTrace(vex));
|
||||||
|
|
@ -229,6 +248,17 @@ public class MultiCompanyService
|
||||||
return allCS.iterator().next();
|
return allCS.iterator().next();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ClearingMemberCategory findCategory(ClearingMemberCategoryNewRequest partRequest) {
|
||||||
|
Map<String, Comparable<?>> query = new HashMap<>();
|
||||||
|
query.put("companyId", partRequest.getCompanyId());
|
||||||
|
Collection<ClearingMemberCategory> allCS = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(query);
|
||||||
|
if (allCS.isEmpty())
|
||||||
|
return null;
|
||||||
|
if (allCS.size() > 1)
|
||||||
|
log.warn("Fount {} ClearingMemberCategory by: {}", allCS.size(), query);
|
||||||
|
return allCS.iterator().next();
|
||||||
|
}
|
||||||
|
|
||||||
ProfileDocumentUpdateRequest createUpdateRequest(ProfileDocument existDocument, ProfileDocumentNewRequest partRequest) {
|
ProfileDocumentUpdateRequest createUpdateRequest(ProfileDocument existDocument, ProfileDocumentNewRequest partRequest) {
|
||||||
ProfileDocumentUpdateRequest r = new ProfileDocumentUpdateRequest();
|
ProfileDocumentUpdateRequest r = new ProfileDocumentUpdateRequest();
|
||||||
r.setId(existDocument.getId());
|
r.setId(existDocument.getId());
|
||||||
|
|
@ -264,6 +294,13 @@ public class MultiCompanyService
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ClearingMemberCategoryUpdateRequest createUpdateRequest(ClearingMemberCategory existCategory, ClearingMemberCategoryNewRequest partRequest) {
|
||||||
|
ClearingMemberCategoryUpdateRequest r = new ClearingMemberCategoryUpdateRequest();
|
||||||
|
r.setId(existCategory.getId());
|
||||||
|
r.setClearingMemberCategory(partRequest.getClearingMemberCategory());
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
Long getCompanyIdForCompanySymbols(String uuid, CompanyNewRequest cnr) {
|
Long getCompanyIdForCompanySymbols(String uuid, CompanyNewRequest cnr) {
|
||||||
CompanySymbols companySymbol = null;
|
CompanySymbols companySymbol = null;
|
||||||
if (StringUtils.isNotEmpty(uuid)) {
|
if (StringUtils.isNotEmpty(uuid)) {
|
||||||
|
|
@ -339,5 +376,8 @@ public class MultiCompanyService
|
||||||
for (ContactNewRequest c : req.getContacts()) {
|
for (ContactNewRequest c : req.getContacts()) {
|
||||||
c.setCompanyId(companyId);
|
c.setCompanyId(companyId);
|
||||||
}
|
}
|
||||||
|
for (ClearingMemberCategoryNewRequest c : req.getCategories()) {
|
||||||
|
c.setCompanyId(companyId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.company.SecurityFondGatew
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.*;
|
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.*;
|
||||||
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
||||||
import ru.spcex.platform.enumeration.InstrumentType;
|
import ru.spcex.platform.enumeration.InstrumentType;
|
||||||
|
import ru.spcex.platform.utils.log.ExceptionUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -34,6 +35,7 @@ public class SecurityService {
|
||||||
public void sendRequest(FondListingsRequest request) {
|
public void sendRequest(FondListingsRequest request) {
|
||||||
List<FondSecurity> securityList = request.getSecurities();
|
List<FondSecurity> securityList = request.getSecurities();
|
||||||
for (FondSecurity security : securityList) {
|
for (FondSecurity security : securityList) {
|
||||||
|
log.debug("process security uuid: {}", security.getId());
|
||||||
UUID securityId = security.getId();
|
UUID securityId = security.getId();
|
||||||
log.debug("Grouping by securityId: {}", securityId);
|
log.debug("Grouping by securityId: {}", securityId);
|
||||||
List<IncomeListing> incomeListings = groupByCompanyId(request.getListingList(), securityId);
|
List<IncomeListing> incomeListings = groupByCompanyId(request.getListingList(), securityId);
|
||||||
|
|
@ -48,16 +50,22 @@ public class SecurityService {
|
||||||
map(securityRequestAdapter::toFixedIncomeCashFlowRequest).toList();
|
map(securityRequestAdapter::toFixedIncomeCashFlowRequest).toList();
|
||||||
|
|
||||||
SecurityFondGatewayRequest securityGatewayRequest;
|
SecurityFondGatewayRequest securityGatewayRequest;
|
||||||
if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) {
|
try {
|
||||||
FixedIncomeSecurityNewRequest fixedIncomeSecurityNewRequest = securityRequestAdapter.toFixedIncomeSecurityRequest(security);
|
if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) {
|
||||||
securityGatewayRequest = new FixedIncomeGatewayRequest(fixedIncomeSecurityNewRequest);
|
FixedIncomeSecurityNewRequest fixedIncomeSecurityNewRequest = securityRequestAdapter.toFixedIncomeSecurityRequest(security);
|
||||||
fillRequest(securityGatewayRequest, security, listingRequests, couponPeriodRequests, cashFlowRequests);
|
securityGatewayRequest = new FixedIncomeGatewayRequest(fixedIncomeSecurityNewRequest);
|
||||||
kafkaSender.sendRequestToQueue(Consts.DESTINATION_SECURITY_BOND_GATEWAY, securityGatewayRequest);
|
fillRequest(securityGatewayRequest, security, listingRequests, couponPeriodRequests, cashFlowRequests);
|
||||||
} else {
|
log.debug("Send request to DESTINATION_SECURITY_BOND_GATEWAY");
|
||||||
EquitySecurityNewRequest equitySecurityNewRequest = securityRequestAdapter.toEquitySecurityNewRequest(security);
|
kafkaSender.sendRequestToQueue(Consts.DESTINATION_SECURITY_BOND_GATEWAY, securityGatewayRequest);
|
||||||
securityGatewayRequest = new EquitySecurityGatewayRequest(equitySecurityNewRequest);
|
} else {
|
||||||
fillRequest(securityGatewayRequest, security, listingRequests, couponPeriodRequests, cashFlowRequests);
|
EquitySecurityNewRequest equitySecurityNewRequest = securityRequestAdapter.toEquitySecurityNewRequest(security);
|
||||||
kafkaSender.sendRequestToQueue(Consts.DESTINATION_SECURITY_EQTY_GATEWAY, securityGatewayRequest);
|
securityGatewayRequest = new EquitySecurityGatewayRequest(equitySecurityNewRequest);
|
||||||
|
fillRequest(securityGatewayRequest, security, listingRequests, couponPeriodRequests, cashFlowRequests);
|
||||||
|
log.debug("Send request to DESTINATION_SECURITY_BOND_GATEWAY");
|
||||||
|
kafkaSender.sendRequestToQueue(Consts.DESTINATION_SECURITY_EQTY_GATEWAY, securityGatewayRequest);
|
||||||
|
}
|
||||||
|
} catch (Throwable e) {
|
||||||
|
log.error("{}", ExceptionUtils.getStackTrace(e));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import ru.spcex.clearing.gatewayapi.controller.inbound.request.company.*;
|
||||||
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.company.*;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.*;
|
||||||
import ru.spcex.platform.enumeration.CompanySymbol;
|
import ru.spcex.platform.enumeration.CompanySymbol;
|
||||||
|
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class CompanyRequestAdapter {
|
public class CompanyRequestAdapter {
|
||||||
|
|
@ -19,6 +20,7 @@ public class CompanyRequestAdapter {
|
||||||
companyNewRequest.setClearingCode(company.getClearingCode());
|
companyNewRequest.setClearingCode(company.getClearingCode());
|
||||||
companyNewRequest.setRegistrationCode(company.getRegistrationCode());
|
companyNewRequest.setRegistrationCode(company.getRegistrationCode());
|
||||||
companyNewRequest.setInitiatorCode(company.getInitiatorCode());
|
companyNewRequest.setInitiatorCode(company.getInitiatorCode());
|
||||||
|
companyNewRequest.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||||
return companyNewRequest;
|
return companyNewRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -64,4 +66,10 @@ public class CompanyRequestAdapter {
|
||||||
clientCodeNewRequest.setDepoAccountId(client.getDepoAccountId());
|
clientCodeNewRequest.setDepoAccountId(client.getDepoAccountId());
|
||||||
return clientCodeNewRequest;
|
return clientCodeNewRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ClearingMemberCategoryNewRequest toCategoryRequest(CompanyClearingCategory companyClearingCategory) {
|
||||||
|
ClearingMemberCategoryNewRequest categoryNewRequest = new ClearingMemberCategoryNewRequest();
|
||||||
|
categoryNewRequest.setClearingMemberCategory(companyClearingCategory.getCategory());
|
||||||
|
return categoryNewRequest;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,9 @@ public class SecurityRequestAdapter {
|
||||||
fixedIncomeSecurityNewRequest.setNominalValue(fondSecurity.getNominalValue());
|
fixedIncomeSecurityNewRequest.setNominalValue(fondSecurity.getNominalValue());
|
||||||
fixedIncomeSecurityNewRequest.setNominalCurrency(fondSecurity.getNominalCurrency());
|
fixedIncomeSecurityNewRequest.setNominalCurrency(fondSecurity.getNominalCurrency());
|
||||||
fixedIncomeSecurityNewRequest.setMaturityDate(fondSecurity.getMaturityDate());
|
fixedIncomeSecurityNewRequest.setMaturityDate(fondSecurity.getMaturityDate());
|
||||||
fixedIncomeSecurityNewRequest.setCouponFrequency(fondSecurity.getCouponFrequency().longValue());
|
if (fondSecurity.getCouponFrequency() != null) {
|
||||||
|
fixedIncomeSecurityNewRequest.setCouponFrequency(fondSecurity.getCouponFrequency().longValue());
|
||||||
|
}
|
||||||
fixedIncomeSecurityNewRequest.setShortNameEng(fondSecurity.getShortNameEng());
|
fixedIncomeSecurityNewRequest.setShortNameEng(fondSecurity.getShortNameEng());
|
||||||
fixedIncomeSecurityNewRequest.setFullNameEng(fondSecurity.getFullNameEng());
|
fixedIncomeSecurityNewRequest.setFullNameEng(fondSecurity.getFullNameEng());
|
||||||
fixedIncomeSecurityNewRequest.setWorkflowStatus(fondSecurity.getWorkflowStatus());
|
fixedIncomeSecurityNewRequest.setWorkflowStatus(fondSecurity.getWorkflowStatus());
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,7 @@ import ru.spcex.clearing.gatewayapi.controller.inbound.request.company.*;
|
||||||
import ru.spcex.clearing.gatewayapi.service.adapter.CompanyRequestAdapter;
|
import ru.spcex.clearing.gatewayapi.service.adapter.CompanyRequestAdapter;
|
||||||
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.company.CompanyGatewayRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.*;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -50,6 +47,8 @@ public class CompanyProcessor {
|
||||||
map(companyRequestAdapter::toProfileDocumentRequest).toList();
|
map(companyRequestAdapter::toProfileDocumentRequest).toList();
|
||||||
List<ClientCodeNewRequest> clientCodeNewRequests = clients.stream().
|
List<ClientCodeNewRequest> clientCodeNewRequests = clients.stream().
|
||||||
map(companyRequestAdapter::toClientRequest).toList();
|
map(companyRequestAdapter::toClientRequest).toList();
|
||||||
|
List<ClearingMemberCategoryNewRequest> categories = companyClearingCategories.stream().
|
||||||
|
map(companyRequestAdapter::toCategoryRequest).toList();
|
||||||
|
|
||||||
CompanyGatewayRequest companyGatewayRequest = new CompanyGatewayRequest();
|
CompanyGatewayRequest companyGatewayRequest = new CompanyGatewayRequest();
|
||||||
companyGatewayRequest.setCompany(companyRequestAdapter.toCompanyRequest(memberCompany));
|
companyGatewayRequest.setCompany(companyRequestAdapter.toCompanyRequest(memberCompany));
|
||||||
|
|
@ -62,6 +61,7 @@ public class CompanyProcessor {
|
||||||
companyGatewayRequest.setContacts(contactNewRequests);
|
companyGatewayRequest.setContacts(contactNewRequests);
|
||||||
companyGatewayRequest.setProfileDocuments(profileDocumentNewRequests);
|
companyGatewayRequest.setProfileDocuments(profileDocumentNewRequests);
|
||||||
companyGatewayRequest.setClientCodes(clientCodeNewRequests);
|
companyGatewayRequest.setClientCodes(clientCodeNewRequests);
|
||||||
|
companyGatewayRequest.setCategories(categories);
|
||||||
|
|
||||||
kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_GATEWAY_REQUEST, companyGatewayRequest);
|
kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_GATEWAY_REQUEST, companyGatewayRequest);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package ru.spcex.clearing.securities.service.cud;
|
package ru.spcex.clearing.securities.service.cud;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
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;
|
||||||
|
|
@ -150,6 +151,9 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin
|
||||||
}
|
}
|
||||||
|
|
||||||
<T extends Security> T findSecurityBySecuritySymbol(Imdg<T> imdg, String securitySymbol) {
|
<T extends Security> T findSecurityBySecuritySymbol(Imdg<T> imdg, String securitySymbol) {
|
||||||
|
if (StringUtils.isEmpty(securitySymbol)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
Collection<T> securities = imdg.getCollectionObjectsByFieldValues(
|
Collection<T> securities = imdg.getCollectionObjectsByFieldValues(
|
||||||
Map.of("securitySymbol", securitySymbol)
|
Map.of("securitySymbol", securitySymbol)
|
||||||
);
|
);
|
||||||
|
|
@ -194,21 +198,6 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin
|
||||||
security = fixedIncomeSecurityService.updateFixedIncome0(updateRequest);
|
security = fixedIncomeSecurityService.updateFixedIncome0(updateRequest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (InstrumentType.EQTY.equalsByKey(req.getSecurityType())) {
|
|
||||||
EquitySecurityGatewayRequest equitySecurityGatewayRequest = (EquitySecurityGatewayRequest) req;
|
|
||||||
EquitySecurityNewRequest equityRequest = equitySecurityGatewayRequest.getSecurity();
|
|
||||||
equityRequest.setIssuerId(companyId);
|
|
||||||
log.trace("EquitySecurityNewRequest - FOND");
|
|
||||||
String securitySymbol = equityRequest.getSecuritySymbol();
|
|
||||||
security = findSecurityBySecuritySymbol(equitySecurityImdg, securitySymbol);
|
|
||||||
|
|
||||||
if (security == null) {
|
|
||||||
security = equitySecurityService.newEquity0(equityRequest);
|
|
||||||
} else {
|
|
||||||
EquitySecurityUpdateRequest updateRequest = toUpdateRequest(security, equityRequest);
|
|
||||||
security = equitySecurityService.updateEquity0(updateRequest);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (ValidationException expected) {
|
} catch (ValidationException expected) {
|
||||||
log.warn("Error create or update issue: {}", expected.toString());
|
log.warn("Error create or update issue: {}", expected.toString());
|
||||||
return requestHelper.makeErrorResponse(baseRequest, expected.getEnumMsg());
|
return requestHelper.makeErrorResponse(baseRequest, expected.getEnumMsg());
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ public class CompanyGatewayRequest {
|
||||||
List<ContactNewRequest> contacts = new ArrayList<>();
|
List<ContactNewRequest> contacts = new ArrayList<>();
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
List<ClientCodeNewRequest> clientCodes = new ArrayList<>();
|
List<ClientCodeNewRequest> clientCodes = new ArrayList<>();
|
||||||
|
List<ClearingMemberCategoryNewRequest> categories = new ArrayList<>();
|
||||||
|
|
||||||
public String getUuid() {
|
public String getUuid() {
|
||||||
return uuid;
|
return uuid;
|
||||||
|
|
@ -78,4 +79,12 @@ public class CompanyGatewayRequest {
|
||||||
public void setClientCodes(List<ClientCodeNewRequest> clientCodes) {
|
public void setClientCodes(List<ClientCodeNewRequest> clientCodes) {
|
||||||
this.clientCodes = clientCodes;
|
this.clientCodes = clientCodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<ClearingMemberCategoryNewRequest> getCategories() {
|
||||||
|
return categories;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCategories(List<ClearingMemberCategoryNewRequest> categories) {
|
||||||
|
this.categories = categories;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue