изменил(упростил) логику gatewa

This commit is contained in:
etreshenkov 2023-06-16 14:22:40 +03:00
parent 1cd52cd2c3
commit e704b8d70c
28 changed files with 485 additions and 316 deletions

View file

@ -68,23 +68,21 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
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) {
) {
super(kafkaQueue, kafkaProducer); super(kafkaQueue, kafkaProducer);
this.imdgProvider = imdgProvider; this.imdgProvider = imdgProvider;
this.requestHelper = requestHelper.setLogger(log); this.requestHelper = requestHelper.setLogger(log);
this.idSequence = imdgProvider.getImdgIdGenerator(); this.idSequence = imdgProvider.getImdgIdGenerator();
this.userRoleVerification = userRoleVerification; this.userRoleVerification = userRoleVerification;
userRoleVerification.setRoleForVerification(UserRole.Admin); this.userRoleVerification.setRoleForVerification(UserRole.Admin);
this.validationHelper = validationHelper; this.validationHelper = validationHelper;
this.companyNewRequestValidator = companyNewRequestValidator; this.companyNewRequestValidator = companyNewRequestValidator;
this.companyUpdateRequestValidator = companyUpdateRequestValidator; this.companyUpdateRequestValidator = companyUpdateRequestValidator;
this.companyDeleteRequestValidator = companyDeleteRequestValidator; this.companyDeleteRequestValidator = companyDeleteRequestValidator;
this.companySymbolService = companySymbolService; this.companySymbolService = companySymbolService;
companySymbolService.setCompanyService(this); this.companySymbolService.setCompanyService(this);
this.accountNotification = accountNotification; this.accountNotification = accountNotification;
this.relationService = relationService; this.relationService = relationService;
@ -105,7 +103,6 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
callback(CompanyNewRequest.class) callback(CompanyNewRequest.class)
.setFunction(request -> requestHelper.requestFunction(this::updateCompany, request)) .setFunction(request -> requestHelper.requestFunction(this::updateCompany, request))
.forDestination(Consts.DESTINATION_COMPANY_UPDATE, callbacks::put); .forDestination(Consts.DESTINATION_COMPANY_UPDATE, callbacks::put);
callback(AccountTerminationRequest.class) callback(AccountTerminationRequest.class)
.setFunction(request -> requestHelper.requestFunction(this::finishCompanyTermination, request)) .setFunction(request -> requestHelper.requestFunction(this::finishCompanyTermination, request))
.forDestination(Consts.ACCOUNT_TERMINATION_STEP2, callbacks::put); .forDestination(Consts.ACCOUNT_TERMINATION_STEP2, callbacks::put);

View file

@ -96,14 +96,14 @@ public class MultiCompanyService
@Override @Override
public void afterPropertiesSet() { public void afterPropertiesSet() {
callback(MultiCompanyRequest.class) callback(CompanyGatewayRequest.class)
.setFunction(request -> requestHelper.requestFunction(this::processMultiRequest, request)) .setFunction(request -> requestHelper.requestFunction(this::processMultiRequest, request))
.forDestination(Consts.DESTINATION_COMPANY_MULTIREQUEST, callbacks::put); .forDestination(Consts.DESTINATION_COMPANY_MULTIREQUEST, callbacks::put);
init(); init();
} }
private synchronized RequestInfoUpdate processMultiRequest(BaseRequest<MultiCompanyRequest> baseRequest) { private synchronized RequestInfoUpdate processMultiRequest(BaseRequest<CompanyGatewayRequest> baseRequest) {
MultiCompanyRequest req = baseRequest.getRequestPayload(); CompanyGatewayRequest req = baseRequest.getRequestPayload();
log.debug("company-batch-new request received, BaseRequest.id = {}", baseRequest.getId()); log.debug("company-batch-new request received, BaseRequest.id = {}", baseRequest.getId());
{ // Валидация { // Валидация
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(baseRequest); RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(baseRequest);
@ -312,7 +312,7 @@ public class MultiCompanyService
return r; return r;
} }
void fillCompanyId(MultiCompanyRequest req, Long companyId) { void fillCompanyId(CompanyGatewayRequest req, Long companyId) {
if (req.getCompany() != null) { if (req.getCompany() != null) {
req.getCompany().setId(companyId); req.getCompany().setId(companyId);
} }

View file

@ -11,7 +11,6 @@ import ru.clearing.classes.statics.data.company.CompanySymbols;
import ru.clearing.classes.statics.data.profile.Contact; import ru.clearing.classes.statics.data.profile.Contact;
import ru.clearing.classes.statics.data.profile.ProfileDocument; import ru.clearing.classes.statics.data.profile.ProfileDocument;
import ru.clearing.platform.dictionary.CompanySymbolDictionary; import ru.clearing.platform.dictionary.CompanySymbolDictionary;
import ru.clearing.platform.dictionary.WorkflowStatusDictionary;
import ru.spcex.clearing.company.config.BeanConfiguration; import ru.spcex.clearing.company.config.BeanConfiguration;
import ru.spcex.clearing.company.config.validation.*; import ru.spcex.clearing.company.config.validation.*;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
@ -26,7 +25,6 @@ import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgProvider;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.time.LocalDate; import java.time.LocalDate;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
@ -160,7 +158,7 @@ class MultiCompanyServiceTest {
@Test @Test
void fillCompanyId() { void fillCompanyId() {
{ {
MultiCompanyRequest testReq = new MultiCompanyRequest(); CompanyGatewayRequest testReq = new CompanyGatewayRequest();
testReq.setCompany(new CompanyNewRequest()); testReq.setCompany(new CompanyNewRequest());
testReq.setProfileDocuments(null); testReq.setProfileDocuments(null);
testReq.setCompanySymbols(null); testReq.setCompanySymbols(null);
@ -174,7 +172,7 @@ class MultiCompanyServiceTest {
assertNotNull(testReq.getClientCodes()); assertNotNull(testReq.getClientCodes());
} }
{ {
MultiCompanyRequest testReq = new MultiCompanyRequest(); CompanyGatewayRequest testReq = new CompanyGatewayRequest();
testReq.setCompany(new CompanyNewRequest()); testReq.setCompany(new CompanyNewRequest());
testReq.setCompanyInfo(new CompanyInfoUpdateRequest()); testReq.setCompanyInfo(new CompanyInfoUpdateRequest());
multiCompanyService.fillCompanyId(testReq, COMPANY_ID); multiCompanyService.fillCompanyId(testReq, COMPANY_ID);

View file

@ -1,35 +0,0 @@
package ru.spcex.clearing.dbf.importer.logic.data.tables;
import ru.clearing.classes.statics.data.sdf.SDf09;
import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import java.time.Instant;
@Deprecated
public class SDf09Table extends AbstractTable<SDf09> {
private static final String PREFIX = ETable.DF_09.name();
private static final Class<SDf09> CLAZZ = SDf09.class;
private static final String NAME_OF_HZ_MAP = IMDGDistributedNames.Map_SDf09;
public SDf09Table() {
super(PREFIX, CLAZZ, NAME_OF_HZ_MAP);
}
@Override
public SDf09 getEntity(Object[] entity) {
SDf09 result = new SDf09();
// result.setAccount((String) entity[0]);
// result.setSum((BigDecimal) entity[1]);
// result.setMarket((String) entity[2]);
// result.setType((String) entity[3]);
// result.setNumber((BigDecimal) entity[4]);
// result.setInn((BigDecimal) entity[5]);
// result.setFileName(filename);
result.setGenerationTime(Instant.now());
result.setGenerationId(fileId);
return result;
}
}

View file

@ -1,38 +0,0 @@
package ru.spcex.clearing.dbf.importer.logic.data.tables;
import ru.clearing.classes.statics.data.sdf.SDf16;
import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import java.math.BigDecimal;
import java.time.Instant;
@Deprecated
public class SDf16Table extends AbstractTable<SDf16> {
private static final String PREFIX = ETable.DF_16.name();
private static final Class<SDf16> CLAZZ = SDf16.class;
private static final String NAME_OF_HZ_MAP = IMDGDistributedNames.Map_SDf16;
public SDf16Table() {
super(PREFIX, CLAZZ, NAME_OF_HZ_MAP);
}
@Override
public SDf16 getEntity(Object[] entity) {
SDf16 result = new SDf16();
// result.setDate(TimeUtil.strToInstant((String) entity[0]));
result.setAccount((String) entity[0]);
result.setSum((BigDecimal) entity[1]);
result.setMarket((String) entity[2]);
result.setType((String) entity[3]);
result.setInn((BigDecimal) entity[4]);
result.setBic((BigDecimal) entity[5]);
result.setSpec((String) entity[6]);
result.setNumber((BigDecimal) entity[7]);
result.setFileName(filename);
result.setGenerationTime(Instant.now());
result.setGenerationId(fileId);
return result;
}
}

View file

@ -7,7 +7,7 @@ import ru.spcex.clearing.gatewayapi.logic.Processor;
import ru.spcex.clearing.gatewayapi.logic.Stage; import ru.spcex.clearing.gatewayapi.logic.Stage;
import ru.spcex.clearing.gatewayapi.logic.companies.CompaniesKafkaMessenger; import ru.spcex.clearing.gatewayapi.logic.companies.CompaniesKafkaMessenger;
import ru.spcex.clearing.gatewayapi.logic.companies.CompaniesRequestParam; import ru.spcex.clearing.gatewayapi.logic.companies.CompaniesRequestParam;
import ru.spcex.clearing.gatewayapi.logic.companies.PrepareMemberCompanies; import ru.spcex.clearing.gatewayapi.logic.companies.PrepareMemberCompaniesLegacy;
import ru.spcex.clearing.gatewayapi.logic.listings_fond.*; import ru.spcex.clearing.gatewayapi.logic.listings_fond.*;
import ru.spcex.clearing.gatewayapi.logic.listings_mm.MMListingsRequestParam; import ru.spcex.clearing.gatewayapi.logic.listings_mm.MMListingsRequestParam;
import ru.spcex.clearing.gatewayapi.logic.listings_mm.PrepareExchangeInstruments; import ru.spcex.clearing.gatewayapi.logic.listings_mm.PrepareExchangeInstruments;
@ -50,7 +50,7 @@ public class ProcessorConfiguration {
public Processor<CompaniesRequestParam> companiesRequestProcessor(ImdgProvider imdgProvider, KafkaSender kafkaSender) { public Processor<CompaniesRequestParam> companiesRequestProcessor(ImdgProvider imdgProvider, KafkaSender kafkaSender) {
Processor<CompaniesRequestParam> processor = new Processor<>(); Processor<CompaniesRequestParam> processor = new Processor<>();
List<Stage<CompaniesRequestParam>> pipeline = new ArrayList<>(); List<Stage<CompaniesRequestParam>> pipeline = new ArrayList<>();
pipeline.add(new PrepareMemberCompanies()); pipeline.add(new PrepareMemberCompaniesLegacy());
pipeline.add(new CompaniesKafkaMessenger(kafkaSender, imdgProvider)); pipeline.add(new CompaniesKafkaMessenger(kafkaSender, imdgProvider));
processor.setPipeline(pipeline); processor.setPipeline(pipeline);
return processor; return processor;

View file

@ -14,18 +14,22 @@ import ru.spcex.clearing.gatewayapi.exception.GatewayException;
import ru.spcex.clearing.gatewayapi.logic.ProcessResult; import ru.spcex.clearing.gatewayapi.logic.ProcessResult;
import ru.spcex.clearing.gatewayapi.logic.Processor; import ru.spcex.clearing.gatewayapi.logic.Processor;
import ru.spcex.clearing.gatewayapi.logic.companies.CompaniesRequestParam; import ru.spcex.clearing.gatewayapi.logic.companies.CompaniesRequestParam;
import ru.spcex.clearing.gatewayapi.logic.companies.CompanyProcessor;
import ru.spcex.clearing.gatewayapi.logic.listings_fond.FondListingsRequestParam; import ru.spcex.clearing.gatewayapi.logic.listings_fond.FondListingsRequestParam;
import ru.spcex.clearing.gatewayapi.logic.listings_mm.MMListingsRequestParam; import ru.spcex.clearing.gatewayapi.logic.listings_mm.MMListingsRequestParam;
import ru.spcex.clearing.gatewayapi.request.CommonRequest; import ru.spcex.clearing.gatewayapi.request.CommonRequest;
import ru.spcex.clearing.gatewayapi.request.company.CompaniesRequest; import ru.spcex.clearing.gatewayapi.request.company.CompaniesRequest;
import ru.spcex.clearing.gatewayapi.request.limit.LimitRequest;
import ru.spcex.clearing.gatewayapi.request.listing.fond.FondListingsRequest; import ru.spcex.clearing.gatewayapi.request.listing.fond.FondListingsRequest;
import ru.spcex.clearing.gatewayapi.request.listing.mkr.MMListingsRequest; import ru.spcex.clearing.gatewayapi.request.listing.mkr.MMListingsRequest;
import ru.spcex.clearing.gatewayapi.response.CommonResponse; import ru.spcex.clearing.gatewayapi.response.CommonResponse;
import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.enumeration.IMessageResolver;
import java.time.Instant;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.UUID;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
@Controller @Controller
@ -37,6 +41,7 @@ public class GatewayController {
private final Processor<FondListingsRequestParam> fondListingsRequestProcessor; private final Processor<FondListingsRequestParam> fondListingsRequestProcessor;
private final Processor<MMListingsRequestParam> mmListingsRequestProcessor; private final Processor<MMListingsRequestParam> mmListingsRequestProcessor;
private final Processor<CompaniesRequestParam> companiesRequestProcessor; private final Processor<CompaniesRequestParam> companiesRequestProcessor;
private final CompanyProcessor companiesProcessor;
private final ExecutorService executor; private final ExecutorService executor;
private List<String> validTypes = Arrays.asList("DAY_START", "ON_DEMAND"); private List<String> validTypes = Arrays.asList("DAY_START", "ON_DEMAND");
@ -46,11 +51,12 @@ public class GatewayController {
@Qualifier("fondListingsRequestProcessor") Processor<FondListingsRequestParam> fondListingsRequestProcessor, @Qualifier("fondListingsRequestProcessor") Processor<FondListingsRequestParam> fondListingsRequestProcessor,
@Qualifier("mmListingsRequestProcessor") Processor<MMListingsRequestParam> mmListingsRequestProcessor, @Qualifier("mmListingsRequestProcessor") Processor<MMListingsRequestParam> mmListingsRequestProcessor,
@Qualifier("companiesRequestProcessor") Processor<CompaniesRequestParam> companiesRequestProcessor, @Qualifier("companiesRequestProcessor") Processor<CompaniesRequestParam> companiesRequestProcessor,
@Qualifier("gatewayExecutor") ExecutorService executor) { CompanyProcessor companiesProcessor, @Qualifier("gatewayExecutor") ExecutorService executor) {
this.messageResolver = messageResolver; this.messageResolver = messageResolver;
this.fondListingsRequestProcessor = fondListingsRequestProcessor; this.fondListingsRequestProcessor = fondListingsRequestProcessor;
this.mmListingsRequestProcessor = mmListingsRequestProcessor; this.mmListingsRequestProcessor = mmListingsRequestProcessor;
this.companiesRequestProcessor = companiesRequestProcessor; this.companiesRequestProcessor = companiesRequestProcessor;
this.companiesProcessor = companiesProcessor;
this.executor = executor; this.executor = executor;
} }
@ -122,16 +128,29 @@ public class GatewayController {
@ResponseBody @ResponseBody
public CommonResponse companies(@RequestBody CompaniesRequest request) { public CommonResponse companies(@RequestBody CompaniesRequest request) {
// request.validate(validTypes, Collections.emptyList()); // request.validate(validTypes, Collections.emptyList());
CompaniesRequestParam requestParam = new CompaniesRequestParam(request);
executor.submit(() -> { executor.submit(() -> {
ProcessResult processResult = companiesRequestProcessor.process(requestParam); companiesProcessor.process(request);
if (processResult.getError() != null) {
log.warn("Exception while process listing_mm: {}", processResult.getError());
}
}); });
return createResponse(request, true); return createResponse(request, true);
} }
@ApiOperation(value = "Экспорт участников в клиринговую систему")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "OK", response = CommonResponse.class),
@ApiResponse(code = 400, message = "Ошибка валидации", response = CommonResponse.class)
})
@RequestMapping(
path = "/limits",
method = RequestMethod.POST,
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE
)
@ResponseBody
public CommonResponse limits(@RequestBody LimitRequest request) {
log.debug("Received message: {}", request);
return createResponseByLimit(request.getId());
}
@ResponseStatus(value = HttpStatus.BAD_REQUEST) @ResponseStatus(value = HttpStatus.BAD_REQUEST)
@ResponseBody @ResponseBody
@ExceptionHandler(GatewayException.class) @ExceptionHandler(GatewayException.class)
@ -155,4 +174,12 @@ public class GatewayController {
return commonResponse; return commonResponse;
} }
private CommonResponse createResponseByLimit(UUID uuid) {
CommonResponse commonResponse = new CommonResponse();
commonResponse.setId(uuid);
// commonResponse.setType(request.getType());
commonResponse.setDatetime(Instant.now());
// commonResponse.setSection(request.getSection());
return commonResponse;
}
} }

View file

@ -1,5 +1,6 @@
package ru.spcex.clearing.gatewayapi.logic; package ru.spcex.clearing.gatewayapi.logic;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import ru.spcex.clearing.gatewayapi.errors.GatewayError; import ru.spcex.clearing.gatewayapi.errors.GatewayError;
@ -11,14 +12,14 @@ public class Processor<T> {
private List<Stage<T>> pipeline; private List<Stage<T>> pipeline;
public ProcessResult process(T param) { public ProcessResult process(T param) {
try { for (Stage<T> stage : pipeline) {
for (Stage<T> stage : pipeline) { try {
ProcessResult processResult = stage.process(param); ProcessResult processResult = stage.process(param);
if (processResult != null) return processResult; if (processResult != null) return processResult;
} catch (RuntimeException e) {
log.warn("Stage : {} have not been complete successful: {}", stage.getClass(), ExceptionUtils.getMessage(e));
return new ProcessResult(GatewayError.InternalError);
} }
} catch (RuntimeException e) {
log.error("", e);
return new ProcessResult(GatewayError.InternalError);
} }
return new ProcessResult(); return new ProcessResult();
} }

View file

@ -2,7 +2,6 @@ package ru.spcex.clearing.gatewayapi.logic.companies;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import ru.clearing.classes.statics.data.company.Company;
import ru.spcex.clearing.gatewayapi.logic.ProcessResult; import ru.spcex.clearing.gatewayapi.logic.ProcessResult;
import ru.spcex.clearing.gatewayapi.logic.Stage; import ru.spcex.clearing.gatewayapi.logic.Stage;
import ru.spcex.clearing.gatewayapi.request.company.*; import ru.spcex.clearing.gatewayapi.request.company.*;
@ -25,20 +24,20 @@ public class CompaniesKafkaMessenger extends Stage<CompaniesRequestParam> {
private final Logger log = LoggerFactory.getLogger(getClass()); private final Logger log = LoggerFactory.getLogger(getClass());
private final KafkaSender kafkaSender; private final KafkaSender kafkaSender;
private final Imdg<Company> companyImdg; private final Imdg<ru.clearing.classes.statics.data.company.Company> companyImdg;
public CompaniesKafkaMessenger(KafkaSender kafkaSender, ImdgProvider imdgProvider) { public CompaniesKafkaMessenger(KafkaSender kafkaSender, ImdgProvider imdgProvider) {
this.kafkaSender = kafkaSender; this.kafkaSender = kafkaSender;
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, ru.clearing.classes.statics.data.company.Company.class);
} }
@Override @Override
public ProcessResult process(CompaniesRequestParam param) { public ProcessResult process(CompaniesRequestParam param) {
List<MemberCompany> companyList = param.getMemberCompanyList(); List<Company> companyList = param.getMemberCompanyList();
for (MemberCompany company : companyList) { for (Company company : companyList) {
if (company.isInvalidData()) continue; if (company.isInvalidData()) continue;
MultiCompanyRequest multiCompanyRequest = new MultiCompanyRequest(); CompanyGatewayRequest multiCompanyRequest = new CompanyGatewayRequest();
CompanyNewRequest companyNewRequest = new CompanyNewRequest(); CompanyNewRequest companyNewRequest = new CompanyNewRequest();
companyNewRequest.setShortName(company.getShortName()); companyNewRequest.setShortName(company.getShortName());
@ -51,7 +50,7 @@ public class CompaniesKafkaMessenger extends Stage<CompaniesRequestParam> {
companyNewRequest.setInitiatorCode(company.getInitiatorCode()); companyNewRequest.setInitiatorCode(company.getInitiatorCode());
multiCompanyRequest.setCompany(companyNewRequest); multiCompanyRequest.setCompany(companyNewRequest);
MemberCompanyInfo companyInfo = company.getCompanyInfo(); CompanyInfo companyInfo = company.getCompanyInfo();
CompanyInfoUpdateRequest companyInfoUpdateRequest = new CompanyInfoUpdateRequest(); CompanyInfoUpdateRequest companyInfoUpdateRequest = new CompanyInfoUpdateRequest();
companyInfoUpdateRequest.setCountryCode("RUS"); // todo в текущей версии ТЗ присылается в цифровом обозначении companyInfoUpdateRequest.setCountryCode("RUS"); // todo в текущей версии ТЗ присылается в цифровом обозначении
companyInfoUpdateRequest.setProfessionalSign(companyInfo.getProfessionalSign()); companyInfoUpdateRequest.setProfessionalSign(companyInfo.getProfessionalSign());
@ -60,7 +59,7 @@ public class CompaniesKafkaMessenger extends Stage<CompaniesRequestParam> {
companyInfoUpdateRequest.setResidence(companyInfo.getResidence()); companyInfoUpdateRequest.setResidence(companyInfo.getResidence());
multiCompanyRequest.setCompanyInfo(companyInfoUpdateRequest); multiCompanyRequest.setCompanyInfo(companyInfoUpdateRequest);
for (MemberCompanySymbols companySymbols : company.getMemberCompanySymbolsList()) { for (CompanySymbols companySymbols : company.getMemberCompanySymbolsList()) {
if (companySymbols.isInvalidData()) continue; if (companySymbols.isInvalidData()) continue;
CompanySymbolNewRequest companySymbolNewRequest = new CompanySymbolNewRequest(); CompanySymbolNewRequest companySymbolNewRequest = new CompanySymbolNewRequest();
companySymbolNewRequest.setCompanySymbol(companySymbols.getCompanySymbol()); companySymbolNewRequest.setCompanySymbol(companySymbols.getCompanySymbol());
@ -68,7 +67,7 @@ public class CompaniesKafkaMessenger extends Stage<CompaniesRequestParam> {
multiCompanyRequest.getCompanySymbols().add(companySymbolNewRequest); multiCompanyRequest.getCompanySymbols().add(companySymbolNewRequest);
} }
for (MemberContact contact : company.getContactList()) { for (Contact contact : company.getContactList()) {
if (contact.isInvalidData()) continue; if (contact.isInvalidData()) continue;
ContactNewRequest contactNewRequest = new ContactNewRequest(); ContactNewRequest contactNewRequest = new ContactNewRequest();
contactNewRequest.setContactType(contact.getContactType()); contactNewRequest.setContactType(contact.getContactType());
@ -76,7 +75,7 @@ public class CompaniesKafkaMessenger extends Stage<CompaniesRequestParam> {
multiCompanyRequest.getContacts().add(contactNewRequest); multiCompanyRequest.getContacts().add(contactNewRequest);
} }
for (MemberProfileDocument profileDocument : company.getProfileDocumentList()) { for (ProfileDocument profileDocument : company.getProfileDocumentList()) {
if (profileDocument.isInvalidData()) continue; if (profileDocument.isInvalidData()) continue;
ProfileDocumentNewRequest profileDocumentNewRequest = new ProfileDocumentNewRequest(); ProfileDocumentNewRequest profileDocumentNewRequest = new ProfileDocumentNewRequest();
profileDocumentNewRequest.setDocumentType(profileDocument.getDocumentType()); profileDocumentNewRequest.setDocumentType(profileDocument.getDocumentType());
@ -88,7 +87,7 @@ public class CompaniesKafkaMessenger extends Stage<CompaniesRequestParam> {
multiCompanyRequest.getProfileDocuments().add(profileDocumentNewRequest); multiCompanyRequest.getProfileDocuments().add(profileDocumentNewRequest);
} }
for (MemberClient client : company.getClientList()) { for (Client client : company.getClientList()) {
if (client.isInvalidData()) continue; if (client.isInvalidData()) continue;
if (!company.isAlreadyExist() || !client.isAlreadyExist()) { if (!company.isAlreadyExist() || !client.isAlreadyExist()) {

View file

@ -1,14 +1,14 @@
package ru.spcex.clearing.gatewayapi.logic.companies; package ru.spcex.clearing.gatewayapi.logic.companies;
import ru.spcex.clearing.gatewayapi.request.company.CompaniesRequest; import ru.spcex.clearing.gatewayapi.request.company.CompaniesRequest;
import ru.spcex.clearing.gatewayapi.request.company.MemberCompany; import ru.spcex.clearing.gatewayapi.request.company.Company;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class CompaniesRequestParam { public class CompaniesRequestParam {
private final CompaniesRequest companiesRequest; private final CompaniesRequest companiesRequest;
private List<MemberCompany> memberCompanyList = new ArrayList<>(); private List<Company> memberCompanyList = new ArrayList<>();
public CompaniesRequestParam(CompaniesRequest companiesRequest) { public CompaniesRequestParam(CompaniesRequest companiesRequest) {
this.companiesRequest = companiesRequest; this.companiesRequest = companiesRequest;
@ -18,11 +18,11 @@ public class CompaniesRequestParam {
return companiesRequest; return companiesRequest;
} }
public List<MemberCompany> getMemberCompanyList() { public List<Company> getMemberCompanyList() {
return memberCompanyList; return memberCompanyList;
} }
public void setMemberCompanyList(List<MemberCompany> memberCompanyList) { public void setMemberCompanyList(List<Company> memberCompanyList) {
this.memberCompanyList = memberCompanyList; this.memberCompanyList = memberCompanyList;
} }
} }

View file

@ -0,0 +1,72 @@
package ru.spcex.clearing.gatewayapi.logic.companies;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import ru.spcex.clearing.gatewayapi.request.WithCompanyId;
import ru.spcex.clearing.gatewayapi.request.company.*;
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.CompanyGatewayRequest;
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 java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
@Service
public class CompanyProcessor {
private final Logger log = LoggerFactory.getLogger(getClass());
private final CompanyRequestAdapter companyRequestAdapter;
private final KafkaSender kafkaSender;
public CompanyProcessor(CompanyRequestAdapter companyRequestAdapter,
KafkaSender kafkaSender) {
this.companyRequestAdapter = companyRequestAdapter;
this.kafkaSender = kafkaSender;
}
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);
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();
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);
kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_MULTIREQUEST, companyGatewayRequest);
}
}
private <T extends WithCompanyId> List<T> groupByCompanyId(List<T> listToProcess, UUID companyId) {
return listToProcess.stream().filter(t -> t.getCompanyId().equals(companyId)).collect(Collectors.toList());
}
}

View file

@ -0,0 +1,67 @@
package ru.spcex.clearing.gatewayapi.logic.companies;
import org.springframework.stereotype.Service;
import ru.spcex.clearing.gatewayapi.request.company.*;
import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.company.*;
import ru.spcex.platform.enumeration.CompanySymbol;
@Service
public class CompanyRequestAdapter {
public CompanyNewRequest toCompanyRequest(Company company) {
CompanyNewRequest companyNewRequest = new CompanyNewRequest();
companyNewRequest.setShortName(company.getShortName());
companyNewRequest.setFullName(company.getFullName());
companyNewRequest.setCompanySymbol(CompanySymbol.UUID.getKey());
companyNewRequest.setCompanySymbolValue(company.getId().toString());
companyNewRequest.setTradingCode(company.getTradingCode());
companyNewRequest.setClearingCode(company.getClearingCode());
companyNewRequest.setRegistrationCode(company.getRegistrationCode());
companyNewRequest.setInitiatorCode(company.getInitiatorCode());
return companyNewRequest;
}
public CompanyInfoUpdateRequest toCompanyInfoRequest(CompanyInfo companyInfo) {
CompanyInfoUpdateRequest companyInfoUpdateRequest = new CompanyInfoUpdateRequest();
companyInfoUpdateRequest.setCountryCode("RUS"); // todo в текущей версии ТЗ присылается в цифровом обозначении
companyInfoUpdateRequest.setProfessionalSign(companyInfo.getProfessionalSign());
companyInfoUpdateRequest.setLegalKind(companyInfo.getLegalKind());
companyInfoUpdateRequest.setOrganizationType(companyInfo.getOrganizationType());
companyInfoUpdateRequest.setResidence(companyInfo.getResidence());
return companyInfoUpdateRequest;
}
public CompanySymbolNewRequest toCompanySymbolsRequest(CompanySymbols companySymbols) {
CompanySymbolNewRequest companySymbolNewRequest = new CompanySymbolNewRequest();
companySymbolNewRequest.setCompanySymbol(companySymbols.getCompanySymbol());
companySymbolNewRequest.setCompanySymbolValue(companySymbols.getCompanySymbolValue());
return companySymbolNewRequest;
}
public ContactNewRequest toContactRequest(Contact contact) {
ContactNewRequest contactNewRequest = new ContactNewRequest();
contactNewRequest.setContactType(contact.getContactType());
contactNewRequest.setContactValue(contact.getContactValue());
return contactNewRequest;
}
public ProfileDocumentNewRequest toProfileDocumentRequest(ProfileDocument profileDocument) {
ProfileDocumentNewRequest profileDocumentNewRequest = new ProfileDocumentNewRequest();
profileDocumentNewRequest.setDocumentType(profileDocument.getDocumentType());
profileDocumentNewRequest.setIssueDate(profileDocument.getIssueDate());
profileDocumentNewRequest.setIssuer(profileDocument.getIssuer());
profileDocumentNewRequest.setNumber(profileDocument.getNumber());
profileDocumentNewRequest.setValidToDate(profileDocument.getValidToDate());
profileDocumentNewRequest.setLink(profileDocument.getLink());
return profileDocumentNewRequest;
}
public ClientCodeNewRequest toClientRequest(Client client) {
ClientCodeNewRequest clientCodeNewRequest = new ClientCodeNewRequest();
clientCodeNewRequest.setCode(client.getClientCode());
clientCodeNewRequest.setMoneyAccountId(client.getMoneyAccountId());
clientCodeNewRequest.setDepoAccountId(client.getDepoAccountId());
return clientCodeNewRequest;
}
}

View file

@ -4,6 +4,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import ru.spcex.clearing.gatewayapi.logic.ProcessResult; import ru.spcex.clearing.gatewayapi.logic.ProcessResult;
import ru.spcex.clearing.gatewayapi.logic.Stage; import ru.spcex.clearing.gatewayapi.logic.Stage;
import ru.spcex.clearing.gatewayapi.request.WithCompanyId;
import ru.spcex.clearing.gatewayapi.request.company.*; import ru.spcex.clearing.gatewayapi.request.company.*;
import java.util.HashMap; import java.util.HashMap;
@ -12,16 +13,16 @@ import java.util.Map;
import java.util.UUID; import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> { public class PrepareMemberCompaniesLegacy extends Stage<CompaniesRequestParam> {
private final Logger log = LoggerFactory.getLogger(getClass()); private final Logger log = LoggerFactory.getLogger(getClass());
@Override @Override
public ProcessResult process(CompaniesRequestParam param) { public ProcessResult process(CompaniesRequestParam param) {
CompaniesRequest request = param.getCompaniesRequest(); CompaniesRequest request = param.getCompaniesRequest();
List<MemberCompany> companyList = request.getCompanyList(); List<Company> companyList = request.getCompanyList();
Map<UUID, MemberCompany> companyForUUID = new HashMap<>(); Map<UUID, Company> companyForUUID = new HashMap<>();
for (MemberCompany memberCompany : companyList) { for (Company memberCompany : companyList) {
if (companyForUUID.containsKey(memberCompany.getId())) { if (companyForUUID.containsKey(memberCompany.getId())) {
log.warn("For company.id {} found > 1 element from request, use first", memberCompany.getId()); log.warn("For company.id {} found > 1 element from request, use first", memberCompany.getId());
memberCompany.setInvalidData(true); memberCompany.setInvalidData(true);
@ -30,10 +31,10 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
companyForUUID.put(memberCompany.getId(), memberCompany); companyForUUID.put(memberCompany.getId(), memberCompany);
} }
List<MemberCompanyInfo> companyInfoList = request.getCompanyInfoList(); List<CompanyInfo> companyInfoList = request.getCompanyInfoList();
for (MemberCompanyInfo companyInfo : companyInfoList) { for (CompanyInfo companyInfo : companyInfoList) {
UUID companyInfoUUID = companyInfo.getCompanyId(); UUID companyInfoUUID = companyInfo.getCompanyId();
MemberCompany company = companyForUUID.get(companyInfoUUID); Company company = companyForUUID.get(companyInfoUUID);
if (company == null) { if (company == null) {
log.warn("For company_info.company_id {} not found company, company_info skipped", companyInfoUUID); log.warn("For company_info.company_id {} not found company, company_info skipped", companyInfoUUID);
continue; continue;
@ -41,10 +42,10 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
company.setCompanyInfo(companyInfo); company.setCompanyInfo(companyInfo);
} }
List<MemberCompanySymbols> memberCompanySymbolsList = param.getCompaniesRequest().getMemberCompanySymbolsList(); List<CompanySymbols> memberCompanySymbolsList = param.getCompaniesRequest().getMemberCompanySymbolsList();
for (MemberCompanySymbols memberCompanySymbols : memberCompanySymbolsList) { for (CompanySymbols memberCompanySymbols : memberCompanySymbolsList) {
UUID memberCompanySymbolsUUID = memberCompanySymbols.getCompanyId(); UUID memberCompanySymbolsUUID = memberCompanySymbols.getCompanyId();
MemberCompany memberCompany = companyForUUID.get(memberCompanySymbolsUUID); Company memberCompany = companyForUUID.get(memberCompanySymbolsUUID);
if (memberCompany == null) { if (memberCompany == null) {
log.warn("For company_symbols ({} = {}) not found company, company_symbols skipped", log.warn("For company_symbols ({} = {}) not found company, company_symbols skipped",
memberCompanySymbols.getCompanySymbol(), memberCompanySymbols.getCompanySymbol(),
@ -55,10 +56,10 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
memberCompany.getMemberCompanySymbolsList().add(memberCompanySymbols); memberCompany.getMemberCompanySymbolsList().add(memberCompanySymbols);
} }
List<MemberContact> memberContactList = param.getCompaniesRequest().getContactList(); List<Contact> memberContactList = param.getCompaniesRequest().getContactList();
for (MemberContact memberContact : memberContactList) { for (Contact memberContact : memberContactList) {
UUID memberContactUUID = memberContact.getCompanyId(); UUID memberContactUUID = memberContact.getCompanyId();
MemberCompany memberCompany = companyForUUID.get(memberContactUUID); Company memberCompany = companyForUUID.get(memberContactUUID);
if (memberCompany == null) { if (memberCompany == null) {
log.warn("For contact ({} = {}) not found company, skipped", log.warn("For contact ({} = {}) not found company, skipped",
memberContact.getContactType(), memberContact.getContactType(),
@ -69,10 +70,10 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
memberCompany.getContactList().add(memberContact); memberCompany.getContactList().add(memberContact);
} }
List<MemberCompanyClearingCategory> companyClearingCategoryList = param.getCompaniesRequest().getCompanyClearingCategoryList(); List<CompanyClearingCategory> companyClearingCategoryList = param.getCompaniesRequest().getCompanyClearingCategoryList();
for (MemberCompanyClearingCategory companyClearingCategory : companyClearingCategoryList) { for (CompanyClearingCategory companyClearingCategory : companyClearingCategoryList) {
UUID companyClearingCategoryUUID = companyClearingCategory.getCompanyId(); UUID companyClearingCategoryUUID = companyClearingCategory.getCompanyId();
MemberCompany memberCompany = companyForUUID.get(companyClearingCategoryUUID); Company memberCompany = companyForUUID.get(companyClearingCategoryUUID);
if (memberCompany == null) { if (memberCompany == null) {
log.warn("For company_clearing_category ({}) not found company, skipped", companyClearingCategory.getCategory()); log.warn("For company_clearing_category ({}) not found company, skipped", companyClearingCategory.getCategory());
companyClearingCategory.setInvalidData(true); companyClearingCategory.setInvalidData(true);
@ -81,10 +82,10 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
memberCompany.getCompanyClearingCategoryList().add(companyClearingCategory); memberCompany.getCompanyClearingCategoryList().add(companyClearingCategory);
} }
List<MemberProfileDocument> memberProfileDocumentList = param.getCompaniesRequest().getProfileDocumentList(); List<ProfileDocument> memberProfileDocumentList = param.getCompaniesRequest().getProfileDocumentList();
for (MemberProfileDocument memberProfileDocument : memberProfileDocumentList) { for (ProfileDocument memberProfileDocument : memberProfileDocumentList) {
UUID profileDocumentUUID = memberProfileDocument.getCompanyId(); UUID profileDocumentUUID = memberProfileDocument.getCompanyId();
MemberCompany memberCompany = companyForUUID.get(profileDocumentUUID); Company memberCompany = companyForUUID.get(profileDocumentUUID);
if (memberCompany == null) { if (memberCompany == null) {
log.warn("For profile_document (document_type {}) not found company, skipped", memberProfileDocument.getDocumentType()); log.warn("For profile_document (document_type {}) not found company, skipped", memberProfileDocument.getDocumentType());
memberProfileDocument.setInvalidData(true); memberProfileDocument.setInvalidData(true);
@ -93,10 +94,10 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
memberCompany.getProfileDocumentList().add(memberProfileDocument); memberCompany.getProfileDocumentList().add(memberProfileDocument);
} }
List<MemberClient> memberClientList = param.getCompaniesRequest().getClientList(); List<Client> memberClientList = param.getCompaniesRequest().getClientList();
for (MemberClient memberClient : memberClientList) { for (Client memberClient : memberClientList) {
UUID clientUUID = memberClient.getCompanyId(); UUID clientUUID = memberClient.getCompanyId();
MemberCompany memberCompany = companyForUUID.get(clientUUID); Company memberCompany = companyForUUID.get(clientUUID);
if (memberCompany == null) { if (memberCompany == null) {
log.warn("For client (client_code {}) not found company, skipped", memberClient.getClientCode()); log.warn("For client (client_code {}) not found company, skipped", memberClient.getClientCode());
memberClient.setInvalidData(true); memberClient.setInvalidData(true);
@ -105,7 +106,7 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
memberCompany.getClientList().add(memberClient); memberCompany.getClientList().add(memberClient);
} }
List<MemberCompany> filteredIssuerCompany = companyList.stream() List<Company> filteredIssuerCompany = companyList.stream()
.filter(memberCompany -> !memberCompany.isInvalidData()) .filter(memberCompany -> !memberCompany.isInvalidData())
.collect(Collectors.toList()); .collect(Collectors.toList());
@ -116,4 +117,7 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
return null; return null;
} }
private <T extends WithCompanyId> List<T> groupByCompanyId(List<T> listToProcess, UUID companyId) {
return listToProcess.stream().filter(t -> t.getCompanyId().equals(companyId)).collect(Collectors.toList());
}
} }

View file

@ -3,10 +3,6 @@ package ru.spcex.clearing.gatewayapi.logic.legacy;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import ru.clearing.classes.statics.data.account.*; import ru.clearing.classes.statics.data.account.*;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.company.CompanySymbols;
import ru.clearing.classes.statics.data.profile.Contact;
import ru.clearing.classes.statics.data.profile.ProfileDocument;
import ru.spcex.clearing.gatewayapi.logic.ProcessResult; import ru.spcex.clearing.gatewayapi.logic.ProcessResult;
import ru.spcex.clearing.gatewayapi.logic.Stage; import ru.spcex.clearing.gatewayapi.logic.Stage;
import ru.spcex.clearing.gatewayapi.logic.companies.CompaniesRequestParam; import ru.spcex.clearing.gatewayapi.logic.companies.CompaniesRequestParam;
@ -26,10 +22,10 @@ import java.util.stream.Collectors;
public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> { public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
private final Logger log = LoggerFactory.getLogger(getClass()); private final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<Company> companyImdg; private final Imdg<ru.clearing.classes.statics.data.company.Company> companyImdg;
private final Imdg<CompanySymbols> companySymbolsImdg; private final Imdg<ru.clearing.classes.statics.data.company.CompanySymbols> companySymbolsImdg;
private final Imdg<Contact> contactImdg; private final Imdg<ru.clearing.classes.statics.data.profile.Contact> contactImdg;
private final Imdg<ProfileDocument> profileDocumentImdg; private final Imdg<ru.clearing.classes.statics.data.profile.ProfileDocument> profileDocumentImdg;
private final Imdg<ClientCode> clientCodeImdg; private final Imdg<ClientCode> clientCodeImdg;
private final Imdg<Account> accountImdg; private final Imdg<Account> accountImdg;
private final Imdg<ClearingAccount> clearingAccountImdg; private final Imdg<ClearingAccount> clearingAccountImdg;
@ -37,10 +33,10 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
private final Imdg<DepoAccount> depoAccountImdg; private final Imdg<DepoAccount> depoAccountImdg;
public CheckMemberCompanyExist(ImdgProvider imdgProvider) { public CheckMemberCompanyExist(ImdgProvider imdgProvider) {
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, ru.clearing.classes.statics.data.company.Company.class);
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, ru.clearing.classes.statics.data.company.CompanySymbols.class);
contactImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Contact, Contact.class); contactImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Contact, ru.clearing.classes.statics.data.profile.Contact.class);
profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class); profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ru.clearing.classes.statics.data.profile.ProfileDocument.class);
clientCodeImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClientCode, ClientCode.class); clientCodeImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClientCode, ClientCode.class);
accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class); accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
clearingAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingAccount, ClearingAccount.class); clearingAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingAccount, ClearingAccount.class);
@ -51,13 +47,13 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
@Override @Override
public ProcessResult process(CompaniesRequestParam param) { public ProcessResult process(CompaniesRequestParam param) {
List<MemberCompany> companyList = param.getMemberCompanyList(); List<Company> companyList = param.getMemberCompanyList();
for (MemberCompany company : companyList) { for (Company company : companyList) {
List<MemberCompanySymbols> companySymbolsList = company.getMemberCompanySymbolsList(); List<CompanySymbols> companySymbolsList = company.getMemberCompanySymbolsList();
Map<CompanySymbol, String> companySymbolMap = new HashMap<>(); Map<CompanySymbol, String> companySymbolMap = new HashMap<>();
for (MemberCompanySymbols memberCompanySymbol : companySymbolsList) { for (CompanySymbols memberCompanySymbol : companySymbolsList) {
if ( if (
!memberCompanySymbol.isInvalidData() && !memberCompanySymbol.isInvalidData() &&
!CompanySymbol.CIO.equalsByKey(memberCompanySymbol.getCompanySymbol()) && !CompanySymbol.CIO.equalsByKey(memberCompanySymbol.getCompanySymbol()) &&
@ -76,10 +72,10 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
} }
// Проверяем реквизиты на необходимость обновления // Проверяем реквизиты на необходимость обновления
for (MemberCompanySymbols companySymbols : companySymbolsList) { for (CompanySymbols companySymbols : companySymbolsList) {
if (companySymbols.isInvalidData()) continue; if (companySymbols.isInvalidData()) continue;
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues( Collection<ru.clearing.classes.statics.data.company.CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
Map.of( Map.of(
"companyId", companyId, "companyId", companyId,
"companySymbol", companySymbols.getCompanySymbol() "companySymbol", companySymbols.getCompanySymbol()
@ -88,7 +84,7 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
if (companySymbolsFromImdg.isEmpty()) { if (companySymbolsFromImdg.isEmpty()) {
companySymbols.setAlreadyExist(false); companySymbols.setAlreadyExist(false);
} else { } else {
CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next(); ru.clearing.classes.statics.data.company.CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
if (companySymbolsFromImdg.size() > 1) { if (companySymbolsFromImdg.size() > 1) {
log.warn("For company_symbols ({}={}) found > 1 own company_symbols, " + log.warn("For company_symbols ({}={}) found > 1 own company_symbols, " +
"update first (company_symbols.id = {})", "update first (company_symbols.id = {})",
@ -103,11 +99,11 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
// Проверяем контакты, документы и клиентов на необходимость обновления // Проверяем контакты, документы и клиентов на необходимость обновления
if (company.isAlreadyExist()) { if (company.isAlreadyExist()) {
List<MemberContact> contactList = company.getContactList(); List<Contact> contactList = company.getContactList();
for (MemberContact contact : contactList) { for (Contact contact : contactList) {
if (contact.isInvalidData()) continue; if (contact.isInvalidData()) continue;
Collection<Contact> contactsFromImdg = contactImdg.getCollectionObjectsByFieldValues( Collection<ru.clearing.classes.statics.data.profile.Contact> contactsFromImdg = contactImdg.getCollectionObjectsByFieldValues(
Map.of( Map.of(
"companyId", companyId, "companyId", companyId,
"contactType", contact.getContactType() "contactType", contact.getContactType()
@ -116,7 +112,7 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
if (contactsFromImdg.isEmpty()) { if (contactsFromImdg.isEmpty()) {
contact.setAlreadyExist(false); contact.setAlreadyExist(false);
} else { } else {
Contact contactFromImdg = contactsFromImdg.iterator().next(); ru.clearing.classes.statics.data.profile.Contact contactFromImdg = contactsFromImdg.iterator().next();
if (contactsFromImdg.size() > 1) { if (contactsFromImdg.size() > 1) {
log.warn("Found contact > 1 for contact_type {}, update first (id = {})", log.warn("Found contact > 1 for contact_type {}, update first (id = {})",
contactFromImdg.getContactType(), contactFromImdg.getContactType(),
@ -127,11 +123,11 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
} }
} }
List<MemberProfileDocument> memberProfileDocumentList = company.getProfileDocumentList(); List<ProfileDocument> memberProfileDocumentList = company.getProfileDocumentList();
for (MemberProfileDocument memberProfileDocument : memberProfileDocumentList) { for (ProfileDocument memberProfileDocument : memberProfileDocumentList) {
if (memberProfileDocument.isInvalidData()) continue; if (memberProfileDocument.isInvalidData()) continue;
Collection<ProfileDocument> profileDocumentsFromImdg = profileDocumentImdg.getCollectionObjectsByFieldValues( Collection<ru.clearing.classes.statics.data.profile.ProfileDocument> profileDocumentsFromImdg = profileDocumentImdg.getCollectionObjectsByFieldValues(
Map.of( Map.of(
"companyId", companyId, "companyId", companyId,
"documentType", memberProfileDocument.getDocumentType() "documentType", memberProfileDocument.getDocumentType()
@ -140,7 +136,7 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
if (profileDocumentsFromImdg.isEmpty()) { if (profileDocumentsFromImdg.isEmpty()) {
memberProfileDocument.setAlreadyExist(false); memberProfileDocument.setAlreadyExist(false);
} else { } else {
ProfileDocument profileDocument = profileDocumentsFromImdg.iterator().next(); ru.clearing.classes.statics.data.profile.ProfileDocument profileDocument = profileDocumentsFromImdg.iterator().next();
if (profileDocumentsFromImdg.size() > 1) { if (profileDocumentsFromImdg.size() > 1) {
log.warn("Found profile_document > 1 for document_type {} (company.id {}), update first (id = {})", log.warn("Found profile_document > 1 for document_type {} (company.id {}), update first (id = {})",
memberProfileDocument.getDocumentType(), memberProfileDocument.getDocumentType(),
@ -152,8 +148,8 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
} }
} }
List<MemberClient> memberClientList = company.getClientList(); List<Client> memberClientList = company.getClientList();
for (MemberClient memberClient : memberClientList) { for (Client memberClient : memberClientList) {
if (memberClient.isInvalidData()) continue; if (memberClient.isInvalidData()) continue;
Collection<ClientCode> clientCodesFromImdg = clientCodeImdg.getCollectionObjectsByFieldValues( Collection<ClientCode> clientCodesFromImdg = clientCodeImdg.getCollectionObjectsByFieldValues(
@ -183,7 +179,7 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
} }
List<MemberCompany> filteredMemberCompany = companyList.stream() List<Company> filteredMemberCompany = companyList.stream()
.filter(memberCompany -> !memberCompany.isInvalidData()) .filter(memberCompany -> !memberCompany.isInvalidData())
.collect(Collectors.toList()); .collect(Collectors.toList());
@ -192,7 +188,7 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
return null; return null;
} }
private void fillMemberClientMoneyOrDepoAccountId(MemberCompany company, MemberClient client) { private void fillMemberClientMoneyOrDepoAccountId(Company company, Client client) {
String moneyAccount = client.getMoneyAccount(); String moneyAccount = client.getMoneyAccount();
Collection<Account> accountFromImdg = accountImdg.getCollectionObjectsByFieldValues( Collection<Account> accountFromImdg = accountImdg.getCollectionObjectsByFieldValues(
Map.of("account", moneyAccount) Map.of("account", moneyAccount)
@ -248,14 +244,14 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
private Long getCompanyIdForCompanySymbols(String uuid, Map<CompanySymbol, String> INNorCIO) { private Long getCompanyIdForCompanySymbols(String uuid, Map<CompanySymbol, String> INNorCIO) {
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues( Collection<ru.clearing.classes.statics.data.company.CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
Map.of( Map.of(
"companySymbol", CompanySymbol.UUID.getKey(), "companySymbol", CompanySymbol.UUID.getKey(),
"companySymbolValue", uuid "companySymbolValue", uuid
) )
); );
if (!companySymbolsFromImdg.isEmpty()) { if (!companySymbolsFromImdg.isEmpty()) {
CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next(); ru.clearing.classes.statics.data.company.CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
if (companySymbolsFromImdg.size() > 1) { if (companySymbolsFromImdg.size() > 1) {
log.warn("For UUID found > 1 company_symbols, use first (id = {})", companySymbolFromImdg.getId()); log.warn("For UUID found > 1 company_symbols, use first (id = {})", companySymbolFromImdg.getId());
} }
@ -276,8 +272,8 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
if (companySymbolsFromImdg.size() > 1) if (companySymbolsFromImdg.size() > 1)
log.warn("For {} = {} found > 1 company_symbols, use first", companySymbol.getKey(), companySymbolValue); log.warn("For {} = {} found > 1 company_symbols, use first", companySymbol.getKey(), companySymbolValue);
CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next(); ru.clearing.classes.statics.data.company.CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
Company companyFromImdg = companyImdg.getSingleObjectByID(companySymbolFromImdg.getCompanyId()); ru.clearing.classes.statics.data.company.Company companyFromImdg = companyImdg.getSingleObjectByID(companySymbolFromImdg.getCompanyId());
if (companyFromImdg == null) { if (companyFromImdg == null) {
// Случай, когда реквизиты есть, а компании нет (по сути данных ошибка в мапе) // Случай, когда реквизиты есть, а компании нет (по сути данных ошибка в мапе)

View file

@ -67,9 +67,9 @@ public class ValidateMemberCompanies extends Stage<CompaniesRequestParam> {
@Override @Override
public ProcessResult process(CompaniesRequestParam param) { public ProcessResult process(CompaniesRequestParam param) {
List<MemberCompany> memberCompanyList = param.getMemberCompanyList(); List<Company> memberCompanyList = param.getMemberCompanyList();
for (MemberCompany company : memberCompanyList) { for (Company company : memberCompanyList) {
if (company.isInvalidData()) continue; if (company.isInvalidData()) continue;
if (StringUtils.isEmpty(company.getShortName())) { if (StringUtils.isEmpty(company.getShortName())) {
@ -78,7 +78,7 @@ public class ValidateMemberCompanies extends Stage<CompaniesRequestParam> {
continue; continue;
} }
for (MemberCompanyClearingCategory companyClearingCategory : company.getCompanyClearingCategoryList()) { for (CompanyClearingCategory companyClearingCategory : company.getCompanyClearingCategoryList()) {
String workflowStatusStr = companyClearingCategory.getWorkflowStatus(); String workflowStatusStr = companyClearingCategory.getWorkflowStatus();
ServiceStatus workflowStatus = IEnumKey.getEnumByKey(ServiceStatus.class, workflowStatusStr); ServiceStatus workflowStatus = IEnumKey.getEnumByKey(ServiceStatus.class, workflowStatusStr);
if (!validWorkflowStatus.contains(workflowStatus)) { if (!validWorkflowStatus.contains(workflowStatus)) {
@ -94,7 +94,7 @@ public class ValidateMemberCompanies extends Stage<CompaniesRequestParam> {
} }
} }
for (MemberCompanySymbols companySymbols : company.getMemberCompanySymbolsList()) { for (CompanySymbols companySymbols : company.getMemberCompanySymbolsList()) {
String companySymbolStr = companySymbols.getCompanySymbol(); String companySymbolStr = companySymbols.getCompanySymbol();
CompanySymbol companySymbol = IEnumKey.getEnumByKey(CompanySymbol.class, companySymbolStr); CompanySymbol companySymbol = IEnumKey.getEnumByKey(CompanySymbol.class, companySymbolStr);
if (!validCompanySymbols.contains(companySymbol)) { if (!validCompanySymbols.contains(companySymbol)) {
@ -108,7 +108,7 @@ public class ValidateMemberCompanies extends Stage<CompaniesRequestParam> {
} }
} }
for (MemberContact contact : company.getContactList()) { for (Contact contact : company.getContactList()) {
String contactTypeStr = contact.getContactType(); String contactTypeStr = contact.getContactType();
ContactTypes contactType = IEnumKey.getEnumByKey(ContactTypes.class, contactTypeStr); ContactTypes contactType = IEnumKey.getEnumByKey(ContactTypes.class, contactTypeStr);
@ -124,7 +124,7 @@ public class ValidateMemberCompanies extends Stage<CompaniesRequestParam> {
} }
for (MemberProfileDocument memberProfileDocument : company.getProfileDocumentList()) { for (ProfileDocument memberProfileDocument : company.getProfileDocumentList()) {
String documentTypeStr = memberProfileDocument.getDocumentType(); String documentTypeStr = memberProfileDocument.getDocumentType();
DocumentTypes documentType = IEnumKey.getEnumByKey(DocumentTypes.class, documentTypeStr); DocumentTypes documentType = IEnumKey.getEnumByKey(DocumentTypes.class, documentTypeStr);
if (!validDocumentTypes.contains(documentType)) { if (!validDocumentTypes.contains(documentType)) {
@ -153,7 +153,7 @@ public class ValidateMemberCompanies extends Stage<CompaniesRequestParam> {
} }
} }
for (MemberClient memberClient : company.getClientList()) { for (Client memberClient : company.getClientList()) {
if (StringUtils.isEmpty(memberClient.getClientCode())) { if (StringUtils.isEmpty(memberClient.getClientCode())) {
log.warn("client_code is null or empty for client, company.id {}", company.getId()); log.warn("client_code is null or empty for client, company.id {}", company.getId());
memberClient.setInvalidData(true); memberClient.setInvalidData(true);

View file

@ -0,0 +1,7 @@
package ru.spcex.clearing.gatewayapi.request;
import java.util.UUID;
public interface WithCompanyId {
UUID getCompanyId();
}

View file

@ -3,11 +3,12 @@ package ru.spcex.clearing.gatewayapi.request.company;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.gatewayapi.request.WithCompanyId;
import ru.spcex.clearing.gatewayapi.request.WithMapId; import ru.spcex.clearing.gatewayapi.request.WithMapId;
import java.util.UUID; import java.util.UUID;
public class MemberClient extends WithMapId { public class Client extends WithMapId implements WithCompanyId {
@JsonProperty("company_id") @JsonProperty("company_id")
@ApiModelProperty( @ApiModelProperty(
value = "Ссылка на company", value = "Ссылка на company",
@ -44,6 +45,7 @@ public class MemberClient extends WithMapId {
@JsonIgnore @JsonIgnore
private Long depoAccountId = null; private Long depoAccountId = null;
@Override
public UUID getCompanyId() { public UUID getCompanyId() {
return companyId; return companyId;
} }

View file

@ -10,86 +10,86 @@ import java.util.List;
public class CompaniesRequest extends CommonRequest { public class CompaniesRequest extends CommonRequest {
@JsonProperty("company") @JsonProperty("company")
@ApiModelProperty(value = "Список компаний") @ApiModelProperty(value = "Список компаний")
private List<MemberCompany> companyList = new ArrayList<>(); private List<Company> companyList = new ArrayList<>();
@JsonProperty("company_info") @JsonProperty("company_info")
@ApiModelProperty(value = "Список профилей участников") @ApiModelProperty(value = "Список профилей участников")
private List<MemberCompanyInfo> companyInfoList = new ArrayList<>(); private List<CompanyInfo> companyInfoList = new ArrayList<>();
@JsonProperty("company_clearing_category") @JsonProperty("company_clearing_category")
@ApiModelProperty(value = "Список категорий участников клиринга") @ApiModelProperty(value = "Список категорий участников клиринга")
private List<MemberCompanyClearingCategory> companyClearingCategoryList = new ArrayList<>(); private List<CompanyClearingCategory> companyClearingCategoryList = new ArrayList<>();
@JsonProperty("company_symbols") @JsonProperty("company_symbols")
@ApiModelProperty(value = "Список реквизитов участников") @ApiModelProperty(value = "Список реквизитов участников")
private List<MemberCompanySymbols> memberCompanySymbolsList = new ArrayList<>(); private List<CompanySymbols> memberCompanySymbolsList = new ArrayList<>();
@JsonProperty("contact") @JsonProperty("contact")
@ApiModelProperty(value = "Список контактов участников") @ApiModelProperty(value = "Список контактов участников")
private List<MemberContact> contactList = new ArrayList<>(); private List<Contact> contactList = new ArrayList<>();
@JsonProperty("profile_document") @JsonProperty("profile_document")
@ApiModelProperty(value = "Список документов участников") @ApiModelProperty(value = "Список документов участников")
private List<MemberProfileDocument> memberProfileDocumentList = new ArrayList<>(); private List<ProfileDocument> memberProfileDocumentList = new ArrayList<>();
@JsonProperty("client") @JsonProperty("client")
@ApiModelProperty(value = "Список клиентов участников") @ApiModelProperty(value = "Список клиентов участников")
private List<MemberClient> memberClientList = new ArrayList<>(); private List<Client> memberClientList = new ArrayList<>();
public List<MemberCompany> getCompanyList() { public List<Company> getCompanyList() {
return companyList; return companyList;
} }
public void setCompanyList(List<MemberCompany> companyList) { public void setCompanyList(List<Company> companyList) {
this.companyList = companyList; this.companyList = companyList;
} }
public List<MemberCompanyInfo> getCompanyInfoList() { public List<CompanyInfo> getCompanyInfoList() {
return companyInfoList; return companyInfoList;
} }
public void setCompanyInfoList(List<MemberCompanyInfo> companyInfoList) { public void setCompanyInfoList(List<CompanyInfo> companyInfoList) {
this.companyInfoList = companyInfoList; this.companyInfoList = companyInfoList;
} }
public List<MemberCompanyClearingCategory> getCompanyClearingCategoryList() { public List<CompanyClearingCategory> getCompanyClearingCategoryList() {
return companyClearingCategoryList; return companyClearingCategoryList;
} }
public void setCompanyClearingCategoryList(List<MemberCompanyClearingCategory> companyClearingCategoryList) { public void setCompanyClearingCategoryList(List<CompanyClearingCategory> companyClearingCategoryList) {
this.companyClearingCategoryList = companyClearingCategoryList; this.companyClearingCategoryList = companyClearingCategoryList;
} }
public List<MemberCompanySymbols> getMemberCompanySymbolsList() { public List<CompanySymbols> getMemberCompanySymbolsList() {
return memberCompanySymbolsList; return memberCompanySymbolsList;
} }
public void setMemberCompanySymbolsList(List<MemberCompanySymbols> memberCompanySymbolsList) { public void setMemberCompanySymbolsList(List<CompanySymbols> memberCompanySymbolsList) {
this.memberCompanySymbolsList = memberCompanySymbolsList; this.memberCompanySymbolsList = memberCompanySymbolsList;
} }
public List<MemberContact> getContactList() { public List<Contact> getContactList() {
return contactList; return contactList;
} }
public void setContactList(List<MemberContact> contactList) { public void setContactList(List<Contact> contactList) {
this.contactList = contactList; this.contactList = contactList;
} }
public List<MemberProfileDocument> getProfileDocumentList() { public List<ProfileDocument> getProfileDocumentList() {
return memberProfileDocumentList; return memberProfileDocumentList;
} }
public void setProfileDocumentList(List<MemberProfileDocument> memberProfileDocumentList) { public void setProfileDocumentList(List<ProfileDocument> memberProfileDocumentList) {
this.memberProfileDocumentList = memberProfileDocumentList; this.memberProfileDocumentList = memberProfileDocumentList;
} }
public List<MemberClient> getClientList() { public List<Client> getClientList() {
return memberClientList; return memberClientList;
} }
public void setClientList(List<MemberClient> memberClientList) { public void setClientList(List<Client> memberClientList) {
this.memberClientList = memberClientList; this.memberClientList = memberClientList;
} }
} }

View file

@ -12,7 +12,7 @@ import java.util.UUID;
/** /**
* Компания участник * Компания участник
*/ */
public class MemberCompany extends WithMapId { public class Company extends WithMapId {
@JsonProperty("id") @JsonProperty("id")
@ApiModelProperty( @ApiModelProperty(
value = "Идентификатор участника", value = "Идентификатор участника",
@ -65,27 +65,27 @@ public class MemberCompany extends WithMapId {
@ApiModelProperty(hidden = true) @ApiModelProperty(hidden = true)
@JsonIgnore @JsonIgnore
private MemberCompanyInfo companyInfo; private CompanyInfo companyInfo;
@ApiModelProperty(hidden = true) @ApiModelProperty(hidden = true)
@JsonIgnore @JsonIgnore
private List<MemberCompanyClearingCategory> companyClearingCategoryList = new ArrayList<>(); private List<CompanyClearingCategory> companyClearingCategoryList = new ArrayList<>();
@ApiModelProperty(hidden = true) @ApiModelProperty(hidden = true)
@JsonIgnore @JsonIgnore
private List<MemberCompanySymbols> memberCompanySymbolsList = new ArrayList<>(); private List<CompanySymbols> memberCompanySymbolsList = new ArrayList<>();
@ApiModelProperty(hidden = true) @ApiModelProperty(hidden = true)
@JsonIgnore @JsonIgnore
private List<MemberContact> contactList = new ArrayList<>(); private List<Contact> contactList = new ArrayList<>();
@ApiModelProperty(hidden = true) @ApiModelProperty(hidden = true)
@JsonIgnore @JsonIgnore
private List<MemberProfileDocument> memberProfileDocumentList = new ArrayList<>(); private List<ProfileDocument> memberProfileDocumentList = new ArrayList<>();
@ApiModelProperty(hidden = true) @ApiModelProperty(hidden = true)
@JsonIgnore @JsonIgnore
private List<MemberClient> memberClientList = new ArrayList<>(); private List<Client> memberClientList = new ArrayList<>();
public UUID getId() { public UUID getId() {
@ -144,51 +144,51 @@ public class MemberCompany extends WithMapId {
this.initiatorCode = initiatorCode; this.initiatorCode = initiatorCode;
} }
public MemberCompanyInfo getCompanyInfo() { public CompanyInfo getCompanyInfo() {
return companyInfo; return companyInfo;
} }
public void setCompanyInfo(MemberCompanyInfo companyInfo) { public void setCompanyInfo(CompanyInfo companyInfo) {
this.companyInfo = companyInfo; this.companyInfo = companyInfo;
} }
public List<MemberCompanyClearingCategory> getCompanyClearingCategoryList() { public List<CompanyClearingCategory> getCompanyClearingCategoryList() {
return companyClearingCategoryList; return companyClearingCategoryList;
} }
public void setCompanyClearingCategoryList(List<MemberCompanyClearingCategory> companyClearingCategoryList) { public void setCompanyClearingCategoryList(List<CompanyClearingCategory> companyClearingCategoryList) {
this.companyClearingCategoryList = companyClearingCategoryList; this.companyClearingCategoryList = companyClearingCategoryList;
} }
public List<MemberCompanySymbols> getMemberCompanySymbolsList() { public List<CompanySymbols> getMemberCompanySymbolsList() {
return memberCompanySymbolsList; return memberCompanySymbolsList;
} }
public void setMemberCompanySymbolsList(List<MemberCompanySymbols> memberCompanySymbolsList) { public void setMemberCompanySymbolsList(List<CompanySymbols> memberCompanySymbolsList) {
this.memberCompanySymbolsList = memberCompanySymbolsList; this.memberCompanySymbolsList = memberCompanySymbolsList;
} }
public List<MemberContact> getContactList() { public List<Contact> getContactList() {
return contactList; return contactList;
} }
public void setContactList(List<MemberContact> contactList) { public void setContactList(List<Contact> contactList) {
this.contactList = contactList; this.contactList = contactList;
} }
public List<MemberProfileDocument> getProfileDocumentList() { public List<ProfileDocument> getProfileDocumentList() {
return memberProfileDocumentList; return memberProfileDocumentList;
} }
public void setProfileDocumentList(List<MemberProfileDocument> memberProfileDocumentList) { public void setProfileDocumentList(List<ProfileDocument> memberProfileDocumentList) {
this.memberProfileDocumentList = memberProfileDocumentList; this.memberProfileDocumentList = memberProfileDocumentList;
} }
public List<MemberClient> getClientList() { public List<Client> getClientList() {
return memberClientList; return memberClientList;
} }
public void setClientList(List<MemberClient> memberClientList) { public void setClientList(List<Client> memberClientList) {
this.memberClientList = memberClientList; this.memberClientList = memberClientList;
} }
} }

View file

@ -2,11 +2,12 @@ package ru.spcex.clearing.gatewayapi.request.company;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.gatewayapi.request.WithCompanyId;
import ru.spcex.clearing.gatewayapi.request.WithMapId; import ru.spcex.clearing.gatewayapi.request.WithMapId;
import java.util.UUID; import java.util.UUID;
public class MemberCompanyClearingCategory extends WithMapId { public class CompanyClearingCategory extends WithMapId implements WithCompanyId {
@JsonProperty("company_id") @JsonProperty("company_id")
@ApiModelProperty( @ApiModelProperty(
value = "Ссылка на company", value = "Ссылка на company",
@ -45,6 +46,7 @@ public class MemberCompanyClearingCategory extends WithMapId {
private String workflowStatus; private String workflowStatus;
@Override
public UUID getCompanyId() { public UUID getCompanyId() {
return companyId; return companyId;
} }

View file

@ -2,10 +2,11 @@ package ru.spcex.clearing.gatewayapi.request.company;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.gatewayapi.request.WithCompanyId;
import java.util.UUID; import java.util.UUID;
public class MemberCompanyInfo { public class CompanyInfo implements WithCompanyId {
@JsonProperty("company_id") @JsonProperty("company_id")
@ApiModelProperty( @ApiModelProperty(
value = "Ссылка на company", value = "Ссылка на company",
@ -56,7 +57,7 @@ public class MemberCompanyInfo {
) )
private String residence; private String residence;
@Override
public UUID getCompanyId() { public UUID getCompanyId() {
return companyId; return companyId;
} }

View file

@ -2,11 +2,12 @@ package ru.spcex.clearing.gatewayapi.request.company;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.gatewayapi.request.WithCompanyId;
import ru.spcex.clearing.gatewayapi.request.WithMapId; import ru.spcex.clearing.gatewayapi.request.WithMapId;
import java.util.UUID; import java.util.UUID;
public class MemberCompanySymbols extends WithMapId { public class CompanySymbols extends WithMapId implements WithCompanyId {
@JsonProperty("company_id") @JsonProperty("company_id")
@ApiModelProperty( @ApiModelProperty(
value = "Ссылка на company", value = "Ссылка на company",
@ -42,7 +43,7 @@ public class MemberCompanySymbols extends WithMapId {
) )
private String companySymbolValue; private String companySymbolValue;
@Override
public UUID getCompanyId() { public UUID getCompanyId() {
return companyId; return companyId;
} }

View file

@ -2,11 +2,12 @@ package ru.spcex.clearing.gatewayapi.request.company;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.gatewayapi.request.WithCompanyId;
import ru.spcex.clearing.gatewayapi.request.WithMapId; import ru.spcex.clearing.gatewayapi.request.WithMapId;
import java.util.UUID; import java.util.UUID;
public class MemberContact extends WithMapId { public class Contact extends WithMapId implements WithCompanyId {
@JsonProperty("company_id") @JsonProperty("company_id")
@ApiModelProperty( @ApiModelProperty(
value = "Ссылка на компанию", value = "Ссылка на компанию",
@ -34,7 +35,7 @@ public class MemberContact extends WithMapId {
) )
private String contactValue; private String contactValue;
@Override
public UUID getCompanyId() { public UUID getCompanyId() {
return companyId; return companyId;
} }

View file

@ -4,12 +4,13 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.gatewayapi.config.deserializers.LocalDateDeserializer; import ru.spcex.clearing.gatewayapi.config.deserializers.LocalDateDeserializer;
import ru.spcex.clearing.gatewayapi.request.WithCompanyId;
import ru.spcex.clearing.gatewayapi.request.WithMapId; import ru.spcex.clearing.gatewayapi.request.WithMapId;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.UUID; import java.util.UUID;
public class MemberProfileDocument extends WithMapId { public class ProfileDocument extends WithMapId implements WithCompanyId {
@JsonProperty("company_id") @JsonProperty("company_id")
@ApiModelProperty( @ApiModelProperty(
value = "Ссылка на company", value = "Ссылка на company",
@ -73,6 +74,7 @@ public class MemberProfileDocument extends WithMapId {
) )
private String link; private String link;
@Override
public UUID getCompanyId() { public UUID getCompanyId() {
return companyId; return companyId;
} }

View file

@ -0,0 +1,58 @@
package ru.spcex.clearing.gatewayapi.request.limit;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.UUID;
public class LimitRequest {
@JsonProperty("result")
private String result;
@JsonProperty("description")
private String description;
@JsonProperty("id")
private UUID id;
@JsonProperty("log_file")
private String logFile;
@JsonProperty("error_file")
private String errorFile;
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public String getLogFile() {
return logFile;
}
public void setLogFile(String logFile) {
this.logFile = logFile;
}
public String getErrorFile() {
return errorFile;
}
public void setErrorFile(String errorFile) {
this.errorFile = errorFile;
}
}

View file

@ -186,7 +186,7 @@ public class ExchangeInstrument extends WithMapId {
value = "Номер принятия Решения об утверждении Спецификации биржевого инструмента", value = "Номер принятия Решения об утверждении Спецификации биржевого инструмента",
example = "070323-01" example = "070323-01"
) )
private LocalDate specificationApprovalNumber; private String specificationApprovalNumber;
@JsonProperty("workflow_status") @JsonProperty("workflow_status")
@ApiModelProperty( @ApiModelProperty(
@ -332,11 +332,11 @@ public class ExchangeInstrument extends WithMapId {
this.specificationApprovalDate = specificationApprovalDate; this.specificationApprovalDate = specificationApprovalDate;
} }
public LocalDate getSpecificationApprovalNumber() { public String getSpecificationApprovalNumber() {
return specificationApprovalNumber; return specificationApprovalNumber;
} }
public void setSpecificationApprovalNumber(LocalDate specificationApprovalNumber) { public void setSpecificationApprovalNumber(String specificationApprovalNumber) {
this.specificationApprovalNumber = specificationApprovalNumber; this.specificationApprovalNumber = specificationApprovalNumber;
} }

View file

@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.http.*; import org.springframework.http.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import ru.spcex.clearing.gatewayapi.config.GatewayApiSettings; import ru.spcex.clearing.gatewayapi.config.GatewayApiSettings;
import ru.spcex.clearing.gatewayapi.config.InboundServerSettings; import ru.spcex.clearing.gatewayapi.config.InboundServerSettings;
@ -100,9 +101,14 @@ public class GatewayService extends QueueConsumer implements InitializingBean {
inboundRequest.setContent(content); inboundRequest.setContent(content);
HttpEntity<InboundRequest> request = new HttpEntity<>(inboundRequest, httpHeaders); HttpEntity<InboundRequest> request = new HttpEntity<>(inboundRequest, httpHeaders);
ResponseEntity<Map> response = restTemplate.exchange(url, HttpMethod.POST, request, Map.class); try {
Map bodyResponse = response.getBody(); ResponseEntity<Map> response = restTemplate.exchange(url, HttpMethod.POST, request, Map.class);
log.debug("Limit request complete, response: {}", bodyResponse); Map bodyResponse = response.getBody();
log.debug("Limit request complete, response: {}", bodyResponse);
} catch (HttpClientErrorException httpClientErrorException) {
//ignore
// log.warn("");
}
} }
public void requestOnDemandSecurity(BaseRequest<GatewayTaskRequest> userRequest) { public void requestOnDemandSecurity(BaseRequest<GatewayTaskRequest> userRequest) {
@ -128,6 +134,7 @@ public class GatewayService extends QueueConsumer implements InitializingBean {
Map bodyResponse = response.getBody(); Map bodyResponse = response.getBody();
log.debug("LOSC task 1/2 complete (FOND section), response: {}", bodyResponse); log.debug("LOSC task 1/2 complete (FOND section), response: {}", bodyResponse);
inboundRequest.setId(UUID.randomUUID());
inboundRequest.setSection(Section.MKR.getKey()); inboundRequest.setSection(Section.MKR.getKey());
request = new HttpEntity<>(inboundRequest, httpHeaders); request = new HttpEntity<>(inboundRequest, httpHeaders);
response = restTemplate.exchange(url, HttpMethod.POST, request, Map.class); response = restTemplate.exchange(url, HttpMethod.POST, request, Map.class);

View file

@ -1,81 +1,81 @@
package ru.spcex.clearing.platform.messaging.domain.cud.company; package ru.spcex.clearing.platform.messaging.domain.cud.company;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class MultiCompanyRequest { public class CompanyGatewayRequest {
@JsonProperty @JsonProperty
String uuid; String uuid;
@JsonProperty @JsonProperty
CompanyNewRequest company; CompanyNewRequest company;
@JsonProperty @JsonProperty
CompanyInfoUpdateRequest companyInfo; CompanyInfoUpdateRequest companyInfo;
@JsonProperty @JsonProperty
List<ProfileDocumentNewRequest> profileDocuments = new ArrayList<>(); List<ProfileDocumentNewRequest> profileDocuments = new ArrayList<>();
@JsonProperty @JsonProperty
List<CompanySymbolNewRequest> companySymbols = new ArrayList<>(); List<CompanySymbolNewRequest> companySymbols = new ArrayList<>();
@JsonProperty @JsonProperty
List<ContactNewRequest> contacts = new ArrayList<>(); List<ContactNewRequest> contacts = new ArrayList<>();
@JsonProperty @JsonProperty
List<ClientCodeNewRequest> clientCodes = new ArrayList<>(); List<ClientCodeNewRequest> clientCodes = new ArrayList<>();
public String getUuid() { public String getUuid() {
return uuid; return uuid;
} }
public void setUuid(String uuid) { public void setUuid(String uuid) {
this.uuid = uuid; this.uuid = uuid;
} }
public CompanyNewRequest getCompany() { public CompanyNewRequest getCompany() {
return company; return company;
} }
public void setCompany(CompanyNewRequest company) { public void setCompany(CompanyNewRequest company) {
this.company = company; this.company = company;
} }
public CompanyInfoUpdateRequest getCompanyInfo() { public CompanyInfoUpdateRequest getCompanyInfo() {
return companyInfo; return companyInfo;
} }
public void setCompanyInfo(CompanyInfoUpdateRequest companyInfo) { public void setCompanyInfo(CompanyInfoUpdateRequest companyInfo) {
this.companyInfo = companyInfo; this.companyInfo = companyInfo;
} }
public List<ProfileDocumentNewRequest> getProfileDocuments() { public List<ProfileDocumentNewRequest> getProfileDocuments() {
return profileDocuments; return profileDocuments;
} }
public void setProfileDocuments(List<ProfileDocumentNewRequest> profileDocuments) { public void setProfileDocuments(List<ProfileDocumentNewRequest> profileDocuments) {
this.profileDocuments = profileDocuments; this.profileDocuments = profileDocuments;
} }
public List<CompanySymbolNewRequest> getCompanySymbols() { public List<CompanySymbolNewRequest> getCompanySymbols() {
return companySymbols; return companySymbols;
} }
public void setCompanySymbols(List<CompanySymbolNewRequest> companySymbols) { public void setCompanySymbols(List<CompanySymbolNewRequest> companySymbols) {
this.companySymbols = companySymbols; this.companySymbols = companySymbols;
} }
public List<ContactNewRequest> getContacts() { public List<ContactNewRequest> getContacts() {
return contacts; return contacts;
} }
public void setContacts(List<ContactNewRequest> contacts) { public void setContacts(List<ContactNewRequest> contacts) {
this.contacts = contacts; this.contacts = contacts;
} }
public List<ClientCodeNewRequest> getClientCodes() { public List<ClientCodeNewRequest> getClientCodes() {
return clientCodes; return clientCodes;
} }
public void setClientCodes(List<ClientCodeNewRequest> clientCodes) { public void setClientCodes(List<ClientCodeNewRequest> clientCodes) {
this.clientCodes = clientCodes; this.clientCodes = clientCodes;
} }
} }