send one package with all info about company to company-service
This commit is contained in:
parent
5c2c600d46
commit
5129a05bb8
3 changed files with 105 additions and 180 deletions
|
|
@ -55,7 +55,7 @@ public class ProcessorConfiguration {
|
||||||
pipeline.add(new PrepareMemberCompanies());
|
pipeline.add(new PrepareMemberCompanies());
|
||||||
pipeline.add(new ValidateMemberCompanies());
|
pipeline.add(new ValidateMemberCompanies());
|
||||||
pipeline.add(new CheckMemberCompanyExist(imdgProvider));
|
pipeline.add(new CheckMemberCompanyExist(imdgProvider));
|
||||||
pipeline.add(new SendMessageToCompanyServiceWithMemberCompanies(kafkaSender, imdgProvider));
|
pipeline.add(new CompaniesKafkaMessenger(kafkaSender, imdgProvider));
|
||||||
processor.setPipeline(pipeline);
|
processor.setPipeline(pipeline);
|
||||||
return processor;
|
return processor;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,104 @@
|
||||||
|
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.objects.*;
|
||||||
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.*;
|
||||||
|
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
||||||
|
import ru.spcex.platform.enumeration.CompanySymbol;
|
||||||
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Отправка сообщения к company-service на создание/обновление company
|
||||||
|
* todo Пока убрал совсем не рабочую логику с sendToQueueWaitForAnswer
|
||||||
|
*/
|
||||||
|
public class CompaniesKafkaMessenger extends Stage<CompaniesRequestParam> {
|
||||||
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
|
private final KafkaSender kafkaSender;
|
||||||
|
private final Imdg<Company> companyImdg;
|
||||||
|
|
||||||
|
public CompaniesKafkaMessenger(KafkaSender kafkaSender, ImdgProvider imdgProvider) {
|
||||||
|
this.kafkaSender = kafkaSender;
|
||||||
|
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ProcessResult process(CompaniesRequestParam param) {
|
||||||
|
List<MemberCompany> companyList = param.getMemberCompanyList();
|
||||||
|
for (MemberCompany company : companyList) {
|
||||||
|
if (company.isInvalidData()) continue;
|
||||||
|
|
||||||
|
MultiCompanyRequest multiCompanyRequest = new MultiCompanyRequest();
|
||||||
|
|
||||||
|
CompanyNewRequest companyNewRequest = new CompanyNewRequest();
|
||||||
|
companyNewRequest.setShortName(company.getShortName());
|
||||||
|
companyNewRequest.setFullName(company.getFullName());
|
||||||
|
companyNewRequest.setCompanySymbol(CompanySymbol.UUID.getKey());
|
||||||
|
companyNewRequest.setCompanySymbolValue(company.getId().toString());
|
||||||
|
multiCompanyRequest.setCompany(companyNewRequest);
|
||||||
|
|
||||||
|
MemberCompanyInfo companyInfo = company.getCompanyInfo();
|
||||||
|
CompanyInfoUpdateRequest companyInfoUpdateRequest = new CompanyInfoUpdateRequest();
|
||||||
|
companyInfoUpdateRequest.setCountryCode("RUS"); // todo в текущей версии ТЗ присылается в цифровом обозначении
|
||||||
|
companyInfoUpdateRequest.setProfessionalSign(companyInfo.getProfessionalSign());
|
||||||
|
companyInfoUpdateRequest.setLegalKind(companyInfo.getLegalKind());
|
||||||
|
companyInfoUpdateRequest.setOrganizationType(companyInfo.getOrganizationType());
|
||||||
|
companyInfoUpdateRequest.setResidence(companyInfo.getResidence());
|
||||||
|
multiCompanyRequest.setCompanyInfo(companyInfoUpdateRequest);
|
||||||
|
|
||||||
|
for (MemberCompanySymbols companySymbols : company.getMemberCompanySymbolsList()) {
|
||||||
|
if (companySymbols.isInvalidData()) continue;
|
||||||
|
CompanySymbolNewRequest companySymbolNewRequest = new CompanySymbolNewRequest();
|
||||||
|
companySymbolNewRequest.setCompanySymbol(companySymbols.getCompanySymbol());
|
||||||
|
companySymbolNewRequest.setCompanySymbolValue(companySymbols.getCompanySymbolValue());
|
||||||
|
multiCompanyRequest.getCompanySymbols().add(companySymbolNewRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (MemberContact contact : company.getContactList()) {
|
||||||
|
if (contact.isInvalidData()) continue;
|
||||||
|
ContactNewRequest contactNewRequest = new ContactNewRequest();
|
||||||
|
contactNewRequest.setContactType(contact.getContactType());
|
||||||
|
contactNewRequest.setContactValue(contact.getContactValue());
|
||||||
|
multiCompanyRequest.getContacts().add(contactNewRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (MemberProfileDocument profileDocument : company.getProfileDocumentList()) {
|
||||||
|
if (profileDocument.isInvalidData()) continue;
|
||||||
|
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());
|
||||||
|
multiCompanyRequest.getProfileDocuments().add(profileDocumentNewRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (MemberClient client : company.getClientList()) {
|
||||||
|
if (client.isInvalidData()) continue;
|
||||||
|
|
||||||
|
if (!company.isAlreadyExist() || !client.isAlreadyExist()) {
|
||||||
|
ClientCodeNewRequest clientCodeNewRequest = new ClientCodeNewRequest();
|
||||||
|
clientCodeNewRequest.setCode(client.getClientCode());
|
||||||
|
clientCodeNewRequest.setMoneyAccountId(client.getMoneyAccountId());
|
||||||
|
clientCodeNewRequest.setDepoAccountId(client.getDepoAccountId());
|
||||||
|
multiCompanyRequest.getClientCodes().add(clientCodeNewRequest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_MULTIREQUEST, multiCompanyRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,179 +0,0 @@
|
||||||
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.objects.*;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.*;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
|
||||||
import ru.spcex.platform.enumeration.CompanySymbol;
|
|
||||||
import ru.spcex.platform.enumeration.ServiceStatus;
|
|
||||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Отправка сообщения к company-service на создание/обновление company
|
|
||||||
* todo Пока убрал совсем не рабочую логику с sendToQueueWaitForAnswer
|
|
||||||
*/
|
|
||||||
public class SendMessageToCompanyServiceWithMemberCompanies extends Stage<CompaniesRequestParam> {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
|
|
||||||
private final KafkaSender kafkaSender;
|
|
||||||
private final Imdg<Company> companyImdg;
|
|
||||||
|
|
||||||
public SendMessageToCompanyServiceWithMemberCompanies(KafkaSender kafkaSender, ImdgProvider imdgProvider) {
|
|
||||||
this.kafkaSender = kafkaSender;
|
|
||||||
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public ProcessResult process(CompaniesRequestParam param) {
|
|
||||||
List<MemberCompany> companyList = param.getMemberCompanyList();
|
|
||||||
for (MemberCompany company : companyList) {
|
|
||||||
if (company.isInvalidData()) continue;
|
|
||||||
|
|
||||||
String companyWorkflowStatus = WorkflowStatus.Active.getKey();
|
|
||||||
if (!company.getCompanyClearingCategoryList().isEmpty()) {
|
|
||||||
MemberCompanyClearingCategory clearingCategory = company.getCompanyClearingCategoryList().get(0);
|
|
||||||
ServiceStatus categoryStatus = IEnumKey.getEnumByKey(ServiceStatus.class, clearingCategory.getWorkflowStatus());
|
|
||||||
if (categoryStatus == ServiceStatus.Active || categoryStatus == ServiceStatus.Appl || categoryStatus == ServiceStatus.Reopened) {
|
|
||||||
companyWorkflowStatus = WorkflowStatus.Active.getKey();
|
|
||||||
} else {
|
|
||||||
companyWorkflowStatus = WorkflowStatus.Blocked.getKey();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CompanyNewRequest companyNewRequest = new CompanyNewRequest();
|
|
||||||
if (company.isAlreadyExist()) companyNewRequest.setId(company.getMapId());
|
|
||||||
companyNewRequest.setShortName(company.getShortName());
|
|
||||||
companyNewRequest.setFullName(company.getFullName());
|
|
||||||
companyNewRequest.setCompanySymbol(CompanySymbol.UUID.getKey());
|
|
||||||
companyNewRequest.setCompanySymbolValue(company.getId().toString());
|
|
||||||
|
|
||||||
MemberCompanyInfo companyInfo = company.getCompanyInfo();
|
|
||||||
|
|
||||||
if (company.isAlreadyExist()) {
|
|
||||||
kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_UPDATE, companyNewRequest);
|
|
||||||
} else {
|
|
||||||
kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_NEW, companyNewRequest);
|
|
||||||
Company companyFromImdg = companyImdg.getSingleObjectByFieldValues(
|
|
||||||
Map.of(
|
|
||||||
"shortName", company.getShortName(),
|
|
||||||
"fullName", company.getFullName(),
|
|
||||||
"workflowStatus", companyWorkflowStatus
|
|
||||||
)
|
|
||||||
);
|
|
||||||
if (companyFromImdg == null) {
|
|
||||||
log.warn("Can't insert company (UUID {}), skipped", company.getId());
|
|
||||||
company.setInvalidData(true);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
company.setAlreadyExist(true);
|
|
||||||
company.setMapId(companyFromImdg.getId());
|
|
||||||
}
|
|
||||||
Long companyId = company.getMapId();
|
|
||||||
|
|
||||||
CompanyInfoUpdateRequest companyInfoUpdateRequest = new CompanyInfoUpdateRequest();
|
|
||||||
companyInfoUpdateRequest.setId(companyId);
|
|
||||||
companyInfoUpdateRequest.setCountryCode("RUS"); // todo в текущей версии ТЗ присылается в цифровом обозначении
|
|
||||||
companyInfoUpdateRequest.setProfessionalSign(companyInfo.getProfessionalSign());
|
|
||||||
companyInfoUpdateRequest.setLegalKind(companyInfo.getLegalKind());
|
|
||||||
companyInfoUpdateRequest.setOrganizationType(companyInfo.getOrganizationType());
|
|
||||||
companyInfoUpdateRequest.setResidence(companyInfo.getResidence());
|
|
||||||
kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_UPDATE, companyInfoUpdateRequest);
|
|
||||||
|
|
||||||
for (MemberCompanySymbols companySymbols : company.getMemberCompanySymbolsList()) {
|
|
||||||
if (companySymbols.isInvalidData()) continue;
|
|
||||||
if (!company.isAlreadyExist() || !companySymbols.isAlreadyExist()) {
|
|
||||||
CompanySymbolNewRequest companySymbolNewRequest = new CompanySymbolNewRequest();
|
|
||||||
companySymbolNewRequest.setCompanyId(companyId);
|
|
||||||
companySymbolNewRequest.setCompanySymbol(companySymbols.getCompanySymbol());
|
|
||||||
companySymbolNewRequest.setCompanySymbolValue(companySymbols.getCompanySymbolValue());
|
|
||||||
kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_SYMBOL_NEW, companySymbolNewRequest);
|
|
||||||
} else {
|
|
||||||
CompanySymbolUpdateRequest companySymbolUpdateRequest = new CompanySymbolUpdateRequest();
|
|
||||||
companySymbolUpdateRequest.setId(companySymbols.getMapId());
|
|
||||||
companySymbolUpdateRequest.setCompanyId(companyId);
|
|
||||||
companySymbolUpdateRequest.setCompanySymbolValue(companySymbols.getCompanySymbolValue());
|
|
||||||
kafkaSender.sendRequestToQueue(Consts.DESTINATION_COMPANY_SYMBOL_UPDATE, companySymbolUpdateRequest);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (MemberContact contact : company.getContactList()) {
|
|
||||||
if (contact.isInvalidData()) continue;
|
|
||||||
if (!company.isAlreadyExist() || !contact.isAlreadyExist()) {
|
|
||||||
ContactNewRequest contactNewRequest = new ContactNewRequest();
|
|
||||||
contactNewRequest.setCompanyId(companyId);
|
|
||||||
contactNewRequest.setContactType(contact.getContactType());
|
|
||||||
contactNewRequest.setContactValue(contact.getContactValue());
|
|
||||||
kafkaSender.sendRequestToQueue(Consts.DESTINATION_CONTACT_NEW, contactNewRequest);
|
|
||||||
} else {
|
|
||||||
ContactUpdateRequest contactUpdateRequest = new ContactUpdateRequest();
|
|
||||||
contactUpdateRequest.setId(contact.getMapId());
|
|
||||||
contactUpdateRequest.setContactType(contact.getContactType());
|
|
||||||
contactUpdateRequest.setContactValue(contact.getContactValue());
|
|
||||||
kafkaSender.sendRequestToQueue(Consts.DESTINATION_CONTACT_UPDATE, contactUpdateRequest);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (MemberProfileDocument profileDocument : company.getProfileDocumentList()) {
|
|
||||||
if (profileDocument.isInvalidData()) continue;
|
|
||||||
if (!company.isAlreadyExist() || !profileDocument.isAlreadyExist()) {
|
|
||||||
ProfileDocumentNewRequest profileDocumentNewRequest = new ProfileDocumentNewRequest();
|
|
||||||
profileDocumentNewRequest.setCompanyId(companyId);
|
|
||||||
profileDocumentNewRequest.setDocumentType(profileDocument.getDocumentType());
|
|
||||||
profileDocumentNewRequest.setIssueDate(profileDocument.getIssueDate());
|
|
||||||
profileDocumentNewRequest.setIssuer(profileDocument.getIssuer());
|
|
||||||
profileDocumentNewRequest.setNumber(profileDocument.getNumber());
|
|
||||||
profileDocumentNewRequest.setValidToDate(profileDocument.getValidToDate());
|
|
||||||
profileDocumentNewRequest.setLink(profileDocument.getLink());
|
|
||||||
kafkaSender.sendRequestToQueue(Consts.DESTINATION_PROFILE_DOCUMENT_NEW, profileDocumentNewRequest);
|
|
||||||
} else {
|
|
||||||
ProfileDocumentUpdateRequest profileDocumentUpdateRequest = new ProfileDocumentUpdateRequest();
|
|
||||||
profileDocumentUpdateRequest.setId(profileDocument.getMapId());
|
|
||||||
profileDocumentUpdateRequest.setCompanyId(companyId);
|
|
||||||
profileDocumentUpdateRequest.setDocumentType(profileDocument.getDocumentType());
|
|
||||||
profileDocumentUpdateRequest.setIssueDate(profileDocument.getIssueDate());
|
|
||||||
profileDocumentUpdateRequest.setIssuer(profileDocument.getIssuer());
|
|
||||||
profileDocumentUpdateRequest.setNumber(profileDocument.getNumber());
|
|
||||||
profileDocumentUpdateRequest.setValidToDate(profileDocument.getValidToDate());
|
|
||||||
profileDocumentUpdateRequest.setLink(profileDocument.getLink());
|
|
||||||
kafkaSender.sendRequestToQueue(Consts.DESTINATION_PROFILE_DOCUMENT_NEW, profileDocumentUpdateRequest);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (MemberClient client : company.getClientList()) {
|
|
||||||
if (client.isInvalidData()) continue;
|
|
||||||
|
|
||||||
if (!company.isAlreadyExist() || !client.isAlreadyExist()) {
|
|
||||||
ClientCodeNewRequest clientCodeNewRequest = new ClientCodeNewRequest();
|
|
||||||
clientCodeNewRequest.setCompanyId(companyId);
|
|
||||||
clientCodeNewRequest.setCode(client.getClientCode());
|
|
||||||
clientCodeNewRequest.setMoneyAccountId(client.getMoneyAccountId());
|
|
||||||
clientCodeNewRequest.setDepoAccountId(client.getDepoAccountId());
|
|
||||||
kafkaSender.sendRequestToQueue(Consts.DESTINATION_CLIENT_CODE_NEW, clientCodeNewRequest);
|
|
||||||
} else {
|
|
||||||
ClientCodeUpdateRequest clientCodeUpdateRequest = new ClientCodeUpdateRequest();
|
|
||||||
clientCodeUpdateRequest.setId(client.getMapId());
|
|
||||||
clientCodeUpdateRequest.setCompanyId(companyId);
|
|
||||||
clientCodeUpdateRequest.setCode(client.getClientCode());
|
|
||||||
clientCodeUpdateRequest.setMoneyAccountId(client.getMoneyAccountId());
|
|
||||||
clientCodeUpdateRequest.setDepoAccountId(client.getDepoAccountId());
|
|
||||||
kafkaSender.sendRequestToQueue(Consts.DESTINATION_CLIENT_CODE_NEW, clientCodeUpdateRequest);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Add table
Reference in a new issue