изменил(упростил) логику 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,
@Qualifier("CompanyDeleteRequestValidator")
Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator,
CompanySymbolService companySymbolService,
AccountNotificationHelper accountNotification,
RelationService relationService
) {
RelationService relationService) {
super(kafkaQueue, kafkaProducer);
this.imdgProvider = imdgProvider;
this.requestHelper = requestHelper.setLogger(log);
this.idSequence = imdgProvider.getImdgIdGenerator();
this.userRoleVerification = userRoleVerification;
userRoleVerification.setRoleForVerification(UserRole.Admin);
this.userRoleVerification.setRoleForVerification(UserRole.Admin);
this.validationHelper = validationHelper;
this.companyNewRequestValidator = companyNewRequestValidator;
this.companyUpdateRequestValidator = companyUpdateRequestValidator;
this.companyDeleteRequestValidator = companyDeleteRequestValidator;
this.companySymbolService = companySymbolService;
companySymbolService.setCompanyService(this);
this.companySymbolService.setCompanyService(this);
this.accountNotification = accountNotification;
this.relationService = relationService;
@ -105,7 +103,6 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
callback(CompanyNewRequest.class)
.setFunction(request -> requestHelper.requestFunction(this::updateCompany, request))
.forDestination(Consts.DESTINATION_COMPANY_UPDATE, callbacks::put);
callback(AccountTerminationRequest.class)
.setFunction(request -> requestHelper.requestFunction(this::finishCompanyTermination, request))
.forDestination(Consts.ACCOUNT_TERMINATION_STEP2, callbacks::put);

View file

@ -96,14 +96,14 @@ public class MultiCompanyService
@Override
public void afterPropertiesSet() {
callback(MultiCompanyRequest.class)
callback(CompanyGatewayRequest.class)
.setFunction(request -> requestHelper.requestFunction(this::processMultiRequest, request))
.forDestination(Consts.DESTINATION_COMPANY_MULTIREQUEST, callbacks::put);
init();
}
private synchronized RequestInfoUpdate processMultiRequest(BaseRequest<MultiCompanyRequest> baseRequest) {
MultiCompanyRequest req = baseRequest.getRequestPayload();
private synchronized RequestInfoUpdate processMultiRequest(BaseRequest<CompanyGatewayRequest> baseRequest) {
CompanyGatewayRequest req = baseRequest.getRequestPayload();
log.debug("company-batch-new request received, BaseRequest.id = {}", baseRequest.getId());
{ // Валидация
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(baseRequest);
@ -312,7 +312,7 @@ public class MultiCompanyService
return r;
}
void fillCompanyId(MultiCompanyRequest req, Long companyId) {
void fillCompanyId(CompanyGatewayRequest req, Long companyId) {
if (req.getCompany() != null) {
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.ProfileDocument;
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.validation.*;
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 javax.annotation.PostConstruct;
import java.time.LocalDate;
import static org.junit.jupiter.api.Assertions.*;
@ -160,7 +158,7 @@ class MultiCompanyServiceTest {
@Test
void fillCompanyId() {
{
MultiCompanyRequest testReq = new MultiCompanyRequest();
CompanyGatewayRequest testReq = new CompanyGatewayRequest();
testReq.setCompany(new CompanyNewRequest());
testReq.setProfileDocuments(null);
testReq.setCompanySymbols(null);
@ -174,7 +172,7 @@ class MultiCompanyServiceTest {
assertNotNull(testReq.getClientCodes());
}
{
MultiCompanyRequest testReq = new MultiCompanyRequest();
CompanyGatewayRequest testReq = new CompanyGatewayRequest();
testReq.setCompany(new CompanyNewRequest());
testReq.setCompanyInfo(new CompanyInfoUpdateRequest());
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.companies.CompaniesKafkaMessenger;
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_mm.MMListingsRequestParam;
import ru.spcex.clearing.gatewayapi.logic.listings_mm.PrepareExchangeInstruments;
@ -50,7 +50,7 @@ public class ProcessorConfiguration {
public Processor<CompaniesRequestParam> companiesRequestProcessor(ImdgProvider imdgProvider, KafkaSender kafkaSender) {
Processor<CompaniesRequestParam> processor = new Processor<>();
List<Stage<CompaniesRequestParam>> pipeline = new ArrayList<>();
pipeline.add(new PrepareMemberCompanies());
pipeline.add(new PrepareMemberCompaniesLegacy());
pipeline.add(new CompaniesKafkaMessenger(kafkaSender, imdgProvider));
processor.setPipeline(pipeline);
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.Processor;
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_mm.MMListingsRequestParam;
import ru.spcex.clearing.gatewayapi.request.CommonRequest;
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.mkr.MMListingsRequest;
import ru.spcex.clearing.gatewayapi.response.CommonResponse;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.enumeration.IMessageResolver;
import java.time.Instant;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.ExecutorService;
@Controller
@ -37,6 +41,7 @@ public class GatewayController {
private final Processor<FondListingsRequestParam> fondListingsRequestProcessor;
private final Processor<MMListingsRequestParam> mmListingsRequestProcessor;
private final Processor<CompaniesRequestParam> companiesRequestProcessor;
private final CompanyProcessor companiesProcessor;
private final ExecutorService executor;
private List<String> validTypes = Arrays.asList("DAY_START", "ON_DEMAND");
@ -46,11 +51,12 @@ public class GatewayController {
@Qualifier("fondListingsRequestProcessor") Processor<FondListingsRequestParam> fondListingsRequestProcessor,
@Qualifier("mmListingsRequestProcessor") Processor<MMListingsRequestParam> mmListingsRequestProcessor,
@Qualifier("companiesRequestProcessor") Processor<CompaniesRequestParam> companiesRequestProcessor,
@Qualifier("gatewayExecutor") ExecutorService executor) {
CompanyProcessor companiesProcessor, @Qualifier("gatewayExecutor") ExecutorService executor) {
this.messageResolver = messageResolver;
this.fondListingsRequestProcessor = fondListingsRequestProcessor;
this.mmListingsRequestProcessor = mmListingsRequestProcessor;
this.companiesRequestProcessor = companiesRequestProcessor;
this.companiesProcessor = companiesProcessor;
this.executor = executor;
}
@ -122,16 +128,29 @@ public class GatewayController {
@ResponseBody
public CommonResponse companies(@RequestBody CompaniesRequest request) {
// request.validate(validTypes, Collections.emptyList());
CompaniesRequestParam requestParam = new CompaniesRequestParam(request);
executor.submit(() -> {
ProcessResult processResult = companiesRequestProcessor.process(requestParam);
if (processResult.getError() != null) {
log.warn("Exception while process listing_mm: {}", processResult.getError());
}
companiesProcessor.process(request);
});
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)
@ResponseBody
@ExceptionHandler(GatewayException.class)
@ -155,4 +174,12 @@ public class GatewayController {
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;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.spcex.clearing.gatewayapi.errors.GatewayError;
@ -11,14 +12,14 @@ public class Processor<T> {
private List<Stage<T>> pipeline;
public ProcessResult process(T param) {
try {
for (Stage<T> stage : pipeline) {
for (Stage<T> stage : pipeline) {
try {
ProcessResult processResult = stage.process(param);
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();
}

View file

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

View file

@ -1,14 +1,14 @@
package ru.spcex.clearing.gatewayapi.logic.companies;
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.List;
public class CompaniesRequestParam {
private final CompaniesRequest companiesRequest;
private List<MemberCompany> memberCompanyList = new ArrayList<>();
private List<Company> memberCompanyList = new ArrayList<>();
public CompaniesRequestParam(CompaniesRequest companiesRequest) {
this.companiesRequest = companiesRequest;
@ -18,11 +18,11 @@ public class CompaniesRequestParam {
return companiesRequest;
}
public List<MemberCompany> getMemberCompanyList() {
public List<Company> getMemberCompanyList() {
return memberCompanyList;
}
public void setMemberCompanyList(List<MemberCompany> memberCompanyList) {
public void setMemberCompanyList(List<Company> 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 ru.spcex.clearing.gatewayapi.logic.ProcessResult;
import ru.spcex.clearing.gatewayapi.logic.Stage;
import ru.spcex.clearing.gatewayapi.request.WithCompanyId;
import ru.spcex.clearing.gatewayapi.request.company.*;
import java.util.HashMap;
@ -12,16 +13,16 @@ import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
public class PrepareMemberCompaniesLegacy extends Stage<CompaniesRequestParam> {
private final Logger log = LoggerFactory.getLogger(getClass());
@Override
public ProcessResult process(CompaniesRequestParam param) {
CompaniesRequest request = param.getCompaniesRequest();
List<MemberCompany> companyList = request.getCompanyList();
Map<UUID, MemberCompany> companyForUUID = new HashMap<>();
for (MemberCompany memberCompany : companyList) {
List<Company> companyList = request.getCompanyList();
Map<UUID, Company> companyForUUID = new HashMap<>();
for (Company memberCompany : companyList) {
if (companyForUUID.containsKey(memberCompany.getId())) {
log.warn("For company.id {} found > 1 element from request, use first", memberCompany.getId());
memberCompany.setInvalidData(true);
@ -30,10 +31,10 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
companyForUUID.put(memberCompany.getId(), memberCompany);
}
List<MemberCompanyInfo> companyInfoList = request.getCompanyInfoList();
for (MemberCompanyInfo companyInfo : companyInfoList) {
List<CompanyInfo> companyInfoList = request.getCompanyInfoList();
for (CompanyInfo companyInfo : companyInfoList) {
UUID companyInfoUUID = companyInfo.getCompanyId();
MemberCompany company = companyForUUID.get(companyInfoUUID);
Company company = companyForUUID.get(companyInfoUUID);
if (company == null) {
log.warn("For company_info.company_id {} not found company, company_info skipped", companyInfoUUID);
continue;
@ -41,10 +42,10 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
company.setCompanyInfo(companyInfo);
}
List<MemberCompanySymbols> memberCompanySymbolsList = param.getCompaniesRequest().getMemberCompanySymbolsList();
for (MemberCompanySymbols memberCompanySymbols : memberCompanySymbolsList) {
List<CompanySymbols> memberCompanySymbolsList = param.getCompaniesRequest().getMemberCompanySymbolsList();
for (CompanySymbols memberCompanySymbols : memberCompanySymbolsList) {
UUID memberCompanySymbolsUUID = memberCompanySymbols.getCompanyId();
MemberCompany memberCompany = companyForUUID.get(memberCompanySymbolsUUID);
Company memberCompany = companyForUUID.get(memberCompanySymbolsUUID);
if (memberCompany == null) {
log.warn("For company_symbols ({} = {}) not found company, company_symbols skipped",
memberCompanySymbols.getCompanySymbol(),
@ -55,10 +56,10 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
memberCompany.getMemberCompanySymbolsList().add(memberCompanySymbols);
}
List<MemberContact> memberContactList = param.getCompaniesRequest().getContactList();
for (MemberContact memberContact : memberContactList) {
List<Contact> memberContactList = param.getCompaniesRequest().getContactList();
for (Contact memberContact : memberContactList) {
UUID memberContactUUID = memberContact.getCompanyId();
MemberCompany memberCompany = companyForUUID.get(memberContactUUID);
Company memberCompany = companyForUUID.get(memberContactUUID);
if (memberCompany == null) {
log.warn("For contact ({} = {}) not found company, skipped",
memberContact.getContactType(),
@ -69,10 +70,10 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
memberCompany.getContactList().add(memberContact);
}
List<MemberCompanyClearingCategory> companyClearingCategoryList = param.getCompaniesRequest().getCompanyClearingCategoryList();
for (MemberCompanyClearingCategory companyClearingCategory : companyClearingCategoryList) {
List<CompanyClearingCategory> companyClearingCategoryList = param.getCompaniesRequest().getCompanyClearingCategoryList();
for (CompanyClearingCategory companyClearingCategory : companyClearingCategoryList) {
UUID companyClearingCategoryUUID = companyClearingCategory.getCompanyId();
MemberCompany memberCompany = companyForUUID.get(companyClearingCategoryUUID);
Company memberCompany = companyForUUID.get(companyClearingCategoryUUID);
if (memberCompany == null) {
log.warn("For company_clearing_category ({}) not found company, skipped", companyClearingCategory.getCategory());
companyClearingCategory.setInvalidData(true);
@ -81,10 +82,10 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
memberCompany.getCompanyClearingCategoryList().add(companyClearingCategory);
}
List<MemberProfileDocument> memberProfileDocumentList = param.getCompaniesRequest().getProfileDocumentList();
for (MemberProfileDocument memberProfileDocument : memberProfileDocumentList) {
List<ProfileDocument> memberProfileDocumentList = param.getCompaniesRequest().getProfileDocumentList();
for (ProfileDocument memberProfileDocument : memberProfileDocumentList) {
UUID profileDocumentUUID = memberProfileDocument.getCompanyId();
MemberCompany memberCompany = companyForUUID.get(profileDocumentUUID);
Company memberCompany = companyForUUID.get(profileDocumentUUID);
if (memberCompany == null) {
log.warn("For profile_document (document_type {}) not found company, skipped", memberProfileDocument.getDocumentType());
memberProfileDocument.setInvalidData(true);
@ -93,10 +94,10 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
memberCompany.getProfileDocumentList().add(memberProfileDocument);
}
List<MemberClient> memberClientList = param.getCompaniesRequest().getClientList();
for (MemberClient memberClient : memberClientList) {
List<Client> memberClientList = param.getCompaniesRequest().getClientList();
for (Client memberClient : memberClientList) {
UUID clientUUID = memberClient.getCompanyId();
MemberCompany memberCompany = companyForUUID.get(clientUUID);
Company memberCompany = companyForUUID.get(clientUUID);
if (memberCompany == null) {
log.warn("For client (client_code {}) not found company, skipped", memberClient.getClientCode());
memberClient.setInvalidData(true);
@ -105,7 +106,7 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
memberCompany.getClientList().add(memberClient);
}
List<MemberCompany> filteredIssuerCompany = companyList.stream()
List<Company> filteredIssuerCompany = companyList.stream()
.filter(memberCompany -> !memberCompany.isInvalidData())
.collect(Collectors.toList());
@ -116,4 +117,7 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
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.LoggerFactory;
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.Stage;
import ru.spcex.clearing.gatewayapi.logic.companies.CompaniesRequestParam;
@ -26,10 +22,10 @@ import java.util.stream.Collectors;
public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
private final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<Company> companyImdg;
private final Imdg<CompanySymbols> companySymbolsImdg;
private final Imdg<Contact> contactImdg;
private final Imdg<ProfileDocument> profileDocumentImdg;
private final Imdg<ru.clearing.classes.statics.data.company.Company> companyImdg;
private final Imdg<ru.clearing.classes.statics.data.company.CompanySymbols> companySymbolsImdg;
private final Imdg<ru.clearing.classes.statics.data.profile.Contact> contactImdg;
private final Imdg<ru.clearing.classes.statics.data.profile.ProfileDocument> profileDocumentImdg;
private final Imdg<ClientCode> clientCodeImdg;
private final Imdg<Account> accountImdg;
private final Imdg<ClearingAccount> clearingAccountImdg;
@ -37,10 +33,10 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
private final Imdg<DepoAccount> depoAccountImdg;
public CheckMemberCompanyExist(ImdgProvider imdgProvider) {
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
contactImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, ru.clearing.classes.statics.data.company.Company.class);
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, ru.clearing.classes.statics.data.company.CompanySymbols.class);
contactImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Contact, ru.clearing.classes.statics.data.profile.Contact.class);
profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ru.clearing.classes.statics.data.profile.ProfileDocument.class);
clientCodeImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClientCode, ClientCode.class);
accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
clearingAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingAccount, ClearingAccount.class);
@ -51,13 +47,13 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
@Override
public ProcessResult process(CompaniesRequestParam param) {
List<MemberCompany> companyList = param.getMemberCompanyList();
List<Company> companyList = param.getMemberCompanyList();
for (MemberCompany company : companyList) {
List<MemberCompanySymbols> companySymbolsList = company.getMemberCompanySymbolsList();
for (Company company : companyList) {
List<CompanySymbols> companySymbolsList = company.getMemberCompanySymbolsList();
Map<CompanySymbol, String> companySymbolMap = new HashMap<>();
for (MemberCompanySymbols memberCompanySymbol : companySymbolsList) {
for (CompanySymbols memberCompanySymbol : companySymbolsList) {
if (
!memberCompanySymbol.isInvalidData() &&
!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;
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
Collection<ru.clearing.classes.statics.data.company.CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
Map.of(
"companyId", companyId,
"companySymbol", companySymbols.getCompanySymbol()
@ -88,7 +84,7 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
if (companySymbolsFromImdg.isEmpty()) {
companySymbols.setAlreadyExist(false);
} else {
CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
ru.clearing.classes.statics.data.company.CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
if (companySymbolsFromImdg.size() > 1) {
log.warn("For company_symbols ({}={}) found > 1 own company_symbols, " +
"update first (company_symbols.id = {})",
@ -103,11 +99,11 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
// Проверяем контакты, документы и клиентов на необходимость обновления
if (company.isAlreadyExist()) {
List<MemberContact> contactList = company.getContactList();
for (MemberContact contact : contactList) {
List<Contact> contactList = company.getContactList();
for (Contact contact : contactList) {
if (contact.isInvalidData()) continue;
Collection<Contact> contactsFromImdg = contactImdg.getCollectionObjectsByFieldValues(
Collection<ru.clearing.classes.statics.data.profile.Contact> contactsFromImdg = contactImdg.getCollectionObjectsByFieldValues(
Map.of(
"companyId", companyId,
"contactType", contact.getContactType()
@ -116,7 +112,7 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
if (contactsFromImdg.isEmpty()) {
contact.setAlreadyExist(false);
} else {
Contact contactFromImdg = contactsFromImdg.iterator().next();
ru.clearing.classes.statics.data.profile.Contact contactFromImdg = contactsFromImdg.iterator().next();
if (contactsFromImdg.size() > 1) {
log.warn("Found contact > 1 for contact_type {}, update first (id = {})",
contactFromImdg.getContactType(),
@ -127,11 +123,11 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
}
}
List<MemberProfileDocument> memberProfileDocumentList = company.getProfileDocumentList();
for (MemberProfileDocument memberProfileDocument : memberProfileDocumentList) {
List<ProfileDocument> memberProfileDocumentList = company.getProfileDocumentList();
for (ProfileDocument memberProfileDocument : memberProfileDocumentList) {
if (memberProfileDocument.isInvalidData()) continue;
Collection<ProfileDocument> profileDocumentsFromImdg = profileDocumentImdg.getCollectionObjectsByFieldValues(
Collection<ru.clearing.classes.statics.data.profile.ProfileDocument> profileDocumentsFromImdg = profileDocumentImdg.getCollectionObjectsByFieldValues(
Map.of(
"companyId", companyId,
"documentType", memberProfileDocument.getDocumentType()
@ -140,7 +136,7 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
if (profileDocumentsFromImdg.isEmpty()) {
memberProfileDocument.setAlreadyExist(false);
} else {
ProfileDocument profileDocument = profileDocumentsFromImdg.iterator().next();
ru.clearing.classes.statics.data.profile.ProfileDocument profileDocument = profileDocumentsFromImdg.iterator().next();
if (profileDocumentsFromImdg.size() > 1) {
log.warn("Found profile_document > 1 for document_type {} (company.id {}), update first (id = {})",
memberProfileDocument.getDocumentType(),
@ -152,8 +148,8 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
}
}
List<MemberClient> memberClientList = company.getClientList();
for (MemberClient memberClient : memberClientList) {
List<Client> memberClientList = company.getClientList();
for (Client memberClient : memberClientList) {
if (memberClient.isInvalidData()) continue;
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())
.collect(Collectors.toList());
@ -192,7 +188,7 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
return null;
}
private void fillMemberClientMoneyOrDepoAccountId(MemberCompany company, MemberClient client) {
private void fillMemberClientMoneyOrDepoAccountId(Company company, Client client) {
String moneyAccount = client.getMoneyAccount();
Collection<Account> accountFromImdg = accountImdg.getCollectionObjectsByFieldValues(
Map.of("account", moneyAccount)
@ -248,14 +244,14 @@ public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
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(
"companySymbol", CompanySymbol.UUID.getKey(),
"companySymbolValue", uuid
)
);
if (!companySymbolsFromImdg.isEmpty()) {
CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
ru.clearing.classes.statics.data.company.CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
if (companySymbolsFromImdg.size() > 1) {
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)
log.warn("For {} = {} found > 1 company_symbols, use first", companySymbol.getKey(), companySymbolValue);
CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
Company companyFromImdg = companyImdg.getSingleObjectByID(companySymbolFromImdg.getCompanyId());
ru.clearing.classes.statics.data.company.CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
ru.clearing.classes.statics.data.company.Company companyFromImdg = companyImdg.getSingleObjectByID(companySymbolFromImdg.getCompanyId());
if (companyFromImdg == null) {
// Случай, когда реквизиты есть, а компании нет (по сути данных ошибка в мапе)

View file

@ -67,9 +67,9 @@ public class ValidateMemberCompanies extends Stage<CompaniesRequestParam> {
@Override
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 (StringUtils.isEmpty(company.getShortName())) {
@ -78,7 +78,7 @@ public class ValidateMemberCompanies extends Stage<CompaniesRequestParam> {
continue;
}
for (MemberCompanyClearingCategory companyClearingCategory : company.getCompanyClearingCategoryList()) {
for (CompanyClearingCategory companyClearingCategory : company.getCompanyClearingCategoryList()) {
String workflowStatusStr = companyClearingCategory.getWorkflowStatus();
ServiceStatus workflowStatus = IEnumKey.getEnumByKey(ServiceStatus.class, workflowStatusStr);
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();
CompanySymbol companySymbol = IEnumKey.getEnumByKey(CompanySymbol.class, companySymbolStr);
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();
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();
DocumentTypes documentType = IEnumKey.getEnumByKey(DocumentTypes.class, documentTypeStr);
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())) {
log.warn("client_code is null or empty for client, company.id {}", company.getId());
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.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.gatewayapi.request.WithCompanyId;
import ru.spcex.clearing.gatewayapi.request.WithMapId;
import java.util.UUID;
public class MemberClient extends WithMapId {
public class Client extends WithMapId implements WithCompanyId {
@JsonProperty("company_id")
@ApiModelProperty(
value = "Ссылка на company",
@ -44,6 +45,7 @@ public class MemberClient extends WithMapId {
@JsonIgnore
private Long depoAccountId = null;
@Override
public UUID getCompanyId() {
return companyId;
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -4,12 +4,13 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.gatewayapi.config.deserializers.LocalDateDeserializer;
import ru.spcex.clearing.gatewayapi.request.WithCompanyId;
import ru.spcex.clearing.gatewayapi.request.WithMapId;
import java.time.LocalDate;
import java.util.UUID;
public class MemberProfileDocument extends WithMapId {
public class ProfileDocument extends WithMapId implements WithCompanyId {
@JsonProperty("company_id")
@ApiModelProperty(
value = "Ссылка на company",
@ -73,6 +74,7 @@ public class MemberProfileDocument extends WithMapId {
)
private String link;
@Override
public UUID getCompanyId() {
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 = "Номер принятия Решения об утверждении Спецификации биржевого инструмента",
example = "070323-01"
)
private LocalDate specificationApprovalNumber;
private String specificationApprovalNumber;
@JsonProperty("workflow_status")
@ApiModelProperty(
@ -332,11 +332,11 @@ public class ExchangeInstrument extends WithMapId {
this.specificationApprovalDate = specificationApprovalDate;
}
public LocalDate getSpecificationApprovalNumber() {
public String getSpecificationApprovalNumber() {
return specificationApprovalNumber;
}
public void setSpecificationApprovalNumber(LocalDate specificationApprovalNumber) {
public void setSpecificationApprovalNumber(String specificationApprovalNumber) {
this.specificationApprovalNumber = specificationApprovalNumber;
}

View file

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

View file

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