ClearingMemberCategoryService, CompanyInfoService, CompanyRoleSetService, CompanySymbolService, ContactService, ProfileDocumentService, RelationService, SettlementHousePropertiesService refactored, new tests added
This commit is contained in:
parent
928a92fb69
commit
29dc91339d
64 changed files with 6475 additions and 2311 deletions
|
|
@ -1,5 +1,6 @@
|
|||
package ru.spcex.clearing.company.service;
|
||||
|
||||
import java.util.function.Function;
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
|
|
@ -12,25 +13,18 @@ import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
|||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgId;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
@Deprecated
|
||||
@Service
|
||||
public class ClearingMemberCategoryService extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
|
@ -71,131 +65,131 @@ public class ClearingMemberCategoryService extends QueueConsumer implements Init
|
|||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
callback(ClearingMemberCategoryNewRequest.class)
|
||||
.setFunction(this::clearingMemberCategoryNew)
|
||||
.forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_NEW, callbacks::put);
|
||||
callback(ClearingMemberCategoryUpdateRequest.class)
|
||||
.setFunction(this::clearingMemberCategoryUpdate)
|
||||
.forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(this::clearingMemberCategoryDelete)
|
||||
.forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_DELETE, callbacks::put);
|
||||
init();
|
||||
// callback(ClearingMemberCategoryNewRequest.class)
|
||||
// .setFunction(this::clearingMemberCategoryNew)
|
||||
// .forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_NEW, callbacks::put);
|
||||
// callback(ClearingMemberCategoryUpdateRequest.class)
|
||||
// .setFunction(this::clearingMemberCategoryUpdate)
|
||||
// .forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_UPDATE, callbacks::put);
|
||||
// callback(CommonDeleteRequest.class)
|
||||
// .setFunction(this::clearingMemberCategoryDelete)
|
||||
// .forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_DELETE, callbacks::put);
|
||||
// init();
|
||||
}
|
||||
|
||||
public RequestInfoUpdate clearingMemberCategoryNew(BaseRequest<ClearingMemberCategoryNewRequest> userRequest) {
|
||||
log.debug("ClearingMemberCategoryNewRequest received {}", userRequest.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, clearingMemberCategoryNewRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
ClearingMemberCategoryNewRequest req = userRequest.getRequestPayload();
|
||||
ClearingMemberCategory newCategory = new ClearingMemberCategory();
|
||||
newCategory.setId(idSequence.nextId());
|
||||
newCategory.setCompanyId(req.getCompanyId());
|
||||
newCategory.setClearingMemberCategory(req.getClearingMemberCategory());
|
||||
|
||||
synchronized (companyService) {
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
if (IEnumKey.contains(newCategory.getClearingMemberCategory(), ClearingCategory.T, ClearingCategory.K)) {
|
||||
log.debug("For category \"{}\" do not create relation.", newCategory.getClearingMemberCategory());
|
||||
} else {
|
||||
companyService.relationService.createNewRelation(transaction, req.getCompanyId(), newCategory);
|
||||
}
|
||||
Imdg<ClearingMemberCategory> txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
txClearingMemberCategoryMap.insert(newCategory);
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
}
|
||||
log.debug("Successfully processed, new category id {}", newCategory.getId());
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public RequestInfoUpdate clearingMemberCategoryUpdate(BaseRequest<ClearingMemberCategoryUpdateRequest> userRequest) {
|
||||
ClearingMemberCategoryUpdateRequest req = userRequest.getRequestPayload();
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, clearingMemberCategoryUpdateRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
log.debug("ClearingMemberCategoryUpdateRequest received");
|
||||
ClearingMemberCategory clearingMemberCategory = clearingMemberCategoryMap.getSingleObjectByID(req.getId());
|
||||
|
||||
// if (Objects.equals(clearingMemberCategory.getClearingMemberCategory(), req.getClearingMemberCategory()))
|
||||
String oldClearingMemberCategory = clearingMemberCategory.getClearingMemberCategory();
|
||||
clearingMemberCategory.setClearingMemberCategory(req.getClearingMemberCategory());
|
||||
synchronized (companyService) {
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
//todo сложный кейс с возможным изменением релейшена или пересозданием. Скоро ТЗ доделают.
|
||||
//companyService.relationService.updateExistRelation(transaction,clearingMemberCategory.getCompanyId(), oldClearingMemberCategory,
|
||||
// clearingMemberCategory.getClearingMemberCategory());
|
||||
companyService.relationService.createNewRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory);
|
||||
Imdg<ClearingMemberCategory> txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
txClearingMemberCategoryMap.insert(clearingMemberCategory);
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
}
|
||||
|
||||
log.debug("successfully processed, id {}", clearingMemberCategory.getId());
|
||||
return null;
|
||||
}
|
||||
|
||||
private RequestInfoUpdate clearingMemberCategoryDelete(BaseRequest<CommonDeleteRequest> userRequest) {
|
||||
CommonDeleteRequest req = userRequest.getRequestPayload();
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, clearingMemberCategoryDeleteRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
log.debug("CommonDeleteRequest received id = {}", req.getId());
|
||||
ClearingMemberCategory clearingMemberCategory = clearingMemberCategoryMap.getSingleObjectByID(req.getId());
|
||||
|
||||
synchronized (companyService) {
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
Imdg<ClearingMemberCategory> txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
txClearingMemberCategoryMap.delete(clearingMemberCategory); // далить до cancelRelation внутри транзакции
|
||||
if (clearingMemberCategory.getCompanyId() == null) { // never, только тестовые данные
|
||||
log.warn("Deleted clearingMemberCategory[{}] has not companyId", clearingMemberCategory.getId());
|
||||
} else {
|
||||
companyService.relationService.cancelRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory);
|
||||
}
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
}
|
||||
|
||||
log.debug("clearingMemberCategory.id={} deleted.", clearingMemberCategory.getId());
|
||||
|
||||
return null;
|
||||
}
|
||||
// public RequestInfoUpdate clearingMemberCategoryNew(BaseRequest<ClearingMemberCategoryNewRequest> userRequest) {
|
||||
// log.debug("ClearingMemberCategoryNewRequest received {}", userRequest.getId());
|
||||
//
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, clearingMemberCategoryNewRequestValidator);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
// ClearingMemberCategoryNewRequest req = userRequest.getRequestPayload();
|
||||
// ClearingMemberCategory newCategory = new ClearingMemberCategory();
|
||||
// newCategory.setId(idSequence.nextId());
|
||||
// newCategory.setCompanyId(req.getCompanyId());
|
||||
// newCategory.setClearingMemberCategory(req.getClearingMemberCategory());
|
||||
//
|
||||
// synchronized (companyService) {
|
||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
// transaction.beginTransaction();
|
||||
// boolean txOk = false;
|
||||
// try {
|
||||
// if (IEnumKey.contains(newCategory.getClearingMemberCategory(), ClearingCategory.T, ClearingCategory.K)) {
|
||||
// log.debug("For category \"{}\" do not create relation.", newCategory.getClearingMemberCategory());
|
||||
// } else {
|
||||
// companyService.relationService.createNewRelation(transaction, req.getCompanyId(), newCategory);
|
||||
// }
|
||||
// Imdg<ClearingMemberCategory> txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
// txClearingMemberCategoryMap.insert(newCategory);
|
||||
// txOk = true;
|
||||
// } finally {
|
||||
// if (txOk)
|
||||
// transaction.commitTransaction();
|
||||
// else
|
||||
// transaction.rollbackTransaction();
|
||||
// }
|
||||
// }
|
||||
// log.debug("Successfully processed, new category id {}", newCategory.getId());
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// public RequestInfoUpdate clearingMemberCategoryUpdate(BaseRequest<ClearingMemberCategoryUpdateRequest> userRequest) {
|
||||
// ClearingMemberCategoryUpdateRequest req = userRequest.getRequestPayload();
|
||||
//
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, clearingMemberCategoryUpdateRequestValidator);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// log.debug("ClearingMemberCategoryUpdateRequest received");
|
||||
// ClearingMemberCategory clearingMemberCategory = clearingMemberCategoryMap.getSingleObjectByID(req.getId());
|
||||
//
|
||||
// // if (Objects.equals(clearingMemberCategory.getClearingMemberCategory(), req.getClearingMemberCategory()))
|
||||
// String oldClearingMemberCategory = clearingMemberCategory.getClearingMemberCategory();
|
||||
// clearingMemberCategory.setClearingMemberCategory(req.getClearingMemberCategory());
|
||||
// synchronized (companyService) {
|
||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
// transaction.beginTransaction();
|
||||
// boolean txOk = false;
|
||||
// try {
|
||||
// //todo сложный кейс с возможным изменением релейшена или пересозданием. Скоро ТЗ доделают.
|
||||
// //companyService.relationService.updateExistRelation(transaction,clearingMemberCategory.getCompanyId(), oldClearingMemberCategory,
|
||||
// // clearingMemberCategory.getClearingMemberCategory());
|
||||
// companyService.relationService.createNewRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory);
|
||||
// Imdg<ClearingMemberCategory> txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
// txClearingMemberCategoryMap.insert(clearingMemberCategory);
|
||||
// txOk = true;
|
||||
// } finally {
|
||||
// if (txOk)
|
||||
// transaction.commitTransaction();
|
||||
// else
|
||||
// transaction.rollbackTransaction();
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// log.debug("successfully processed, id {}", clearingMemberCategory.getId());
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// private RequestInfoUpdate clearingMemberCategoryDelete(BaseRequest<CommonDeleteRequest> userRequest) {
|
||||
// CommonDeleteRequest req = userRequest.getRequestPayload();
|
||||
//
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, clearingMemberCategoryDeleteRequestValidator);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// log.debug("CommonDeleteRequest received id = {}", req.getId());
|
||||
// ClearingMemberCategory clearingMemberCategory = clearingMemberCategoryMap.getSingleObjectByID(req.getId());
|
||||
//
|
||||
// synchronized (companyService) {
|
||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
// transaction.beginTransaction();
|
||||
// boolean txOk = false;
|
||||
// try {
|
||||
// Imdg<ClearingMemberCategory> txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
// txClearingMemberCategoryMap.delete(clearingMemberCategory); // далить до cancelRelation внутри транзакции
|
||||
// if (clearingMemberCategory.getCompanyId() == null) { // never, только тестовые данные
|
||||
// log.warn("Deleted clearingMemberCategory[{}] has not companyId", clearingMemberCategory.getId());
|
||||
// } else {
|
||||
// companyService.relationService.cancelRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory);
|
||||
// }
|
||||
// txOk = true;
|
||||
// } finally {
|
||||
// if (txOk)
|
||||
// transaction.commitTransaction();
|
||||
// else
|
||||
// transaction.rollbackTransaction();
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// log.debug("clearingMemberCategory.id={} deleted.", clearingMemberCategory.getId());
|
||||
//
|
||||
// return null;
|
||||
// }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package ru.spcex.clearing.company.service;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import java.util.function.Function;
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
|
|
@ -10,28 +10,18 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.profile.CompanyInfo;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyInfoUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.util.services.RequestHelper;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||
import ru.spcex.platform.utils.error.ValidationException;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Deprecated
|
||||
@Service
|
||||
public class CompanyInfoService extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
|
@ -62,83 +52,83 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea
|
|||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
callback(CompanyInfoUpdateRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::companyInfoUpdate, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_INFO_UPDATE, callbacks::put);
|
||||
callback(CompanyInfoUpdateRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::companyInfoUpdate, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_INFO_NEW, callbacks::put); // логика заполнения одинакова с companyInfoUpdate
|
||||
init();
|
||||
// callback(CompanyInfoUpdateRequest.class)
|
||||
// .setFunction(request -> requestHelper.requestFunction(this::companyInfoUpdate, request))
|
||||
// .forDestination(Consts.DESTINATION_COMPANY_INFO_UPDATE, callbacks::put);
|
||||
// callback(CompanyInfoUpdateRequest.class)
|
||||
// .setFunction(request -> requestHelper.requestFunction(this::companyInfoUpdate, request))
|
||||
// .forDestination(Consts.DESTINATION_COMPANY_INFO_NEW, callbacks::put); // логика заполнения одинакова с companyInfoUpdate
|
||||
// init();
|
||||
}
|
||||
|
||||
|
||||
public RequestInfoUpdate companyInfoUpdate(BaseRequest<CompanyInfoUpdateRequest> companyInfoReq) throws ValidationException {
|
||||
CompanyInfoUpdateRequest req = companyInfoReq.getRequestPayload();
|
||||
log.debug("{} received", req.getClass().getSimpleName());
|
||||
{ // Валидация, ValidationException
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyInfoReq);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(companyInfoReq, companyInfoUpdateRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
}
|
||||
synchronized (companyService) {
|
||||
Company company = companyMap.getSingleObjectByID(req.getId());
|
||||
if (company == null) {
|
||||
log.trace("Company {} not found", req.getId());
|
||||
return requestHelper.makeErrorResponse(companyInfoReq, CompanyErrors.CompanyNotFound, companyInfoReq.getId());
|
||||
}
|
||||
company.setUpdated(Instant.now());
|
||||
if (StringUtils.isNotEmpty(req.getShortName()))
|
||||
company.setShortName(req.getShortName());
|
||||
if (StringUtils.isNotEmpty(req.getFullName()))
|
||||
company.setFullName(req.getFullName());
|
||||
CompanyInfo companyInfo = company.getProfile();
|
||||
|
||||
companyInfo.setCountryCode(req.getCountryCode());
|
||||
companyInfo.setProfessionalSign(req.getProfessionalSign());
|
||||
companyInfo.setLegalKind(req.getLegalKind());
|
||||
companyInfo.setOrganizationType(req.getOrganizationType());
|
||||
companyInfo.setResidence(req.getResidence());
|
||||
|
||||
companyInfo.setCorporationSoleType(req.getCorporationSoleType());
|
||||
companyInfo.setDescription(req.getDescription());
|
||||
companyInfo.setShortNameEng(req.getShortNameEng());
|
||||
companyInfo.setFullNameEng(req.getFullNameEng());
|
||||
|
||||
boolean simpleUpdate = true;
|
||||
if (req.getWorkflowStatus() != null) {
|
||||
String prevStatus = company.getWorkflowStatus();
|
||||
company.setWorkflowStatus(req.getWorkflowStatus());
|
||||
if (!Objects.equals(prevStatus, company.getWorkflowStatus())) {
|
||||
simpleUpdate = false;
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
companyService.relationService.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
||||
Imdg<Company> txCompanyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
txCompanyMap.update(company);
|
||||
log.trace("Company {} updated", company.getId());
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
} else {
|
||||
log.trace("Status was not changed");
|
||||
}
|
||||
} else {
|
||||
log.trace("Null new WorkflowStatus");
|
||||
}
|
||||
if (simpleUpdate) {
|
||||
companyMap.update(company);
|
||||
log.trace("Company {} updated", company.getId());
|
||||
}
|
||||
log.debug("successfully CompanyInfo processed, id {}", companyInfo.getId());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
// public RequestInfoUpdate companyInfoUpdate(BaseRequest<CompanyInfoUpdateRequest> companyInfoReq) throws ValidationException {
|
||||
// CompanyInfoUpdateRequest req = companyInfoReq.getRequestPayload();
|
||||
// log.debug("{} received", req.getClass().getSimpleName());
|
||||
// { // Валидация, ValidationException
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyInfoReq);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// requestInfoUpdate = validationHelper.validateTillFirstError(companyInfoReq, companyInfoUpdateRequestValidator);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
// }
|
||||
// synchronized (companyService) {
|
||||
// Company company = companyMap.getSingleObjectByID(req.getId());
|
||||
// if (company == null) {
|
||||
// log.trace("Company {} not found", req.getId());
|
||||
// return requestHelper.makeErrorResponse(companyInfoReq, CompanyErrors.CompanyNotFound, companyInfoReq.getId());
|
||||
// }
|
||||
// company.setUpdated(Instant.now());
|
||||
// if (StringUtils.isNotEmpty(req.getShortName()))
|
||||
// company.setShortName(req.getShortName());
|
||||
// if (StringUtils.isNotEmpty(req.getFullName()))
|
||||
// company.setFullName(req.getFullName());
|
||||
// CompanyInfo companyInfo = company.getProfile();
|
||||
//
|
||||
// companyInfo.setCountryCode(req.getCountryCode());
|
||||
// companyInfo.setProfessionalSign(req.getProfessionalSign());
|
||||
// companyInfo.setLegalKind(req.getLegalKind());
|
||||
// companyInfo.setOrganizationType(req.getOrganizationType());
|
||||
// companyInfo.setResidence(req.getResidence());
|
||||
//
|
||||
// companyInfo.setCorporationSoleType(req.getCorporationSoleType());
|
||||
// companyInfo.setDescription(req.getDescription());
|
||||
// companyInfo.setShortNameEng(req.getShortNameEng());
|
||||
// companyInfo.setFullNameEng(req.getFullNameEng());
|
||||
//
|
||||
// boolean simpleUpdate = true;
|
||||
// if (req.getWorkflowStatus() != null) {
|
||||
// String prevStatus = company.getWorkflowStatus();
|
||||
// company.setWorkflowStatus(req.getWorkflowStatus());
|
||||
// if (!Objects.equals(prevStatus, company.getWorkflowStatus())) {
|
||||
// simpleUpdate = false;
|
||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
// transaction.beginTransaction();
|
||||
// boolean txOk = false;
|
||||
// try {
|
||||
// companyService.relationService.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
||||
// Imdg<Company> txCompanyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
// txCompanyMap.update(company);
|
||||
// log.trace("Company {} updated", company.getId());
|
||||
// txOk = true;
|
||||
// } finally {
|
||||
// if (txOk)
|
||||
// transaction.commitTransaction();
|
||||
// else
|
||||
// transaction.rollbackTransaction();
|
||||
// }
|
||||
// } else {
|
||||
// log.trace("Status was not changed");
|
||||
// }
|
||||
// } else {
|
||||
// log.trace("Null new WorkflowStatus");
|
||||
// }
|
||||
// if (simpleUpdate) {
|
||||
// companyMap.update(company);
|
||||
// log.trace("Company {} updated", company.getId());
|
||||
// }
|
||||
// log.debug("successfully CompanyInfo processed, id {}", companyInfo.getId());
|
||||
// }
|
||||
// return null;
|
||||
// }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
package ru.spcex.clearing.company.service;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
|
|
@ -8,12 +11,10 @@ import org.springframework.beans.factory.InitializingBean;
|
|||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanyRoleSet;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetUpdateRequest;
|
||||
|
|
@ -31,10 +32,7 @@ import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
|||
import ru.spcex.platform.utils.error.ValidationException;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Deprecated
|
||||
@Service
|
||||
public class CompanyRoleSetService extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
|
@ -81,17 +79,17 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing
|
|||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
callback(CompanyRoleSetNewRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::createCompanyRoleSet, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_NEW, callbacks::put);
|
||||
callback(CompanyRoleSetUpdateRequest.class)
|
||||
.setConsumer(request -> requestHelper.requestFunction(this::updateCompanyRoleSet, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::deleteCompanyRoleSet, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_DELETE
|
||||
, callbacks::put);
|
||||
init();
|
||||
// callback(CompanyRoleSetNewRequest.class)
|
||||
// .setFunction(request -> requestHelper.requestFunction(this::createCompanyRoleSet, request))
|
||||
// .forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_NEW, callbacks::put);
|
||||
// callback(CompanyRoleSetUpdateRequest.class)
|
||||
// .setConsumer(request -> requestHelper.requestFunction(this::updateCompanyRoleSet, request))
|
||||
// .forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_UPDATE, callbacks::put);
|
||||
// callback(CommonDeleteRequest.class)
|
||||
// .setFunction(request -> requestHelper.requestFunction(this::deleteCompanyRoleSet, request))
|
||||
// .forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_DELETE
|
||||
// , callbacks::put);
|
||||
// init();
|
||||
}
|
||||
|
||||
private RequestInfoUpdate createCompanyRoleSet(BaseRequest<CompanyRoleSetNewRequest> companyRoleNewRequestBaseRequest) throws ValidationException {
|
||||
|
|
|
|||
|
|
@ -1,96 +1,62 @@
|
|||
package ru.spcex.clearing.company.service;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||
import ru.clearing.classes.statics.data.profile.CompanyInfo;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountTerminationRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.util.services.RequestHelper;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.enumeration.CompanySymbol;
|
||||
import ru.spcex.platform.enumeration.UserRole;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgId;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||
import ru.spcex.platform.utils.error.ClearingBaseException;
|
||||
import ru.spcex.platform.utils.error.ValidationException;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Deprecated
|
||||
@Service
|
||||
public class CompanyService extends QueueConsumer implements InitializingBean {
|
||||
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final RequestHelper requestHelper;
|
||||
private final ImdgProvider imdgProvider;
|
||||
private final ImdgId idSequence;
|
||||
private final Imdg<Company> companyIMap;
|
||||
protected UserRoleVerification userRoleVerification;
|
||||
protected CompanySymbolService companySymbolService;
|
||||
protected AccountNotificationHelper accountNotification;
|
||||
protected RelationService relationService;
|
||||
private final ValidationHelper validationHelper;
|
||||
private final Function<CompanyNewRequest, IValidator> companyNewRequestValidator;
|
||||
private final Function<CompanyNewRequest, IValidator> companyUpdateRequestValidator;
|
||||
private final Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator;
|
||||
// private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
// private final RequestHelper requestHelper;
|
||||
// private final ImdgProvider imdgProvider;
|
||||
// private final ImdgId idSequence;
|
||||
// private final Imdg<Company> companyIMap;
|
||||
// protected UserRoleVerification userRoleVerification;
|
||||
// protected CompanySymbolService companySymbolService;
|
||||
// protected AccountNotificationHelper accountNotification;
|
||||
// protected RelationService relationService;
|
||||
// private final ValidationHelper validationHelper;
|
||||
// private final Function<CompanyNewRequest, IValidator> companyNewRequestValidator;
|
||||
// private final Function<CompanyNewRequest, IValidator> companyUpdateRequestValidator;
|
||||
// private final Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator;
|
||||
|
||||
@Autowired
|
||||
public CompanyService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
||||
ImdgProvider imdgProvider,
|
||||
RequestHelper requestHelper,
|
||||
ValidationHelper validationHelper,
|
||||
UserRoleVerification userRoleVerification,
|
||||
@Qualifier("companyNewRequestValidator")
|
||||
Function<CompanyNewRequest, IValidator> companyNewRequestValidator,
|
||||
@Qualifier("companyUpdateRequestValidator")
|
||||
Function<CompanyNewRequest, IValidator> companyUpdateRequestValidator,
|
||||
@Qualifier("CompanyDeleteRequestValidator")
|
||||
Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator,
|
||||
CompanySymbolService companySymbolService,
|
||||
AccountNotificationHelper accountNotification,
|
||||
RelationService relationService) {
|
||||
public CompanyService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer
|
||||
// ImdgProvider imdgProvider,
|
||||
// RequestHelper requestHelper,
|
||||
// ValidationHelper validationHelper,
|
||||
// UserRoleVerification userRoleVerification,
|
||||
// @Qualifier("companyNewRequestValidator")
|
||||
// Function<CompanyNewRequest, IValidator> companyNewRequestValidator,
|
||||
// @Qualifier("companyUpdateRequestValidator")
|
||||
// Function<CompanyNewRequest, IValidator> companyUpdateRequestValidator,
|
||||
// @Qualifier("CompanyDeleteRequestValidator")
|
||||
// Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator,
|
||||
// CompanySymbolService companySymbolService,
|
||||
// AccountNotificationHelper accountNotification,
|
||||
// RelationService relationService
|
||||
) {
|
||||
super(kafkaQueue, kafkaProducer);
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.requestHelper = requestHelper.setLogger(log);
|
||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
||||
this.userRoleVerification = userRoleVerification;
|
||||
this.userRoleVerification.setRoleForVerification(UserRole.Admin);
|
||||
this.validationHelper = validationHelper;
|
||||
this.companyNewRequestValidator = companyNewRequestValidator;
|
||||
this.companyUpdateRequestValidator = companyUpdateRequestValidator;
|
||||
this.companyDeleteRequestValidator = companyDeleteRequestValidator;
|
||||
this.companySymbolService = companySymbolService;
|
||||
this.companySymbolService.setCompanyService(this);
|
||||
this.accountNotification = accountNotification;
|
||||
this.relationService = relationService;
|
||||
|
||||
companyIMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
// this.imdgProvider = imdgProvider;
|
||||
// this.requestHelper = requestHelper.setLogger(log);
|
||||
// this.idSequence = imdgProvider.getImdgIdGenerator();
|
||||
// this.userRoleVerification = userRoleVerification;
|
||||
// this.userRoleVerification.setRoleForVerification(UserRole.Admin);
|
||||
// this.validationHelper = validationHelper;
|
||||
// this.companyNewRequestValidator = companyNewRequestValidator;
|
||||
// this.companyUpdateRequestValidator = companyUpdateRequestValidator;
|
||||
// this.companyDeleteRequestValidator = companyDeleteRequestValidator;
|
||||
// this.companySymbolService = companySymbolService;
|
||||
// this.companySymbolService.setCompanyService(this);
|
||||
// this.accountNotification = accountNotification;
|
||||
// this.relationService = relationService;
|
||||
//
|
||||
// companyIMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -113,324 +79,324 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
|||
// init();
|
||||
}
|
||||
|
||||
private RequestInfoUpdate processBaseRequest(BaseRequest<?> request) throws ValidationException {
|
||||
// Валидация
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
ActionType actionType = request.getActionType();
|
||||
switch (actionType) {
|
||||
case NEW -> {
|
||||
CompanyNewRequest companyNewRequest = (CompanyNewRequest) request.getRequestPayload();
|
||||
// IValidator validator = companyNewRequestValidator.apply(companyNewRequest);
|
||||
// Optional<EnumMessage> error = validator.tillFirstError();
|
||||
// if (error.isPresent()) {
|
||||
// throw new ValidationException(error.get());
|
||||
// }
|
||||
create(companyNewRequest);
|
||||
}
|
||||
case UPDATE -> update((CompanyNewRequest) request.getRequestPayload(), true);
|
||||
}
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
public synchronized Long create(CompanyNewRequest companyNewRequest) throws ValidationException {
|
||||
IValidator validator = companyNewRequestValidator.apply(companyNewRequest);
|
||||
Optional<EnumMessage> error = validator.tillFirstError();
|
||||
if (error.isPresent()) {
|
||||
throw new ValidationException(error.get());
|
||||
}
|
||||
|
||||
log.debug("creating new company");
|
||||
Instant now = Instant.now();
|
||||
Company company = new Company();
|
||||
company.setId(idSequence.nextId());
|
||||
company.setCreated(now);
|
||||
company.setUpdated(now);
|
||||
company.setShortName(companyNewRequest.getShortName());
|
||||
company.setFullName(companyNewRequest.getFullName());
|
||||
company.setTradingCode(companyNewRequest.getTradingCode());
|
||||
company.setClearingCode(companyNewRequest.getClearingCode());
|
||||
company.setRegistrationCode(companyNewRequest.getRegistrationCode());
|
||||
if (companyNewRequest.getWorkflowStatus() != null) {
|
||||
company.setWorkflowStatus(companyNewRequest.getWorkflowStatus());
|
||||
} else {
|
||||
company.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
}
|
||||
fillNewCompanyInfo(company, companyNewRequest);
|
||||
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
if (companyNewRequest.getCompanySymbol() != null) {
|
||||
CompanySymbols newSymbol = new CompanySymbols();
|
||||
newSymbol.setId(idSequence.nextId());
|
||||
newSymbol.setCompanyId(company.getId());
|
||||
newSymbol.setCompanySymbol(companyNewRequest.getCompanySymbol());
|
||||
newSymbol.setCompanySymbolValue(companyNewRequest.getCompanySymbolValue());
|
||||
log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), company.getId());
|
||||
Imdg<CompanySymbols> companySymbolsImdg = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
companySymbolsImdg.insert(newSymbol);
|
||||
log.debug("Creating companySymbols with id: {} by company.id: {} done", newSymbol.getId(), company.getId());
|
||||
updateCompanyBySymbol(company, newSymbol, false);
|
||||
}
|
||||
Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
companyMap.insert(company);
|
||||
log.debug("company-new request processed, BaseRequest.id = {}, company.id={}",
|
||||
companyNewRequest.getId(), company.getId());
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
accountNotification.makeInfoAccount(company.getId());
|
||||
return company.getId();
|
||||
}
|
||||
|
||||
public synchronized void update(CompanyNewRequest updateRequest, boolean validationIsEnable) throws ValidationException {
|
||||
if (validationIsEnable) {
|
||||
IValidator validator = companyUpdateRequestValidator.apply(updateRequest);
|
||||
Optional<EnumMessage> error = validator.tillFirstError();
|
||||
if (error.isPresent()) {
|
||||
throw new ValidationException(error.get());
|
||||
}
|
||||
}
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
Company company = companyMap.getSingleObjectByID(updateRequest.getId());
|
||||
if (company == null) {
|
||||
log.trace("Company {} not found", updateRequest.getId());
|
||||
throw new ValidationException(new EnumMessage(CompanyErrors.CompanyNotFound));
|
||||
}
|
||||
// if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) {
|
||||
// log.trace("Company {} not active: {}", company.getId(), company.getWorkflowStatus());
|
||||
// return requestHelper.makeErrorResponse(companyUpdateRequestBaseRequest, CompanyErrors.CompanyDisabled, updateRequest.getId());
|
||||
// private RequestInfoUpdate processBaseRequest(BaseRequest<?> request) throws ValidationException {
|
||||
// // Валидация
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
// ActionType actionType = request.getActionType();
|
||||
// switch (actionType) {
|
||||
// case NEW -> {
|
||||
// CompanyNewRequest companyNewRequest = (CompanyNewRequest) request.getRequestPayload();
|
||||
//// IValidator validator = companyNewRequestValidator.apply(companyNewRequest);
|
||||
//// Optional<EnumMessage> error = validator.tillFirstError();
|
||||
//// if (error.isPresent()) {
|
||||
//// throw new ValidationException(error.get());
|
||||
//// }
|
||||
// create(companyNewRequest);
|
||||
// }
|
||||
|
||||
company.setUpdated(Instant.now());
|
||||
if (StringUtils.isNotEmpty(updateRequest.getShortName()))
|
||||
company.setShortName(updateRequest.getShortName());
|
||||
if (StringUtils.isNotEmpty(updateRequest.getFullName()))
|
||||
company.setFullName(updateRequest.getFullName());
|
||||
|
||||
if (updateRequest.getCompanySymbol() != null || updateRequest.getCompanySymbolValue() != null) {
|
||||
log.trace("Request field CompanySymbol, CompanySymbolValue ignore for update company request.");
|
||||
}
|
||||
|
||||
String prevStatus = company.getWorkflowStatus();
|
||||
if (updateRequest.getWorkflowStatus() != null) {
|
||||
company.setWorkflowStatus(updateRequest.getWorkflowStatus());
|
||||
if (!Objects.equals(prevStatus, company.getWorkflowStatus())) {
|
||||
relationService.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
||||
} else {
|
||||
log.trace("Status was not changed");
|
||||
}
|
||||
} else {
|
||||
log.trace("Null new WorkflowStatus");
|
||||
}
|
||||
companyMap.update(company);
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
}
|
||||
|
||||
protected void updateCompanyBySymbol(Company company, CompanySymbols companySymbol, boolean shouldBeDeleted) {
|
||||
assert company.getId().equals(companySymbol.getCompanyId());
|
||||
String companySymbolValue = companySymbol.getCompanySymbolValue();
|
||||
String setUpValue = shouldBeDeletedOrSet(companySymbolValue, shouldBeDeleted);
|
||||
if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||
company.setTradingCode(setUpValue);
|
||||
}
|
||||
if (CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||
company.setClearingCode(setUpValue);
|
||||
}
|
||||
if (CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||
company.setRegistrationCode(setUpValue);
|
||||
}
|
||||
}
|
||||
|
||||
private String shouldBeDeletedOrSet(String companySymbol, boolean shouldBeDeleted) {
|
||||
return shouldBeDeleted ? "" : companySymbol;
|
||||
}
|
||||
|
||||
public synchronized void updateCompanyBySymbol(ImdgTransaction transaction, CompanySymbols companySymbol, boolean shouldBeDeleted) throws ClearingBaseException {
|
||||
if (companySymbol.getCompanyId() == null) {
|
||||
throw new IllegalArgumentException("Required companySymbol.companyId");
|
||||
}
|
||||
if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())
|
||||
|| CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())
|
||||
|| CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||
Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
|
||||
Company company = companyMap.getSingleObjectByID(companySymbol.getCompanyId());
|
||||
if (company == null) {
|
||||
throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyNotFound, companySymbol.getCompanyId()));
|
||||
}
|
||||
updateCompanyBySymbol(company, companySymbol, shouldBeDeleted);
|
||||
company.setUpdated(Instant.now());
|
||||
companyMap.update(company);
|
||||
log.debug("Company {} updated by change CompanySymbols {} ({})",
|
||||
company.getId(), companySymbol.getId(), companySymbol.getCompanySymbol());
|
||||
} else {
|
||||
log.trace("No need update company {} by changed companySymbols {}",
|
||||
companySymbol.getCompanyId(), companySymbol.getCompanySymbol());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Блокировка компании
|
||||
*
|
||||
* @param companyBlockRequestBaseRequest
|
||||
* @return
|
||||
*/
|
||||
private synchronized RequestInfoUpdate deleteCompany(BaseRequest<CommonDeleteRequest> companyBlockRequestBaseRequest) throws ValidationException {
|
||||
CommonDeleteRequest request = companyBlockRequestBaseRequest.getRequestPayload();
|
||||
log.debug("CommonDeleteRequest (block request) received id = {}", request.getId());
|
||||
{ // Валидация
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyBlockRequestBaseRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(companyBlockRequestBaseRequest, companyDeleteRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
}
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
Company company = companyMap.getSingleObjectByID(request.getId());
|
||||
if (company == null) {
|
||||
log.warn("Company {} not found", request.getId());
|
||||
return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound, request.getId());
|
||||
}
|
||||
|
||||
company.setUpdated(Instant.now());
|
||||
|
||||
String prevStatus = company.getWorkflowStatus();
|
||||
company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
||||
|
||||
relationService.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
||||
log.debug("Update company.id={}", company.getId());
|
||||
companyMap.update(company);
|
||||
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Блокировка компании по документу о расторжении
|
||||
*
|
||||
* @param companyBlockRequestBaseRequest
|
||||
* @return
|
||||
*/
|
||||
private synchronized RequestInfoUpdate blockCompanyAfterDocument(BaseRequest<CommonDeleteRequest> companyBlockRequestBaseRequest) throws ValidationException {
|
||||
CommonDeleteRequest request = companyBlockRequestBaseRequest.getRequestPayload();
|
||||
log.debug("CommonDeleteRequest (block request) received id = {}", request.getId());
|
||||
{ // Валидация
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyBlockRequestBaseRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
// case UPDATE -> update((CompanyNewRequest) request.getRequestPayload(), true);
|
||||
// }
|
||||
// return requestInfoUpdate;
|
||||
// }
|
||||
//
|
||||
// public synchronized Long create(CompanyNewRequest companyNewRequest) throws ValidationException {
|
||||
// IValidator validator = companyNewRequestValidator.apply(companyNewRequest);
|
||||
// Optional<EnumMessage> error = validator.tillFirstError();
|
||||
// if (error.isPresent()) {
|
||||
// throw new ValidationException(error.get());
|
||||
// }
|
||||
//
|
||||
// log.debug("creating new company");
|
||||
// Instant now = Instant.now();
|
||||
// Company company = new Company();
|
||||
// company.setId(idSequence.nextId());
|
||||
// company.setCreated(now);
|
||||
// company.setUpdated(now);
|
||||
// company.setShortName(companyNewRequest.getShortName());
|
||||
// company.setFullName(companyNewRequest.getFullName());
|
||||
// company.setTradingCode(companyNewRequest.getTradingCode());
|
||||
// company.setClearingCode(companyNewRequest.getClearingCode());
|
||||
// company.setRegistrationCode(companyNewRequest.getRegistrationCode());
|
||||
// if (companyNewRequest.getWorkflowStatus() != null) {
|
||||
// company.setWorkflowStatus(companyNewRequest.getWorkflowStatus());
|
||||
// } else {
|
||||
// company.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
// }
|
||||
// fillNewCompanyInfo(company, companyNewRequest);
|
||||
//
|
||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
// transaction.beginTransaction();
|
||||
// boolean txOk = false;
|
||||
// try {
|
||||
// if (companyNewRequest.getCompanySymbol() != null) {
|
||||
// CompanySymbols newSymbol = new CompanySymbols();
|
||||
// newSymbol.setId(idSequence.nextId());
|
||||
// newSymbol.setCompanyId(company.getId());
|
||||
// newSymbol.setCompanySymbol(companyNewRequest.getCompanySymbol());
|
||||
// newSymbol.setCompanySymbolValue(companyNewRequest.getCompanySymbolValue());
|
||||
// log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), company.getId());
|
||||
// Imdg<CompanySymbols> companySymbolsImdg = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
// companySymbolsImdg.insert(newSymbol);
|
||||
// log.debug("Creating companySymbols with id: {} by company.id: {} done", newSymbol.getId(), company.getId());
|
||||
// updateCompanyBySymbol(company, newSymbol, false);
|
||||
// }
|
||||
// Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
// companyMap.insert(company);
|
||||
// log.debug("company-new request processed, BaseRequest.id = {}, company.id={}",
|
||||
// companyNewRequest.getId(), company.getId());
|
||||
// txOk = true;
|
||||
// } finally {
|
||||
// if (txOk)
|
||||
// transaction.commitTransaction();
|
||||
// else
|
||||
// transaction.rollbackTransaction();
|
||||
// }
|
||||
// accountNotification.makeInfoAccount(company.getId());
|
||||
// return company.getId();
|
||||
// }
|
||||
//
|
||||
// public synchronized void update(CompanyNewRequest updateRequest, boolean validationIsEnable) throws ValidationException {
|
||||
// if (validationIsEnable) {
|
||||
// IValidator validator = companyUpdateRequestValidator.apply(updateRequest);
|
||||
// Optional<EnumMessage> error = validator.tillFirstError();
|
||||
// if (error.isPresent()) {
|
||||
// throw new ValidationException(error.get());
|
||||
// }
|
||||
// }
|
||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
// transaction.beginTransaction();
|
||||
// boolean txOk = false;
|
||||
// try {
|
||||
// Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
// Company company = companyMap.getSingleObjectByID(updateRequest.getId());
|
||||
// if (company == null) {
|
||||
// log.trace("Company {} not found", updateRequest.getId());
|
||||
// throw new ValidationException(new EnumMessage(CompanyErrors.CompanyNotFound));
|
||||
// }
|
||||
//// if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) {
|
||||
//// log.trace("Company {} not active: {}", company.getId(), company.getWorkflowStatus());
|
||||
//// return requestHelper.makeErrorResponse(companyUpdateRequestBaseRequest, CompanyErrors.CompanyDisabled, updateRequest.getId());
|
||||
//// }
|
||||
//
|
||||
// company.setUpdated(Instant.now());
|
||||
// if (StringUtils.isNotEmpty(updateRequest.getShortName()))
|
||||
// company.setShortName(updateRequest.getShortName());
|
||||
// if (StringUtils.isNotEmpty(updateRequest.getFullName()))
|
||||
// company.setFullName(updateRequest.getFullName());
|
||||
//
|
||||
// if (updateRequest.getCompanySymbol() != null || updateRequest.getCompanySymbolValue() != null) {
|
||||
// log.trace("Request field CompanySymbol, CompanySymbolValue ignore for update company request.");
|
||||
// }
|
||||
//
|
||||
// String prevStatus = company.getWorkflowStatus();
|
||||
// if (updateRequest.getWorkflowStatus() != null) {
|
||||
// company.setWorkflowStatus(updateRequest.getWorkflowStatus());
|
||||
// if (!Objects.equals(prevStatus, company.getWorkflowStatus())) {
|
||||
// relationService.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
||||
// } else {
|
||||
// log.trace("Status was not changed");
|
||||
// }
|
||||
// } else {
|
||||
// log.trace("Null new WorkflowStatus");
|
||||
// }
|
||||
// companyMap.update(company);
|
||||
// txOk = true;
|
||||
// } finally {
|
||||
// if (txOk)
|
||||
// transaction.commitTransaction();
|
||||
// else
|
||||
// transaction.rollbackTransaction();
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// protected void updateCompanyBySymbol(Company company, CompanySymbols companySymbol, boolean shouldBeDeleted) {
|
||||
// assert company.getId().equals(companySymbol.getCompanyId());
|
||||
// String companySymbolValue = companySymbol.getCompanySymbolValue();
|
||||
// String setUpValue = shouldBeDeletedOrSet(companySymbolValue, shouldBeDeleted);
|
||||
// if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||
// company.setTradingCode(setUpValue);
|
||||
// }
|
||||
// if (CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||
// company.setClearingCode(setUpValue);
|
||||
// }
|
||||
// if (CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||
// company.setRegistrationCode(setUpValue);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// private String shouldBeDeletedOrSet(String companySymbol, boolean shouldBeDeleted) {
|
||||
// return shouldBeDeleted ? "" : companySymbol;
|
||||
// }
|
||||
//
|
||||
// public synchronized void updateCompanyBySymbol(ImdgTransaction transaction, CompanySymbols companySymbol, boolean shouldBeDeleted) throws ClearingBaseException {
|
||||
// if (companySymbol.getCompanyId() == null) {
|
||||
// throw new IllegalArgumentException("Required companySymbol.companyId");
|
||||
// }
|
||||
// if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())
|
||||
// || CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())
|
||||
// || CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||
// Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
//
|
||||
// Company company = companyMap.getSingleObjectByID(companySymbol.getCompanyId());
|
||||
// if (company == null) {
|
||||
// throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyNotFound, companySymbol.getCompanyId()));
|
||||
// }
|
||||
// updateCompanyBySymbol(company, companySymbol, shouldBeDeleted);
|
||||
// company.setUpdated(Instant.now());
|
||||
// companyMap.update(company);
|
||||
// log.debug("Company {} updated by change CompanySymbols {} ({})",
|
||||
// company.getId(), companySymbol.getId(), companySymbol.getCompanySymbol());
|
||||
// } else {
|
||||
// log.trace("No need update company {} by changed companySymbols {}",
|
||||
// companySymbol.getCompanyId(), companySymbol.getCompanySymbol());
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Блокировка компании
|
||||
// *
|
||||
// * @param companyBlockRequestBaseRequest
|
||||
// * @return
|
||||
// */
|
||||
// private synchronized RequestInfoUpdate deleteCompany(BaseRequest<CommonDeleteRequest> companyBlockRequestBaseRequest) throws ValidationException {
|
||||
// CommonDeleteRequest request = companyBlockRequestBaseRequest.getRequestPayload();
|
||||
// log.debug("CommonDeleteRequest (block request) received id = {}", request.getId());
|
||||
// { // Валидация
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyBlockRequestBaseRequest);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// requestInfoUpdate = validationHelper.validateTillFirstError(companyBlockRequestBaseRequest, companyDeleteRequestValidator);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
}
|
||||
|
||||
Company company = companyIMap.getSingleObjectByID(request.getId());
|
||||
if (company == null) {
|
||||
log.warn("Company {} not found", request.getId());
|
||||
return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound);
|
||||
}
|
||||
if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) {
|
||||
log.info("Company {} already blocked", request.getId());
|
||||
return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyDisabled, company.getShortName());
|
||||
}
|
||||
|
||||
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
|
||||
company.setUpdated(Instant.now());
|
||||
|
||||
company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
||||
|
||||
relationService.onChangeWorkflowStatusOnlyRelationChange(transaction, company, company.getWorkflowStatus());
|
||||
log.debug("Update company.id={}", company.getId());
|
||||
companyMap.update(company);
|
||||
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Блокировка компании после блокировки счетов
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private synchronized RequestInfoUpdate finishCompanyTermination(BaseRequest<AccountTerminationRequest> terminationRequest) throws ValidationException {
|
||||
AccountTerminationRequest request = terminationRequest.getRequestPayload();
|
||||
log.debug("AccountTerminationRequest (block request) received id = {}", terminationRequest.getId());
|
||||
{ // Валидация
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(terminationRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
}
|
||||
|
||||
log.debug("Finish block company {}", request.getCompanyId());
|
||||
ImdgTransaction tx = imdgProvider.newTransaction();
|
||||
boolean txOk = false;
|
||||
tx.beginTransaction();
|
||||
try {
|
||||
Company company = companyIMap.getSingleObjectByID(request.getCompanyId());
|
||||
if (company == null) {
|
||||
log.warn("Company {} not found", request.getCompanyId());
|
||||
//return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound);
|
||||
}
|
||||
if (WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus())) {
|
||||
log.info("Company {} already blocked", company.getId());
|
||||
//return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyDisabled);
|
||||
} else {
|
||||
company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
||||
company.setUpdated(Instant.now());
|
||||
companyIMap.update(company);
|
||||
}
|
||||
|
||||
relationService.cancelAllRelationForCompany(tx, request.getCompanyId());
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk) tx.commitTransaction();
|
||||
else tx.rollbackTransaction();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
void fillNewCompanyInfo(Company company, CompanyNewRequest req) {
|
||||
if (company.getProfile() == null)
|
||||
company.setProfile(new CompanyInfo());
|
||||
CompanyInfo ci = company.getProfile();
|
||||
ci.setId(company.getId());
|
||||
ci.setCompanyId(company.getId());
|
||||
}
|
||||
// }
|
||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
// transaction.beginTransaction();
|
||||
// boolean txOk = false;
|
||||
// try {
|
||||
// Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
// Company company = companyMap.getSingleObjectByID(request.getId());
|
||||
// if (company == null) {
|
||||
// log.warn("Company {} not found", request.getId());
|
||||
// return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound, request.getId());
|
||||
// }
|
||||
//
|
||||
// company.setUpdated(Instant.now());
|
||||
//
|
||||
// String prevStatus = company.getWorkflowStatus();
|
||||
// company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
||||
//
|
||||
// relationService.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
||||
// log.debug("Update company.id={}", company.getId());
|
||||
// companyMap.update(company);
|
||||
//
|
||||
// txOk = true;
|
||||
// } finally {
|
||||
// if (txOk)
|
||||
// transaction.commitTransaction();
|
||||
// else
|
||||
// transaction.rollbackTransaction();
|
||||
// }
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * Блокировка компании по документу о расторжении
|
||||
// *
|
||||
// * @param companyBlockRequestBaseRequest
|
||||
// * @return
|
||||
// */
|
||||
// private synchronized RequestInfoUpdate blockCompanyAfterDocument(BaseRequest<CommonDeleteRequest> companyBlockRequestBaseRequest) throws ValidationException {
|
||||
// CommonDeleteRequest request = companyBlockRequestBaseRequest.getRequestPayload();
|
||||
// log.debug("CommonDeleteRequest (block request) received id = {}", request.getId());
|
||||
// { // Валидация
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyBlockRequestBaseRequest);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
//// requestInfoUpdate = validationHelper.validateTillFirstError(companyBlockRequestBaseRequest, companyDeleteRequestValidator);
|
||||
//// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
// }
|
||||
//
|
||||
// Company company = companyIMap.getSingleObjectByID(request.getId());
|
||||
// if (company == null) {
|
||||
// log.warn("Company {} not found", request.getId());
|
||||
// return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound);
|
||||
// }
|
||||
// if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) {
|
||||
// log.info("Company {} already blocked", request.getId());
|
||||
// return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyDisabled, company.getShortName());
|
||||
// }
|
||||
//
|
||||
//
|
||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
// transaction.beginTransaction();
|
||||
// boolean txOk = false;
|
||||
// try {
|
||||
// Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
//
|
||||
// company.setUpdated(Instant.now());
|
||||
//
|
||||
// company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
||||
//
|
||||
// relationService.onChangeWorkflowStatusOnlyRelationChange(transaction, company, company.getWorkflowStatus());
|
||||
// log.debug("Update company.id={}", company.getId());
|
||||
// companyMap.update(company);
|
||||
//
|
||||
// txOk = true;
|
||||
// } finally {
|
||||
// if (txOk)
|
||||
// transaction.commitTransaction();
|
||||
// else
|
||||
// transaction.rollbackTransaction();
|
||||
// }
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Блокировка компании после блокировки счетов
|
||||
// *
|
||||
// * @return
|
||||
// */
|
||||
// private synchronized RequestInfoUpdate finishCompanyTermination(BaseRequest<AccountTerminationRequest> terminationRequest) throws ValidationException {
|
||||
// AccountTerminationRequest request = terminationRequest.getRequestPayload();
|
||||
// log.debug("AccountTerminationRequest (block request) received id = {}", terminationRequest.getId());
|
||||
// { // Валидация
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(terminationRequest);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
// }
|
||||
//
|
||||
// log.debug("Finish block company {}", request.getCompanyId());
|
||||
// ImdgTransaction tx = imdgProvider.newTransaction();
|
||||
// boolean txOk = false;
|
||||
// tx.beginTransaction();
|
||||
// try {
|
||||
// Company company = companyIMap.getSingleObjectByID(request.getCompanyId());
|
||||
// if (company == null) {
|
||||
// log.warn("Company {} not found", request.getCompanyId());
|
||||
// //return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound);
|
||||
// }
|
||||
// if (WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus())) {
|
||||
// log.info("Company {} already blocked", company.getId());
|
||||
// //return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyDisabled);
|
||||
// } else {
|
||||
// company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
||||
// company.setUpdated(Instant.now());
|
||||
// companyIMap.update(company);
|
||||
// }
|
||||
//
|
||||
// relationService.cancelAllRelationForCompany(tx, request.getCompanyId());
|
||||
// txOk = true;
|
||||
// } finally {
|
||||
// if (txOk) tx.commitTransaction();
|
||||
// else tx.rollbackTransaction();
|
||||
// }
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// void fillNewCompanyInfo(Company company, CompanyNewRequest req) {
|
||||
// if (company.getProfile() == null)
|
||||
// company.setProfile(new CompanyInfo());
|
||||
// CompanyInfo ci = company.getProfile();
|
||||
// ci.setId(company.getId());
|
||||
// ci.setCompanyId(company.getId());
|
||||
// }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package ru.spcex.clearing.company.service;
|
||||
|
||||
|
||||
import java.util.function.Function;
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
|
|
@ -9,35 +10,19 @@ import org.springframework.beans.factory.InitializingBean;
|
|||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.platform.messaging.service.Status;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.util.services.RequestHelper;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.enumeration.UserRole;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgId;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||
import ru.spcex.platform.utils.error.ClearingBaseException;
|
||||
import ru.spcex.platform.utils.error.ValidationException;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Deprecated
|
||||
@Service
|
||||
public class CompanySymbolService extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
|
@ -79,160 +64,160 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB
|
|||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
callback(CompanySymbolNewRequest.class)
|
||||
.setFunction(this::processBaseRequest)
|
||||
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_NEW, callbacks::put);
|
||||
callback(CompanySymbolUpdateRequest.class)
|
||||
.setFunction(this::companySymbolUpdate)
|
||||
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(this::companySymbolDelete)
|
||||
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_DELETE, callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
private RequestInfoUpdate processBaseRequest(BaseRequest<?> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = null;
|
||||
// Валидация
|
||||
requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
try {
|
||||
create((CompanySymbolNewRequest) request.getRequestPayload());
|
||||
} catch (ValidationException e) {
|
||||
return requestHelper.makeErrorResponse(request, e.getEnumMsg());
|
||||
}
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
public void setCompanyService(CompanyService companyService) {
|
||||
this.companyService = companyService;
|
||||
}
|
||||
|
||||
|
||||
public Long create(CompanySymbolNewRequest symbolRequest) throws ValidationException {
|
||||
log.debug("CompanySymbolNewRequest received");
|
||||
{ // validate
|
||||
IValidator validator = companySymbolNewRequestValidator.apply(symbolRequest);
|
||||
Optional<EnumMessage> error = validator.tillFirstError();
|
||||
if (error.isPresent()) {
|
||||
throw new ValidationException(error.get());
|
||||
}
|
||||
}
|
||||
|
||||
CompanySymbols companySymbols = create(symbolRequest.companyId, symbolRequest.getCompanySymbol(),
|
||||
symbolRequest.getCompanySymbolValue());
|
||||
log.debug("successfully processed, id {}", companySymbols.getId());
|
||||
return null;
|
||||
}
|
||||
|
||||
public CompanySymbols create(Long companyId, String companySymbol, String companySymbolValue) {
|
||||
Objects.requireNonNull(companyId);
|
||||
CompanySymbols newSymbol = new CompanySymbols();
|
||||
newSymbol.setId(idSequence.nextId());
|
||||
newSymbol.setCompanyId(companyId);
|
||||
newSymbol.setCompanySymbol(companySymbol);
|
||||
newSymbol.setCompanySymbolValue(companySymbolValue);
|
||||
log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), companyId);
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
companySymbolsTMap.update(newSymbol);
|
||||
|
||||
Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
Company company = companyMap.getSingleObjectByID(newSymbol.getCompanyId());
|
||||
companyService.updateCompanyBySymbol(company, newSymbol, false);
|
||||
companyMap.update(company);
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
return newSymbol;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate companySymbolUpdate(BaseRequest<CompanySymbolUpdateRequest> symbolRequest) {
|
||||
CompanySymbolUpdateRequest req = symbolRequest.getRequestPayload();
|
||||
log.debug("CompanySymbolUpdateRequest received, id={}", symbolRequest.getId());
|
||||
|
||||
{ // validate
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(symbolRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(symbolRequest, companySymbolUpdateRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
}
|
||||
CompanySymbols companySymbols;
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
companySymbols = companySymbolsTMap.getSingleObjectByID(req.getId());
|
||||
if (companySymbols == null) {
|
||||
throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyInfoNotFound, req.getId()));
|
||||
}
|
||||
if (req.getCompanySymbol() != null && !companySymbols.getCompanySymbol().equalsIgnoreCase(req.getCompanySymbol())) {
|
||||
log.debug("Change CompanySymbol[{}].CompanySymbol from \"{}\" to \"{}\"",
|
||||
companySymbols.getId(), companySymbols.getCompanySymbol(), req.getCompanySymbol());
|
||||
companyService.updateCompanyBySymbol(transaction, companySymbols, true);
|
||||
companySymbols.setCompanySymbol(req.getCompanySymbol());
|
||||
}
|
||||
companySymbols.setCompanySymbolValue(req.getCompanySymbolValue());
|
||||
companySymbolsTMap.update(companySymbols);
|
||||
companyService.updateCompanyBySymbol(transaction, companySymbols, false);
|
||||
txOk = true;
|
||||
} catch (ClearingBaseException e) {
|
||||
return requestHelper.makeErrorResponse(symbolRequest, e.getEnumMsg());
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
|
||||
log.debug("successfully processed, id {}", companySymbols.getId());
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate companySymbolDelete(BaseRequest<CommonDeleteRequest> symbolRequest) {
|
||||
CommonDeleteRequest req = symbolRequest.getRequestPayload();
|
||||
log.debug("CommonDeleteRequest for CompanySymbol received, id={}", symbolRequest.getId());
|
||||
|
||||
{ // validate
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(symbolRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(symbolRequest, companySymbolDeleteRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
}
|
||||
CompanySymbols companySymbols;
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
companySymbols = companySymbolsTMap.getSingleObjectByID(req.getId());
|
||||
if (companySymbols == null) {
|
||||
throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyInfoNotFound, req.getId()));
|
||||
}
|
||||
companySymbolsTMap.delete(companySymbols);
|
||||
companyService.updateCompanyBySymbol(transaction, companySymbols, true);
|
||||
txOk = true;
|
||||
} catch (ClearingBaseException e) {
|
||||
return requestHelper.makeErrorResponse(symbolRequest, e.getEnumMsg());
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
|
||||
log.debug("successfully processed, id {}", companySymbols.getId());
|
||||
return null;
|
||||
// callback(CompanySymbolNewRequest.class)
|
||||
// .setFunction(this::processBaseRequest)
|
||||
// .forDestination(Consts.DESTINATION_COMPANY_SYMBOL_NEW, callbacks::put);
|
||||
// callback(CompanySymbolUpdateRequest.class)
|
||||
// .setFunction(this::companySymbolUpdate)
|
||||
// .forDestination(Consts.DESTINATION_COMPANY_SYMBOL_UPDATE, callbacks::put);
|
||||
// callback(CommonDeleteRequest.class)
|
||||
// .setFunction(this::companySymbolDelete)
|
||||
// .forDestination(Consts.DESTINATION_COMPANY_SYMBOL_DELETE, callbacks::put);
|
||||
// init();
|
||||
}
|
||||
//
|
||||
// private RequestInfoUpdate processBaseRequest(BaseRequest<?> request) {
|
||||
// RequestInfoUpdate requestInfoUpdate = null;
|
||||
// // Валидация
|
||||
// requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// try {
|
||||
// create((CompanySymbolNewRequest) request.getRequestPayload());
|
||||
// } catch (ValidationException e) {
|
||||
// return requestHelper.makeErrorResponse(request, e.getEnumMsg());
|
||||
// }
|
||||
// return requestInfoUpdate;
|
||||
// }
|
||||
//
|
||||
// public void setCompanyService(CompanyService companyService) {
|
||||
// this.companyService = companyService;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// public Long create(CompanySymbolNewRequest symbolRequest) throws ValidationException {
|
||||
// log.debug("CompanySymbolNewRequest received");
|
||||
// { // validate
|
||||
// IValidator validator = companySymbolNewRequestValidator.apply(symbolRequest);
|
||||
// Optional<EnumMessage> error = validator.tillFirstError();
|
||||
// if (error.isPresent()) {
|
||||
// throw new ValidationException(error.get());
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// CompanySymbols companySymbols = create(symbolRequest.companyId, symbolRequest.getCompanySymbol(),
|
||||
// symbolRequest.getCompanySymbolValue());
|
||||
// log.debug("successfully processed, id {}", companySymbols.getId());
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// public CompanySymbols create(Long companyId, String companySymbol, String companySymbolValue) {
|
||||
// Objects.requireNonNull(companyId);
|
||||
// CompanySymbols newSymbol = new CompanySymbols();
|
||||
// newSymbol.setId(idSequence.nextId());
|
||||
// newSymbol.setCompanyId(companyId);
|
||||
// newSymbol.setCompanySymbol(companySymbol);
|
||||
// newSymbol.setCompanySymbolValue(companySymbolValue);
|
||||
// log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), companyId);
|
||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
// transaction.beginTransaction();
|
||||
// boolean txOk = false;
|
||||
// try {
|
||||
// Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
// companySymbolsTMap.update(newSymbol);
|
||||
//
|
||||
// Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
// Company company = companyMap.getSingleObjectByID(newSymbol.getCompanyId());
|
||||
// companyService.updateCompanyBySymbol(company, newSymbol, false);
|
||||
// companyMap.update(company);
|
||||
// txOk = true;
|
||||
// } finally {
|
||||
// if (txOk)
|
||||
// transaction.commitTransaction();
|
||||
// else
|
||||
// transaction.rollbackTransaction();
|
||||
// }
|
||||
// return newSymbol;
|
||||
// }
|
||||
//
|
||||
// public RequestInfoUpdate companySymbolUpdate(BaseRequest<CompanySymbolUpdateRequest> symbolRequest) {
|
||||
// CompanySymbolUpdateRequest req = symbolRequest.getRequestPayload();
|
||||
// log.debug("CompanySymbolUpdateRequest received, id={}", symbolRequest.getId());
|
||||
//
|
||||
// { // validate
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(symbolRequest);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// requestInfoUpdate = validationHelper.validateTillFirstError(symbolRequest, companySymbolUpdateRequestValidator);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
// }
|
||||
// CompanySymbols companySymbols;
|
||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
// transaction.beginTransaction();
|
||||
// boolean txOk = false;
|
||||
// try {
|
||||
// Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
// companySymbols = companySymbolsTMap.getSingleObjectByID(req.getId());
|
||||
// if (companySymbols == null) {
|
||||
// throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyInfoNotFound, req.getId()));
|
||||
// }
|
||||
// if (req.getCompanySymbol() != null && !companySymbols.getCompanySymbol().equalsIgnoreCase(req.getCompanySymbol())) {
|
||||
// log.debug("Change CompanySymbol[{}].CompanySymbol from \"{}\" to \"{}\"",
|
||||
// companySymbols.getId(), companySymbols.getCompanySymbol(), req.getCompanySymbol());
|
||||
// companyService.updateCompanyBySymbol(transaction, companySymbols, true);
|
||||
// companySymbols.setCompanySymbol(req.getCompanySymbol());
|
||||
// }
|
||||
// companySymbols.setCompanySymbolValue(req.getCompanySymbolValue());
|
||||
// companySymbolsTMap.update(companySymbols);
|
||||
// companyService.updateCompanyBySymbol(transaction, companySymbols, false);
|
||||
// txOk = true;
|
||||
// } catch (ClearingBaseException e) {
|
||||
// return requestHelper.makeErrorResponse(symbolRequest, e.getEnumMsg());
|
||||
// } finally {
|
||||
// if (txOk)
|
||||
// transaction.commitTransaction();
|
||||
// else
|
||||
// transaction.rollbackTransaction();
|
||||
// }
|
||||
//
|
||||
// log.debug("successfully processed, id {}", companySymbols.getId());
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// public RequestInfoUpdate companySymbolDelete(BaseRequest<CommonDeleteRequest> symbolRequest) {
|
||||
// CommonDeleteRequest req = symbolRequest.getRequestPayload();
|
||||
// log.debug("CommonDeleteRequest for CompanySymbol received, id={}", symbolRequest.getId());
|
||||
//
|
||||
// { // validate
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(symbolRequest);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// requestInfoUpdate = validationHelper.validateTillFirstError(symbolRequest, companySymbolDeleteRequestValidator);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
// }
|
||||
// CompanySymbols companySymbols;
|
||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
// transaction.beginTransaction();
|
||||
// boolean txOk = false;
|
||||
// try {
|
||||
// Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
// companySymbols = companySymbolsTMap.getSingleObjectByID(req.getId());
|
||||
// if (companySymbols == null) {
|
||||
// throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyInfoNotFound, req.getId()));
|
||||
// }
|
||||
// companySymbolsTMap.delete(companySymbols);
|
||||
// companyService.updateCompanyBySymbol(transaction, companySymbols, true);
|
||||
// txOk = true;
|
||||
// } catch (ClearingBaseException e) {
|
||||
// return requestHelper.makeErrorResponse(symbolRequest, e.getEnumMsg());
|
||||
// } finally {
|
||||
// if (txOk)
|
||||
// transaction.commitTransaction();
|
||||
// else
|
||||
// transaction.rollbackTransaction();
|
||||
// }
|
||||
//
|
||||
// log.debug("successfully processed, id {}", companySymbols.getId());
|
||||
// return null;
|
||||
// }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package ru.spcex.clearing.company.service;
|
||||
|
||||
import java.util.function.Function;
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
|
|
@ -10,21 +11,17 @@ import org.springframework.beans.factory.annotation.Qualifier;
|
|||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.profile.Contact;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
@Deprecated
|
||||
@Service
|
||||
public class ContactService extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
|
@ -55,72 +52,72 @@ public class ContactService extends QueueConsumer implements InitializingBean {
|
|||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
callback(ContactNewRequest.class)
|
||||
.setFunction(this::contactNew)
|
||||
.forDestination(Consts.DESTINATION_CONTACT_NEW, callbacks::put);
|
||||
callback(ContactUpdateRequest.class)
|
||||
.setFunction(this::contactUpdate)
|
||||
.forDestination(Consts.DESTINATION_CONTACT_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(this::companySymbolDelete)
|
||||
.forDestination(Consts.DESTINATION_CONTACT_DELETE, callbacks::put);
|
||||
init();
|
||||
// callback(ContactNewRequest.class)
|
||||
// .setFunction(this::contactNew)
|
||||
// .forDestination(Consts.DESTINATION_CONTACT_NEW, callbacks::put);
|
||||
// callback(ContactUpdateRequest.class)
|
||||
// .setFunction(this::contactUpdate)
|
||||
// .forDestination(Consts.DESTINATION_CONTACT_UPDATE, callbacks::put);
|
||||
// callback(CommonDeleteRequest.class)
|
||||
// .setFunction(this::companySymbolDelete)
|
||||
// .forDestination(Consts.DESTINATION_CONTACT_DELETE, callbacks::put);
|
||||
// init();
|
||||
}
|
||||
|
||||
public RequestInfoUpdate contactNew(BaseRequest<ContactNewRequest> userRequest) {
|
||||
log.debug("ContactNewRequest received");
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, contactNewRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
ContactNewRequest contactNewRequest = userRequest.getRequestPayload();
|
||||
Contact contact = new Contact();
|
||||
contact.setCompanyId(contactNewRequest.getCompanyId());
|
||||
contact.setContactType(contactNewRequest.getContactType());
|
||||
contact.setContactValue(contactNewRequest.getContactValue());
|
||||
Long id = contactMap.insert(contact);
|
||||
|
||||
log.debug("successfully processed, id {}", id);
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate contactUpdate(BaseRequest<ContactUpdateRequest> userRequest) {
|
||||
log.debug("ContactUpdateRequest received");
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, contactUpdateRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
// Тип контакта не меняем, при валидации кидаем ошибку.
|
||||
ContactUpdateRequest req = userRequest.getRequestPayload();
|
||||
Contact contact = contactMap.getSingleObjectByID(req.getId());
|
||||
contact.setContactValue(req.getContactValue());
|
||||
|
||||
contactMap.update(contact);
|
||||
log.debug("successfully processed, id {}", contact.getId());
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate companySymbolDelete(BaseRequest<CommonDeleteRequest> userRequest) {
|
||||
log.debug("CommonDeleteRequest received for contact service.");
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, contactDeleteRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
CommonDeleteRequest req = userRequest.getRequestPayload();
|
||||
|
||||
Contact contact = contactMap.getSingleObjectByID(req.getId());
|
||||
|
||||
contactMap.delete(contact);
|
||||
log.debug("successfully deleted, id {}", contact.getId());
|
||||
return null;
|
||||
}
|
||||
// public RequestInfoUpdate contactNew(BaseRequest<ContactNewRequest> userRequest) {
|
||||
// log.debug("ContactNewRequest received");
|
||||
//
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, contactNewRequestValidator);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// ContactNewRequest contactNewRequest = userRequest.getRequestPayload();
|
||||
// Contact contact = new Contact();
|
||||
// contact.setCompanyId(contactNewRequest.getCompanyId());
|
||||
// contact.setContactType(contactNewRequest.getContactType());
|
||||
// contact.setContactValue(contactNewRequest.getContactValue());
|
||||
// Long id = contactMap.insert(contact);
|
||||
//
|
||||
// log.debug("successfully processed, id {}", id);
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// public RequestInfoUpdate contactUpdate(BaseRequest<ContactUpdateRequest> userRequest) {
|
||||
// log.debug("ContactUpdateRequest received");
|
||||
//
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, contactUpdateRequestValidator);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// // Тип контакта не меняем, при валидации кидаем ошибку.
|
||||
// ContactUpdateRequest req = userRequest.getRequestPayload();
|
||||
// Contact contact = contactMap.getSingleObjectByID(req.getId());
|
||||
// contact.setContactValue(req.getContactValue());
|
||||
//
|
||||
// contactMap.update(contact);
|
||||
// log.debug("successfully processed, id {}", contact.getId());
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// public RequestInfoUpdate companySymbolDelete(BaseRequest<CommonDeleteRequest> userRequest) {
|
||||
// log.debug("CommonDeleteRequest received for contact service.");
|
||||
//
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, contactDeleteRequestValidator);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// CommonDeleteRequest req = userRequest.getRequestPayload();
|
||||
//
|
||||
// Contact contact = contactMap.getSingleObjectByID(req.getId());
|
||||
//
|
||||
// contactMap.delete(contact);
|
||||
// log.debug("successfully deleted, id {}", contact.getId());
|
||||
// return null;
|
||||
// }
|
||||
}
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
package ru.spcex.clearing.company.service;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
|
|
@ -14,29 +13,13 @@ 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.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
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.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.util.services.RequestHelper;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.enumeration.CompanySymbol;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||
import ru.spcex.platform.utils.error.ValidationException;
|
||||
import ru.spcex.platform.utils.log.ExceptionUtils;
|
||||
import ru.spcex.platform.utils.text.TextUtil;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* Обрабатывает MultiCompanyRequest и распределяет сложный объект по...
|
||||
|
|
@ -114,330 +97,330 @@ public class MultiCompanyService
|
|||
// init();
|
||||
}
|
||||
|
||||
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);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
}
|
||||
Long companyId = null;
|
||||
boolean txOk = false; // todo IMDG transaction
|
||||
synchronized (companyService) {
|
||||
try {
|
||||
//часть в companyService
|
||||
req.setCompanySymbols(
|
||||
Stream.concat(req.getCompanySymbols().stream(), additionalSymbols(req.getCompany())).collect(Collectors.toList())
|
||||
);
|
||||
companyId = getCompanyIdForCompanySymbols(req.getUuid(), req.getCompany(), req.getCompanySymbols());
|
||||
log.debug("For request {} (uuid {}) company {}.", baseRequest.getId(), req.getUuid(), companyId == null ? "not found" : ("found, id=" + companyId));
|
||||
|
||||
if (companyId == null) {
|
||||
companyId = companyService.create(req.getCompany());
|
||||
log.debug("The companyId={}", companyId);
|
||||
fillCompanyId(req, companyId);
|
||||
} else {
|
||||
fillCompanyId(req, companyId);
|
||||
companyService.update(req.getCompany(), false);
|
||||
}
|
||||
|
||||
RequestInfoUpdate replyI;
|
||||
if (req.getCompanyInfo() != null) {
|
||||
log.trace("For company {} do update CompanyInfo", companyId);
|
||||
replyI = companyInfoService.companyInfoUpdate(wrapRequest(baseRequest, req.getCompanyInfo(), null));
|
||||
validateReply(companyId, "CompanyInfo", replyI);
|
||||
}
|
||||
for (ProfileDocumentNewRequest partRequest : req.getProfileDocuments()) {
|
||||
ProfileDocument existDocument = findCompanyDocument(partRequest);
|
||||
if (existDocument == null) {
|
||||
log.trace("For company[{}] do new profileDocument", companyId);
|
||||
replyI = profileDocumentService.profileDocumentNew(wrapRequest(baseRequest, partRequest, ActionType.NEW));
|
||||
validateReply(companyId, "profileDocumentNew", replyI);
|
||||
} else {
|
||||
log.trace("For company[{}] do update profileDocument[{}]", companyId, existDocument.getId());
|
||||
ProfileDocumentUpdateRequest partUpdateRequest = createUpdateRequest(existDocument, partRequest);
|
||||
replyI = profileDocumentService.profileDocumentUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
||||
validateReply(companyId, "profileDocumentUpdate", replyI);
|
||||
}
|
||||
}
|
||||
|
||||
for (CompanySymbolNewRequest partRequest : req.getCompanySymbols()) {
|
||||
CompanySymbols existSymbol = findCompanySymbols(partRequest);
|
||||
if (existSymbol == null) {
|
||||
log.trace("For company[{}] do new companySymbol", companyId);
|
||||
Long id = companySymbolService.create(partRequest);
|
||||
} else {
|
||||
log.trace("For company[{}] do update companySymbol[{}]", companyId, existSymbol.getId());
|
||||
CompanySymbolUpdateRequest partUpdateRequest = createUpdateRequest(existSymbol, partRequest);
|
||||
replyI = companySymbolService.companySymbolUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
||||
validateReply(companyId, "companySymbolUpdate", replyI);
|
||||
}
|
||||
}
|
||||
for (ContactNewRequest partRequest : req.getContacts()) {
|
||||
Contact existContact = findContact(partRequest);
|
||||
if (existContact == null) {
|
||||
log.trace("For company[{}] do new contact", companyId);
|
||||
replyI = contactService.contactNew(wrapRequest(baseRequest, partRequest, ActionType.NEW));
|
||||
validateReply(companyId, "contactNew", replyI);
|
||||
} else {
|
||||
log.trace("For company[{}] do update contact[{}]", companyId, existContact.getId());
|
||||
ContactUpdateRequest partUpdateRequest = createUpdateRequest(existContact, partRequest);
|
||||
replyI = contactService.contactUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
||||
validateReply(companyId, "contactUpdate", replyI);
|
||||
}
|
||||
}
|
||||
|
||||
for (ClearingMemberCategoryNewRequest partRequest : req.getCategories()) {
|
||||
ClearingMemberCategory existCategory = findCategory(partRequest);
|
||||
if (existCategory == null) {
|
||||
log.trace("For company[{}] do new category", companyId);
|
||||
replyI = clearingMemberCategoryService.clearingMemberCategoryNew(wrapRequest(baseRequest, partRequest, ActionType.NEW));
|
||||
validateReply(companyId, "contactNew", replyI);
|
||||
} else {
|
||||
log.trace("For company[{}] do update category[{}]", companyId, existCategory.getId());
|
||||
ClearingMemberCategoryUpdateRequest partUpdateRequest = createUpdateRequest(existCategory, partRequest);
|
||||
replyI = clearingMemberCategoryService.clearingMemberCategoryUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
||||
validateReply(companyId, "categoryUpdate", replyI);
|
||||
}
|
||||
}
|
||||
txOk = true;
|
||||
} catch (ValidationException vex) {
|
||||
log.error("For gateway request.id={}, companyId={} error validate: {}", baseRequest.getId(), companyId, messageResolver.resolve(vex.getEnumMsg()));
|
||||
log.trace("For companyId={} error validation: {}", companyId, ExceptionUtils.getStackTrace(vex));
|
||||
}
|
||||
}
|
||||
if (txOk) {
|
||||
log.debug("Create or update sendNewClientCode for company {}", companyId);
|
||||
for (ClientCodeNewRequest partRequest : req.getClientCodes()) {
|
||||
accountNotification.clientCodeNew(partRequest); // Consts.DESTINATION_CLIENT_CODE_NEW Consts.DESTINATION_CLIENT_CODE_UPDATE
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private Stream<CompanySymbolNewRequest> additionalSymbols(CompanyNewRequest companyNewReq) {
|
||||
BiFunction<String, String, Optional<CompanySymbolNewRequest>> symbolCreation = (companySymbol, companySymbolValue) -> {
|
||||
if (companySymbolValue == null || TextUtil.isEmpty(companySymbolValue)) {
|
||||
return Optional.empty();
|
||||
}
|
||||
CompanySymbolNewRequest companySymbolNewRequest = new CompanySymbolNewRequest();
|
||||
companySymbolNewRequest.setCompanySymbol(companySymbol);
|
||||
companySymbolNewRequest.setCompanySymbolValue(companySymbolValue);
|
||||
return Optional.of(companySymbolNewRequest);
|
||||
};
|
||||
return Stream.of(symbolCreation.apply(CompanySymbol.TRDC.getKey(), companyNewReq.getTradingCode()),
|
||||
symbolCreation.apply(CompanySymbol.CLRC.getKey(), companyNewReq.getClearingCode()),
|
||||
symbolCreation.apply(CompanySymbol.INTC.getKey(), companyNewReq.getInitiatorCode()),
|
||||
symbolCreation.apply(CompanySymbol.RGRC.getKey(), companyNewReq.getRegistrationCode()))
|
||||
.filter(Optional::isPresent)
|
||||
.map(Optional::get);
|
||||
}
|
||||
|
||||
void validateReply(Long companyId, String process, RequestInfoUpdate replyI) {
|
||||
if (replyI != null && replyI.getMessage() != null) {
|
||||
log.warn("Error process {} for companyId={}: {}", process, companyId, replyI.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
ProfileDocument findCompanyDocument(ProfileDocumentNewRequest partRequest) {
|
||||
Map<String, Comparable<?>> query = new HashMap<>();
|
||||
query.put("companyId", partRequest.getCompanyId());
|
||||
query.put("documentType", partRequest.getDocumentType());
|
||||
query.put("issueDate", partRequest.getIssueDate()); // может быть null
|
||||
Collection<ProfileDocument> allDoc = profileDocumentImdg.getCollectionObjectsByFieldValues(query);
|
||||
if (allDoc.isEmpty())
|
||||
return null;
|
||||
if (allDoc.size() > 1)
|
||||
log.warn("Fount {} ProfileDocument by: {}", allDoc.size(), query);
|
||||
return allDoc.iterator().next();
|
||||
}
|
||||
|
||||
CompanySymbols findCompanySymbols(CompanySymbolNewRequest partRequest) {
|
||||
Map<String, Comparable<?>> query = new HashMap<>();
|
||||
query.put("companyId", partRequest.getCompanyId());
|
||||
query.put("companySymbol", partRequest.getCompanySymbol());
|
||||
Collection<CompanySymbols> allCS = companySymbolsImdg.getCollectionObjectsByFieldValues(query);
|
||||
if (allCS.isEmpty())
|
||||
return null;
|
||||
if (allCS.size() > 1)
|
||||
log.warn("Fount {} CompanySymbols by: {}", allCS.size(), query);
|
||||
return allCS.iterator().next();
|
||||
}
|
||||
|
||||
Contact findContact(ContactNewRequest partRequest) {
|
||||
Map<String, Comparable<?>> query = new HashMap<>();
|
||||
query.put("companyId", partRequest.getCompanyId());
|
||||
query.put("contactType", partRequest.getContactType());
|
||||
Collection<Contact> allCS = contactImdg.getCollectionObjectsByFieldValues(query);
|
||||
if (allCS.isEmpty())
|
||||
return null;
|
||||
if (allCS.size() > 1)
|
||||
log.warn("Fount {} Contact by: {}", allCS.size(), query);
|
||||
return allCS.iterator().next();
|
||||
}
|
||||
|
||||
ClearingMemberCategory findCategory(ClearingMemberCategoryNewRequest partRequest) {
|
||||
Map<String, Comparable<?>> query = new HashMap<>();
|
||||
query.put("companyId", partRequest.getCompanyId());
|
||||
query.put("clearingMemberCategory", partRequest.getClearingMemberCategory());
|
||||
Collection<ClearingMemberCategory> allCS = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(query);
|
||||
if (allCS.isEmpty())
|
||||
return null;
|
||||
if (allCS.size() > 1)
|
||||
log.warn("Fount {} ClearingMemberCategory by: {}", allCS.size(), query);
|
||||
return allCS.iterator().next();
|
||||
}
|
||||
|
||||
ProfileDocumentUpdateRequest createUpdateRequest(ProfileDocument existDocument, ProfileDocumentNewRequest partRequest) {
|
||||
ProfileDocumentUpdateRequest r = new ProfileDocumentUpdateRequest();
|
||||
r.setId(existDocument.getId());
|
||||
r.setCompanyId(partRequest.getCompanyId());
|
||||
r.setDocumentType(partRequest.getDocumentType());
|
||||
r.setIssueDate(partRequest.getIssueDate());
|
||||
r.setIssuePlace(partRequest.getIssuePlace());
|
||||
r.setIssuer(partRequest.getIssuer());
|
||||
r.setIssuerCode(partRequest.getIssuerCode());
|
||||
r.setName(partRequest.getName());
|
||||
r.setNumber(partRequest.getNumber());
|
||||
r.setPlace(partRequest.getPlace());
|
||||
r.setValidFromDate(partRequest.getValidFromDate());
|
||||
r.setValidToDate(partRequest.getValidToDate());
|
||||
r.setLink(partRequest.getLink());
|
||||
return r;
|
||||
}
|
||||
|
||||
CompanySymbolUpdateRequest createUpdateRequest(CompanySymbols existSymbol, CompanySymbolNewRequest partRequest) {
|
||||
CompanySymbolUpdateRequest r = new CompanySymbolUpdateRequest();
|
||||
r.setId(existSymbol.getId());
|
||||
r.setCompanyId(partRequest.getCompanyId());
|
||||
r.setCompanySymbol(partRequest.getCompanySymbol());
|
||||
r.setCompanySymbolValue(partRequest.getCompanySymbolValue());
|
||||
return r;
|
||||
}
|
||||
|
||||
ContactUpdateRequest createUpdateRequest(Contact existContact, ContactNewRequest partRequest) {
|
||||
ContactUpdateRequest r = new ContactUpdateRequest();
|
||||
r.setId(existContact.getId());
|
||||
r.setContactType(partRequest.getContactType());
|
||||
r.setContactValue(partRequest.getContactValue());
|
||||
return r;
|
||||
}
|
||||
|
||||
ClearingMemberCategoryUpdateRequest createUpdateRequest(ClearingMemberCategory existCategory, ClearingMemberCategoryNewRequest partRequest) {
|
||||
ClearingMemberCategoryUpdateRequest r = new ClearingMemberCategoryUpdateRequest();
|
||||
r.setId(existCategory.getId());
|
||||
r.setClearingMemberCategory(partRequest.getClearingMemberCategory());
|
||||
return r;
|
||||
}
|
||||
|
||||
Long getCompanyIdForCompanySymbols(String uuid, CompanyNewRequest cnr, Collection<CompanySymbolNewRequest> companySymbols) {
|
||||
CompanySymbols companySymbol = null;
|
||||
if (StringUtils.isNotEmpty(uuid)) {
|
||||
log.trace("Search company by companySymbol uuid={}", uuid);
|
||||
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"companySymbol", CompanySymbol.UUID.getKey(),
|
||||
"companySymbolValue", uuid
|
||||
)
|
||||
);
|
||||
if (!companySymbolsFromImdg.isEmpty()) {
|
||||
companySymbol = companySymbolsFromImdg.iterator().next();
|
||||
if (companySymbolsFromImdg.size() > 1) {
|
||||
log.warn("For UUID found > 1 company_symbols, use first (id = {})", companySymbol.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (companySymbol == null && StringUtils.isNotEmpty(cnr.getCompanySymbolValue())
|
||||
&& IEnumKey.contains(cnr.getCompanySymbol(), CompanySymbol.UUID, CompanySymbol.INN, CompanySymbol.CIO)) { // вероятно там будет только UUID
|
||||
{
|
||||
String companySymbolType = cnr.getCompanySymbol();
|
||||
log.debug("Company not found by UUID=\"{}\", try find by {}={}",
|
||||
uuid, companySymbolType, cnr.getCompanySymbolValue());
|
||||
log.trace("Search company by companySymbol {}={}", companySymbolType, cnr.getCompanySymbolValue());
|
||||
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"companySymbol", companySymbolType,
|
||||
"companySymbolValue", cnr.getCompanySymbolValue()
|
||||
)
|
||||
);
|
||||
if (!companySymbolsFromImdg.isEmpty()) {
|
||||
companySymbol = companySymbolsFromImdg.iterator().next();
|
||||
if (companySymbolsFromImdg.size() > 1) {
|
||||
log.warn("For {} found > 1 company_symbols, use first (id = {})", companySymbolType, cnr.getCompanySymbolValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (companySymbol == null && companySymbols != null) {
|
||||
for (CompanySymbolNewRequest cSymbolReq : companySymbols) {
|
||||
if (IEnumKey.contains(cSymbolReq.getCompanySymbol(), CompanySymbol.INN, CompanySymbol.CIO)) {
|
||||
String companySymbolType = cSymbolReq.getCompanySymbol();
|
||||
log.debug("Company not found by UUID=\"{}\", try find by {}", uuid, companySymbolType);
|
||||
log.trace("Search company by companySymbol {}={}", companySymbolType, cSymbolReq.getCompanySymbolValue());
|
||||
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"companySymbol", companySymbolType,
|
||||
"companySymbolValue", cSymbolReq.getCompanySymbolValue()
|
||||
)
|
||||
);
|
||||
if (!companySymbolsFromImdg.isEmpty()) {
|
||||
companySymbol = companySymbolsFromImdg.iterator().next();
|
||||
if (companySymbolsFromImdg.size() > 1) {
|
||||
log.warn("For {} found > 1 company_symbols, use first (id = {})", companySymbolType, cSymbolReq.getCompanySymbolValue());
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (companySymbol != null)
|
||||
return companySymbol.getCompanyId();
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
private <T> BaseRequest<T> wrapRequest(BaseRequest<?> template, T payload, ActionType action) {
|
||||
BaseRequest<T> r = new BaseRequest<>();
|
||||
r.setId(template.getId());
|
||||
if (action == null) {
|
||||
r.setActionType(template.getActionType());
|
||||
} else {
|
||||
r.setActionType(action);
|
||||
}
|
||||
r.setUserId(template.getUserId());
|
||||
r.setCorrelationId(template.getCorrelationId());
|
||||
r.setRequestPayload(payload);
|
||||
return r;
|
||||
}
|
||||
|
||||
void fillCompanyId(CompanyGatewayRequest req, Long companyId) {
|
||||
if (req.getCompany() != null) {
|
||||
req.getCompany().setId(companyId);
|
||||
}
|
||||
if (req.getCompanyInfo() != null) {
|
||||
req.getCompanyInfo().setId(companyId);
|
||||
}
|
||||
if (req.getCompanySymbols() == null) req.setCompanySymbols(new ArrayList<>());
|
||||
if (req.getClientCodes() == null) req.setClientCodes(new ArrayList<>());
|
||||
if (req.getProfileDocuments() == null) req.setProfileDocuments(new ArrayList<>());
|
||||
if (req.getContacts() == null) req.setContacts(new ArrayList<>());
|
||||
for (CompanySymbolNewRequest cs : req.getCompanySymbols()) {
|
||||
cs.setCompanyId(companyId);
|
||||
}
|
||||
for (ClientCodeNewRequest cc : req.getClientCodes()) {
|
||||
cc.setCompanyId(companyId);
|
||||
}
|
||||
for (ProfileDocumentNewRequest pd : req.getProfileDocuments()) {
|
||||
pd.setCompanyId(companyId);
|
||||
}
|
||||
for (ContactNewRequest c : req.getContacts()) {
|
||||
c.setCompanyId(companyId);
|
||||
}
|
||||
for (ClearingMemberCategoryNewRequest c : req.getCategories()) {
|
||||
c.setCompanyId(companyId);
|
||||
}
|
||||
}
|
||||
// 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);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// }
|
||||
// Long companyId = null;
|
||||
// boolean txOk = false; // todo IMDG transaction
|
||||
// synchronized (companyService) {
|
||||
// try {
|
||||
// //часть в companyService
|
||||
// req.setCompanySymbols(
|
||||
// Stream.concat(req.getCompanySymbols().stream(), additionalSymbols(req.getCompany())).collect(Collectors.toList())
|
||||
// );
|
||||
// companyId = getCompanyIdForCompanySymbols(req.getUuid(), req.getCompany(), req.getCompanySymbols());
|
||||
// log.debug("For request {} (uuid {}) company {}.", baseRequest.getId(), req.getUuid(), companyId == null ? "not found" : ("found, id=" + companyId));
|
||||
//
|
||||
// if (companyId == null) {
|
||||
// companyId = companyService.create(req.getCompany());
|
||||
// log.debug("The companyId={}", companyId);
|
||||
// fillCompanyId(req, companyId);
|
||||
// } else {
|
||||
// fillCompanyId(req, companyId);
|
||||
// companyService.update(req.getCompany(), false);
|
||||
// }
|
||||
//
|
||||
// RequestInfoUpdate replyI;
|
||||
// if (req.getCompanyInfo() != null) {
|
||||
// log.trace("For company {} do update CompanyInfo", companyId);
|
||||
// replyI = companyInfoService.companyInfoUpdate(wrapRequest(baseRequest, req.getCompanyInfo(), null));
|
||||
// validateReply(companyId, "CompanyInfo", replyI);
|
||||
// }
|
||||
// for (ProfileDocumentNewRequest partRequest : req.getProfileDocuments()) {
|
||||
// ProfileDocument existDocument = findCompanyDocument(partRequest);
|
||||
// if (existDocument == null) {
|
||||
// log.trace("For company[{}] do new profileDocument", companyId);
|
||||
// replyI = profileDocumentService.profileDocumentNew(wrapRequest(baseRequest, partRequest, ActionType.NEW));
|
||||
// validateReply(companyId, "profileDocumentNew", replyI);
|
||||
// } else {
|
||||
// log.trace("For company[{}] do update profileDocument[{}]", companyId, existDocument.getId());
|
||||
// ProfileDocumentUpdateRequest partUpdateRequest = createUpdateRequest(existDocument, partRequest);
|
||||
// replyI = profileDocumentService.profileDocumentUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
||||
// validateReply(companyId, "profileDocumentUpdate", replyI);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// for (CompanySymbolNewRequest partRequest : req.getCompanySymbols()) {
|
||||
// CompanySymbols existSymbol = findCompanySymbols(partRequest);
|
||||
// if (existSymbol == null) {
|
||||
// log.trace("For company[{}] do new companySymbol", companyId);
|
||||
// Long id = companySymbolService.create(partRequest);
|
||||
// } else {
|
||||
// log.trace("For company[{}] do update companySymbol[{}]", companyId, existSymbol.getId());
|
||||
// CompanySymbolUpdateRequest partUpdateRequest = createUpdateRequest(existSymbol, partRequest);
|
||||
// replyI = companySymbolService.companySymbolUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
||||
// validateReply(companyId, "companySymbolUpdate", replyI);
|
||||
// }
|
||||
// }
|
||||
// for (ContactNewRequest partRequest : req.getContacts()) {
|
||||
// Contact existContact = findContact(partRequest);
|
||||
// if (existContact == null) {
|
||||
// log.trace("For company[{}] do new contact", companyId);
|
||||
// replyI = contactService.contactNew(wrapRequest(baseRequest, partRequest, ActionType.NEW));
|
||||
// validateReply(companyId, "contactNew", replyI);
|
||||
// } else {
|
||||
// log.trace("For company[{}] do update contact[{}]", companyId, existContact.getId());
|
||||
// ContactUpdateRequest partUpdateRequest = createUpdateRequest(existContact, partRequest);
|
||||
// replyI = contactService.contactUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
||||
// validateReply(companyId, "contactUpdate", replyI);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// for (ClearingMemberCategoryNewRequest partRequest : req.getCategories()) {
|
||||
// ClearingMemberCategory existCategory = findCategory(partRequest);
|
||||
// if (existCategory == null) {
|
||||
// log.trace("For company[{}] do new category", companyId);
|
||||
// replyI = clearingMemberCategoryService.clearingMemberCategoryNew(wrapRequest(baseRequest, partRequest, ActionType.NEW));
|
||||
// validateReply(companyId, "contactNew", replyI);
|
||||
// } else {
|
||||
// log.trace("For company[{}] do update category[{}]", companyId, existCategory.getId());
|
||||
// ClearingMemberCategoryUpdateRequest partUpdateRequest = createUpdateRequest(existCategory, partRequest);
|
||||
// replyI = clearingMemberCategoryService.clearingMemberCategoryUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
||||
// validateReply(companyId, "categoryUpdate", replyI);
|
||||
// }
|
||||
// }
|
||||
// txOk = true;
|
||||
// } catch (ValidationException vex) {
|
||||
// log.error("For gateway request.id={}, companyId={} error validate: {}", baseRequest.getId(), companyId, messageResolver.resolve(vex.getEnumMsg()));
|
||||
// log.trace("For companyId={} error validation: {}", companyId, ExceptionUtils.getStackTrace(vex));
|
||||
// }
|
||||
// }
|
||||
// if (txOk) {
|
||||
// log.debug("Create or update sendNewClientCode for company {}", companyId);
|
||||
// for (ClientCodeNewRequest partRequest : req.getClientCodes()) {
|
||||
// accountNotification.clientCodeNew(partRequest); // Consts.DESTINATION_CLIENT_CODE_NEW Consts.DESTINATION_CLIENT_CODE_UPDATE
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// private Stream<CompanySymbolNewRequest> additionalSymbols(CompanyNewRequest companyNewReq) {
|
||||
// BiFunction<String, String, Optional<CompanySymbolNewRequest>> symbolCreation = (companySymbol, companySymbolValue) -> {
|
||||
// if (companySymbolValue == null || TextUtil.isEmpty(companySymbolValue)) {
|
||||
// return Optional.empty();
|
||||
// }
|
||||
// CompanySymbolNewRequest companySymbolNewRequest = new CompanySymbolNewRequest();
|
||||
// companySymbolNewRequest.setCompanySymbol(companySymbol);
|
||||
// companySymbolNewRequest.setCompanySymbolValue(companySymbolValue);
|
||||
// return Optional.of(companySymbolNewRequest);
|
||||
// };
|
||||
// return Stream.of(symbolCreation.apply(CompanySymbol.TRDC.getKey(), companyNewReq.getTradingCode()),
|
||||
// symbolCreation.apply(CompanySymbol.CLRC.getKey(), companyNewReq.getClearingCode()),
|
||||
// symbolCreation.apply(CompanySymbol.INTC.getKey(), companyNewReq.getInitiatorCode()),
|
||||
// symbolCreation.apply(CompanySymbol.RGRC.getKey(), companyNewReq.getRegistrationCode()))
|
||||
// .filter(Optional::isPresent)
|
||||
// .map(Optional::get);
|
||||
// }
|
||||
//
|
||||
// void validateReply(Long companyId, String process, RequestInfoUpdate replyI) {
|
||||
// if (replyI != null && replyI.getMessage() != null) {
|
||||
// log.warn("Error process {} for companyId={}: {}", process, companyId, replyI.getMessage());
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// ProfileDocument findCompanyDocument(ProfileDocumentNewRequest partRequest) {
|
||||
// Map<String, Comparable<?>> query = new HashMap<>();
|
||||
// query.put("companyId", partRequest.getCompanyId());
|
||||
// query.put("documentType", partRequest.getDocumentType());
|
||||
// query.put("issueDate", partRequest.getIssueDate()); // может быть null
|
||||
// Collection<ProfileDocument> allDoc = profileDocumentImdg.getCollectionObjectsByFieldValues(query);
|
||||
// if (allDoc.isEmpty())
|
||||
// return null;
|
||||
// if (allDoc.size() > 1)
|
||||
// log.warn("Fount {} ProfileDocument by: {}", allDoc.size(), query);
|
||||
// return allDoc.iterator().next();
|
||||
// }
|
||||
//
|
||||
// CompanySymbols findCompanySymbols(CompanySymbolNewRequest partRequest) {
|
||||
// Map<String, Comparable<?>> query = new HashMap<>();
|
||||
// query.put("companyId", partRequest.getCompanyId());
|
||||
// query.put("companySymbol", partRequest.getCompanySymbol());
|
||||
// Collection<CompanySymbols> allCS = companySymbolsImdg.getCollectionObjectsByFieldValues(query);
|
||||
// if (allCS.isEmpty())
|
||||
// return null;
|
||||
// if (allCS.size() > 1)
|
||||
// log.warn("Fount {} CompanySymbols by: {}", allCS.size(), query);
|
||||
// return allCS.iterator().next();
|
||||
// }
|
||||
//
|
||||
// Contact findContact(ContactNewRequest partRequest) {
|
||||
// Map<String, Comparable<?>> query = new HashMap<>();
|
||||
// query.put("companyId", partRequest.getCompanyId());
|
||||
// query.put("contactType", partRequest.getContactType());
|
||||
// Collection<Contact> allCS = contactImdg.getCollectionObjectsByFieldValues(query);
|
||||
// if (allCS.isEmpty())
|
||||
// return null;
|
||||
// if (allCS.size() > 1)
|
||||
// log.warn("Fount {} Contact by: {}", allCS.size(), query);
|
||||
// return allCS.iterator().next();
|
||||
// }
|
||||
//
|
||||
// ClearingMemberCategory findCategory(ClearingMemberCategoryNewRequest partRequest) {
|
||||
// Map<String, Comparable<?>> query = new HashMap<>();
|
||||
// query.put("companyId", partRequest.getCompanyId());
|
||||
// query.put("clearingMemberCategory", partRequest.getClearingMemberCategory());
|
||||
// Collection<ClearingMemberCategory> allCS = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(query);
|
||||
// if (allCS.isEmpty())
|
||||
// return null;
|
||||
// if (allCS.size() > 1)
|
||||
// log.warn("Fount {} ClearingMemberCategory by: {}", allCS.size(), query);
|
||||
// return allCS.iterator().next();
|
||||
// }
|
||||
//
|
||||
// ProfileDocumentUpdateRequest createUpdateRequest(ProfileDocument existDocument, ProfileDocumentNewRequest partRequest) {
|
||||
// ProfileDocumentUpdateRequest r = new ProfileDocumentUpdateRequest();
|
||||
// r.setId(existDocument.getId());
|
||||
// r.setCompanyId(partRequest.getCompanyId());
|
||||
// r.setDocumentType(partRequest.getDocumentType());
|
||||
// r.setIssueDate(partRequest.getIssueDate());
|
||||
// r.setIssuePlace(partRequest.getIssuePlace());
|
||||
// r.setIssuer(partRequest.getIssuer());
|
||||
// r.setIssuerCode(partRequest.getIssuerCode());
|
||||
// r.setName(partRequest.getName());
|
||||
// r.setNumber(partRequest.getNumber());
|
||||
// r.setPlace(partRequest.getPlace());
|
||||
// r.setValidFromDate(partRequest.getValidFromDate());
|
||||
// r.setValidToDate(partRequest.getValidToDate());
|
||||
// r.setLink(partRequest.getLink());
|
||||
// return r;
|
||||
// }
|
||||
//
|
||||
// CompanySymbolUpdateRequest createUpdateRequest(CompanySymbols existSymbol, CompanySymbolNewRequest partRequest) {
|
||||
// CompanySymbolUpdateRequest r = new CompanySymbolUpdateRequest();
|
||||
// r.setId(existSymbol.getId());
|
||||
// r.setCompanyId(partRequest.getCompanyId());
|
||||
// r.setCompanySymbol(partRequest.getCompanySymbol());
|
||||
// r.setCompanySymbolValue(partRequest.getCompanySymbolValue());
|
||||
// return r;
|
||||
// }
|
||||
//
|
||||
// ContactUpdateRequest createUpdateRequest(Contact existContact, ContactNewRequest partRequest) {
|
||||
// ContactUpdateRequest r = new ContactUpdateRequest();
|
||||
// r.setId(existContact.getId());
|
||||
// r.setContactType(partRequest.getContactType());
|
||||
// r.setContactValue(partRequest.getContactValue());
|
||||
// return r;
|
||||
// }
|
||||
//
|
||||
// ClearingMemberCategoryUpdateRequest createUpdateRequest(ClearingMemberCategory existCategory, ClearingMemberCategoryNewRequest partRequest) {
|
||||
// ClearingMemberCategoryUpdateRequest r = new ClearingMemberCategoryUpdateRequest();
|
||||
// r.setId(existCategory.getId());
|
||||
// r.setClearingMemberCategory(partRequest.getClearingMemberCategory());
|
||||
// return r;
|
||||
// }
|
||||
//
|
||||
// Long getCompanyIdForCompanySymbols(String uuid, CompanyNewRequest cnr, Collection<CompanySymbolNewRequest> companySymbols) {
|
||||
// CompanySymbols companySymbol = null;
|
||||
// if (StringUtils.isNotEmpty(uuid)) {
|
||||
// log.trace("Search company by companySymbol uuid={}", uuid);
|
||||
// Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
||||
// Map.of(
|
||||
// "companySymbol", CompanySymbol.UUID.getKey(),
|
||||
// "companySymbolValue", uuid
|
||||
// )
|
||||
// );
|
||||
// if (!companySymbolsFromImdg.isEmpty()) {
|
||||
// companySymbol = companySymbolsFromImdg.iterator().next();
|
||||
// if (companySymbolsFromImdg.size() > 1) {
|
||||
// log.warn("For UUID found > 1 company_symbols, use first (id = {})", companySymbol.getId());
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// if (companySymbol == null && StringUtils.isNotEmpty(cnr.getCompanySymbolValue())
|
||||
// && IEnumKey.contains(cnr.getCompanySymbol(), CompanySymbol.UUID, CompanySymbol.INN, CompanySymbol.CIO)) { // вероятно там будет только UUID
|
||||
// {
|
||||
// String companySymbolType = cnr.getCompanySymbol();
|
||||
// log.debug("Company not found by UUID=\"{}\", try find by {}={}",
|
||||
// uuid, companySymbolType, cnr.getCompanySymbolValue());
|
||||
// log.trace("Search company by companySymbol {}={}", companySymbolType, cnr.getCompanySymbolValue());
|
||||
// Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
||||
// Map.of(
|
||||
// "companySymbol", companySymbolType,
|
||||
// "companySymbolValue", cnr.getCompanySymbolValue()
|
||||
// )
|
||||
// );
|
||||
// if (!companySymbolsFromImdg.isEmpty()) {
|
||||
// companySymbol = companySymbolsFromImdg.iterator().next();
|
||||
// if (companySymbolsFromImdg.size() > 1) {
|
||||
// log.warn("For {} found > 1 company_symbols, use first (id = {})", companySymbolType, cnr.getCompanySymbolValue());
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// if (companySymbol == null && companySymbols != null) {
|
||||
// for (CompanySymbolNewRequest cSymbolReq : companySymbols) {
|
||||
// if (IEnumKey.contains(cSymbolReq.getCompanySymbol(), CompanySymbol.INN, CompanySymbol.CIO)) {
|
||||
// String companySymbolType = cSymbolReq.getCompanySymbol();
|
||||
// log.debug("Company not found by UUID=\"{}\", try find by {}", uuid, companySymbolType);
|
||||
// log.trace("Search company by companySymbol {}={}", companySymbolType, cSymbolReq.getCompanySymbolValue());
|
||||
// Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
||||
// Map.of(
|
||||
// "companySymbol", companySymbolType,
|
||||
// "companySymbolValue", cSymbolReq.getCompanySymbolValue()
|
||||
// )
|
||||
// );
|
||||
// if (!companySymbolsFromImdg.isEmpty()) {
|
||||
// companySymbol = companySymbolsFromImdg.iterator().next();
|
||||
// if (companySymbolsFromImdg.size() > 1) {
|
||||
// log.warn("For {} found > 1 company_symbols, use first (id = {})", companySymbolType, cSymbolReq.getCompanySymbolValue());
|
||||
// }
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (companySymbol != null)
|
||||
// return companySymbol.getCompanyId();
|
||||
// else
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// private <T> BaseRequest<T> wrapRequest(BaseRequest<?> template, T payload, ActionType action) {
|
||||
// BaseRequest<T> r = new BaseRequest<>();
|
||||
// r.setId(template.getId());
|
||||
// if (action == null) {
|
||||
// r.setActionType(template.getActionType());
|
||||
// } else {
|
||||
// r.setActionType(action);
|
||||
// }
|
||||
// r.setUserId(template.getUserId());
|
||||
// r.setCorrelationId(template.getCorrelationId());
|
||||
// r.setRequestPayload(payload);
|
||||
// return r;
|
||||
// }
|
||||
//
|
||||
// void fillCompanyId(CompanyGatewayRequest req, Long companyId) {
|
||||
// if (req.getCompany() != null) {
|
||||
// req.getCompany().setId(companyId);
|
||||
// }
|
||||
// if (req.getCompanyInfo() != null) {
|
||||
// req.getCompanyInfo().setId(companyId);
|
||||
// }
|
||||
// if (req.getCompanySymbols() == null) req.setCompanySymbols(new ArrayList<>());
|
||||
// if (req.getClientCodes() == null) req.setClientCodes(new ArrayList<>());
|
||||
// if (req.getProfileDocuments() == null) req.setProfileDocuments(new ArrayList<>());
|
||||
// if (req.getContacts() == null) req.setContacts(new ArrayList<>());
|
||||
// for (CompanySymbolNewRequest cs : req.getCompanySymbols()) {
|
||||
// cs.setCompanyId(companyId);
|
||||
// }
|
||||
// for (ClientCodeNewRequest cc : req.getClientCodes()) {
|
||||
// cc.setCompanyId(companyId);
|
||||
// }
|
||||
// for (ProfileDocumentNewRequest pd : req.getProfileDocuments()) {
|
||||
// pd.setCompanyId(companyId);
|
||||
// }
|
||||
// for (ContactNewRequest c : req.getContacts()) {
|
||||
// c.setCompanyId(companyId);
|
||||
// }
|
||||
// for (ClearingMemberCategoryNewRequest c : req.getCategories()) {
|
||||
// c.setCompanyId(companyId);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package ru.spcex.clearing.company.service;
|
||||
|
||||
import java.util.function.Function;
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
|
|
@ -7,34 +8,23 @@ import org.slf4j.LoggerFactory;
|
|||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.util.services.RequestHelper;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Deprecated
|
||||
@Service
|
||||
public class ProfileDocumentService extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
|
@ -79,184 +69,184 @@ public class ProfileDocumentService extends QueueConsumer implements Initializin
|
|||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
this.profileDocumentMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
|
||||
callback(ProfileDocumentNewRequest.class)
|
||||
.setFunction(this::profileDocumentNew)
|
||||
.forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_NEW, callbacks::put);
|
||||
callback(ProfileDocumentUpdateRequest.class)
|
||||
.setFunction(this::profileDocumentUpdate)
|
||||
.forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(this::profileDocumentDelete)
|
||||
.forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_DELETE, callbacks::put);
|
||||
init();
|
||||
// this.profileDocumentMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||
// this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
//
|
||||
// callback(ProfileDocumentNewRequest.class)
|
||||
// .setFunction(this::profileDocumentNew)
|
||||
// .forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_NEW, callbacks::put);
|
||||
// callback(ProfileDocumentUpdateRequest.class)
|
||||
// .setFunction(this::profileDocumentUpdate)
|
||||
// .forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_UPDATE, callbacks::put);
|
||||
// callback(CommonDeleteRequest.class)
|
||||
// .setFunction(this::profileDocumentDelete)
|
||||
// .forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_DELETE, callbacks::put);
|
||||
// init();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public RequestInfoUpdate profileDocumentNew(BaseRequest<ProfileDocumentNewRequest> profileDocumentNewRequestBaseRequest) {
|
||||
log.trace("Start processing ProfileDocumentNewRequest!");
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(profileDocumentNewRequestBaseRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(
|
||||
profileDocumentNewRequestBaseRequest, profileDocumentNewRequestValidator
|
||||
);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
ProfileDocumentNewRequest profileDocumentNewRequest = profileDocumentNewRequestBaseRequest.getRequestPayload();
|
||||
ProfileDocument profileDocument = new ProfileDocument();
|
||||
profileDocument.setCompanyId(profileDocumentNewRequest.getCompanyId());
|
||||
profileDocument.setDocumentType(profileDocumentNewRequest.getDocumentType());
|
||||
profileDocument.setIssueDate(profileDocumentNewRequest.getIssueDate());
|
||||
profileDocument.setIssuePlace(profileDocumentNewRequest.getIssuePlace());
|
||||
profileDocument.setIssuer(profileDocumentNewRequest.getIssuer());
|
||||
profileDocument.setIssuerCode(profileDocumentNewRequest.getIssuerCode());
|
||||
profileDocument.setName(profileDocumentNewRequest.getName());
|
||||
profileDocument.setNumber(profileDocumentNewRequest.getNumber());
|
||||
profileDocument.setPlace(profileDocumentNewRequest.getPlace());
|
||||
profileDocument.setValidFromDate(profileDocumentNewRequest.getValidFromDate());
|
||||
profileDocument.setValidToDate(profileDocumentNewRequest.getValidToDate());
|
||||
profileDocument.setLink(profileDocumentNewRequest.getLink());
|
||||
profileDocumentMap.insert(profileDocument);
|
||||
|
||||
if (DocumentTypes.xcnt.getKey().equalsIgnoreCase(profileDocument.getDocumentType())) {
|
||||
processXCNT(profileDocument);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private RequestInfoUpdate profileDocumentDelete(BaseRequest<CommonDeleteRequest> deleteRequest) {
|
||||
log.trace("Start processing CommonDeleteRequest!");
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(deleteRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(
|
||||
deleteRequest, profileDocumentDeleteRequestValidator
|
||||
);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
CommonDeleteRequest profileDocumentDeleteRequest = deleteRequest.getRequestPayload();
|
||||
ProfileDocument profileDocument = profileDocumentMap.getSingleObjectByID(profileDocumentDeleteRequest.getId());
|
||||
synchronized (companyService) {
|
||||
Company existCompany = profileDocument.getCompanyId() == null ? null : companyMap.getSingleObjectByID(profileDocument.getCompanyId());
|
||||
if (existCompany == null) {
|
||||
log.warn("Company {} not found by profileDocument {}", profileDocument.getCompanyId(), profileDocument.getId());
|
||||
return requestHelper.makeErrorResponse(deleteRequest, CompanyErrors.CompanyNotFound, profileDocument.getCompanyId());
|
||||
}
|
||||
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
companyService.relationService.cancelingOfAgreementUpdateRelation(transaction, profileDocument.getCompanyId());
|
||||
Imdg<ProfileDocument> txProfileDocumentMap = transaction.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||
txProfileDocumentMap.delete(profileDocument);
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
}
|
||||
log.trace("successfully deleted, id {}", profileDocument.getId());
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public RequestInfoUpdate profileDocumentUpdate(BaseRequest<ProfileDocumentUpdateRequest> profileDocumentUpdateRequestBaseRequest) {
|
||||
log.trace("Start processing ProfileDocumentUpdateRequest!");
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(profileDocumentUpdateRequestBaseRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(
|
||||
profileDocumentUpdateRequestBaseRequest,
|
||||
profileDocumentUpdateRequestValidator
|
||||
);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
ProfileDocumentUpdateRequest profileDocumentUpdateRequest = profileDocumentUpdateRequestBaseRequest.getRequestPayload();
|
||||
ProfileDocument profileDocument = profileDocumentMap.getSingleObjectByID(profileDocumentUpdateRequest.getId());
|
||||
|
||||
String prevDocType = profileDocument.getDocumentType();
|
||||
if (profileDocumentUpdateRequest.getCompanyId() != null && !profileDocumentUpdateRequest.getCompanyId().equals(profileDocument.getCompanyId())) {
|
||||
log.warn("profileDocumentUpdateRequest[{}] CompanyId {} not match", profileDocumentUpdateRequest.getId(), profileDocumentUpdateRequest.getCompanyId());
|
||||
return requestHelper.makeErrorResponse(profileDocumentUpdateRequestBaseRequest, CompanyErrors.WrongFieldValue, "companyId");
|
||||
}
|
||||
|
||||
if (profileDocumentUpdateRequest.getDocumentType() != null)
|
||||
profileDocument.setDocumentType(profileDocumentUpdateRequest.getDocumentType());
|
||||
|
||||
if (profileDocumentUpdateRequest.getIssueDate() != null)
|
||||
profileDocument.setIssueDate(profileDocumentUpdateRequest.getIssueDate());
|
||||
|
||||
if (profileDocumentUpdateRequest.getIssuePlace() != null)
|
||||
profileDocument.setIssuePlace(profileDocumentUpdateRequest.getIssuePlace());
|
||||
|
||||
if (profileDocumentUpdateRequest.getIssuer() != null)
|
||||
profileDocument.setIssuer(profileDocumentUpdateRequest.getIssuer());
|
||||
|
||||
if (profileDocumentUpdateRequest.getIssuerCode() != null)
|
||||
profileDocument.setIssuerCode(profileDocumentUpdateRequest.getIssuerCode());
|
||||
|
||||
if (profileDocumentUpdateRequest.getName() != null)
|
||||
profileDocument.setName(profileDocumentUpdateRequest.getName());
|
||||
|
||||
if (profileDocumentUpdateRequest.getNumber() != null)
|
||||
profileDocument.setNumber(profileDocumentUpdateRequest.getNumber());
|
||||
|
||||
if (profileDocumentUpdateRequest.getPlace() != null)
|
||||
profileDocument.setPlace(profileDocumentUpdateRequest.getPlace());
|
||||
|
||||
if (profileDocumentUpdateRequest.getValidFromDate() != null)
|
||||
profileDocument.setValidFromDate(profileDocumentUpdateRequest.getValidFromDate());
|
||||
|
||||
if (profileDocumentUpdateRequest.getValidToDate() != null)
|
||||
profileDocument.setValidToDate(profileDocumentUpdateRequest.getValidToDate());
|
||||
|
||||
if (profileDocumentUpdateRequest.getLink() != null)
|
||||
profileDocument.setLink(profileDocumentUpdateRequest.getLink());
|
||||
|
||||
profileDocumentMap.insert(profileDocument);
|
||||
|
||||
log.trace("successfully processed, id {}", profileDocument.getId());
|
||||
|
||||
if (!Objects.equals(prevDocType, profileDocument.getDocumentType()) &&
|
||||
DocumentTypes.xcnt.getKey().equalsIgnoreCase(profileDocument.getDocumentType())) {
|
||||
processXCNT(profileDocument);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
protected void processXCNT(ProfileDocument profileDocument) {
|
||||
Company existCompany = profileDocument.getCompanyId() == null ? null : companyMap.getSingleObjectByID(profileDocument.getCompanyId());
|
||||
if (existCompany == null) {
|
||||
log.warn("Company {} not found by profileDocument {}", profileDocument.getCompanyId(), profileDocument.getId());
|
||||
return;
|
||||
}
|
||||
if (!WorkflowStatus.Active.equalsByKey(existCompany.getWorkflowStatus())) {
|
||||
log.warn("Current workflowStatus {} for company {}. Do not termination account.",
|
||||
existCompany.getWorkflowStatus(), existCompany.getId());
|
||||
}
|
||||
|
||||
CompanyErrors hasError = accountNotificationHelper.accountTerminationByDocumentNotification(profileDocument.getCompanyId(), profileDocument.getId());
|
||||
if (hasError != null) {
|
||||
log.error("Error at termination account of company {} by document {}: {}",
|
||||
profileDocument.getCompanyId(), profileDocument.getId(), hasError + "(" + hasError.getId() + ")");
|
||||
}
|
||||
log.debug("Now wait notification from account-service.");
|
||||
/* processXCNT
|
||||
Дальнейшая обработка документа о расторжении, то есть обновление статусов в company и relation, возможна только после ответа об успешном обновлении статуса в account.
|
||||
ACCOUNT_TERMINATION -> ACCOUNT_TERMINATION_STEP2
|
||||
1.2. Обновить статус в бизнес-объекте company [profileDocument.companyId=company.id] согласно описанию с тегом "При расторжении".
|
||||
1.3. Обновить статус в бизнес-объекте relation [profileDocument.companyId=relation.consumerId] согласно описанию с тегом "При расторжении".
|
||||
*/
|
||||
}
|
||||
// @NonNull
|
||||
// public RequestInfoUpdate profileDocumentNew(BaseRequest<ProfileDocumentNewRequest> profileDocumentNewRequestBaseRequest) {
|
||||
// log.trace("Start processing ProfileDocumentNewRequest!");
|
||||
//
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(profileDocumentNewRequestBaseRequest);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// requestInfoUpdate = validationHelper.validateTillFirstError(
|
||||
// profileDocumentNewRequestBaseRequest, profileDocumentNewRequestValidator
|
||||
// );
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// ProfileDocumentNewRequest profileDocumentNewRequest = profileDocumentNewRequestBaseRequest.getRequestPayload();
|
||||
// ProfileDocument profileDocument = new ProfileDocument();
|
||||
// profileDocument.setCompanyId(profileDocumentNewRequest.getCompanyId());
|
||||
// profileDocument.setDocumentType(profileDocumentNewRequest.getDocumentType());
|
||||
// profileDocument.setIssueDate(profileDocumentNewRequest.getIssueDate());
|
||||
// profileDocument.setIssuePlace(profileDocumentNewRequest.getIssuePlace());
|
||||
// profileDocument.setIssuer(profileDocumentNewRequest.getIssuer());
|
||||
// profileDocument.setIssuerCode(profileDocumentNewRequest.getIssuerCode());
|
||||
// profileDocument.setName(profileDocumentNewRequest.getName());
|
||||
// profileDocument.setNumber(profileDocumentNewRequest.getNumber());
|
||||
// profileDocument.setPlace(profileDocumentNewRequest.getPlace());
|
||||
// profileDocument.setValidFromDate(profileDocumentNewRequest.getValidFromDate());
|
||||
// profileDocument.setValidToDate(profileDocumentNewRequest.getValidToDate());
|
||||
// profileDocument.setLink(profileDocumentNewRequest.getLink());
|
||||
// profileDocumentMap.insert(profileDocument);
|
||||
//
|
||||
// if (DocumentTypes.xcnt.getKey().equalsIgnoreCase(profileDocument.getDocumentType())) {
|
||||
// processXCNT(profileDocument);
|
||||
// }
|
||||
//
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// private RequestInfoUpdate profileDocumentDelete(BaseRequest<CommonDeleteRequest> deleteRequest) {
|
||||
// log.trace("Start processing CommonDeleteRequest!");
|
||||
//
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(deleteRequest);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// requestInfoUpdate = validationHelper.validateTillFirstError(
|
||||
// deleteRequest, profileDocumentDeleteRequestValidator
|
||||
// );
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
// CommonDeleteRequest profileDocumentDeleteRequest = deleteRequest.getRequestPayload();
|
||||
// ProfileDocument profileDocument = profileDocumentMap.getSingleObjectByID(profileDocumentDeleteRequest.getId());
|
||||
// synchronized (companyService) {
|
||||
// Company existCompany = profileDocument.getCompanyId() == null ? null : companyMap.getSingleObjectByID(profileDocument.getCompanyId());
|
||||
// if (existCompany == null) {
|
||||
// log.warn("Company {} not found by profileDocument {}", profileDocument.getCompanyId(), profileDocument.getId());
|
||||
// return requestHelper.makeErrorResponse(deleteRequest, CompanyErrors.CompanyNotFound, profileDocument.getCompanyId());
|
||||
// }
|
||||
//
|
||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
// transaction.beginTransaction();
|
||||
// boolean txOk = false;
|
||||
// try {
|
||||
// companyService.relationService.cancelingOfAgreementUpdateRelation(transaction, profileDocument.getCompanyId());
|
||||
// Imdg<ProfileDocument> txProfileDocumentMap = transaction.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||
// txProfileDocumentMap.delete(profileDocument);
|
||||
// txOk = true;
|
||||
// } finally {
|
||||
// if (txOk)
|
||||
// transaction.commitTransaction();
|
||||
// else
|
||||
// transaction.rollbackTransaction();
|
||||
// }
|
||||
// }
|
||||
// log.trace("successfully deleted, id {}", profileDocument.getId());
|
||||
//
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// public RequestInfoUpdate profileDocumentUpdate(BaseRequest<ProfileDocumentUpdateRequest> profileDocumentUpdateRequestBaseRequest) {
|
||||
// log.trace("Start processing ProfileDocumentUpdateRequest!");
|
||||
//
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(profileDocumentUpdateRequestBaseRequest);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// requestInfoUpdate = validationHelper.validateTillFirstError(
|
||||
// profileDocumentUpdateRequestBaseRequest,
|
||||
// profileDocumentUpdateRequestValidator
|
||||
// );
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
//
|
||||
// ProfileDocumentUpdateRequest profileDocumentUpdateRequest = profileDocumentUpdateRequestBaseRequest.getRequestPayload();
|
||||
// ProfileDocument profileDocument = profileDocumentMap.getSingleObjectByID(profileDocumentUpdateRequest.getId());
|
||||
//
|
||||
// String prevDocType = profileDocument.getDocumentType();
|
||||
// if (profileDocumentUpdateRequest.getCompanyId() != null && !profileDocumentUpdateRequest.getCompanyId().equals(profileDocument.getCompanyId())) {
|
||||
// log.warn("profileDocumentUpdateRequest[{}] CompanyId {} not match", profileDocumentUpdateRequest.getId(), profileDocumentUpdateRequest.getCompanyId());
|
||||
// return requestHelper.makeErrorResponse(profileDocumentUpdateRequestBaseRequest, CompanyErrors.WrongFieldValue, "companyId");
|
||||
// }
|
||||
//
|
||||
// if (profileDocumentUpdateRequest.getDocumentType() != null)
|
||||
// profileDocument.setDocumentType(profileDocumentUpdateRequest.getDocumentType());
|
||||
//
|
||||
// if (profileDocumentUpdateRequest.getIssueDate() != null)
|
||||
// profileDocument.setIssueDate(profileDocumentUpdateRequest.getIssueDate());
|
||||
//
|
||||
// if (profileDocumentUpdateRequest.getIssuePlace() != null)
|
||||
// profileDocument.setIssuePlace(profileDocumentUpdateRequest.getIssuePlace());
|
||||
//
|
||||
// if (profileDocumentUpdateRequest.getIssuer() != null)
|
||||
// profileDocument.setIssuer(profileDocumentUpdateRequest.getIssuer());
|
||||
//
|
||||
// if (profileDocumentUpdateRequest.getIssuerCode() != null)
|
||||
// profileDocument.setIssuerCode(profileDocumentUpdateRequest.getIssuerCode());
|
||||
//
|
||||
// if (profileDocumentUpdateRequest.getName() != null)
|
||||
// profileDocument.setName(profileDocumentUpdateRequest.getName());
|
||||
//
|
||||
// if (profileDocumentUpdateRequest.getNumber() != null)
|
||||
// profileDocument.setNumber(profileDocumentUpdateRequest.getNumber());
|
||||
//
|
||||
// if (profileDocumentUpdateRequest.getPlace() != null)
|
||||
// profileDocument.setPlace(profileDocumentUpdateRequest.getPlace());
|
||||
//
|
||||
// if (profileDocumentUpdateRequest.getValidFromDate() != null)
|
||||
// profileDocument.setValidFromDate(profileDocumentUpdateRequest.getValidFromDate());
|
||||
//
|
||||
// if (profileDocumentUpdateRequest.getValidToDate() != null)
|
||||
// profileDocument.setValidToDate(profileDocumentUpdateRequest.getValidToDate());
|
||||
//
|
||||
// if (profileDocumentUpdateRequest.getLink() != null)
|
||||
// profileDocument.setLink(profileDocumentUpdateRequest.getLink());
|
||||
//
|
||||
// profileDocumentMap.insert(profileDocument);
|
||||
//
|
||||
// log.trace("successfully processed, id {}", profileDocument.getId());
|
||||
//
|
||||
// if (!Objects.equals(prevDocType, profileDocument.getDocumentType()) &&
|
||||
// DocumentTypes.xcnt.getKey().equalsIgnoreCase(profileDocument.getDocumentType())) {
|
||||
// processXCNT(profileDocument);
|
||||
// }
|
||||
//
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// protected void processXCNT(ProfileDocument profileDocument) {
|
||||
// Company existCompany = profileDocument.getCompanyId() == null ? null : companyMap.getSingleObjectByID(profileDocument.getCompanyId());
|
||||
// if (existCompany == null) {
|
||||
// log.warn("Company {} not found by profileDocument {}", profileDocument.getCompanyId(), profileDocument.getId());
|
||||
// return;
|
||||
// }
|
||||
// if (!WorkflowStatus.Active.equalsByKey(existCompany.getWorkflowStatus())) {
|
||||
// log.warn("Current workflowStatus {} for company {}. Do not termination account.",
|
||||
// existCompany.getWorkflowStatus(), existCompany.getId());
|
||||
// }
|
||||
//
|
||||
// CompanyErrors hasError = accountNotificationHelper.accountTerminationByDocumentNotification(profileDocument.getCompanyId(), profileDocument.getId());
|
||||
// if (hasError != null) {
|
||||
// log.error("Error at termination account of company {} by document {}: {}",
|
||||
// profileDocument.getCompanyId(), profileDocument.getId(), hasError + "(" + hasError.getId() + ")");
|
||||
// }
|
||||
// log.debug("Now wait notification from account-service.");
|
||||
// /* processXCNT
|
||||
// Дальнейшая обработка документа о расторжении, то есть обновление статусов в company и relation, возможна только после ответа об успешном обновлении статуса в account.
|
||||
// ACCOUNT_TERMINATION -> ACCOUNT_TERMINATION_STEP2
|
||||
// 1.2. Обновить статус в бизнес-объекте company [profileDocument.companyId=company.id] согласно описанию с тегом "При расторжении".
|
||||
// 1.3. Обновить статус в бизнес-объекте relation [profileDocument.companyId=relation.consumerId] согласно описанию с тегом "При расторжении".
|
||||
// */
|
||||
// }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,17 @@
|
|||
package ru.spcex.clearing.company.service;
|
||||
|
||||
import static ru.spcex.platform.enumeration.Service.FOND;
|
||||
import static ru.spcex.platform.enumeration.Service.MKR;
|
||||
import static ru.spcex.platform.enumeration.ServiceStatus.Closed;
|
||||
import static ru.spcex.platform.utils.enumeration.IEnumKey.getEnumByKey;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
|
|
@ -15,7 +27,6 @@ import ru.clearing.classes.statics.data.company.relation.Relation;
|
|||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationUpdateRequest;
|
||||
|
|
@ -36,19 +47,7 @@ import ru.spcex.platform.utils.enumeration.IEnumKey;
|
|||
import ru.spcex.platform.utils.error.ValidationException;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static ru.spcex.platform.enumeration.Service.FOND;
|
||||
import static ru.spcex.platform.enumeration.Service.MKR;
|
||||
import static ru.spcex.platform.enumeration.ServiceStatus.Closed;
|
||||
import static ru.spcex.platform.utils.enumeration.IEnumKey.getEnumByKey;
|
||||
|
||||
@Deprecated
|
||||
@Service
|
||||
public class RelationService extends QueueConsumer implements InitializingBean {
|
||||
protected static final Long SPVB_ID = 1L; // СПВБ
|
||||
|
|
@ -104,16 +103,16 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
// this.profileDocumentMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||
// this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
|
||||
callback(RelationNewRequest.class)
|
||||
.setFunction(this::relationNew)
|
||||
.forDestination(Consts.DESTINATION_RELATION_NEW, callbacks::put);
|
||||
callback(RelationUpdateRequest.class)
|
||||
.setFunction(this::relationUpdate)
|
||||
.forDestination(Consts.DESTINATION_RELATION_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(this::relationDelete)
|
||||
.forDestination(Consts.DESTINATION_RELATION_DELETE, callbacks::put);
|
||||
init();
|
||||
// callback(RelationNewRequest.class)
|
||||
// .setFunction(this::relationNew)
|
||||
// .forDestination(Consts.DESTINATION_RELATION_NEW, callbacks::put);
|
||||
// callback(RelationUpdateRequest.class)
|
||||
// .setFunction(this::relationUpdate)
|
||||
// .forDestination(Consts.DESTINATION_RELATION_UPDATE, callbacks::put);
|
||||
// callback(CommonDeleteRequest.class)
|
||||
// .setFunction(this::relationDelete)
|
||||
// .forDestination(Consts.DESTINATION_RELATION_DELETE, callbacks::put);
|
||||
// init();
|
||||
}
|
||||
|
||||
private synchronized RequestInfoUpdate relationNew(BaseRequest<RelationNewRequest> relationNewBaseRequest) {
|
||||
|
|
@ -562,7 +561,7 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
|
||||
// --- internal API ---
|
||||
|
||||
protected void createNewRelation(ImdgTransaction transaction, Long companyId, ClearingMemberCategory clearingMemberCategory) {
|
||||
public void createNewRelation(ImdgTransaction transaction, Long companyId, ClearingMemberCategory clearingMemberCategory) {
|
||||
Objects.requireNonNull(companyId, "companyId");
|
||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||
Company company = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class).getFirstObjectByFieldValues(Map.of("id", companyId));
|
||||
|
|
@ -599,7 +598,7 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
/**
|
||||
* Приходит от ClearingMemberCategory
|
||||
*/
|
||||
protected void cancelRelation(ImdgTransaction transaction, Long companyId, ClearingMemberCategory clearingMemberCategory) {
|
||||
public void cancelRelation(ImdgTransaction transaction, Long companyId, ClearingMemberCategory clearingMemberCategory) {
|
||||
log.debug("Cancelling relations for companyId={} and clearingMemberCategory {}", companyId, clearingMemberCategory == null ? null : clearingMemberCategory.getClearingMemberCategory());
|
||||
Objects.requireNonNull(companyId, "companyId");
|
||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||
|
|
@ -657,7 +656,7 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
log.debug("Cancelled {} relation (of {}) by company {}", cancelledN, relations.size(), companyId);
|
||||
}
|
||||
|
||||
protected void cancelingOfAgreementUpdateRelation(ImdgTransaction transaction, Long companyId) {
|
||||
public void cancelingOfAgreementUpdateRelation(ImdgTransaction transaction, Long companyId) {
|
||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||
Relation relation = relationMap.getFirstObjectByFieldValues(Map.of("consumerId", companyId));
|
||||
if (relation == null) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package ru.spcex.clearing.company.service;
|
||||
|
||||
import java.util.function.Function;
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
|
|
@ -9,31 +10,21 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.SettlementHouseProperties;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.util.services.RequestHelper;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgId;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||
import ru.spcex.platform.utils.error.ValidationException;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Deprecated
|
||||
@Service
|
||||
public class SettlementHousePropertiesService extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
|
@ -80,76 +71,76 @@ public class SettlementHousePropertiesService extends QueueConsumer implements I
|
|||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
callback(SettlementHousePropertyNewRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::createSettlementHouseProperty, request))
|
||||
.forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_NEW, callbacks::put);
|
||||
callback(SettlementHousePropertyUpdateRequest.class)
|
||||
.setConsumer(request -> requestHelper.requestFunction(this::updateSettlementHouseProperty, request))
|
||||
.forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::deleteSettlementHouseProperty, request))
|
||||
.forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_DELETE
|
||||
, callbacks::put);
|
||||
init();
|
||||
// callback(SettlementHousePropertyNewRequest.class)
|
||||
// .setFunction(request -> requestHelper.requestFunction(this::createSettlementHouseProperty, request))
|
||||
// .forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_NEW, callbacks::put);
|
||||
// callback(SettlementHousePropertyUpdateRequest.class)
|
||||
// .setConsumer(request -> requestHelper.requestFunction(this::updateSettlementHouseProperty, request))
|
||||
// .forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_UPDATE, callbacks::put);
|
||||
// callback(CommonDeleteRequest.class)
|
||||
// .setFunction(request -> requestHelper.requestFunction(this::deleteSettlementHouseProperty, request))
|
||||
// .forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_DELETE
|
||||
// , callbacks::put);
|
||||
// init();
|
||||
}
|
||||
|
||||
private RequestInfoUpdate createSettlementHouseProperty(BaseRequest<SettlementHousePropertyNewRequest> settlementHousePropertyNewRequestBaseRequest) throws ValidationException {
|
||||
SettlementHousePropertyNewRequest req = settlementHousePropertyNewRequestBaseRequest.getRequestPayload();
|
||||
log.debug("SettlementHouseProperty-new request received, BaseRequest.id = {}", settlementHousePropertyNewRequestBaseRequest.getId());
|
||||
{ // Валидация, ValidationException
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyNewRequestBaseRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyNewRequestBaseRequest, settlementHousePropertyNewRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
}
|
||||
|
||||
|
||||
SettlementHouseProperties shp = new SettlementHouseProperties();
|
||||
shp.setId(idSequence.nextId());
|
||||
shp.setCompanyId(req.getCompanyId());
|
||||
shp.setCurrencyCode(req.getCurrencyCode());
|
||||
|
||||
settlementHousePropertiesMap.insert(shp);
|
||||
log.debug("New SettlementHouseProperties[{}] for company {}", shp.getId(), shp.getCompanyId());
|
||||
return null;
|
||||
}
|
||||
|
||||
private RequestInfoUpdate updateSettlementHouseProperty(BaseRequest<SettlementHousePropertyUpdateRequest> settlementHousePropertyUpdateRequestBaseRequest) throws ValidationException {
|
||||
SettlementHousePropertyUpdateRequest req = settlementHousePropertyUpdateRequestBaseRequest.getRequestPayload();
|
||||
log.debug("SettlementHouseProperty-update request received, BaseRequest.id = {}", settlementHousePropertyUpdateRequestBaseRequest.getId());
|
||||
{ // Валидация, ValidationException
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyUpdateRequestBaseRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyUpdateRequestBaseRequest, settlementHousePropertyUpdateRequestRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
}
|
||||
|
||||
SettlementHouseProperties shp = settlementHousePropertiesMap.getSingleObjectByID(req.getId());
|
||||
|
||||
shp.setCompanyId(req.getCompanyId());
|
||||
shp.setCurrencyCode(req.getCurrencyCode());
|
||||
|
||||
settlementHousePropertiesMap.update(shp);
|
||||
log.debug("Update SettlementHouseProperty[{}] for company {}", shp.getId(), req.getCompanyId());
|
||||
return null;
|
||||
}
|
||||
|
||||
private RequestInfoUpdate deleteSettlementHouseProperty(BaseRequest<CommonDeleteRequest> settlementHousePropertyDeleteRequest) throws ValidationException {
|
||||
CommonDeleteRequest request = settlementHousePropertyDeleteRequest.getRequestPayload();
|
||||
log.debug("SettlementHousePropertyDeleteRequest received id = {}", request.getId());
|
||||
{ // Валидация, ValidationException
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyDeleteRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyDeleteRequest, settlementHousePropertiesDeleteRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
}
|
||||
SettlementHouseProperties settlementHouseProperty = settlementHousePropertiesMap.getSingleObjectByID(request.getId());
|
||||
if (settlementHouseProperty == null) {
|
||||
return requestHelper.makeErrorResponse(settlementHousePropertyDeleteRequest, CompanyErrors.RecordNotFound, request.getId());
|
||||
}
|
||||
settlementHousePropertiesMap.delete(settlementHouseProperty);
|
||||
log.debug("SettlementHouseProperty {} for company {} delete", settlementHouseProperty.getId(), settlementHouseProperty.getCompanyId());
|
||||
return null;
|
||||
}
|
||||
// private RequestInfoUpdate createSettlementHouseProperty(BaseRequest<SettlementHousePropertyNewRequest> settlementHousePropertyNewRequestBaseRequest) throws ValidationException {
|
||||
// SettlementHousePropertyNewRequest req = settlementHousePropertyNewRequestBaseRequest.getRequestPayload();
|
||||
// log.debug("SettlementHouseProperty-new request received, BaseRequest.id = {}", settlementHousePropertyNewRequestBaseRequest.getId());
|
||||
// { // Валидация, ValidationException
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyNewRequestBaseRequest);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
// requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyNewRequestBaseRequest, settlementHousePropertyNewRequestValidator);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// SettlementHouseProperties shp = new SettlementHouseProperties();
|
||||
// shp.setId(idSequence.nextId());
|
||||
// shp.setCompanyId(req.getCompanyId());
|
||||
// shp.setCurrencyCode(req.getCurrencyCode());
|
||||
//
|
||||
// settlementHousePropertiesMap.insert(shp);
|
||||
// log.debug("New SettlementHouseProperties[{}] for company {}", shp.getId(), shp.getCompanyId());
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// private RequestInfoUpdate updateSettlementHouseProperty(BaseRequest<SettlementHousePropertyUpdateRequest> settlementHousePropertyUpdateRequestBaseRequest) throws ValidationException {
|
||||
// SettlementHousePropertyUpdateRequest req = settlementHousePropertyUpdateRequestBaseRequest.getRequestPayload();
|
||||
// log.debug("SettlementHouseProperty-update request received, BaseRequest.id = {}", settlementHousePropertyUpdateRequestBaseRequest.getId());
|
||||
// { // Валидация, ValidationException
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyUpdateRequestBaseRequest);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
// requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyUpdateRequestBaseRequest, settlementHousePropertyUpdateRequestRequestValidator);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
// }
|
||||
//
|
||||
// SettlementHouseProperties shp = settlementHousePropertiesMap.getSingleObjectByID(req.getId());
|
||||
//
|
||||
// shp.setCompanyId(req.getCompanyId());
|
||||
// shp.setCurrencyCode(req.getCurrencyCode());
|
||||
//
|
||||
// settlementHousePropertiesMap.update(shp);
|
||||
// log.debug("Update SettlementHouseProperty[{}] for company {}", shp.getId(), req.getCompanyId());
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// private RequestInfoUpdate deleteSettlementHouseProperty(BaseRequest<CommonDeleteRequest> settlementHousePropertyDeleteRequest) throws ValidationException {
|
||||
// CommonDeleteRequest request = settlementHousePropertyDeleteRequest.getRequestPayload();
|
||||
// log.debug("SettlementHousePropertyDeleteRequest received id = {}", request.getId());
|
||||
// { // Валидация, ValidationException
|
||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyDeleteRequest);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
// requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyDeleteRequest, settlementHousePropertiesDeleteRequestValidator);
|
||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
// }
|
||||
// SettlementHouseProperties settlementHouseProperty = settlementHousePropertiesMap.getSingleObjectByID(request.getId());
|
||||
// if (settlementHouseProperty == null) {
|
||||
// return requestHelper.makeErrorResponse(settlementHousePropertyDeleteRequest, CompanyErrors.RecordNotFound, request.getId());
|
||||
// }
|
||||
// settlementHousePropertiesMap.delete(settlementHouseProperty);
|
||||
// log.debug("SettlementHouseProperty {} for company {} delete", settlementHouseProperty.getId(), settlementHouseProperty.getCompanyId());
|
||||
// return null;
|
||||
// }
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,106 @@
|
|||
package ru.spcex.clearing.company.service.v2.facade;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest;
|
||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgId;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
|
||||
@Service
|
||||
public class ClearingMemberCategoryServiceFacade {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final ImdgProvider imdgProvider;
|
||||
private final ImdgId idSequence;
|
||||
private final Imdg<ClearingMemberCategory> clearingMemberCategoryMap;
|
||||
private final RelationServiceFacade relationServiceFacade;
|
||||
|
||||
public ClearingMemberCategoryServiceFacade(ImdgProvider imdgProvider,
|
||||
RelationServiceFacade relationServiceFacade) {
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.relationServiceFacade = relationServiceFacade;
|
||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
||||
this.clearingMemberCategoryMap = this.imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
}
|
||||
|
||||
public void create(ClearingMemberCategoryNewRequest request) {
|
||||
ClearingMemberCategory newCategory = new ClearingMemberCategory();
|
||||
newCategory.setId(idSequence.nextId());
|
||||
newCategory.setCompanyId(request.getCompanyId());
|
||||
newCategory.setClearingMemberCategory(request.getClearingMemberCategory());
|
||||
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
if (IEnumKey.contains(newCategory.getClearingMemberCategory(), ClearingCategory.T, ClearingCategory.K)) {
|
||||
log.debug("For category \"{}\" do not create relation.", newCategory.getClearingMemberCategory());
|
||||
} else {
|
||||
relationServiceFacade.createNewRelation(transaction, request.getCompanyId(), newCategory);
|
||||
}
|
||||
clearingMemberCategoryMap.insert(newCategory);
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
log.debug("Successfully processed, new category id {}", newCategory.getId());
|
||||
}
|
||||
|
||||
public void update(ClearingMemberCategoryUpdateRequest request) {
|
||||
ClearingMemberCategory clearingMemberCategory = clearingMemberCategoryMap.getSingleObjectByID(request.getId());
|
||||
|
||||
clearingMemberCategory.setClearingMemberCategory(request.getClearingMemberCategory());
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
//todo сложный кейс с возможным изменением релейшена или пересозданием. Скоро ТЗ доделают.
|
||||
//companyService.relationService.updateExistRelation(transaction,clearingMemberCategory.getCompanyId(), oldClearingMemberCategory,
|
||||
// clearingMemberCategory.getClearingMemberCategory());
|
||||
relationServiceFacade.createNewRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory);
|
||||
clearingMemberCategoryMap.insert(clearingMemberCategory);
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
|
||||
log.debug("successfully processed, id {}", clearingMemberCategory.getId());
|
||||
}
|
||||
|
||||
public void delete(CommonDeleteRequest request) {
|
||||
ClearingMemberCategory clearingMemberCategory = clearingMemberCategoryMap.getSingleObjectByID(request.getId());
|
||||
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
clearingMemberCategoryMap.delete(clearingMemberCategory); // далить до cancelRelation внутри транзакции
|
||||
if (clearingMemberCategory.getCompanyId() == null) { // never, только тестовые данные
|
||||
log.warn("Deleted clearingMemberCategory[{}] has not companyId", clearingMemberCategory.getId());
|
||||
} else {
|
||||
relationServiceFacade.cancelRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory);
|
||||
}
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
log.debug("clearingMemberCategory.id={} deleted.", clearingMemberCategory.getId());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,93 @@
|
|||
package ru.spcex.clearing.company.service.v2.facade;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Objects;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.profile.CompanyInfo;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyInfoUpdateRequest;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||
import ru.spcex.platform.utils.error.ValidationException;
|
||||
|
||||
@Service
|
||||
public class CompanyInfoServiceFacade {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final ImdgProvider imdgProvider;
|
||||
private final Imdg<Company> companyMap;
|
||||
private final RelationServiceFacade relationServiceFacade;
|
||||
|
||||
public CompanyInfoServiceFacade(ImdgProvider imdgProvider,
|
||||
RelationServiceFacade relationServiceFacade) {
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.relationServiceFacade = relationServiceFacade;
|
||||
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
}
|
||||
|
||||
public CompanyErrors update(CompanyInfoUpdateRequest request) {
|
||||
Company company = companyMap.getSingleObjectByID(request.getId());
|
||||
if (company == null) {
|
||||
log.trace("Company {} not found", request.getId());
|
||||
return CompanyErrors.CompanyNotFound;
|
||||
}
|
||||
company.setUpdated(Instant.now());
|
||||
if (StringUtils.isNotEmpty(request.getShortName()))
|
||||
company.setShortName(request.getShortName());
|
||||
if (StringUtils.isNotEmpty(request.getFullName()))
|
||||
company.setFullName(request.getFullName());
|
||||
CompanyInfo companyInfo = company.getProfile();
|
||||
|
||||
companyInfo.setCountryCode(request.getCountryCode());
|
||||
companyInfo.setProfessionalSign(request.getProfessionalSign());
|
||||
companyInfo.setLegalKind(request.getLegalKind());
|
||||
companyInfo.setOrganizationType(request.getOrganizationType());
|
||||
companyInfo.setResidence(request.getResidence());
|
||||
|
||||
companyInfo.setCorporationSoleType(request.getCorporationSoleType());
|
||||
companyInfo.setDescription(request.getDescription());
|
||||
companyInfo.setShortNameEng(request.getShortNameEng());
|
||||
companyInfo.setFullNameEng(request.getFullNameEng());
|
||||
|
||||
boolean simpleUpdate = true;
|
||||
if (request.getWorkflowStatus() != null) {
|
||||
String prevStatus = company.getWorkflowStatus();
|
||||
company.setWorkflowStatus(request.getWorkflowStatus());
|
||||
if (!Objects.equals(prevStatus, company.getWorkflowStatus())) {
|
||||
simpleUpdate = false;
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
relationServiceFacade.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
||||
Imdg<Company> txCompanyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
txCompanyMap.update(company);
|
||||
log.trace("Company {} updated", company.getId());
|
||||
txOk = true;
|
||||
} catch (ValidationException e) {
|
||||
throw new RuntimeException(e);
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
} else {
|
||||
log.trace("Status was not changed");
|
||||
}
|
||||
} else {
|
||||
log.trace("Null new WorkflowStatus");
|
||||
}
|
||||
if (simpleUpdate) {
|
||||
companyMap.update(company);
|
||||
log.trace("Company {} updated", company.getId());
|
||||
}
|
||||
log.debug("successfully CompanyInfo processed, id {}", companyInfo.getId());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
package ru.spcex.clearing.company.service.v2.facade;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.CompanyRoleSet;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetUpdateRequest;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgId;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
|
||||
@Service
|
||||
public class CompanyRoleSetServiceFacade {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final ImdgId idSequence;
|
||||
private final Imdg<CompanyRoleSet> companyRoleSetMap;
|
||||
|
||||
public CompanyRoleSetServiceFacade(ImdgProvider imdgProvider) {
|
||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
||||
this.companyRoleSetMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class);
|
||||
}
|
||||
|
||||
public CompanyErrors create(CompanyRoleSetNewRequest request) {
|
||||
CompanyRoleSet existRole = companyRoleSetMap.getFirstObjectByFieldValues(Map.of(
|
||||
"companyId", request.getCompanyId(),
|
||||
"companyRole", request.getCompanyRole()
|
||||
));
|
||||
if (existRole != null) {
|
||||
log.debug("Update exist CompanyRoleSet[{}] for company {}. Should use UPDATE method, action was rejected.",
|
||||
existRole.getId(), request.getCompanyId());
|
||||
return CompanyErrors.RecordAlreadyExist;
|
||||
}
|
||||
|
||||
CompanyRoleSet newRole = new CompanyRoleSet();
|
||||
newRole.setId(idSequence.nextId());
|
||||
newRole.setCompanyId(request.getCompanyId());
|
||||
newRole.setCompanyRole(request.getCompanyRole());
|
||||
if (request.getWorkflowStatus() == null) {
|
||||
newRole.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
} else {
|
||||
newRole.setWorkflowStatus(request.getWorkflowStatus());
|
||||
}
|
||||
|
||||
companyRoleSetMap.insert(newRole);
|
||||
|
||||
log.debug("New CompanyRoleSet[{}] for company {}", newRole.getId(), request.getCompanyId());
|
||||
return null;
|
||||
}
|
||||
|
||||
public CompanyErrors update(CompanyRoleSetUpdateRequest request) {
|
||||
CompanyRoleSet role = companyRoleSetMap.getSingleObjectByID(request.getId());
|
||||
|
||||
if (!Objects.equals(role.getCompanyId(), request.getCompanyId()) || !Objects.equals(role.getCompanyRole(), request.getCompanyRole())) {
|
||||
log.warn("By user request want change companyId or companyRole of CompanyRoleSet[{}]", request.getId());
|
||||
ImdgPredicateBuilder p = companyRoleSetMap.predicateBuilder();
|
||||
CompanyRoleSet existRole = companyRoleSetMap.getFirstObjectByPredicate(p.and(
|
||||
p.equals("companyId", request.getCompanyId()),
|
||||
p.equals("companyRole", request.getCompanyRole()),
|
||||
p.not(p.equals("id", request.getId()))
|
||||
));
|
||||
if (existRole != null) {
|
||||
log.debug("Role \"{}\" for company {} already exist with other id={}. Action was rejected.",
|
||||
request.getCompanyRole(), request.getCompanyId(), existRole.getId());
|
||||
return CompanyErrors.RecordAlreadyExist;
|
||||
}
|
||||
}
|
||||
|
||||
role.setCompanyId(request.getCompanyId());
|
||||
role.setCompanyRole(request.getCompanyRole());
|
||||
if (request.getWorkflowStatus() != null) {
|
||||
role.setWorkflowStatus(request.getWorkflowStatus());
|
||||
}
|
||||
|
||||
companyRoleSetMap.update(role);
|
||||
|
||||
log.debug("Update CompanyRoleSet[{}] for company {}", role.getId(), request.getCompanyId());
|
||||
return null;
|
||||
}
|
||||
|
||||
public CompanyErrors delete(CommonDeleteRequest request) {
|
||||
CompanyRoleSet role = companyRoleSetMap.getSingleObjectByID(request.getId());
|
||||
|
||||
if (role == null) {
|
||||
return CompanyErrors.RecordNotFound;
|
||||
}
|
||||
|
||||
companyRoleSetMap.delete(role);
|
||||
|
||||
log.debug("CompanyRoleSet {} for company {} delete", role.getId(), role.getCompanyId());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,21 +1,40 @@
|
|||
package ru.spcex.clearing.company.service.v2.facade;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||
import ru.clearing.classes.statics.data.profile.CompanyInfo;
|
||||
import ru.clearing.classes.statics.data.profile.Contact;
|
||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.company.service.RelationService;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountTerminationRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyGatewayRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentUpdateRequest;
|
||||
import ru.spcex.platform.enumeration.CompanySymbol;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
|
|
@ -23,26 +42,57 @@ import ru.spcex.platform.imdg.api.ImdgId;
|
|||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||
import ru.spcex.platform.utils.error.ValidationException;
|
||||
import ru.spcex.platform.utils.log.ExceptionUtils;
|
||||
import ru.spcex.platform.utils.text.TextUtil;
|
||||
|
||||
@Service
|
||||
public class CompanyServiceFacade {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final CompanyInfoServiceFacade companyInfoService;
|
||||
private final ProfileDocumentServiceFacade profileDocumentService;
|
||||
private final CompanySymbolServiceFacade companySymbolService;
|
||||
private final ContactServiceFacade contactService;
|
||||
private final ClearingMemberCategoryServiceFacade clearingMemberCategoryService;
|
||||
private final IMessageResolver messageResolver;
|
||||
|
||||
private final ImdgProvider imdgProvider;
|
||||
private final ImdgId idSequence;
|
||||
private final Imdg<Company> companyIMap;
|
||||
public RelationService relationService;
|
||||
private final Imdg<Company> companyImdg;
|
||||
private final RelationServiceFacade relationServiceFacade;
|
||||
final Imdg<CompanySymbols> companySymbolsImdg;
|
||||
final Imdg<ProfileDocument> profileDocumentImdg;
|
||||
final Imdg<Contact> contactImdg;
|
||||
final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||
|
||||
public CompanyServiceFacade(ImdgProvider imdgProvider,
|
||||
RelationService relationService) {
|
||||
public CompanyServiceFacade(CompanyInfoServiceFacade companyInfoService,
|
||||
ProfileDocumentServiceFacade profileDocumentService,
|
||||
CompanySymbolServiceFacade companySymbolService,
|
||||
ContactServiceFacade contactService,
|
||||
ClearingMemberCategoryServiceFacade clearingMemberCategoryService,
|
||||
IMessageResolver messageResolver,
|
||||
ImdgProvider imdgProvider,
|
||||
RelationServiceFacade relationServiceFacade) {
|
||||
this.companyInfoService = companyInfoService;
|
||||
this.profileDocumentService = profileDocumentService;
|
||||
this.companySymbolService = companySymbolService;
|
||||
this.contactService = contactService;
|
||||
this.clearingMemberCategoryService = clearingMemberCategoryService;
|
||||
this.messageResolver = messageResolver;
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
||||
this.relationService = relationService;
|
||||
this.relationServiceFacade = relationServiceFacade;
|
||||
|
||||
this.companyIMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||
contactImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
}
|
||||
|
||||
public synchronized Long create(CompanyNewRequest companyNewRequest) throws ValidationException {
|
||||
public Long create(CompanyNewRequest companyNewRequest) throws ValidationException {
|
||||
log.debug("creating new company");
|
||||
Instant now = Instant.now();
|
||||
Company company = new Company();
|
||||
|
|
@ -79,9 +129,9 @@ public class CompanyServiceFacade {
|
|||
Imdg<CompanySymbols> companySymbolsImdg = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
companySymbolsImdg.insert(newSymbol);
|
||||
log.debug("Creating companySymbols with id: {} by company.id: {} done", newSymbol.getId(), company.getId());
|
||||
updateCompanyBySymbol(company, newSymbol, false);
|
||||
companySymbolService.updateCompanyBySymbol(company, newSymbol, false);
|
||||
}
|
||||
companyIMap.insert(company);
|
||||
companyImdg.insert(company);
|
||||
log.debug("company-new request processed, BaseRequest.id = {}, company.id={}",
|
||||
companyNewRequest.getId(), company.getId());
|
||||
txOk = true;
|
||||
|
|
@ -94,12 +144,12 @@ public class CompanyServiceFacade {
|
|||
return company.getId();
|
||||
}
|
||||
|
||||
public synchronized void update(CompanyNewRequest updateRequest) throws ValidationException {
|
||||
public void update(CompanyNewRequest updateRequest) throws ValidationException {
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
Company company = companyIMap.getSingleObjectByID(updateRequest.getId());
|
||||
Company company = companyImdg.getSingleObjectByID(updateRequest.getId());
|
||||
if (company == null) {
|
||||
log.trace("Company {} not found", updateRequest.getId());
|
||||
throw new ValidationException(new EnumMessage(CompanyErrors.CompanyNotFound));
|
||||
|
|
@ -123,14 +173,14 @@ public class CompanyServiceFacade {
|
|||
if (updateRequest.getWorkflowStatus() != null) {
|
||||
company.setWorkflowStatus(updateRequest.getWorkflowStatus());
|
||||
if (!Objects.equals(prevStatus, company.getWorkflowStatus())) {
|
||||
relationService.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
||||
relationServiceFacade.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
||||
} else {
|
||||
log.trace("Status was not changed");
|
||||
}
|
||||
} else {
|
||||
log.trace("Null new WorkflowStatus");
|
||||
}
|
||||
companyIMap.update(company);
|
||||
companyImdg.update(company);
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
|
|
@ -140,12 +190,12 @@ public class CompanyServiceFacade {
|
|||
}
|
||||
}
|
||||
|
||||
public synchronized CompanyErrors delete(BaseRequest<CommonDeleteRequest> companyBlockRequestBaseRequest) {
|
||||
public CompanyErrors delete(CommonDeleteRequest deleteRequest) {
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
Company company = companyIMap.getSingleObjectByID(companyBlockRequestBaseRequest.getRequestPayload().getId());
|
||||
Company company = companyImdg.getSingleObjectByID(deleteRequest.getId());
|
||||
if (company == null) {
|
||||
return CompanyErrors.CompanyNotFound;
|
||||
}
|
||||
|
|
@ -155,9 +205,9 @@ public class CompanyServiceFacade {
|
|||
String prevStatus = company.getWorkflowStatus();
|
||||
company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
||||
|
||||
relationService.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
||||
relationServiceFacade.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
||||
log.debug("Update company.id={}", company.getId());
|
||||
companyIMap.update(company);
|
||||
companyImdg.update(company);
|
||||
|
||||
txOk = true;
|
||||
} catch (ValidationException e) {
|
||||
|
|
@ -172,8 +222,8 @@ public class CompanyServiceFacade {
|
|||
return null;
|
||||
}
|
||||
|
||||
public synchronized CompanyErrors blockCompany(BaseRequest<CommonDeleteRequest> companyBlockRequestBaseRequest) {
|
||||
Company company = companyIMap.getSingleObjectByID(companyBlockRequestBaseRequest.getRequestPayload().getId());
|
||||
public CompanyErrors blockCompany(CommonDeleteRequest blockRequest) {
|
||||
Company company = companyImdg.getSingleObjectByID(blockRequest.getId());
|
||||
if (company == null) {
|
||||
return CompanyErrors.CompanyNotFound;
|
||||
}
|
||||
|
|
@ -190,7 +240,7 @@ public class CompanyServiceFacade {
|
|||
company.setUpdated(Instant.now());
|
||||
company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
||||
|
||||
relationService.onChangeWorkflowStatusOnlyRelationChange(transaction, company, company.getWorkflowStatus());
|
||||
relationServiceFacade.onChangeWorkflowStatusOnlyRelationChange(transaction, company, company.getWorkflowStatus());
|
||||
log.debug("Update company.id={}", company.getId());
|
||||
companyMap.update(company);
|
||||
|
||||
|
|
@ -207,15 +257,15 @@ public class CompanyServiceFacade {
|
|||
return null;
|
||||
}
|
||||
|
||||
public synchronized CompanyErrors terminateAccount(BaseRequest<AccountTerminationRequest> accountTerminationRequestBaseRequest) {
|
||||
log.debug("Finish block company {}", accountTerminationRequestBaseRequest.getRequestPayload().getCompanyId());
|
||||
public CompanyErrors terminateAccount(AccountTerminationRequest terminationRequest) {
|
||||
log.debug("Finish block company {}", terminationRequest.getCompanyId());
|
||||
ImdgTransaction tx = imdgProvider.newTransaction();
|
||||
boolean txOk = false;
|
||||
tx.beginTransaction();
|
||||
try {
|
||||
Company company = companyIMap.getSingleObjectByID(accountTerminationRequestBaseRequest.getRequestPayload().getCompanyId());
|
||||
Company company = companyImdg.getSingleObjectByID(terminationRequest.getCompanyId());
|
||||
if (company == null) {
|
||||
log.warn("Company {} not found", accountTerminationRequestBaseRequest.getRequestPayload().getCompanyId());
|
||||
log.warn("Company {} not found", terminationRequest.getCompanyId());
|
||||
//return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound);
|
||||
}
|
||||
if (WorkflowStatus.Blocked.equalsByKey(Objects.requireNonNull(company).getWorkflowStatus())) {
|
||||
|
|
@ -224,10 +274,10 @@ public class CompanyServiceFacade {
|
|||
} else {
|
||||
company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
||||
company.setUpdated(Instant.now());
|
||||
companyIMap.update(company);
|
||||
companyImdg.update(company);
|
||||
}
|
||||
|
||||
relationService.cancelAllRelationForCompany(tx, accountTerminationRequestBaseRequest.getRequestPayload().getCompanyId());
|
||||
relationServiceFacade.cancelAllRelationForCompany(tx, terminationRequest.getCompanyId());
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk) tx.commitTransaction();
|
||||
|
|
@ -237,17 +287,295 @@ public class CompanyServiceFacade {
|
|||
return null;
|
||||
}
|
||||
|
||||
private void updateCompanyBySymbol(Company company, CompanySymbols companySymbol, boolean shouldBeDeleted) {
|
||||
assert company.getId().equals(companySymbol.getCompanyId());
|
||||
String setUpValue = shouldBeDeleted ? "" : companySymbol.getCompanySymbolValue();
|
||||
if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||
company.setTradingCode(setUpValue);
|
||||
public boolean createUpdateMultiCompany(CompanyGatewayRequest createRequest) {
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
|
||||
Long companyId = getCompanyIdForCompanySymbols(createRequest.getUuid(), createRequest.getCompany(), createRequest.getCompanySymbols());
|
||||
|
||||
try {
|
||||
createRequest.setCompanySymbols(
|
||||
Stream.concat(createRequest.getCompanySymbols().stream(), additionalSymbols(createRequest.getCompany())).collect(Collectors.toList())
|
||||
);
|
||||
|
||||
log.debug("For request with uuid {} company {}.", createRequest.getUuid(), companyId == null ? "not found" : ("found, id=" + companyId));
|
||||
|
||||
if (companyId == null) {
|
||||
companyId = create(createRequest.getCompany());
|
||||
log.debug("The companyId={}", companyId);
|
||||
fillCompanyId(createRequest, companyId);
|
||||
} else {
|
||||
fillCompanyId(createRequest, companyId);
|
||||
update(createRequest.getCompany());
|
||||
}
|
||||
|
||||
if (createRequest.getCompanyInfo() != null) {
|
||||
log.trace("For company {} do update CompanyInfo", companyId);
|
||||
companyInfoService.update(createRequest.getCompanyInfo());
|
||||
// validateReply(companyId, "CompanyInfo", replyI);
|
||||
}
|
||||
createUpdateProfileDocument(createRequest, companyId);
|
||||
createUpdateCompanySymbol(createRequest, companyId);
|
||||
createUpdateContract(createRequest, companyId);
|
||||
createUpdateClearingMemberCategory(createRequest, companyId);
|
||||
|
||||
log.debug("Create or update sendNewClientCode for company {}", companyId);
|
||||
return true;
|
||||
} catch (ValidationException vex) {
|
||||
log.error("For gateway request.id={}, companyId={} error validate: {}", createRequest.getUuid(), companyId, messageResolver.resolve(vex.getEnumMsg()));
|
||||
log.trace("For companyId={} error validation: {}", companyId, ExceptionUtils.getStackTrace(vex));
|
||||
}
|
||||
if (CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||
company.setClearingCode(setUpValue);
|
||||
return false;
|
||||
}
|
||||
|
||||
private void createUpdateProfileDocument(CompanyGatewayRequest baseRequest, Long companyId) {
|
||||
for (ProfileDocumentNewRequest partRequest : baseRequest.getProfileDocuments()) {
|
||||
ProfileDocument existDocument = findCompanyDocument(partRequest);
|
||||
if (existDocument == null) {
|
||||
log.trace("For company[{}] do new profileDocument", companyId);
|
||||
profileDocumentService.create(partRequest);
|
||||
// validateReply(companyId, "profileDocumentNew", requestInfoUpdate);
|
||||
} else {
|
||||
log.trace("For company[{}] do update profileDocument[{}]", companyId, existDocument.getId());
|
||||
ProfileDocumentUpdateRequest partUpdateRequest = ProfileDocumentUpdateRequest.builder()
|
||||
.id(existDocument.getId())
|
||||
.companyId(partRequest.getCompanyId())
|
||||
.documentType(partRequest.getDocumentType())
|
||||
.issueDate(partRequest.getIssueDate())
|
||||
.issuePlace(partRequest.getIssuePlace())
|
||||
.issuer(partRequest.getIssuer())
|
||||
.issuerCode(partRequest.getIssuerCode())
|
||||
.name(partRequest.getName())
|
||||
.number(partRequest.getNumber())
|
||||
.place(partRequest.getPlace())
|
||||
.validFromDate(partRequest.getValidFromDate())
|
||||
.validToDate(partRequest.getValidToDate())
|
||||
.link(partRequest.getLink())
|
||||
.build();
|
||||
profileDocumentService.update(partUpdateRequest);
|
||||
// validateReply(companyId, "profileDocumentUpdate", requestInfoUpdate);
|
||||
}
|
||||
}
|
||||
if (CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||
company.setRegistrationCode(setUpValue);
|
||||
}
|
||||
|
||||
private void createUpdateCompanySymbol(CompanyGatewayRequest baseRequest, Long companyId) throws ValidationException {
|
||||
for (CompanySymbolNewRequest partRequest : baseRequest.getCompanySymbols()) {
|
||||
CompanySymbols existSymbol = findCompanySymbols(partRequest);
|
||||
if (existSymbol == null) {
|
||||
log.trace("For company[{}] do new companySymbol", companyId);
|
||||
companySymbolService.create(partRequest);
|
||||
} else {
|
||||
log.trace("For company[{}] do update companySymbol[{}]", companyId, existSymbol.getId());
|
||||
CompanySymbolUpdateRequest partUpdateRequest = CompanySymbolUpdateRequest.builder()
|
||||
.id(existSymbol.getId())
|
||||
.companyId(partRequest.getCompanyId())
|
||||
.companySymbol(partRequest.getCompanySymbol())
|
||||
.companySymbolValue(partRequest.getCompanySymbolValue())
|
||||
.build();
|
||||
companySymbolService.update(partUpdateRequest);
|
||||
// validateReply(companyId, "companySymbolUpdate", requestInfoUpdate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void createUpdateContract(CompanyGatewayRequest baseRequest, Long companyId) {
|
||||
for (ContactNewRequest partRequest : baseRequest.getContacts()) {
|
||||
Contact existContact = findContact(partRequest);
|
||||
if (existContact == null) {
|
||||
log.trace("For company[{}] do new contact", companyId);
|
||||
contactService.create(partRequest);
|
||||
// validateReply(companyId, "contactNew", requestInfoUpdate);
|
||||
} else {
|
||||
log.trace("For company[{}] do update contact[{}]", companyId, existContact.getId());
|
||||
ContactUpdateRequest partUpdateRequest = ContactUpdateRequest.builder()
|
||||
.id(existContact.getId())
|
||||
.contactType(partRequest.getContactType())
|
||||
.contactValue(partRequest.getContactValue())
|
||||
.build();
|
||||
contactService.update(partUpdateRequest);
|
||||
// validateReply(companyId, "contactUpdate", requestInfoUpdate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void createUpdateClearingMemberCategory(CompanyGatewayRequest baseRequest, Long companyId) {
|
||||
for (ClearingMemberCategoryNewRequest partRequest : baseRequest.getCategories()) {
|
||||
ClearingMemberCategory existCategory = findCategory(partRequest);
|
||||
if (existCategory == null) {
|
||||
log.trace("For company[{}] do new category", companyId);
|
||||
clearingMemberCategoryService.create(partRequest);
|
||||
// validateReply(companyId, "contactNew", requestInfoUpdate);
|
||||
} else {
|
||||
log.trace("For company[{}] do update category[{}]", companyId, existCategory.getId());
|
||||
ClearingMemberCategoryUpdateRequest partUpdateRequest = ClearingMemberCategoryUpdateRequest.builder()
|
||||
.id(existCategory.getId())
|
||||
.clearingMemberCategory(partRequest.getClearingMemberCategory())
|
||||
.build();
|
||||
clearingMemberCategoryService.update(partUpdateRequest);
|
||||
// validateReply(companyId, "categoryUpdate", requestInfoUpdate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Stream<CompanySymbolNewRequest> additionalSymbols(CompanyNewRequest companyNewReq) {
|
||||
BiFunction<String, String, Optional<CompanySymbolNewRequest>> symbolCreation = (companySymbol, companySymbolValue) -> {
|
||||
if (companySymbolValue == null || TextUtil.isEmpty(companySymbolValue)) {
|
||||
return Optional.empty();
|
||||
}
|
||||
CompanySymbolNewRequest companySymbolNewRequest = new CompanySymbolNewRequest();
|
||||
companySymbolNewRequest.setCompanySymbol(companySymbol);
|
||||
companySymbolNewRequest.setCompanySymbolValue(companySymbolValue);
|
||||
return Optional.of(companySymbolNewRequest);
|
||||
};
|
||||
return Stream.of(symbolCreation.apply(CompanySymbol.TRDC.getKey(), companyNewReq.getTradingCode()),
|
||||
symbolCreation.apply(CompanySymbol.CLRC.getKey(), companyNewReq.getClearingCode()),
|
||||
symbolCreation.apply(CompanySymbol.INTC.getKey(), companyNewReq.getInitiatorCode()),
|
||||
symbolCreation.apply(CompanySymbol.RGRC.getKey(), companyNewReq.getRegistrationCode()))
|
||||
.filter(Optional::isPresent)
|
||||
.map(Optional::get);
|
||||
}
|
||||
|
||||
public ProfileDocument findCompanyDocument(ProfileDocumentNewRequest partRequest) {
|
||||
Map<String, Comparable<?>> query = new HashMap<>();
|
||||
query.put("companyId", partRequest.getCompanyId());
|
||||
query.put("documentType", partRequest.getDocumentType());
|
||||
query.put("issueDate", partRequest.getIssueDate()); // может быть null
|
||||
Collection<ProfileDocument> allDoc = profileDocumentImdg.getCollectionObjectsByFieldValues(query);
|
||||
if (allDoc.isEmpty())
|
||||
return null;
|
||||
if (allDoc.size() > 1)
|
||||
log.warn("Fount {} ProfileDocument by: {}", allDoc.size(), query);
|
||||
return allDoc.iterator().next();
|
||||
}
|
||||
|
||||
public CompanySymbols findCompanySymbols(CompanySymbolNewRequest partRequest) {
|
||||
Map<String, Comparable<?>> query = new HashMap<>();
|
||||
query.put("companyId", partRequest.getCompanyId());
|
||||
query.put("companySymbol", partRequest.getCompanySymbol());
|
||||
Collection<CompanySymbols> allCS = companySymbolsImdg.getCollectionObjectsByFieldValues(query);
|
||||
if (allCS.isEmpty())
|
||||
return null;
|
||||
if (allCS.size() > 1)
|
||||
log.warn("Fount {} CompanySymbols by: {}", allCS.size(), query);
|
||||
return allCS.iterator().next();
|
||||
}
|
||||
|
||||
public Contact findContact(ContactNewRequest partRequest) {
|
||||
Map<String, Comparable<?>> query = new HashMap<>();
|
||||
query.put("companyId", partRequest.getCompanyId());
|
||||
query.put("contactType", partRequest.getContactType());
|
||||
Collection<Contact> allCS = contactImdg.getCollectionObjectsByFieldValues(query);
|
||||
if (allCS.isEmpty())
|
||||
return null;
|
||||
if (allCS.size() > 1)
|
||||
log.warn("Fount {} Contact by: {}", allCS.size(), query);
|
||||
return allCS.iterator().next();
|
||||
}
|
||||
|
||||
private ClearingMemberCategory findCategory(ClearingMemberCategoryNewRequest partRequest) {
|
||||
Map<String, Comparable<?>> query = new HashMap<>();
|
||||
query.put("companyId", partRequest.getCompanyId());
|
||||
query.put("clearingMemberCategory", partRequest.getClearingMemberCategory());
|
||||
Collection<ClearingMemberCategory> allCS = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(query);
|
||||
if (allCS.isEmpty())
|
||||
return null;
|
||||
if (allCS.size() > 1)
|
||||
log.warn("Fount {} ClearingMemberCategory by: {}", allCS.size(), query);
|
||||
return allCS.iterator().next();
|
||||
}
|
||||
|
||||
public Long getCompanyIdForCompanySymbols(String uuid, CompanyNewRequest cnr, Collection<CompanySymbolNewRequest> companySymbols) {
|
||||
CompanySymbols companySymbol = null;
|
||||
if (StringUtils.isNotEmpty(uuid)) {
|
||||
log.trace("Search company by companySymbol uuid={}", uuid);
|
||||
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"companySymbol", CompanySymbol.UUID.getKey(),
|
||||
"companySymbolValue", uuid
|
||||
)
|
||||
);
|
||||
if (!companySymbolsFromImdg.isEmpty()) {
|
||||
companySymbol = companySymbolsFromImdg.iterator().next();
|
||||
if (companySymbolsFromImdg.size() > 1) {
|
||||
log.warn("For UUID found > 1 company_symbols, use first (id = {})", companySymbol.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (companySymbol == null && StringUtils.isNotEmpty(cnr.getCompanySymbolValue())
|
||||
&& IEnumKey.contains(cnr.getCompanySymbol(), CompanySymbol.UUID, CompanySymbol.INN, CompanySymbol.CIO)) { // вероятно там будет только UUID
|
||||
{
|
||||
String companySymbolType = cnr.getCompanySymbol();
|
||||
log.debug("Company not found by UUID=\"{}\", try find by {}={}",
|
||||
uuid, companySymbolType, cnr.getCompanySymbolValue());
|
||||
log.trace("Search company by companySymbol {}={}", companySymbolType, cnr.getCompanySymbolValue());
|
||||
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"companySymbol", companySymbolType,
|
||||
"companySymbolValue", cnr.getCompanySymbolValue()
|
||||
)
|
||||
);
|
||||
if (!companySymbolsFromImdg.isEmpty()) {
|
||||
companySymbol = companySymbolsFromImdg.iterator().next();
|
||||
if (companySymbolsFromImdg.size() > 1) {
|
||||
log.warn("For {} found > 1 company_symbols, use first (id = {})", companySymbolType, cnr.getCompanySymbolValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (companySymbol == null && companySymbols != null) {
|
||||
for (CompanySymbolNewRequest cSymbolReq : companySymbols) {
|
||||
if (IEnumKey.contains(cSymbolReq.getCompanySymbol(), CompanySymbol.INN, CompanySymbol.CIO)) {
|
||||
String companySymbolType = cSymbolReq.getCompanySymbol();
|
||||
log.debug("Company not found by UUID=\"{}\", try find by {}", uuid, companySymbolType);
|
||||
log.trace("Search company by companySymbol {}={}", companySymbolType, cSymbolReq.getCompanySymbolValue());
|
||||
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"companySymbol", companySymbolType,
|
||||
"companySymbolValue", cSymbolReq.getCompanySymbolValue()
|
||||
)
|
||||
);
|
||||
if (!companySymbolsFromImdg.isEmpty()) {
|
||||
companySymbol = companySymbolsFromImdg.iterator().next();
|
||||
if (companySymbolsFromImdg.size() > 1) {
|
||||
log.warn("For {} found > 1 company_symbols, use first (id = {})", companySymbolType, cSymbolReq.getCompanySymbolValue());
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (companySymbol != null)
|
||||
return companySymbol.getCompanyId();
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
public void fillCompanyId(CompanyGatewayRequest req, Long companyId) {
|
||||
if (req.getCompany() != null) {
|
||||
req.getCompany().setId(companyId);
|
||||
}
|
||||
if (req.getCompanyInfo() != null) {
|
||||
req.getCompanyInfo().setId(companyId);
|
||||
}
|
||||
if (req.getCompanySymbols() == null) req.setCompanySymbols(new ArrayList<>());
|
||||
if (req.getClientCodes() == null) req.setClientCodes(new ArrayList<>());
|
||||
if (req.getProfileDocuments() == null) req.setProfileDocuments(new ArrayList<>());
|
||||
if (req.getContacts() == null) req.setContacts(new ArrayList<>());
|
||||
for (CompanySymbolNewRequest cs : req.getCompanySymbols()) {
|
||||
cs.setCompanyId(companyId);
|
||||
}
|
||||
for (ClientCodeNewRequest cc : req.getClientCodes()) {
|
||||
cc.setCompanyId(companyId);
|
||||
}
|
||||
for (ProfileDocumentNewRequest pd : req.getProfileDocuments()) {
|
||||
pd.setCompanyId(companyId);
|
||||
}
|
||||
for (ContactNewRequest c : req.getContacts()) {
|
||||
c.setCompanyId(companyId);
|
||||
}
|
||||
for (ClearingMemberCategoryNewRequest c : req.getCategories()) {
|
||||
c.setCompanyId(companyId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,158 @@
|
|||
package ru.spcex.clearing.company.service.v2.facade;
|
||||
|
||||
import java.time.Instant;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
|
||||
import ru.spcex.platform.enumeration.CompanySymbol;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgId;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||
import ru.spcex.platform.utils.error.ClearingBaseException;
|
||||
|
||||
@Service
|
||||
public class CompanySymbolServiceFacade {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final ImdgProvider imdgProvider;
|
||||
private final ImdgId idSequence;
|
||||
private final Imdg<CompanySymbols> companySymbolsTMap;
|
||||
private final Imdg<Company> companyMap;
|
||||
|
||||
|
||||
public CompanySymbolServiceFacade(ImdgProvider imdgProvider) {
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
||||
this.companySymbolsTMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
}
|
||||
|
||||
public void create(CompanySymbolNewRequest request) {
|
||||
CompanySymbols newSymbol = new CompanySymbols();
|
||||
newSymbol.setId(idSequence.nextId());
|
||||
newSymbol.setCompanyId(request.getCompanyId());
|
||||
newSymbol.setCompanySymbol(request.getCompanySymbol());
|
||||
newSymbol.setCompanySymbolValue(request.getCompanySymbolValue());
|
||||
log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), request.getCompanyId());
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
companySymbolsTMap.update(newSymbol);
|
||||
|
||||
Company company = companyMap.getSingleObjectByID(newSymbol.getCompanyId());
|
||||
updateCompanyBySymbol(company, newSymbol, false);
|
||||
companyMap.update(company);
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
}
|
||||
|
||||
public EnumMessage update(CompanySymbolUpdateRequest request) {
|
||||
CompanySymbols companySymbols;
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
companySymbols = companySymbolsTMap.getSingleObjectByID(request.getId());
|
||||
if (companySymbols == null) {
|
||||
throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyInfoNotFound, request.getId()));
|
||||
}
|
||||
if (request.getCompanySymbol() != null && !companySymbols.getCompanySymbol().equalsIgnoreCase(request.getCompanySymbol())) {
|
||||
log.debug("Change CompanySymbol[{}].CompanySymbol from \"{}\" to \"{}\"",
|
||||
companySymbols.getId(), companySymbols.getCompanySymbol(), request.getCompanySymbol());
|
||||
updateCompanyBySymbol(companySymbols, true);
|
||||
companySymbols.setCompanySymbol(request.getCompanySymbol());
|
||||
}
|
||||
companySymbols.setCompanySymbolValue(request.getCompanySymbolValue());
|
||||
companySymbolsTMap.update(companySymbols);
|
||||
updateCompanyBySymbol(companySymbols, false);
|
||||
txOk = true;
|
||||
} catch (ClearingBaseException e) {
|
||||
return e.getEnumMsg();
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
|
||||
log.debug("successfully processed, id {}", companySymbols.getId());
|
||||
return null;
|
||||
}
|
||||
|
||||
public EnumMessage delete(CommonDeleteRequest request) {
|
||||
CompanySymbols companySymbols;
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
companySymbols = companySymbolsTMap.getSingleObjectByID(request.getId());
|
||||
if (companySymbols == null) {
|
||||
throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyInfoNotFound, request.getId()));
|
||||
}
|
||||
companySymbolsTMap.delete(companySymbols);
|
||||
updateCompanyBySymbol(companySymbols, true);
|
||||
txOk = true;
|
||||
} catch (ClearingBaseException e) {
|
||||
return e.getEnumMsg();
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
|
||||
log.debug("successfully processed, id {}", companySymbols.getId());
|
||||
return null;
|
||||
}
|
||||
|
||||
public void updateCompanyBySymbol(CompanySymbols companySymbol, boolean shouldBeDeleted) throws ClearingBaseException {
|
||||
if (companySymbol.getCompanyId() == null) {
|
||||
throw new IllegalArgumentException("Required companySymbol.companyId");
|
||||
}
|
||||
if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())
|
||||
|| CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())
|
||||
|| CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||
|
||||
Company company = companyMap.getSingleObjectByID(companySymbol.getCompanyId());
|
||||
if (company == null) {
|
||||
throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyNotFound, companySymbol.getCompanyId()));
|
||||
}
|
||||
updateCompanyBySymbol(company, companySymbol, shouldBeDeleted);
|
||||
company.setUpdated(Instant.now());
|
||||
companyMap.update(company);
|
||||
log.debug("Company {} updated by change CompanySymbols {} ({})",
|
||||
company.getId(), companySymbol.getId(), companySymbol.getCompanySymbol());
|
||||
} else {
|
||||
log.trace("No need update company {} by changed companySymbols {}",
|
||||
companySymbol.getCompanyId(), companySymbol.getCompanySymbol());
|
||||
}
|
||||
}
|
||||
|
||||
void updateCompanyBySymbol(Company company, CompanySymbols companySymbol, boolean shouldBeDeleted) {
|
||||
assert company.getId().equals(companySymbol.getCompanyId());
|
||||
String setUpValue = shouldBeDeleted ? "" : companySymbol.getCompanySymbolValue();
|
||||
if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||
company.setTradingCode(setUpValue);
|
||||
}
|
||||
if (CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||
company.setClearingCode(setUpValue);
|
||||
}
|
||||
if (CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||
company.setRegistrationCode(setUpValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
package ru.spcex.clearing.company.service.v2.facade;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.profile.Contact;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
@Service
|
||||
public class ContactServiceFacade {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final Imdg<Contact> contactMap;
|
||||
|
||||
public ContactServiceFacade(ImdgProvider imdgProvider) {
|
||||
this.contactMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
||||
}
|
||||
|
||||
public void create(ContactNewRequest request) {
|
||||
Contact contact = new Contact();
|
||||
contact.setCompanyId(request.getCompanyId());
|
||||
contact.setContactType(request.getContactType());
|
||||
contact.setContactValue(request.getContactValue());
|
||||
Long id = contactMap.insert(contact);
|
||||
|
||||
log.debug("successfully processed, id {}", id);
|
||||
}
|
||||
|
||||
public void update(ContactUpdateRequest request) {
|
||||
Contact contact = contactMap.getSingleObjectByID(request.getId());
|
||||
contact.setContactValue(request.getContactValue());
|
||||
|
||||
contactMap.update(contact);
|
||||
log.debug("successfully processed, id {}", contact.getId());
|
||||
}
|
||||
|
||||
public void delete(CommonDeleteRequest request) {
|
||||
Contact contact = contactMap.getSingleObjectByID(request.getId());
|
||||
|
||||
contactMap.delete(contact);
|
||||
log.debug("successfully deleted, id {}", contact.getId());
|
||||
}
|
||||
}
|
||||
|
|
@ -1,426 +0,0 @@
|
|||
package ru.spcex.clearing.company.service.v2.facade;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
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.company.service.ClearingMemberCategoryService;
|
||||
import ru.spcex.clearing.company.service.CompanyInfoService;
|
||||
import ru.spcex.clearing.company.service.CompanySymbolService;
|
||||
import ru.spcex.clearing.company.service.ContactService;
|
||||
import ru.spcex.clearing.company.service.ProfileDocumentService;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyGatewayRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.platform.enumeration.CompanySymbol;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||
import ru.spcex.platform.utils.error.ValidationException;
|
||||
import ru.spcex.platform.utils.log.ExceptionUtils;
|
||||
import ru.spcex.platform.utils.text.TextUtil;
|
||||
|
||||
@Service
|
||||
public class MultiCompanyServiceFacade {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final CompanyServiceFacade companyServiceFacade;
|
||||
private final CompanyInfoService companyInfoService;
|
||||
private final ProfileDocumentService profileDocumentService;
|
||||
private final CompanySymbolService companySymbolService;
|
||||
private final ContactService contactService;
|
||||
private final ClearingMemberCategoryService clearingMemberCategoryService;
|
||||
private final IMessageResolver messageResolver;
|
||||
|
||||
private final ImdgProvider imdgProvider;
|
||||
final Imdg<CompanySymbols> companySymbolsImdg;
|
||||
final Imdg<ProfileDocument> profileDocumentImdg;
|
||||
final Imdg<Contact> contactImdg;
|
||||
final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||
|
||||
public MultiCompanyServiceFacade(ImdgProvider imdgProvider,
|
||||
CompanyServiceFacade companyServiceFacade,
|
||||
CompanyInfoService companyInfoService,
|
||||
ProfileDocumentService profileDocumentService,
|
||||
CompanySymbolService companySymbolService,
|
||||
ContactService contactService,
|
||||
ClearingMemberCategoryService clearingMemberCategoryService,
|
||||
IMessageResolver messageResolver) {
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.companyServiceFacade = companyServiceFacade;
|
||||
this.companyInfoService = companyInfoService;
|
||||
this.profileDocumentService = profileDocumentService;
|
||||
this.companySymbolService = companySymbolService;
|
||||
this.contactService = contactService;
|
||||
this.clearingMemberCategoryService = clearingMemberCategoryService;
|
||||
this.messageResolver = messageResolver;
|
||||
|
||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||
contactImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
}
|
||||
|
||||
public synchronized boolean createUpdateMultiCompany(BaseRequest<CompanyGatewayRequest> baseRequest) {
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
|
||||
CompanyGatewayRequest req = baseRequest.getRequestPayload();
|
||||
Long companyId = getCompanyIdForCompanySymbols(req.getUuid(), req.getCompany(), req.getCompanySymbols());
|
||||
|
||||
try {
|
||||
req.setCompanySymbols(
|
||||
Stream.concat(req.getCompanySymbols().stream(), additionalSymbols(req.getCompany())).collect(Collectors.toList())
|
||||
);
|
||||
|
||||
log.debug("For request {} (uuid {}) company {}.", baseRequest.getId(), req.getUuid(), companyId == null ? "not found" : ("found, id=" + companyId));
|
||||
|
||||
if (companyId == null) {
|
||||
companyId = companyServiceFacade.create(req.getCompany());
|
||||
log.debug("The companyId={}", companyId);
|
||||
fillCompanyId(req, companyId);
|
||||
} else {
|
||||
fillCompanyId(req, companyId);
|
||||
companyServiceFacade.update(req.getCompany());
|
||||
}
|
||||
|
||||
RequestInfoUpdate replyI = new RequestInfoUpdate();
|
||||
if (req.getCompanyInfo() != null) {
|
||||
log.trace("For company {} do update CompanyInfo", companyId);
|
||||
replyI = companyInfoService.companyInfoUpdate(wrapRequest(baseRequest, req.getCompanyInfo(), null));
|
||||
validateReply(companyId, "CompanyInfo", replyI);
|
||||
}
|
||||
replyI = createUpdateProfileDocument(baseRequest, replyI, companyId);
|
||||
replyI = createUpdateCompanySymbol(baseRequest, replyI, companyId);
|
||||
replyI = createUpdateContract(baseRequest, replyI, companyId);
|
||||
createUpdateClearingMemberCategory(baseRequest, replyI, companyId);
|
||||
|
||||
log.debug("Create or update sendNewClientCode for company {}", companyId);
|
||||
return true;
|
||||
} catch (ValidationException vex) {
|
||||
log.error("For gateway request.id={}, companyId={} error validate: {}", baseRequest.getId(), companyId, messageResolver.resolve(vex.getEnumMsg()));
|
||||
log.trace("For companyId={} error validation: {}", companyId, ExceptionUtils.getStackTrace(vex));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private RequestInfoUpdate createUpdateProfileDocument(BaseRequest<CompanyGatewayRequest> baseRequest, RequestInfoUpdate requestInfoUpdate, Long companyId) {
|
||||
for (ProfileDocumentNewRequest partRequest : baseRequest.getRequestPayload().getProfileDocuments()) {
|
||||
ProfileDocument existDocument = findCompanyDocument(partRequest);
|
||||
if (existDocument == null) {
|
||||
log.trace("For company[{}] do new profileDocument", companyId);
|
||||
requestInfoUpdate = profileDocumentService.profileDocumentNew(wrapRequest(baseRequest, partRequest, ActionType.NEW));
|
||||
validateReply(companyId, "profileDocumentNew", requestInfoUpdate);
|
||||
} else {
|
||||
log.trace("For company[{}] do update profileDocument[{}]", companyId, existDocument.getId());
|
||||
ProfileDocumentUpdateRequest partUpdateRequest = createUpdateRequest(existDocument, partRequest);
|
||||
requestInfoUpdate = profileDocumentService.profileDocumentUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
||||
validateReply(companyId, "profileDocumentUpdate", requestInfoUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
private RequestInfoUpdate createUpdateCompanySymbol(BaseRequest<CompanyGatewayRequest> baseRequest, RequestInfoUpdate requestInfoUpdate, Long companyId) throws ValidationException {
|
||||
for (CompanySymbolNewRequest partRequest : baseRequest.getRequestPayload().getCompanySymbols()) {
|
||||
CompanySymbols existSymbol = findCompanySymbols(partRequest);
|
||||
if (existSymbol == null) {
|
||||
log.trace("For company[{}] do new companySymbol", companyId);
|
||||
Long id = companySymbolService.create(partRequest);
|
||||
} else {
|
||||
log.trace("For company[{}] do update companySymbol[{}]", companyId, existSymbol.getId());
|
||||
CompanySymbolUpdateRequest partUpdateRequest = createUpdateRequest(existSymbol, partRequest);
|
||||
requestInfoUpdate = companySymbolService.companySymbolUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
||||
validateReply(companyId, "companySymbolUpdate", requestInfoUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
private RequestInfoUpdate createUpdateContract(BaseRequest<CompanyGatewayRequest> baseRequest, RequestInfoUpdate requestInfoUpdate, Long companyId) {
|
||||
for (ContactNewRequest partRequest : baseRequest.getRequestPayload().getContacts()) {
|
||||
Contact existContact = findContact(partRequest);
|
||||
if (existContact == null) {
|
||||
log.trace("For company[{}] do new contact", companyId);
|
||||
requestInfoUpdate = contactService.contactNew(wrapRequest(baseRequest, partRequest, ActionType.NEW));
|
||||
validateReply(companyId, "contactNew", requestInfoUpdate);
|
||||
} else {
|
||||
log.trace("For company[{}] do update contact[{}]", companyId, existContact.getId());
|
||||
ContactUpdateRequest partUpdateRequest = createUpdateRequest(existContact, partRequest);
|
||||
requestInfoUpdate = contactService.contactUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
||||
validateReply(companyId, "contactUpdate", requestInfoUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
private RequestInfoUpdate createUpdateClearingMemberCategory(BaseRequest<CompanyGatewayRequest> baseRequest, RequestInfoUpdate requestInfoUpdate, Long companyId) {
|
||||
for (ClearingMemberCategoryNewRequest partRequest : baseRequest.getRequestPayload().getCategories()) {
|
||||
ClearingMemberCategory existCategory = findCategory(partRequest);
|
||||
if (existCategory == null) {
|
||||
log.trace("For company[{}] do new category", companyId);
|
||||
requestInfoUpdate = clearingMemberCategoryService.clearingMemberCategoryNew(wrapRequest(baseRequest, partRequest, ActionType.NEW));
|
||||
validateReply(companyId, "contactNew", requestInfoUpdate);
|
||||
} else {
|
||||
log.trace("For company[{}] do update category[{}]", companyId, existCategory.getId());
|
||||
ClearingMemberCategoryUpdateRequest partUpdateRequest = createUpdateRequest(existCategory, partRequest);
|
||||
requestInfoUpdate = clearingMemberCategoryService.clearingMemberCategoryUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
||||
validateReply(companyId, "categoryUpdate", requestInfoUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
private Stream<CompanySymbolNewRequest> additionalSymbols(CompanyNewRequest companyNewReq) {
|
||||
BiFunction<String, String, Optional<CompanySymbolNewRequest>> symbolCreation = (companySymbol, companySymbolValue) -> {
|
||||
if (companySymbolValue == null || TextUtil.isEmpty(companySymbolValue)) {
|
||||
return Optional.empty();
|
||||
}
|
||||
CompanySymbolNewRequest companySymbolNewRequest = new CompanySymbolNewRequest();
|
||||
companySymbolNewRequest.setCompanySymbol(companySymbol);
|
||||
companySymbolNewRequest.setCompanySymbolValue(companySymbolValue);
|
||||
return Optional.of(companySymbolNewRequest);
|
||||
};
|
||||
return Stream.of(symbolCreation.apply(CompanySymbol.TRDC.getKey(), companyNewReq.getTradingCode()),
|
||||
symbolCreation.apply(CompanySymbol.CLRC.getKey(), companyNewReq.getClearingCode()),
|
||||
symbolCreation.apply(CompanySymbol.INTC.getKey(), companyNewReq.getInitiatorCode()),
|
||||
symbolCreation.apply(CompanySymbol.RGRC.getKey(), companyNewReq.getRegistrationCode()))
|
||||
.filter(Optional::isPresent)
|
||||
.map(Optional::get);
|
||||
}
|
||||
|
||||
private void validateReply(Long companyId, String process, RequestInfoUpdate replyI) {
|
||||
if (replyI != null && replyI.getMessage() != null) {
|
||||
log.warn("Error process {} for companyId={}: {}", process, companyId, replyI.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public ProfileDocument findCompanyDocument(ProfileDocumentNewRequest partRequest) {
|
||||
Map<String, Comparable<?>> query = new HashMap<>();
|
||||
query.put("companyId", partRequest.getCompanyId());
|
||||
query.put("documentType", partRequest.getDocumentType());
|
||||
query.put("issueDate", partRequest.getIssueDate()); // может быть null
|
||||
Collection<ProfileDocument> allDoc = profileDocumentImdg.getCollectionObjectsByFieldValues(query);
|
||||
if (allDoc.isEmpty())
|
||||
return null;
|
||||
if (allDoc.size() > 1)
|
||||
log.warn("Fount {} ProfileDocument by: {}", allDoc.size(), query);
|
||||
return allDoc.iterator().next();
|
||||
}
|
||||
|
||||
public CompanySymbols findCompanySymbols(CompanySymbolNewRequest partRequest) {
|
||||
Map<String, Comparable<?>> query = new HashMap<>();
|
||||
query.put("companyId", partRequest.getCompanyId());
|
||||
query.put("companySymbol", partRequest.getCompanySymbol());
|
||||
Collection<CompanySymbols> allCS = companySymbolsImdg.getCollectionObjectsByFieldValues(query);
|
||||
if (allCS.isEmpty())
|
||||
return null;
|
||||
if (allCS.size() > 1)
|
||||
log.warn("Fount {} CompanySymbols by: {}", allCS.size(), query);
|
||||
return allCS.iterator().next();
|
||||
}
|
||||
|
||||
public Contact findContact(ContactNewRequest partRequest) {
|
||||
Map<String, Comparable<?>> query = new HashMap<>();
|
||||
query.put("companyId", partRequest.getCompanyId());
|
||||
query.put("contactType", partRequest.getContactType());
|
||||
Collection<Contact> allCS = contactImdg.getCollectionObjectsByFieldValues(query);
|
||||
if (allCS.isEmpty())
|
||||
return null;
|
||||
if (allCS.size() > 1)
|
||||
log.warn("Fount {} Contact by: {}", allCS.size(), query);
|
||||
return allCS.iterator().next();
|
||||
}
|
||||
|
||||
private ClearingMemberCategory findCategory(ClearingMemberCategoryNewRequest partRequest) {
|
||||
Map<String, Comparable<?>> query = new HashMap<>();
|
||||
query.put("companyId", partRequest.getCompanyId());
|
||||
query.put("clearingMemberCategory", partRequest.getClearingMemberCategory());
|
||||
Collection<ClearingMemberCategory> allCS = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(query);
|
||||
if (allCS.isEmpty())
|
||||
return null;
|
||||
if (allCS.size() > 1)
|
||||
log.warn("Fount {} ClearingMemberCategory by: {}", allCS.size(), query);
|
||||
return allCS.iterator().next();
|
||||
}
|
||||
|
||||
private ProfileDocumentUpdateRequest createUpdateRequest(ProfileDocument existDocument, ProfileDocumentNewRequest partRequest) {
|
||||
ProfileDocumentUpdateRequest r = new ProfileDocumentUpdateRequest();
|
||||
r.setId(existDocument.getId());
|
||||
r.setCompanyId(partRequest.getCompanyId());
|
||||
r.setDocumentType(partRequest.getDocumentType());
|
||||
r.setIssueDate(partRequest.getIssueDate());
|
||||
r.setIssuePlace(partRequest.getIssuePlace());
|
||||
r.setIssuer(partRequest.getIssuer());
|
||||
r.setIssuerCode(partRequest.getIssuerCode());
|
||||
r.setName(partRequest.getName());
|
||||
r.setNumber(partRequest.getNumber());
|
||||
r.setPlace(partRequest.getPlace());
|
||||
r.setValidFromDate(partRequest.getValidFromDate());
|
||||
r.setValidToDate(partRequest.getValidToDate());
|
||||
r.setLink(partRequest.getLink());
|
||||
return r;
|
||||
}
|
||||
|
||||
private CompanySymbolUpdateRequest createUpdateRequest(CompanySymbols existSymbol, CompanySymbolNewRequest partRequest) {
|
||||
CompanySymbolUpdateRequest r = new CompanySymbolUpdateRequest();
|
||||
r.setId(existSymbol.getId());
|
||||
r.setCompanyId(partRequest.getCompanyId());
|
||||
r.setCompanySymbol(partRequest.getCompanySymbol());
|
||||
r.setCompanySymbolValue(partRequest.getCompanySymbolValue());
|
||||
return r;
|
||||
}
|
||||
|
||||
private ContactUpdateRequest createUpdateRequest(Contact existContact, ContactNewRequest partRequest) {
|
||||
ContactUpdateRequest r = new ContactUpdateRequest();
|
||||
r.setId(existContact.getId());
|
||||
r.setContactType(partRequest.getContactType());
|
||||
r.setContactValue(partRequest.getContactValue());
|
||||
return r;
|
||||
}
|
||||
|
||||
private ClearingMemberCategoryUpdateRequest createUpdateRequest(ClearingMemberCategory existCategory, ClearingMemberCategoryNewRequest partRequest) {
|
||||
ClearingMemberCategoryUpdateRequest r = new ClearingMemberCategoryUpdateRequest();
|
||||
r.setId(existCategory.getId());
|
||||
r.setClearingMemberCategory(partRequest.getClearingMemberCategory());
|
||||
return r;
|
||||
}
|
||||
|
||||
public Long getCompanyIdForCompanySymbols(String uuid, CompanyNewRequest cnr, Collection<CompanySymbolNewRequest> companySymbols) {
|
||||
CompanySymbols companySymbol = null;
|
||||
if (StringUtils.isNotEmpty(uuid)) {
|
||||
log.trace("Search company by companySymbol uuid={}", uuid);
|
||||
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"companySymbol", CompanySymbol.UUID.getKey(),
|
||||
"companySymbolValue", uuid
|
||||
)
|
||||
);
|
||||
if (!companySymbolsFromImdg.isEmpty()) {
|
||||
companySymbol = companySymbolsFromImdg.iterator().next();
|
||||
if (companySymbolsFromImdg.size() > 1) {
|
||||
log.warn("For UUID found > 1 company_symbols, use first (id = {})", companySymbol.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (companySymbol == null && StringUtils.isNotEmpty(cnr.getCompanySymbolValue())
|
||||
&& IEnumKey.contains(cnr.getCompanySymbol(), CompanySymbol.UUID, CompanySymbol.INN, CompanySymbol.CIO)) { // вероятно там будет только UUID
|
||||
{
|
||||
String companySymbolType = cnr.getCompanySymbol();
|
||||
log.debug("Company not found by UUID=\"{}\", try find by {}={}",
|
||||
uuid, companySymbolType, cnr.getCompanySymbolValue());
|
||||
log.trace("Search company by companySymbol {}={}", companySymbolType, cnr.getCompanySymbolValue());
|
||||
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"companySymbol", companySymbolType,
|
||||
"companySymbolValue", cnr.getCompanySymbolValue()
|
||||
)
|
||||
);
|
||||
if (!companySymbolsFromImdg.isEmpty()) {
|
||||
companySymbol = companySymbolsFromImdg.iterator().next();
|
||||
if (companySymbolsFromImdg.size() > 1) {
|
||||
log.warn("For {} found > 1 company_symbols, use first (id = {})", companySymbolType, cnr.getCompanySymbolValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (companySymbol == null && companySymbols != null) {
|
||||
for (CompanySymbolNewRequest cSymbolReq : companySymbols) {
|
||||
if (IEnumKey.contains(cSymbolReq.getCompanySymbol(), CompanySymbol.INN, CompanySymbol.CIO)) {
|
||||
String companySymbolType = cSymbolReq.getCompanySymbol();
|
||||
log.debug("Company not found by UUID=\"{}\", try find by {}", uuid, companySymbolType);
|
||||
log.trace("Search company by companySymbol {}={}", companySymbolType, cSymbolReq.getCompanySymbolValue());
|
||||
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"companySymbol", companySymbolType,
|
||||
"companySymbolValue", cSymbolReq.getCompanySymbolValue()
|
||||
)
|
||||
);
|
||||
if (!companySymbolsFromImdg.isEmpty()) {
|
||||
companySymbol = companySymbolsFromImdg.iterator().next();
|
||||
if (companySymbolsFromImdg.size() > 1) {
|
||||
log.warn("For {} found > 1 company_symbols, use first (id = {})", companySymbolType, cSymbolReq.getCompanySymbolValue());
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (companySymbol != null)
|
||||
return companySymbol.getCompanyId();
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
private <T> BaseRequest<T> wrapRequest(BaseRequest<?> template, T payload, ActionType action) {
|
||||
BaseRequest<T> r = new BaseRequest<>();
|
||||
r.setId(template.getId());
|
||||
if (action == null) {
|
||||
r.setActionType(template.getActionType());
|
||||
} else {
|
||||
r.setActionType(action);
|
||||
}
|
||||
r.setUserId(template.getUserId());
|
||||
r.setCorrelationId(template.getCorrelationId());
|
||||
r.setRequestPayload(payload);
|
||||
return r;
|
||||
}
|
||||
|
||||
public void fillCompanyId(CompanyGatewayRequest req, Long companyId) {
|
||||
if (req.getCompany() != null) {
|
||||
req.getCompany().setId(companyId);
|
||||
}
|
||||
if (req.getCompanyInfo() != null) {
|
||||
req.getCompanyInfo().setId(companyId);
|
||||
}
|
||||
if (req.getCompanySymbols() == null) req.setCompanySymbols(new ArrayList<>());
|
||||
if (req.getClientCodes() == null) req.setClientCodes(new ArrayList<>());
|
||||
if (req.getProfileDocuments() == null) req.setProfileDocuments(new ArrayList<>());
|
||||
if (req.getContacts() == null) req.setContacts(new ArrayList<>());
|
||||
for (CompanySymbolNewRequest cs : req.getCompanySymbols()) {
|
||||
cs.setCompanyId(companyId);
|
||||
}
|
||||
for (ClientCodeNewRequest cc : req.getClientCodes()) {
|
||||
cc.setCompanyId(companyId);
|
||||
}
|
||||
for (ProfileDocumentNewRequest pd : req.getProfileDocuments()) {
|
||||
pd.setCompanyId(companyId);
|
||||
}
|
||||
for (ContactNewRequest c : req.getContacts()) {
|
||||
c.setCompanyId(companyId);
|
||||
}
|
||||
for (ClearingMemberCategoryNewRequest c : req.getCategories()) {
|
||||
c.setCompanyId(companyId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,164 @@
|
|||
package ru.spcex.clearing.company.service.v2.facade;
|
||||
|
||||
import java.util.Objects;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentUpdateRequest;
|
||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||
|
||||
@Service
|
||||
public class ProfileDocumentServiceFacade {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final ImdgProvider imdgProvider;
|
||||
private final Imdg<ProfileDocument> profileDocumentMap;
|
||||
private final Imdg<Company> companyMap;
|
||||
private final AccountNotificationHelper accountNotificationHelper;
|
||||
private final RelationServiceFacade relationServiceFacade;
|
||||
|
||||
public ProfileDocumentServiceFacade(ImdgProvider imdgProvider,
|
||||
AccountNotificationHelper accountNotificationHelper,
|
||||
RelationServiceFacade relationServiceFacade) {
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.profileDocumentMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
this.accountNotificationHelper = accountNotificationHelper;
|
||||
this.relationServiceFacade = relationServiceFacade;
|
||||
}
|
||||
|
||||
public void create(ProfileDocumentNewRequest request) {
|
||||
ProfileDocument profileDocument = new ProfileDocument();
|
||||
profileDocument.setCompanyId(request.getCompanyId());
|
||||
profileDocument.setDocumentType(request.getDocumentType());
|
||||
profileDocument.setIssueDate(request.getIssueDate());
|
||||
profileDocument.setIssuePlace(request.getIssuePlace());
|
||||
profileDocument.setIssuer(request.getIssuer());
|
||||
profileDocument.setIssuerCode(request.getIssuerCode());
|
||||
profileDocument.setName(request.getName());
|
||||
profileDocument.setNumber(request.getNumber());
|
||||
profileDocument.setPlace(request.getPlace());
|
||||
profileDocument.setValidFromDate(request.getValidFromDate());
|
||||
profileDocument.setValidToDate(request.getValidToDate());
|
||||
profileDocument.setLink(request.getLink());
|
||||
profileDocumentMap.insert(profileDocument);
|
||||
|
||||
if (DocumentTypes.xcnt.getKey().equalsIgnoreCase(profileDocument.getDocumentType())) {
|
||||
processXCNT(profileDocument);
|
||||
}
|
||||
}
|
||||
|
||||
public CompanyErrors delete(CommonDeleteRequest request) {
|
||||
ProfileDocument profileDocument = profileDocumentMap.getSingleObjectByID(request.getId());
|
||||
Company existCompany = profileDocument.getCompanyId() == null ? null : companyMap.getSingleObjectByID(profileDocument.getCompanyId());
|
||||
if (existCompany == null) {
|
||||
log.warn("Company {} not found by profileDocument {}", profileDocument.getCompanyId(), profileDocument.getId());
|
||||
return CompanyErrors.CompanyNotFound;
|
||||
}
|
||||
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
relationServiceFacade.cancelingOfAgreementUpdateRelation(transaction, profileDocument.getCompanyId());
|
||||
Imdg<ProfileDocument> txProfileDocumentMap = transaction.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||
txProfileDocumentMap.delete(profileDocument);
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
log.trace("successfully deleted, id {}", profileDocument.getId());
|
||||
return null;
|
||||
}
|
||||
|
||||
public CompanyErrors update(ProfileDocumentUpdateRequest request) {
|
||||
ProfileDocument profileDocument = profileDocumentMap.getSingleObjectByID(request.getId());
|
||||
|
||||
String prevDocType = profileDocument.getDocumentType();
|
||||
if (request.getCompanyId() != null && !request.getCompanyId().equals(profileDocument.getCompanyId())) {
|
||||
log.warn("profileDocumentUpdateRequest[{}] CompanyId {} not match", request.getId(), request.getCompanyId());
|
||||
return CompanyErrors.WrongFieldValue;
|
||||
}
|
||||
|
||||
if (request.getDocumentType() != null)
|
||||
profileDocument.setDocumentType(request.getDocumentType());
|
||||
|
||||
if (request.getIssueDate() != null)
|
||||
profileDocument.setIssueDate(request.getIssueDate());
|
||||
|
||||
if (request.getIssuePlace() != null)
|
||||
profileDocument.setIssuePlace(request.getIssuePlace());
|
||||
|
||||
if (request.getIssuer() != null)
|
||||
profileDocument.setIssuer(request.getIssuer());
|
||||
|
||||
if (request.getIssuerCode() != null)
|
||||
profileDocument.setIssuerCode(request.getIssuerCode());
|
||||
|
||||
if (request.getName() != null)
|
||||
profileDocument.setName(request.getName());
|
||||
|
||||
if (request.getNumber() != null)
|
||||
profileDocument.setNumber(request.getNumber());
|
||||
|
||||
if (request.getPlace() != null)
|
||||
profileDocument.setPlace(request.getPlace());
|
||||
|
||||
if (request.getValidFromDate() != null)
|
||||
profileDocument.setValidFromDate(request.getValidFromDate());
|
||||
|
||||
if (request.getValidToDate() != null)
|
||||
profileDocument.setValidToDate(request.getValidToDate());
|
||||
|
||||
if (request.getLink() != null)
|
||||
profileDocument.setLink(request.getLink());
|
||||
|
||||
profileDocumentMap.insert(profileDocument);
|
||||
|
||||
log.trace("successfully processed, id {}", profileDocument.getId());
|
||||
|
||||
if (!Objects.equals(prevDocType, profileDocument.getDocumentType()) &&
|
||||
DocumentTypes.xcnt.getKey().equalsIgnoreCase(profileDocument.getDocumentType())) {
|
||||
processXCNT(profileDocument);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected void processXCNT(ProfileDocument profileDocument) {
|
||||
Company existCompany = profileDocument.getCompanyId() == null ? null : companyMap.getSingleObjectByID(profileDocument.getCompanyId());
|
||||
if (existCompany == null) {
|
||||
log.warn("Company {} not found by profileDocument {}", profileDocument.getCompanyId(), profileDocument.getId());
|
||||
return;
|
||||
}
|
||||
if (!WorkflowStatus.Active.equalsByKey(existCompany.getWorkflowStatus())) {
|
||||
log.warn("Current workflowStatus {} for company {}. Do not termination account.",
|
||||
existCompany.getWorkflowStatus(), existCompany.getId());
|
||||
}
|
||||
|
||||
CompanyErrors hasError = accountNotificationHelper.accountTerminationByDocumentNotification(profileDocument.getCompanyId(), profileDocument.getId());
|
||||
if (hasError != null) {
|
||||
log.error("Error at termination account of company {} by document {}: {}",
|
||||
profileDocument.getCompanyId(), profileDocument.getId(), hasError + "(" + hasError.getId() + ")");
|
||||
}
|
||||
log.debug("Now wait notification from account-service.");
|
||||
/* processXCNT
|
||||
Дальнейшая обработка документа о расторжении, то есть обновление статусов в company и relation, возможна только после ответа об успешном обновлении статуса в account.
|
||||
ACCOUNT_TERMINATION -> ACCOUNT_TERMINATION_STEP2
|
||||
1.2. Обновить статус в бизнес-объекте company [profileDocument.companyId=company.id] согласно описанию с тегом "При расторжении".
|
||||
1.3. Обновить статус в бизнес-объекте relation [profileDocument.companyId=relation.consumerId] согласно описанию с тегом "При расторжении".
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,615 @@
|
|||
package ru.spcex.clearing.company.service.v2.facade;
|
||||
|
||||
import static ru.spcex.platform.enumeration.Service.FOND;
|
||||
import static ru.spcex.platform.enumeration.Service.MKR;
|
||||
import static ru.spcex.platform.enumeration.ServiceStatus.Closed;
|
||||
import static ru.spcex.platform.utils.enumeration.IEnumKey.getEnumByKey;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.relation.Relation;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationUpdateRequest;
|
||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||
import ru.spcex.platform.enumeration.ServiceProduct;
|
||||
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.ImdgId;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
import ru.spcex.platform.utils.error.ValidationException;
|
||||
|
||||
@Service
|
||||
public class RelationServiceFacade {
|
||||
private static final Long SPVB_ID = 1L; // СПВБ
|
||||
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final ImdgProvider imdgProvider;
|
||||
private final ImdgId idSequence;
|
||||
private final Imdg<Relation> relationMap;
|
||||
private final Imdg<Company> companyMap;
|
||||
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||
private final AccountNotificationHelper accountNotification;
|
||||
|
||||
public RelationServiceFacade(ImdgProvider imdgProvider,
|
||||
AccountNotificationHelper accountNotification) {
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
||||
relationMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||
companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
|
||||
this.accountNotification = accountNotification;
|
||||
}
|
||||
|
||||
public CompanyErrors create(RelationNewRequest request) {
|
||||
String serviceStatus = request.getServiceStatus();
|
||||
if (serviceStatus == null || serviceStatus.isEmpty()) {
|
||||
Company company = companyMap.getSingleObjectByID(request.getCompanyId());
|
||||
if (company != null) {
|
||||
request.setServiceStatus(company.getWorkflowStatus());
|
||||
}
|
||||
}
|
||||
|
||||
Company company = companyMap.getSingleObjectByID(request.getCompanyId());
|
||||
|
||||
Relation existRelation = searchRelation(request.getClearingMemberCategory(), request.getCompanyId());
|
||||
boolean isClosedRelation = existRelation != null && IEnumKey.contains
|
||||
(existRelation.getServiceStatus(), Closed, ServiceStatus.Blocked, ServiceStatus.Suspended);
|
||||
if (existRelation != null && !isClosedRelation) {
|
||||
if (MKR.equalsByKey(existRelation.getService())) {
|
||||
return CompanyErrors.ClearingMemberCategoryOnMKRAlreadyExist;
|
||||
} else if (ru.spcex.platform.enumeration.Service.FOND.equalsByKey(existRelation.getService())) {
|
||||
return CompanyErrors.ClearingMemberCategoryOnFONDAlreadyExist;
|
||||
} else {
|
||||
log.warn("Unknown relation[{}] service={}", existRelation.getId(), existRelation.getService());
|
||||
return CompanyErrors.GeneralError;
|
||||
}
|
||||
}
|
||||
|
||||
Relation relation;
|
||||
if (existRelation == null) {
|
||||
relation = new Relation();
|
||||
relation.setId(idSequence.nextId());
|
||||
relation.setCreated(Instant.now());
|
||||
relation.setUpdated(relation.getCreated());
|
||||
log.debug("New relation.id={}", relation.getId());
|
||||
} else {
|
||||
log.info("Found exist relation id={}, it will be update.", existRelation.getId());
|
||||
relation = existRelation;
|
||||
relation.setUpdated(Instant.now());
|
||||
}
|
||||
|
||||
relation.setConsumerId(request.getCompanyId());
|
||||
relation.setSupplierId(SPVB_ID); // 1 СПВБ
|
||||
if (request.getServiceStatus() != null) {
|
||||
relation.setServiceStatus(request.getServiceStatus());
|
||||
} else {
|
||||
if (existRelation != null) {
|
||||
relation.setServiceStatus(ServiceStatus.Reopened.getKey());
|
||||
log.debug("Request has no status. Set status by resume: {}", relation.getServiceStatus());
|
||||
} else {
|
||||
String toStatus = WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? ServiceStatus.Active.getKey() :
|
||||
WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus()) ? Closed.getKey() :
|
||||
null;
|
||||
log.debug("Request has no status. Set status by company[{}].status={}. Relation[{}].serviceSStatus={}",
|
||||
company.getId(), company.getWorkflowStatus(), relation.getId(), toStatus);
|
||||
relation.setServiceStatus(toStatus);
|
||||
}
|
||||
}
|
||||
|
||||
String service = serviceForCMC(request.getClearingMemberCategory());
|
||||
relation.setService(service); // MKR
|
||||
relation.setServiceProduct(ServiceProduct.ZERO.getKey());
|
||||
relation.setComment(request.getComment());
|
||||
|
||||
relationMap.insert(relation);
|
||||
|
||||
log.debug("New Relation[{}] created.", relation.getId());
|
||||
return null;
|
||||
}
|
||||
|
||||
public void update(RelationUpdateRequest request) {
|
||||
Relation relation = relationMap.getSingleObjectByID(request.getId());
|
||||
|
||||
final Long companyId = relation.getConsumerId();
|
||||
Collection<String> companyCMC = selectCompanyClearingMemberCategory(companyId);
|
||||
boolean companyCMCisBIV = companyCMC.contains(ClearingCategory.B.getKey()) || companyCMC.contains(ClearingCategory.I.getKey())
|
||||
|| companyCMC.contains(ClearingCategory.V.getKey());
|
||||
boolean companyCMCisCF = companyCMC.contains(ClearingCategory.C.getKey()) || companyCMC.contains(ClearingCategory.F.getKey());
|
||||
String firstCMC = companyCMC.isEmpty() ? null : companyCMC.iterator().next();
|
||||
|
||||
ImdgTransaction tx = imdgProvider.newTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
tx.beginTransaction();
|
||||
//relationUpdate0(tx, req, relation); // первоначальное ТЗ.
|
||||
|
||||
boolean needAddNewRelation = false; // call relationNew0(req, companyId, firstCMC);
|
||||
if (ru.spcex.platform.enumeration.Service.MKR.equalsByKey(relation.getService())) { // relation B or I or V
|
||||
if (companyCMCisCF) {
|
||||
// 4.1. Если clearingMemberCategory = B or I or V и для этой компании установлены clearingMemberCategory = C or F:
|
||||
Relation relation1 = selectRelation(companyId, MKR.getKey(), false);
|
||||
if (relation1 != null) {
|
||||
relationUpdate0WithResume(request, relation1);
|
||||
} else {
|
||||
needAddNewRelation = true;
|
||||
}
|
||||
Relation relation2 = selectRelation(companyId, MKR.getKey(), true);
|
||||
if (relation2 != null) {
|
||||
// nothing
|
||||
} else {
|
||||
needAddNewRelation = true;
|
||||
}
|
||||
}
|
||||
if (!companyCMCisCF) {
|
||||
// 4.3. Если clearingMemberCategory = B or I or V и для этой компании не установлены clearingMemberCategory = C or F:
|
||||
Relation relation1 = selectRelation(companyId, MKR.getKey(), false);
|
||||
if (relation1 != null) {
|
||||
relationUpdate0WithResume(request, relation1);
|
||||
} else {
|
||||
needAddNewRelation = true;
|
||||
}
|
||||
Relation relation2 = selectRelation(companyId, MKR.getKey(), true);
|
||||
if (relation2 != null) {
|
||||
// nothing
|
||||
} else {
|
||||
needAddNewRelation = true;
|
||||
}
|
||||
Relation relation3 = selectRelation(companyId, FOND.getKey(), null);
|
||||
if (relation3 != null) {
|
||||
// nothing
|
||||
relationClose0(relation3);
|
||||
}
|
||||
}
|
||||
} else if (FOND.equalsByKey(relation.getService())) { // relation C or F
|
||||
if (companyCMCisBIV) {
|
||||
// 4.2. Если clearingMemberCategory = C or F и для этой компании установлены clearingMemberCategory = B or I or V:
|
||||
Relation relation1 = selectRelation(companyId, FOND.getKey(), false);
|
||||
if (relation1 != null) {
|
||||
relationUpdate0WithResume(request, relation1);
|
||||
} else {
|
||||
needAddNewRelation = true;
|
||||
}
|
||||
Relation relation2 = selectRelation(companyId, FOND.getKey(), true);
|
||||
if (relation2 != null) {
|
||||
// nothing
|
||||
} else {
|
||||
needAddNewRelation = true;
|
||||
}
|
||||
}
|
||||
if (!companyCMCisBIV) {
|
||||
// 4.4. Если clearingMemberCategory = C or F и для этой компании установлены не clearingMemberCategory = B or I or V:
|
||||
Relation relation1 = selectRelation(companyId, FOND.getKey(), false);
|
||||
if (relation1 != null) {
|
||||
relationUpdate0WithResume(request, relation1);
|
||||
} else {
|
||||
needAddNewRelation = true;
|
||||
}
|
||||
Relation relation2 = selectRelation(companyId, FOND.getKey(), true);
|
||||
if (relation2 != null) {
|
||||
// nothing
|
||||
} else {
|
||||
needAddNewRelation = true;
|
||||
}
|
||||
Relation relation3 = selectRelation(companyId, MKR.getKey(), null);
|
||||
if (relation3 != null) {
|
||||
relationClose0(relation3);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// unknown type
|
||||
relationUpdate0(request, relation);
|
||||
}
|
||||
|
||||
if (needAddNewRelation) {
|
||||
relationNew0(request, companyId, firstCMC);
|
||||
}
|
||||
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk) {
|
||||
tx.commitTransaction();
|
||||
} else {
|
||||
tx.rollbackTransaction();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void delete(CommonDeleteRequest request) {
|
||||
Relation relation = relationMap.getSingleObjectByID(request.getId());
|
||||
|
||||
Long companyId = relation.getConsumerId();
|
||||
|
||||
Collection<String> companyCMC = selectCompanyClearingMemberCategory(companyId);
|
||||
boolean companyCMCisBIV = companyCMC.contains(ClearingCategory.B.getKey()) || companyCMC.contains(ClearingCategory.I.getKey())
|
||||
|| companyCMC.contains(ClearingCategory.V.getKey());
|
||||
boolean companyCMCisCF = companyCMC.contains(ClearingCategory.C.getKey()) || companyCMC.contains(ClearingCategory.F.getKey());
|
||||
|
||||
if (companyCMCisBIV && MKR.equalsByKey(relation.getService())) {
|
||||
// relation не изменяем
|
||||
} else if (companyCMCisCF && FOND.equalsByKey(relation.getService())) {
|
||||
// relation не изменяем
|
||||
} else {
|
||||
// удалить.
|
||||
}
|
||||
// else
|
||||
{
|
||||
ImdgTransaction tx = imdgProvider.newTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
tx.beginTransaction();
|
||||
if (!companyCMCisBIV) {
|
||||
Relation relation1 = selectRelation(companyId, MKR.getKey(), false);
|
||||
if (relation1 != null) relationClose0(relation1);
|
||||
}
|
||||
if (!companyCMCisCF) {
|
||||
Relation relation1 = selectRelation(companyId, FOND.getKey(), false);
|
||||
if (relation1 != null) relationClose0(relation1);
|
||||
}
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
tx.commitTransaction();
|
||||
else
|
||||
tx.rollbackTransaction();
|
||||
}
|
||||
}
|
||||
|
||||
if (WorkflowStatus.Blocked.equalsByKey(relation.getServiceStatus())) {
|
||||
log.warn("Relation {} already blocked.", relation.getId());
|
||||
} else {
|
||||
relation.setUpdated(Instant.now());
|
||||
relation.setServiceStatus(WorkflowStatus.Blocked.getKey());
|
||||
|
||||
relationMap.insert(relation);
|
||||
log.debug("Relation[{}] block.", relation.getId());
|
||||
}
|
||||
}
|
||||
|
||||
public void createNewRelation(ImdgTransaction transaction, Long companyId, ClearingMemberCategory clearingMemberCategory) {
|
||||
Objects.requireNonNull(companyId, "companyId");
|
||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||
Company company = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class).getFirstObjectByFieldValues(Map.of("id", companyId));
|
||||
|
||||
WorkflowStatus workflowStatus = getEnumByKey(WorkflowStatus.class, company.getWorkflowStatus());
|
||||
String serviceStatus = null;
|
||||
if (clearingMemberCategory == null) {
|
||||
log.warn("clearingMemberCategory not set for companyId={}", companyId);
|
||||
} else {
|
||||
ClearingCategory clearingCategory = getEnumByKey(ClearingCategory.class, clearingMemberCategory.getClearingMemberCategory());
|
||||
serviceStatus = serviceForCMC(clearingCategory).getKey();
|
||||
}
|
||||
|
||||
Relation relation = searchRelation(transaction, clearingMemberCategory.getClearingMemberCategory(), companyId);
|
||||
if (relation == null) {
|
||||
relation = new Relation();
|
||||
relation.setId(idSequence.nextId());
|
||||
relation.setCreated(Instant.now());
|
||||
relation.setUpdated(relation.getCreated());
|
||||
log.debug("Create new relation.id={}", relation.getId());
|
||||
} else {
|
||||
relation.setUpdated(Instant.now());
|
||||
log.debug("Update exist relation.id={}", relation.getId());
|
||||
}
|
||||
relation.setConsumerId(companyId);
|
||||
relation.setSupplierId(SPVB_ID); // 1 СПВБ
|
||||
relation.setServiceStatus(Objects.requireNonNull(workflowStatus).getKey());
|
||||
relation.setService(serviceStatus);
|
||||
relation.setServiceProduct(ServiceProduct.ZERO.getKey());
|
||||
log.debug("New Relation[{}] created by clearingMemberCategory[{}].", relation.getId(), clearingMemberCategory.getId());
|
||||
relationMap.insert(relation);
|
||||
}
|
||||
|
||||
/**
|
||||
* Приходит от ClearingMemberCategory
|
||||
*/
|
||||
public void cancelRelation(ImdgTransaction transaction, Long companyId, ClearingMemberCategory clearingMemberCategory) {
|
||||
log.debug("Cancelling relations for companyId={} and clearingMemberCategory {}", companyId, clearingMemberCategory == null ? null : clearingMemberCategory.getClearingMemberCategory());
|
||||
|
||||
Objects.requireNonNull(companyId, "companyId");
|
||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||
// String serviceStatus = null;
|
||||
// if (clearingMemberCategory == null) {
|
||||
// log.warn("clearingMemberCategory not set for companyId={}", companyId);
|
||||
// } else {
|
||||
// ClearingCategory clearingCategory = getEnumByKey(ClearingCategory.class, clearingMemberCategory.getClearingMemberCategory());
|
||||
// serviceStatus = serviceForCMC(clearingCategory).getKey();
|
||||
// }
|
||||
|
||||
Collection<String> companyCMC = selectCompanyClearingMemberCategory(companyId);
|
||||
if (companyCMC.contains(clearingMemberCategory.getClearingMemberCategory())) {
|
||||
// never
|
||||
log.warn("ClearingMemberCategory \"{}\" already exist in set for company {}.", clearingMemberCategory.getClearingMemberCategory(), companyId);
|
||||
}
|
||||
boolean companyCMCisBIV = companyCMC.contains(ClearingCategory.B.getKey()) || companyCMC.contains(ClearingCategory.I.getKey())
|
||||
|| companyCMC.contains(ClearingCategory.V.getKey());
|
||||
boolean companyCMCisCF = companyCMC.contains(ClearingCategory.C.getKey()) || companyCMC.contains(ClearingCategory.F.getKey());
|
||||
|
||||
|
||||
Relation relation = searchRelation(transaction, clearingMemberCategory.getClearingMemberCategory(), companyId);
|
||||
if (relation == null) {
|
||||
log.debug("Relation for clearingMemberCategory.id={} {} not found", clearingMemberCategory.getId(), clearingMemberCategory.getClearingMemberCategory());
|
||||
} else {
|
||||
if (companyCMCisBIV && MKR.equalsByKey(relation.getService())) {
|
||||
// relation не изменяем
|
||||
log.debug("Relation {} {} lost for ClearingMemberCategory \"{}\".", relation.getId(), relation.getService(), clearingMemberCategory.getClearingMemberCategory());
|
||||
} else if (companyCMCisCF && FOND.equalsByKey(relation.getService())) {
|
||||
// relation не изменяем
|
||||
log.debug("Relation {} {} lost for ClearingMemberCategory \"{}\".", relation.getId(), relation.getService(), clearingMemberCategory.getClearingMemberCategory());
|
||||
} else {
|
||||
// удалить.
|
||||
log.debug("Block exist relation.id={}", relation.getId());
|
||||
relation.setUpdated(Instant.now());
|
||||
relation.setServiceStatus(Closed.getKey());
|
||||
relationMap.update(relation);
|
||||
log.debug("Relation[{}] updated (closed) by clearingMemberCategory[{}].", relation.getId(), clearingMemberCategory.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void cancelAllRelationForCompany(ImdgTransaction transaction, Long companyId) {
|
||||
Objects.requireNonNull(companyId, "companyId");
|
||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||
Collection<Relation> relations = relationMap.getCollectionObjectsByFieldValues(Map.of("consumerId", companyId));
|
||||
|
||||
int cancelledN = 0;
|
||||
for (Relation relation : relations) {
|
||||
if (!Closed.equalsByKey(relation.getServiceStatus())) {
|
||||
relation.setServiceStatus(Closed.getKey());
|
||||
relationMap.update(relation);
|
||||
cancelledN++;
|
||||
}
|
||||
}
|
||||
|
||||
log.debug("Cancelled {} relation (of {}) by company {}", cancelledN, relations.size(), companyId);
|
||||
}
|
||||
|
||||
public void cancelingOfAgreementUpdateRelation(ImdgTransaction transaction, Long companyId) {
|
||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||
Relation relation = relationMap.getFirstObjectByFieldValues(Map.of("consumerId", companyId));
|
||||
|
||||
if (relation == null) {
|
||||
log.warn("Relation with consumerId={} not found", companyId);
|
||||
return;
|
||||
}
|
||||
relation.setServiceStatus(Closed.getKey());
|
||||
relationMap.update(relation);
|
||||
|
||||
log.debug("New Relation[{}] updated.", relation.getId());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param company
|
||||
* @param oldStatus
|
||||
* @param newStatus WorkflowStatus.Active - при возобналвении; WorkflowStatus.Blocked - при блокировки/расторжении
|
||||
*/
|
||||
public void onChangeWorkflowStatus(ImdgTransaction transaction, Company company, String oldStatus, String newStatus) throws ValidationException {
|
||||
log.debug("Company id={} status changed from {} to {}",
|
||||
company.getId(), oldStatus, company.getWorkflowStatus());
|
||||
onChangeWorkflowStatusOnlyRelationChange(transaction, company, newStatus);
|
||||
|
||||
if (WorkflowStatus.Blocked.equalsByKey(newStatus)) {
|
||||
// IV - сообщения на добавления документа расторжения договора
|
||||
CompanyErrors hasError = accountNotification.accountTerminationNotification(company.getId());
|
||||
if (hasError != null) {
|
||||
log.warn("Can not block company, cause error {}", hasError);
|
||||
throw new ValidationException(hasError);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void onChangeWorkflowStatusOnlyRelationChange(ImdgTransaction transaction, Company company, String newStatus) throws ValidationException {
|
||||
assert Objects.equals(newStatus, company.getWorkflowStatus());
|
||||
String query = String.format("consumerId=%s", company.getId());
|
||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||
Collection<Relation> relations = relationMap.getCollectionObjectsBySQL(query);
|
||||
|
||||
log.trace("Selected {} Relation by query: {}", relations.size(), query);
|
||||
Instant now = Instant.now();
|
||||
|
||||
for (Relation relation : relations) {
|
||||
boolean modified = false;
|
||||
if (WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) {
|
||||
if (!ServiceStatus.Reopened.equalsByKey(relation.getServiceStatus())) {
|
||||
relation.setServiceStatus(ServiceStatus.Reopened.getKey());
|
||||
modified = true;
|
||||
}
|
||||
} else if (WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus())) {
|
||||
if (!Closed.equalsByKey(relation.getServiceStatus())) {
|
||||
relation.setServiceStatus(Closed.getKey());
|
||||
modified = true;
|
||||
}
|
||||
}
|
||||
if (modified) {
|
||||
relation.setUpdated(now);
|
||||
log.debug("Relation id={} updated", relation.getId());
|
||||
relationMap.update(relation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Relation selectRelation(Long companyId, String service, Boolean statusActive) {
|
||||
Objects.requireNonNull(companyId, "companyId");
|
||||
Objects.requireNonNull(service, "service");
|
||||
Collection<Relation> relations = relationMap.getCollectionObjectsByFieldValues(Map.of("consumerId", companyId, "service", service));
|
||||
Optional<Relation> r = relations.stream()
|
||||
.filter(rel -> {
|
||||
if (statusActive == null) return true;
|
||||
boolean wasClosed = IEnumKey.contains(rel.getServiceStatus(),
|
||||
Closed, ServiceStatus.Suspended, ServiceStatus.Blocked);
|
||||
return statusActive != wasClosed;
|
||||
}).findFirst();
|
||||
if (r.isPresent()) {
|
||||
log.trace("Found relation[{}] by consumerId={} and service={} and active={}",
|
||||
r.get().getId(), companyId, service, statusActive);
|
||||
return r.get();
|
||||
} else {
|
||||
log.trace("Relation not found by consumerId={} and service={} and active={}",
|
||||
companyId, service, statusActive);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private Relation searchRelation(ImdgTransaction tx, String clearingMemberCategory, Long consumerId) {
|
||||
String svc = serviceForCMC(clearingMemberCategory);
|
||||
if (svc == null) {
|
||||
log.warn("Unexpected relation clearingMemberCategory={}", clearingMemberCategory);
|
||||
return null;
|
||||
}
|
||||
Imdg<Relation> currentRelationMap = tx == null ? relationMap : tx.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||
Relation existRelation = currentRelationMap.getFirstObjectByFieldValues(Map.of(
|
||||
"consumerId", consumerId,
|
||||
"service", svc
|
||||
));
|
||||
if (existRelation == null)
|
||||
log.trace("Relation with consumerId={} and service={} not exist.", consumerId, svc);
|
||||
else
|
||||
log.trace("Exist relation.id={}", existRelation.getId());
|
||||
return existRelation;
|
||||
}
|
||||
|
||||
private Relation searchRelation(String clearingMemberCategory, Long consumerId) {
|
||||
return searchRelation(null, clearingMemberCategory, consumerId);
|
||||
}
|
||||
|
||||
private String serviceForCMC(String clearingMemberCategory) {
|
||||
String svc = null;
|
||||
if (ClearingCategory.B.equalsByKey(clearingMemberCategory)
|
||||
|| ClearingCategory.I.equalsByKey(clearingMemberCategory)
|
||||
|| ClearingCategory.V.equalsByKey(clearingMemberCategory)
|
||||
) {
|
||||
svc = MKR.getKey();
|
||||
} else if (ClearingCategory.C.equalsByKey(clearingMemberCategory)
|
||||
|| ClearingCategory.F.equalsByKey(clearingMemberCategory)
|
||||
) {
|
||||
svc = ru.spcex.platform.enumeration.Service.FOND.getKey();
|
||||
}
|
||||
return svc;
|
||||
}
|
||||
|
||||
private ru.spcex.platform.enumeration.Service serviceForCMC(ClearingCategory clearingCategory) {
|
||||
return switch (Objects.requireNonNull(clearingCategory)) {
|
||||
case B, I, V -> MKR;
|
||||
case C, F -> FOND;
|
||||
default -> throw new IllegalStateException("Illegal state of clearingCategory " + clearingCategory);
|
||||
};
|
||||
}
|
||||
|
||||
private Collection<String> selectCompanyClearingMemberCategory(Long companyId) {
|
||||
Collection<ClearingMemberCategory> companyCategory = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of("companyId", companyId)
|
||||
);
|
||||
return companyCategory.stream()
|
||||
.map(ClearingMemberCategory::getClearingMemberCategory)
|
||||
.filter(StringUtils::isNotEmpty)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private Relation relationNew0(RelationUpdateRequest req, Long companyId, String clearingMemberCategory) {
|
||||
Company company = companyMap.getSingleObjectByID(companyId);
|
||||
|
||||
Relation relation = new Relation();
|
||||
relation.setId(idSequence.nextId());
|
||||
relation.setCreated(Instant.now());
|
||||
relation.setUpdated(relation.getCreated());
|
||||
log.debug("New relation.id={}", relation.getId());
|
||||
|
||||
relation.setConsumerId(companyId);
|
||||
relation.setSupplierId(SPVB_ID); // 1 СПВБ
|
||||
if (req.getServiceStatus() != null) {
|
||||
relation.setServiceStatus(req.getServiceStatus());
|
||||
} else {
|
||||
String toStatus = WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? ServiceStatus.Active.getKey() :
|
||||
WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus()) ? Closed.getKey() :
|
||||
null;
|
||||
log.debug("Request has no status. Set status by company[{}].status={}. Relation[{}].serviceSStatus={}",
|
||||
company.getId(), company.getWorkflowStatus(), relation.getId(), toStatus);
|
||||
relation.setServiceStatus(toStatus);
|
||||
}
|
||||
String service = serviceForCMC(clearingMemberCategory);
|
||||
relation.setService(service); // MKR
|
||||
relation.setServiceProduct(ServiceProduct.ZERO.getKey());
|
||||
relation.setComment(req.getComment());
|
||||
|
||||
relationMap.insert(relation);
|
||||
log.debug("New Relation[{}] created.", relation.getId());
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private Relation relationUpdate0(RelationUpdateRequest req, Relation relation) {
|
||||
if (req.getServiceStatus() != null) {
|
||||
log.debug("To relation {} set serivceStatus=\"{}\" by user request.", relation.getId(), req.getServiceStatus());
|
||||
relation.setServiceStatus(req.getServiceStatus());
|
||||
} else { // never - см. валидатор relationUpdateRequestValidator
|
||||
if (relation.getConsumerId() == null) {
|
||||
log.warn("Relation[{}]. consumerId was null", relation.getId());
|
||||
}
|
||||
Company company = companyMap.getSingleObjectByID(relation.getConsumerId());
|
||||
String toStatus = WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? ServiceStatus.Active.getKey() :
|
||||
WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus()) ? Closed.getKey() :
|
||||
null;
|
||||
if (ServiceStatus.Active.equalsByKey(toStatus) && Closed.equalsByKey(relation.getServiceStatus())) {
|
||||
relation.setServiceStatus(ServiceStatus.Reopened.getKey());
|
||||
log.debug("Set status by resume: {}", relation.getServiceStatus());
|
||||
} else {
|
||||
relation.setServiceStatus(toStatus);
|
||||
log.debug("Request has no status. Set status by company[{}].status={}. Relation[{}].serviceSStatus={}",
|
||||
company.getId(), company.getWorkflowStatus(), toStatus, relation.getServiceStatus());
|
||||
}
|
||||
}
|
||||
|
||||
relation.setComment(req.getComment());
|
||||
relation.setUpdated(Instant.now());
|
||||
|
||||
relationMap.update(relation);
|
||||
log.debug("Update Relation[{}].", relation.getId());
|
||||
return relation;
|
||||
}
|
||||
|
||||
private Relation relationUpdate0WithResume(RelationUpdateRequest req, Relation relation) {
|
||||
if (ServiceStatus.Reopened.equalsByKey(relation.getServiceStatus())) {
|
||||
log.debug("Relation {} already reopened(resumed)", relation.getId());
|
||||
return relation;
|
||||
}
|
||||
if (req.getComment() != null) {
|
||||
relation.setComment(req.getComment());
|
||||
}
|
||||
relation.setServiceStatus(ServiceStatus.Reopened.getKey());
|
||||
relation.setUpdated(Instant.now());
|
||||
|
||||
relationMap.update(relation);
|
||||
log.debug("Update Relation[{}] - resume.", relation.getId());
|
||||
return relation;
|
||||
}
|
||||
|
||||
private void relationClose0(Relation relation) {
|
||||
if (ServiceStatus.Closed.equalsByKey((relation.getServiceStatus()))) {
|
||||
log.debug("Relation {} already closed.", relation.getId());
|
||||
return;
|
||||
}
|
||||
relation.setServiceStatus(Closed.getKey());
|
||||
relation.setUpdated(Instant.now());
|
||||
|
||||
relationMap.update(relation);
|
||||
log.debug("Relation[{}] was closed.", relation.getId());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
package ru.spcex.clearing.company.service.v2.facade;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.SettlementHouseProperties;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyUpdateRequest;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgId;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
@Service
|
||||
public class SettlementHousePropertiesServiceFacade {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final Imdg<SettlementHouseProperties> settlementHousePropertiesMap;
|
||||
private final ImdgId idSequence;
|
||||
|
||||
public SettlementHousePropertiesServiceFacade(ImdgProvider imdgProvider) {
|
||||
this.settlementHousePropertiesMap = imdgProvider.getImdg(IMDGDistributedNames.Map_SettlementHouseProperties, SettlementHouseProperties.class);
|
||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
||||
}
|
||||
|
||||
public void create(SettlementHousePropertyNewRequest request) {
|
||||
SettlementHouseProperties shp = new SettlementHouseProperties();
|
||||
shp.setId(idSequence.nextId());
|
||||
shp.setCompanyId(request.getCompanyId());
|
||||
shp.setCurrencyCode(request.getCurrencyCode());
|
||||
|
||||
settlementHousePropertiesMap.insert(shp);
|
||||
log.debug("New SettlementHouseProperties[{}] for company {}", shp.getId(), shp.getCompanyId());
|
||||
}
|
||||
|
||||
public void update(SettlementHousePropertyUpdateRequest request) {
|
||||
SettlementHouseProperties shp = settlementHousePropertiesMap.getSingleObjectByID(request.getId());
|
||||
|
||||
shp.setCompanyId(request.getCompanyId());
|
||||
shp.setCurrencyCode(request.getCurrencyCode());
|
||||
|
||||
settlementHousePropertiesMap.update(shp);
|
||||
log.debug("Update SettlementHouseProperty[{}] for company {}", shp.getId(), request.getCompanyId());
|
||||
}
|
||||
|
||||
public CompanyErrors delete(CommonDeleteRequest request) {
|
||||
SettlementHouseProperties settlementHouseProperty = settlementHousePropertiesMap.getSingleObjectByID(request.getId());
|
||||
if (settlementHouseProperty == null) {
|
||||
return CompanyErrors.RecordNotFound;
|
||||
}
|
||||
settlementHousePropertiesMap.delete(settlementHouseProperty);
|
||||
log.debug("SettlementHouseProperty {} for company {} delete", settlementHouseProperty.getId(), settlementHouseProperty.getCompanyId());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
package ru.spcex.clearing.company.service.v2.listeners;
|
||||
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ClearingMemberCategoryServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.validators.ClearingMemberCategoryServiceValidator;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
|
||||
@Service
|
||||
public class ClearingMemberCategoryServiceListener extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final ClearingMemberCategoryServiceFacade clearingMemberCategoryServiceFacade;
|
||||
private final ClearingMemberCategoryServiceValidator clearingMemberCategoryServiceValidator;
|
||||
|
||||
public ClearingMemberCategoryServiceListener(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaResponseQueue,
|
||||
ClearingMemberCategoryServiceFacade clearingMemberCategoryServiceFacade,
|
||||
ClearingMemberCategoryServiceValidator clearingMemberCategoryServiceValidator) {
|
||||
super(kafkaQueue, kafkaResponseQueue);
|
||||
this.clearingMemberCategoryServiceFacade = clearingMemberCategoryServiceFacade;
|
||||
this.clearingMemberCategoryServiceValidator = clearingMemberCategoryServiceValidator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
callback(ClearingMemberCategoryNewRequest.class)
|
||||
.setFunction(this::processNewClearingMemberCategoryRequest)
|
||||
.forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_NEW, callbacks::put);
|
||||
callback(ClearingMemberCategoryUpdateRequest.class)
|
||||
.setFunction(this::processUpdateClearingMemberCategoryRequest)
|
||||
.forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(this::processDeleteClearingMemberCategoryRequest)
|
||||
.forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_DELETE, callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processNewClearingMemberCategoryRequest(BaseRequest<ClearingMemberCategoryNewRequest> request) {
|
||||
log.debug("ClearingMemberCategoryNewRequest received {}", request.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = clearingMemberCategoryServiceValidator.createRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
clearingMemberCategoryServiceFacade.create(request.getRequestPayload());
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processUpdateClearingMemberCategoryRequest(BaseRequest<ClearingMemberCategoryUpdateRequest> request) {
|
||||
log.debug("ClearingMemberCategoryUpdateRequest received {}", request.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = clearingMemberCategoryServiceValidator.updateRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
clearingMemberCategoryServiceFacade.update(request.getRequestPayload());
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processDeleteClearingMemberCategoryRequest(BaseRequest<CommonDeleteRequest> request) {
|
||||
log.debug("CommonDeleteRequest received {}", request.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = clearingMemberCategoryServiceValidator.deleteRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
clearingMemberCategoryServiceFacade.delete(request.getRequestPayload());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
package ru.spcex.clearing.company.service.v2.listeners;
|
||||
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyInfoServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.validators.CompanyInfoServiceValidator;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyInfoUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.services.RequestHelper;
|
||||
|
||||
@Service
|
||||
public class CompanyInfoServiceListener extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final RequestHelper requestHelper;
|
||||
private final CompanyInfoServiceFacade companyInfoServiceFacade;
|
||||
private final CompanyInfoServiceValidator companyInfoServiceValidator;
|
||||
|
||||
@Autowired
|
||||
public CompanyInfoServiceListener(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaProducer,
|
||||
RequestHelper requestHelper,
|
||||
CompanyInfoServiceFacade companyInfoServiceFacade,
|
||||
CompanyInfoServiceValidator companyInfoServiceValidator) {
|
||||
super(kafkaQueue, kafkaProducer);
|
||||
this.requestHelper = requestHelper;
|
||||
this.companyInfoServiceFacade = companyInfoServiceFacade;
|
||||
this.companyInfoServiceValidator = companyInfoServiceValidator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
callback(CompanyInfoUpdateRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processNewCompanyInfoUpdateRequest, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_INFO_UPDATE, callbacks::put);
|
||||
callback(CompanyInfoUpdateRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processNewCompanyInfoUpdateRequest, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_INFO_NEW, callbacks::put); // логика заполнения одинакова с companyInfoUpdate
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
public RequestInfoUpdate processNewCompanyInfoUpdateRequest(BaseRequest<CompanyInfoUpdateRequest> request) {
|
||||
log.debug("{} received", request.getRequestPayload().getClass().getSimpleName());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = companyInfoServiceValidator.updateRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
CompanyErrors result = companyInfoServiceFacade.update(request.getRequestPayload());
|
||||
if (result.equals(CompanyErrors.CompanyNotFound)) {
|
||||
log.warn("Company {} not found", request.getRequestPayload().getId());
|
||||
return requestHelper.makeErrorResponse(request, CompanyErrors.CompanyNotFound, request.getId());
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
package ru.spcex.clearing.company.service.v2.listeners;
|
||||
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyRoleSetServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.validators.CompanyRoleSetServiceValidator;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.services.RequestHelper;
|
||||
|
||||
@Service
|
||||
public class CompanyRoleSetServiceListener extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final CompanyRoleSetServiceFacade companyRoleSetServiceFacade;
|
||||
private final CompanyRoleSetServiceValidator companyRoleSetServiceValidator;
|
||||
private final RequestHelper requestHelper;
|
||||
|
||||
public CompanyRoleSetServiceListener(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaResponseQueue,
|
||||
CompanyRoleSetServiceFacade companyRoleSetServiceFacade,
|
||||
CompanyRoleSetServiceValidator companyRoleSetServiceValidator,
|
||||
RequestHelper requestHelper) {
|
||||
super(kafkaQueue, kafkaResponseQueue);
|
||||
this.companyRoleSetServiceFacade = companyRoleSetServiceFacade;
|
||||
this.companyRoleSetServiceValidator = companyRoleSetServiceValidator;
|
||||
this.requestHelper = requestHelper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
callback(CompanyRoleSetNewRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processNewCompanyRoleSetRequest, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_NEW, callbacks::put);
|
||||
callback(CompanyRoleSetUpdateRequest.class)
|
||||
.setConsumer(request -> requestHelper.requestFunction(this::processUpdateCompanyRoleSetRequest, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processDeleteCompanyRoleSetRequest, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_DELETE, callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processNewCompanyRoleSetRequest(BaseRequest<CompanyRoleSetNewRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = companyRoleSetServiceValidator.createRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
CompanyErrors result = companyRoleSetServiceFacade.create(request.getRequestPayload());
|
||||
if (result != null) {
|
||||
return requestHelper.makeErrorResponse(request, result, request.getId());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processUpdateCompanyRoleSetRequest(BaseRequest<CompanyRoleSetUpdateRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = companyRoleSetServiceValidator.updateRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
CompanyErrors result = companyRoleSetServiceFacade.update(request.getRequestPayload());
|
||||
if (result != null) {
|
||||
return requestHelper.makeErrorResponse(request, result, request.getId());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processDeleteCompanyRoleSetRequest(BaseRequest<CommonDeleteRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = companyRoleSetServiceValidator.deleteRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
CompanyErrors result = companyRoleSetServiceFacade.delete(request.getRequestPayload());
|
||||
if (result != null) {
|
||||
return requestHelper.makeErrorResponse(request, result, request.getId());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -7,13 +7,15 @@ import org.slf4j.LoggerFactory;
|
|||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.validators.CompanyServiceValidator;
|
||||
import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
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.sdf01.AccountTerminationRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyGatewayRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
|
|
@ -26,65 +28,77 @@ public class CompanyServiceListener extends QueueConsumer implements Initializin
|
|||
private final CompanyServiceFacade companyServiceFacade;
|
||||
private final CompanyServiceValidator companyServiceValidator;
|
||||
private final RequestHelper requestHelper;
|
||||
private final AccountNotificationHelper accountNotificationHelper;
|
||||
|
||||
public CompanyServiceListener(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaResponseQueue,
|
||||
CompanyServiceFacade companyServiceFacade,
|
||||
CompanyServiceValidator companyServiceValidator,
|
||||
RequestHelper requestHelper) {
|
||||
RequestHelper requestHelper,
|
||||
AccountNotificationHelper accountNotificationHelper) {
|
||||
super(kafkaQueue, kafkaResponseQueue);
|
||||
this.companyServiceFacade = companyServiceFacade;
|
||||
this.companyServiceValidator = companyServiceValidator;
|
||||
this.requestHelper = requestHelper;
|
||||
this.accountNotificationHelper = accountNotificationHelper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
callback(CompanyNewRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processBaseRequest, request))
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processNewCompanyRequest, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_NEW, callbacks::put);
|
||||
callback(CompanyNewRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processBaseRequest, request))
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processUpdateCompanyRequest, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processDeleteRequest, request))
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processDeleteCompanyRequest, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_DELETE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processCompanyBlock, request))
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processBlockCompanyRequest, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_BLOCK, callbacks::put);
|
||||
callback(AccountTerminationRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processAccountTermination, request))
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processAccountTerminationRequest, request))
|
||||
.forDestination(Consts.ACCOUNT_TERMINATION_STEP2, callbacks::put);
|
||||
callback(CompanyGatewayRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processMultiCompanyRequest, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_GATEWAY_REQUEST, callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
private RequestInfoUpdate processBaseRequest(BaseRequest<?> request) throws ValidationException {
|
||||
public RequestInfoUpdate processNewCompanyRequest(BaseRequest<?> request) throws ValidationException {
|
||||
log.debug("CompanyNewRequest received id = {}", request.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = companyServiceValidator.baseRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
ActionType actionType = request.getActionType();
|
||||
switch (actionType) {
|
||||
case NEW -> {
|
||||
companyServiceValidator.createRequestValidation((CompanyNewRequest) request.getRequestPayload());
|
||||
companyServiceFacade.create((CompanyNewRequest) request.getRequestPayload());
|
||||
}
|
||||
case UPDATE -> {
|
||||
companyServiceValidator.updateRequestValidation((CompanyNewRequest) request.getRequestPayload());
|
||||
companyServiceFacade.update((CompanyNewRequest) request.getRequestPayload());
|
||||
}
|
||||
}
|
||||
companyServiceValidator.createRequestValidation((CompanyNewRequest) request.getRequestPayload());
|
||||
companyServiceFacade.create((CompanyNewRequest) request.getRequestPayload());
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
private synchronized RequestInfoUpdate processDeleteRequest(BaseRequest<CommonDeleteRequest> companyBlockRequestBaseRequest) throws ValidationException {
|
||||
public RequestInfoUpdate processUpdateCompanyRequest(BaseRequest<?> request) throws ValidationException {
|
||||
log.debug("CompanyNewRequest received id = {}", request.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = companyServiceValidator.baseRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
companyServiceValidator.updateRequestValidation((CompanyNewRequest) request.getRequestPayload());
|
||||
companyServiceFacade.update((CompanyNewRequest) request.getRequestPayload());
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processDeleteCompanyRequest(BaseRequest<CommonDeleteRequest> companyBlockRequestBaseRequest) {
|
||||
log.debug("CommonDeleteRequest (block request) received id = {}", companyBlockRequestBaseRequest.getRequestPayload().getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = companyServiceValidator.deleteRequestValidation(companyBlockRequestBaseRequest);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
CompanyErrors result = companyServiceFacade.delete(companyBlockRequestBaseRequest);
|
||||
CompanyErrors result = companyServiceFacade.delete(companyBlockRequestBaseRequest.getRequestPayload());
|
||||
if (result.equals(CompanyErrors.CompanyNotFound)) {
|
||||
log.warn("Company {} not found", companyBlockRequestBaseRequest.getRequestPayload().getId());
|
||||
return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound, companyBlockRequestBaseRequest.getRequestPayload().getId());
|
||||
|
|
@ -93,14 +107,15 @@ public class CompanyServiceListener extends QueueConsumer implements Initializin
|
|||
return null;
|
||||
}
|
||||
|
||||
private synchronized RequestInfoUpdate processCompanyBlock(BaseRequest<CommonDeleteRequest> companyBlockRequestBaseRequest) throws ValidationException {
|
||||
public RequestInfoUpdate processBlockCompanyRequest(BaseRequest<CommonDeleteRequest> companyBlockRequestBaseRequest) {
|
||||
log.debug("CommonDeleteRequest (block request) received id = {}", companyBlockRequestBaseRequest.getRequestPayload().getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = companyServiceValidator.baseRequestValidation(companyBlockRequestBaseRequest);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
CompanyErrors result = companyServiceFacade.blockCompany(companyBlockRequestBaseRequest);
|
||||
CompanyErrors result = companyServiceFacade.blockCompany(companyBlockRequestBaseRequest.getRequestPayload());
|
||||
if (result.equals(CompanyErrors.CompanyNotFound)) {
|
||||
log.warn("Company {} not found", companyBlockRequestBaseRequest.getRequestPayload().getId());
|
||||
return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound);
|
||||
|
|
@ -112,13 +127,33 @@ public class CompanyServiceListener extends QueueConsumer implements Initializin
|
|||
return null;
|
||||
}
|
||||
|
||||
private synchronized RequestInfoUpdate processAccountTermination(BaseRequest<AccountTerminationRequest> accountTerminationRequestBaseRequest) throws ValidationException {
|
||||
public RequestInfoUpdate processAccountTerminationRequest(BaseRequest<AccountTerminationRequest> accountTerminationRequestBaseRequest) {
|
||||
log.debug("AccountTerminationRequest (block request) received id = {}", accountTerminationRequestBaseRequest.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = companyServiceValidator.baseRequestValidation(accountTerminationRequestBaseRequest);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
companyServiceFacade.terminateAccount(accountTerminationRequestBaseRequest);
|
||||
companyServiceFacade.terminateAccount(accountTerminationRequestBaseRequest.getRequestPayload());
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processMultiCompanyRequest(BaseRequest<CompanyGatewayRequest> baseRequest) {
|
||||
log.debug("company-batch-new request received, BaseRequest.id = {}", baseRequest.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = companyServiceValidator.baseRequestValidation(baseRequest);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
boolean result = companyServiceFacade.createUpdateMultiCompany(baseRequest.getRequestPayload());
|
||||
if (result) {
|
||||
for (ClientCodeNewRequest partRequest : baseRequest.getRequestPayload().getClientCodes()) {
|
||||
accountNotificationHelper.clientCodeNew(partRequest); // Consts.DESTINATION_CLIENT_CODE_NEW Consts.DESTINATION_CLIENT_CODE_UPDATE
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,99 @@
|
|||
package ru.spcex.clearing.company.service.v2.listeners;
|
||||
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanySymbolServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.validators.CompanySymbolServiceValidator;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.platform.messaging.service.Status;
|
||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||
|
||||
@Service
|
||||
public class CompanySymbolServiceListener extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final CompanySymbolServiceFacade companySymbolServiceFacade;
|
||||
private final CompanySymbolServiceValidator companySymbolServiceValidator;
|
||||
|
||||
public CompanySymbolServiceListener(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaResponseQueue,
|
||||
CompanySymbolServiceFacade companySymbolServiceFacade,
|
||||
CompanySymbolServiceValidator companySymbolServiceValidator) {
|
||||
super(kafkaQueue, kafkaResponseQueue);
|
||||
this.companySymbolServiceFacade = companySymbolServiceFacade;
|
||||
this.companySymbolServiceValidator = companySymbolServiceValidator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
callback(CompanySymbolNewRequest.class)
|
||||
.setFunction(this::processNewCompanySymbolRequest)
|
||||
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_NEW, callbacks::put);
|
||||
callback(CompanySymbolUpdateRequest.class)
|
||||
.setFunction(this::processUpdateCompanySymbolRequest)
|
||||
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(this::processDeleteCompanySymbolRequest)
|
||||
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_DELETE, callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processNewCompanySymbolRequest(BaseRequest<CompanySymbolNewRequest> request) {
|
||||
log.debug("CompanySymbolNewRequest received");
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = companySymbolServiceValidator.createRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
companySymbolServiceFacade.create(request.getRequestPayload());
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processUpdateCompanySymbolRequest(BaseRequest<CompanySymbolUpdateRequest> request) {
|
||||
log.debug("CompanySymbolUpdateRequest received, id={}", request.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = companySymbolServiceValidator.updateRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
EnumMessage message = companySymbolServiceFacade.update(request.getRequestPayload());
|
||||
if (message != null) {
|
||||
requestInfoUpdate = new RequestInfoUpdate();
|
||||
requestInfoUpdate.setStatus(Status.Error);
|
||||
requestInfoUpdate.setMessage(message.toString());
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processDeleteCompanySymbolRequest(BaseRequest<CommonDeleteRequest> request) {
|
||||
log.debug("CommonDeleteRequest for CompanySymbol received, id={}", request.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = companySymbolServiceValidator.deleteRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
EnumMessage message = companySymbolServiceFacade.delete(request.getRequestPayload());
|
||||
if (message != null) {
|
||||
requestInfoUpdate = new RequestInfoUpdate();
|
||||
requestInfoUpdate.setStatus(Status.Error);
|
||||
requestInfoUpdate.setMessage(message.toString());
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
package ru.spcex.clearing.company.service.v2.listeners;
|
||||
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ContactServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.validators.ContactServiceValidator;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
|
||||
@Service
|
||||
public class ContactServiceListener extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final ContactServiceFacade contactServiceFacade;
|
||||
private final ContactServiceValidator contactServiceValidator;
|
||||
|
||||
public ContactServiceListener(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaResponseQueue,
|
||||
ContactServiceFacade contactServiceFacade,
|
||||
ContactServiceValidator contactServiceValidator) {
|
||||
super(kafkaQueue, kafkaResponseQueue);
|
||||
this.contactServiceFacade = contactServiceFacade;
|
||||
this.contactServiceValidator = contactServiceValidator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
callback(ContactNewRequest.class)
|
||||
.setFunction(this::processNewContactRequest)
|
||||
.forDestination(Consts.DESTINATION_CONTACT_NEW, callbacks::put);
|
||||
callback(ContactUpdateRequest.class)
|
||||
.setFunction(this::processUpdateContactRequest)
|
||||
.forDestination(Consts.DESTINATION_CONTACT_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(this::processDeleteContactRequest)
|
||||
.forDestination(Consts.DESTINATION_CONTACT_DELETE, callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processNewContactRequest(BaseRequest<ContactNewRequest> request) {
|
||||
log.debug("ContactNewRequest received");
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = contactServiceValidator.createRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
contactServiceFacade.create(request.getRequestPayload());
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processUpdateContactRequest(BaseRequest<ContactUpdateRequest> request) {
|
||||
log.debug("ContactUpdateRequest received");
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = contactServiceValidator.updateRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
contactServiceFacade.update(request.getRequestPayload());
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processDeleteContactRequest(BaseRequest<CommonDeleteRequest> request) {
|
||||
log.debug("CommonDeleteRequest received for contact service.");
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = contactServiceValidator.deleteRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
contactServiceFacade.delete(request.getRequestPayload());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
package ru.spcex.clearing.company.service.v2.listeners;
|
||||
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
||||
import ru.spcex.clearing.company.service.v2.facade.MultiCompanyServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.validators.MultiCompanyServiceValidator;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
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.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.services.RequestHelper;
|
||||
|
||||
@Service
|
||||
public class MultiCompanyServiceListener extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final MultiCompanyServiceFacade multiCompanyServiceFacade;
|
||||
private final MultiCompanyServiceValidator multiCompanyServiceValidator;
|
||||
private final RequestHelper requestHelper;
|
||||
private final AccountNotificationHelper accountNotificationHelper;
|
||||
|
||||
public MultiCompanyServiceListener(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaResponseQueue,
|
||||
MultiCompanyServiceFacade multiCompanyServiceFacade,
|
||||
MultiCompanyServiceValidator multiCompanyServiceValidator,
|
||||
RequestHelper requestHelper,
|
||||
AccountNotificationHelper accountNotificationHelper) {
|
||||
super(kafkaQueue, kafkaResponseQueue);
|
||||
this.multiCompanyServiceFacade = multiCompanyServiceFacade;
|
||||
this.multiCompanyServiceValidator = multiCompanyServiceValidator;
|
||||
this.requestHelper = requestHelper;
|
||||
this.accountNotificationHelper = accountNotificationHelper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
callback(CompanyGatewayRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processMultiRequest, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_GATEWAY_REQUEST, callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
private synchronized RequestInfoUpdate processMultiRequest(BaseRequest<CompanyGatewayRequest> baseRequest) {
|
||||
log.debug("company-batch-new request received, BaseRequest.id = {}", baseRequest.getId());
|
||||
RequestInfoUpdate requestInfoUpdate = multiCompanyServiceValidator.baseRequestValidation(baseRequest);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
boolean result = multiCompanyServiceFacade.createUpdateMultiCompany(baseRequest);
|
||||
if (result) {
|
||||
for (ClientCodeNewRequest partRequest : baseRequest.getRequestPayload().getClientCodes()) {
|
||||
accountNotificationHelper.clientCodeNew(partRequest); // Consts.DESTINATION_CLIENT_CODE_NEW Consts.DESTINATION_CLIENT_CODE_UPDATE
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
package ru.spcex.clearing.company.service.v2.listeners;
|
||||
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ProfileDocumentServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.validators.ProfileDocumentServiceValidator;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.services.RequestHelper;
|
||||
|
||||
@Service
|
||||
public class ProfileDocumentServiceListener extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final ProfileDocumentServiceFacade profileDocumentServiceFacade;
|
||||
private final ProfileDocumentServiceValidator profileDocumentServiceValidator;
|
||||
private final RequestHelper requestHelper;
|
||||
|
||||
public ProfileDocumentServiceListener(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaResponseQueue,
|
||||
ProfileDocumentServiceFacade profileDocumentServiceFacade,
|
||||
ProfileDocumentServiceValidator profileDocumentServiceValidator,
|
||||
RequestHelper requestHelper) {
|
||||
super(kafkaQueue, kafkaResponseQueue);
|
||||
this.profileDocumentServiceFacade = profileDocumentServiceFacade;
|
||||
this.profileDocumentServiceValidator = profileDocumentServiceValidator;
|
||||
this.requestHelper = requestHelper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
callback(ProfileDocumentNewRequest.class)
|
||||
.setFunction(this::processNewProfileDocumentRequest)
|
||||
.forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_NEW, callbacks::put);
|
||||
callback(ProfileDocumentUpdateRequest.class)
|
||||
.setFunction(this::processUpdateProfileDocumentRequest)
|
||||
.forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(this::processDeleteProfileDocumentRequest)
|
||||
.forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_DELETE, callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processNewProfileDocumentRequest(BaseRequest<ProfileDocumentNewRequest> request) {
|
||||
log.trace("Start processing ProfileDocumentNewRequest!");
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = profileDocumentServiceValidator.createRequestValidation(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
profileDocumentServiceFacade.create(request.getRequestPayload());
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processUpdateProfileDocumentRequest(BaseRequest<ProfileDocumentUpdateRequest> request) {
|
||||
log.trace("Start processing ProfileDocumentUpdateRequest!");
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = profileDocumentServiceValidator.updateRequestValidation(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
CompanyErrors result = profileDocumentServiceFacade.update(request.getRequestPayload());
|
||||
if (result != null) {
|
||||
return requestHelper.makeErrorResponse(request, result, request.getId());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processDeleteProfileDocumentRequest(BaseRequest<CommonDeleteRequest> request) {
|
||||
log.trace("Start processing CommonDeleteRequest!");
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = profileDocumentServiceValidator.deleteRequestValidation(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
CompanyErrors result = profileDocumentServiceFacade.delete(request.getRequestPayload());
|
||||
if (result != null) {
|
||||
return requestHelper.makeErrorResponse(request, result, request.getId());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
package ru.spcex.clearing.company.service.v2.listeners;
|
||||
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.company.service.v2.facade.RelationServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.validators.RelationServiceValidator;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.services.RequestHelper;
|
||||
|
||||
@Service
|
||||
public class RelationServiceListener extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final RelationServiceFacade relationServiceFacade;
|
||||
private final RelationServiceValidator relationServiceValidator;
|
||||
private final RequestHelper requestHelper;
|
||||
|
||||
public RelationServiceListener(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaResponseQueue,
|
||||
RelationServiceFacade relationServiceFacade,
|
||||
RelationServiceValidator relationServiceValidator,
|
||||
RequestHelper requestHelper) {
|
||||
super(kafkaQueue, kafkaResponseQueue);
|
||||
this.relationServiceFacade = relationServiceFacade;
|
||||
this.relationServiceValidator = relationServiceValidator;
|
||||
this.requestHelper = requestHelper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
callback(RelationNewRequest.class)
|
||||
.setFunction(this::processNewRelationRequest)
|
||||
.forDestination(Consts.DESTINATION_RELATION_NEW, callbacks::put);
|
||||
callback(RelationUpdateRequest.class)
|
||||
.setFunction(this::processUpdateRelationRequest)
|
||||
.forDestination(Consts.DESTINATION_RELATION_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(this::processDeleteRelationRequest)
|
||||
.forDestination(Consts.DESTINATION_RELATION_DELETE, callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processNewRelationRequest(BaseRequest<RelationNewRequest> request) {
|
||||
log.debug("relation-new request received, BaseRequest.id = {}", request.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = relationServiceValidator.createRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
CompanyErrors result = relationServiceFacade.create(request.getRequestPayload());
|
||||
if (result != null) {
|
||||
return requestHelper.makeErrorResponse(request, result, request.getId());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processUpdateRelationRequest(BaseRequest<RelationUpdateRequest> request) {
|
||||
log.debug("relation-update request received, BaseRequest.id = {}", request.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = relationServiceValidator.updateRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
relationServiceFacade.update(request.getRequestPayload());
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processDeleteRelationRequest(BaseRequest<CommonDeleteRequest> request) {
|
||||
log.debug("relation-delete request received, BaseRequest.id = {}", request.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = relationServiceValidator.deleteRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
relationServiceFacade.delete(request.getRequestPayload());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
package ru.spcex.clearing.company.service.v2.listeners;
|
||||
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.company.service.v2.facade.SettlementHousePropertiesServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.validators.SettlementHousePropertiesServiceValidator;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.services.RequestHelper;
|
||||
|
||||
@Service
|
||||
public class SettlementHousePropertiesServiceListener extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final SettlementHousePropertiesServiceFacade settlementHousePropertiesServiceFacade;
|
||||
private final SettlementHousePropertiesServiceValidator settlementHousePropertiesServiceValidator;
|
||||
private final RequestHelper requestHelper;
|
||||
|
||||
public SettlementHousePropertiesServiceListener(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaResponseQueue,
|
||||
SettlementHousePropertiesServiceFacade settlementHousePropertiesServiceFacade,
|
||||
SettlementHousePropertiesServiceValidator settlementHousePropertiesServiceValidator,
|
||||
RequestHelper requestHelper) {
|
||||
super(kafkaQueue, kafkaResponseQueue);
|
||||
this.settlementHousePropertiesServiceFacade = settlementHousePropertiesServiceFacade;
|
||||
this.settlementHousePropertiesServiceValidator = settlementHousePropertiesServiceValidator;
|
||||
this.requestHelper = requestHelper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
callback(SettlementHousePropertyNewRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processNewSettlementHousePropertyRequest, request))
|
||||
.forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_NEW, callbacks::put);
|
||||
callback(SettlementHousePropertyUpdateRequest.class)
|
||||
.setConsumer(request -> requestHelper.requestFunction(this::processUpdateSettlementHousePropertyRequest, request))
|
||||
.forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::processDeleteSettlementHousePropertyRequest, request))
|
||||
.forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_DELETE
|
||||
, callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processNewSettlementHousePropertyRequest(BaseRequest<SettlementHousePropertyNewRequest> request) {
|
||||
log.debug("SettlementHouseProperty-new request received, BaseRequest.id = {}", request.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = settlementHousePropertiesServiceValidator.createRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
settlementHousePropertiesServiceFacade.create(request.getRequestPayload());
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processUpdateSettlementHousePropertyRequest(BaseRequest<SettlementHousePropertyUpdateRequest> request) {
|
||||
log.debug("SettlementHouseProperty-update request received, BaseRequest.id = {}", request.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = settlementHousePropertiesServiceValidator.updateRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
settlementHousePropertiesServiceFacade.update(request.getRequestPayload());
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate processDeleteSettlementHousePropertyRequest(BaseRequest<CommonDeleteRequest> request) {
|
||||
log.debug("SettlementHousePropertyDeleteRequest received id = {}", request.getId());
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = settlementHousePropertiesServiceValidator.deleteRequestValidation(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
CompanyErrors result = settlementHousePropertiesServiceFacade.delete(request.getRequestPayload());
|
||||
if (result != null) {
|
||||
return requestHelper.makeErrorResponse(request, result, request.getId());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
package ru.spcex.clearing.company.service.v2.validators;
|
||||
|
||||
import java.util.function.Function;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
@Service
|
||||
public class ClearingMemberCategoryServiceValidator {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final ValidationHelper validationHelper;
|
||||
private final UserRoleVerification userRoleVerification;
|
||||
private final Function<ClearingMemberCategoryNewRequest, IValidator> clearingMemberCategoryNewRequestValidator;
|
||||
private final Function<ClearingMemberCategoryUpdateRequest, IValidator> clearingMemberCategoryUpdateRequestValidator;
|
||||
private final Function<CommonDeleteRequest, IValidator> clearingMemberCategoryDeleteRequestValidator;
|
||||
|
||||
public ClearingMemberCategoryServiceValidator(ValidationHelper validationHelper,
|
||||
UserRoleVerification userRoleVerification,
|
||||
@Qualifier("clearingMemberCategoryNewRequestValidator")
|
||||
Function<ClearingMemberCategoryNewRequest, IValidator> clearingMemberCategoryNewRequestValidator,
|
||||
@Qualifier("clearingMemberCategoryUpdateRequestValidator")
|
||||
Function<ClearingMemberCategoryUpdateRequest, IValidator> clearingMemberCategoryUpdateRequestValidator,
|
||||
@Qualifier("clearingMemberCategoryDeleteRequestValidator")
|
||||
Function<CommonDeleteRequest, IValidator> clearingMemberCategoryDeleteRequestValidator) {
|
||||
this.validationHelper = validationHelper;
|
||||
this.userRoleVerification = userRoleVerification;
|
||||
this.clearingMemberCategoryNewRequestValidator = clearingMemberCategoryNewRequestValidator;
|
||||
this.clearingMemberCategoryUpdateRequestValidator = clearingMemberCategoryUpdateRequestValidator;
|
||||
this.clearingMemberCategoryDeleteRequestValidator = clearingMemberCategoryDeleteRequestValidator;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate createRequestValidation(BaseRequest<ClearingMemberCategoryNewRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, clearingMemberCategoryNewRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate updateRequestValidation(BaseRequest<ClearingMemberCategoryUpdateRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, clearingMemberCategoryUpdateRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate deleteRequestValidation(BaseRequest<CommonDeleteRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, clearingMemberCategoryDeleteRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
package ru.spcex.clearing.company.service.v2.validators;
|
||||
|
||||
import java.util.function.Function;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyInfoUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
@Service
|
||||
public class CompanyInfoServiceValidator {
|
||||
private final UserRoleVerification userRoleVerification;
|
||||
private final ValidationHelper validationHelper;
|
||||
private final Function<CompanyInfoUpdateRequest, IValidator> companyInfoUpdateRequestValidator;
|
||||
|
||||
public CompanyInfoServiceValidator(UserRoleVerification userRoleVerification,
|
||||
ValidationHelper validationHelper,
|
||||
@Qualifier("CompanyInfoUpdateRequestValidator")
|
||||
Function<CompanyInfoUpdateRequest, IValidator> companyInfoUpdateRequestValidator) {
|
||||
this.userRoleVerification = userRoleVerification;
|
||||
this.validationHelper = validationHelper;
|
||||
this.companyInfoUpdateRequestValidator = companyInfoUpdateRequestValidator;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate updateRequestValidation(BaseRequest<CompanyInfoUpdateRequest> companyInfoReq) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyInfoReq);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(companyInfoReq, companyInfoUpdateRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
package ru.spcex.clearing.company.service.v2.validators;
|
||||
|
||||
import java.util.function.Function;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
@Service
|
||||
public class CompanyRoleSetServiceValidator {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final UserRoleVerification userRoleVerification;
|
||||
private final ValidationHelper validationHelper;
|
||||
private final Function<CompanyRoleSetNewRequest, IValidator> companyRoleSetNewRequestValidator;
|
||||
private final Function<CompanyRoleSetUpdateRequest, IValidator> companyRoleSetUpdateRequestValidator;
|
||||
private final Function<CommonDeleteRequest, IValidator> companyRoleSetDeleteRequestValidator;
|
||||
|
||||
public CompanyRoleSetServiceValidator(UserRoleVerification userRoleVerification,
|
||||
ValidationHelper validationHelper,
|
||||
@Qualifier("CompanyRoleSetNewRequestValidator")
|
||||
Function<CompanyRoleSetNewRequest, IValidator> companyRoleSetNewRequestValidator,
|
||||
@Qualifier("CompanyRoleSetUpdateRequestValidator")
|
||||
Function<CompanyRoleSetUpdateRequest, IValidator> companyRoleSetUpdateRequestValidator,
|
||||
@Qualifier("CompanyRoleSetDeleteRequestValidator")
|
||||
Function<CommonDeleteRequest, IValidator> companyRoleSetDeleteRequestValidator) {
|
||||
this.userRoleVerification = userRoleVerification;
|
||||
this.validationHelper = validationHelper;
|
||||
this.companyRoleSetNewRequestValidator = companyRoleSetNewRequestValidator;
|
||||
this.companyRoleSetUpdateRequestValidator = companyRoleSetUpdateRequestValidator;
|
||||
this.companyRoleSetDeleteRequestValidator = companyRoleSetDeleteRequestValidator;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate createRequestValidation(BaseRequest<CompanyRoleSetNewRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, companyRoleSetNewRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate updateRequestValidation(BaseRequest<CompanyRoleSetUpdateRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, companyRoleSetUpdateRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate deleteRequestValidation(BaseRequest<CommonDeleteRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, companyRoleSetDeleteRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
}
|
||||
|
|
@ -20,7 +20,7 @@ public class CompanyServiceValidator {
|
|||
private final Function<CompanyNewRequest, IValidator> companyNewRequestValidator;
|
||||
private final Function<CompanyNewRequest, IValidator> companyUpdateRequestValidator;
|
||||
private final Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator;
|
||||
protected UserRoleVerification userRoleVerification;
|
||||
private final UserRoleVerification userRoleVerification;
|
||||
|
||||
public CompanyServiceValidator(ValidationHelper validationHelper,
|
||||
@Qualifier("companyNewRequestValidator")
|
||||
|
|
|
|||
|
|
@ -0,0 +1,66 @@
|
|||
package ru.spcex.clearing.company.service.v2.validators;
|
||||
|
||||
import java.util.function.Function;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
@Service
|
||||
public class CompanySymbolServiceValidator {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final ValidationHelper validationHelper;
|
||||
private final UserRoleVerification userRoleVerification;
|
||||
private final Function<CompanySymbolNewRequest, IValidator> companySymbolNewRequestValidator;
|
||||
private final Function<CompanySymbolUpdateRequest, IValidator> companySymbolUpdateRequestValidator;
|
||||
private final Function<CommonDeleteRequest, IValidator> companySymbolDeleteRequestValidator;
|
||||
|
||||
public CompanySymbolServiceValidator(ValidationHelper validationHelper,
|
||||
UserRoleVerification userRoleVerification,
|
||||
@Qualifier("companySymbolNewRequestValidator")
|
||||
Function<CompanySymbolNewRequest, IValidator> companySymbolNewRequestValidator,
|
||||
@Qualifier("companySymbolDeleteRequestValidator")
|
||||
Function<CommonDeleteRequest, IValidator> companySymbolDeleteRequestValidator,
|
||||
@Qualifier("companySymbolUpdateRequestValidator")
|
||||
Function<CompanySymbolUpdateRequest, IValidator> companySymbolUpdateRequestValidator) {
|
||||
this.validationHelper = validationHelper;
|
||||
this.userRoleVerification = userRoleVerification;
|
||||
this.companySymbolNewRequestValidator = companySymbolNewRequestValidator;
|
||||
this.companySymbolUpdateRequestValidator = companySymbolUpdateRequestValidator;
|
||||
this.companySymbolDeleteRequestValidator = companySymbolDeleteRequestValidator;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate createRequestValidation(BaseRequest<CompanySymbolNewRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) {
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, companySymbolNewRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate updateRequestValidation(BaseRequest<CompanySymbolUpdateRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, companySymbolUpdateRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate deleteRequestValidation(BaseRequest<CommonDeleteRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, companySymbolDeleteRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
package ru.spcex.clearing.company.service.v2.validators;
|
||||
|
||||
import java.util.function.Function;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
@Service
|
||||
public class ContactServiceValidator {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final ValidationHelper validationHelper;
|
||||
private final UserRoleVerification userRoleVerification;
|
||||
private final Function<ContactNewRequest, IValidator> contactNewRequestValidator;
|
||||
private final Function<ContactUpdateRequest, IValidator> contactUpdateRequestValidator;
|
||||
private final Function<CommonDeleteRequest, IValidator> contactDeleteRequestValidator;
|
||||
|
||||
public ContactServiceValidator(ValidationHelper validationHelper,
|
||||
UserRoleVerification userRoleVerification,
|
||||
@Qualifier("contactNewRequestValidator")
|
||||
Function<ContactNewRequest, IValidator> contactNewRequestValidator,
|
||||
@Qualifier("contactDeleteRequestValidator")
|
||||
Function<CommonDeleteRequest, IValidator> contactDeleteRequestValidator,
|
||||
@Qualifier("contactUpdateRequestValidator")
|
||||
Function<ContactUpdateRequest, IValidator> contactUpdateRequestValidator) {
|
||||
this.validationHelper = validationHelper;
|
||||
this.userRoleVerification = userRoleVerification;
|
||||
this.contactNewRequestValidator = contactNewRequestValidator;
|
||||
this.contactUpdateRequestValidator = contactUpdateRequestValidator;
|
||||
this.contactDeleteRequestValidator = contactDeleteRequestValidator;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate createRequestValidation(BaseRequest<ContactNewRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, contactNewRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate updateRequestValidation(BaseRequest<ContactUpdateRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, contactUpdateRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate deleteRequestValidation(BaseRequest<CommonDeleteRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, contactDeleteRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
package ru.spcex.clearing.company.service.v2.validators;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
|
||||
@Service
|
||||
public class MultiCompanyServiceValidator {
|
||||
protected UserRoleVerification userRoleVerification;
|
||||
|
||||
public MultiCompanyServiceValidator(UserRoleVerification userRoleVerification) {
|
||||
this.userRoleVerification = userRoleVerification;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate baseRequestValidation(BaseRequest<?> request) {
|
||||
return userRoleVerification.validateRoleAndGetResult(request);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
package ru.spcex.clearing.company.service.v2.validators;
|
||||
|
||||
import java.util.function.Function;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
@Service
|
||||
public class ProfileDocumentServiceValidator {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final UserRoleVerification userRoleVerification;
|
||||
private final ValidationHelper validationHelper;
|
||||
private final Function<ProfileDocumentNewRequest, IValidator> profileDocumentNewRequestValidator;
|
||||
private final Function<ProfileDocumentUpdateRequest, IValidator> profileDocumentUpdateRequestValidator;
|
||||
private final Function<CommonDeleteRequest, IValidator> profileDocumentDeleteRequestValidator;
|
||||
|
||||
public ProfileDocumentServiceValidator(UserRoleVerification userRoleVerification,
|
||||
ValidationHelper validationHelper,
|
||||
@Qualifier("profileDocumentNewRequestValidation")
|
||||
Function<ProfileDocumentNewRequest, IValidator> profileDocumentNewRequestValidator,
|
||||
@Qualifier("profileDocumentUpdateRequestValidation")
|
||||
Function<ProfileDocumentUpdateRequest, IValidator> profileDocumentUpdateRequestValidator,
|
||||
@Qualifier("profileDocumentDeleteRequestValidation")
|
||||
Function<CommonDeleteRequest, IValidator> profileDocumentDeleteRequestValidator) {
|
||||
this.userRoleVerification = userRoleVerification;
|
||||
this.validationHelper = validationHelper;
|
||||
this.profileDocumentNewRequestValidator = profileDocumentNewRequestValidator;
|
||||
this.profileDocumentUpdateRequestValidator = profileDocumentUpdateRequestValidator;
|
||||
this.profileDocumentDeleteRequestValidator = profileDocumentDeleteRequestValidator;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate createRequestValidation(BaseRequest<ProfileDocumentNewRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
return validationHelper.validateTillFirstError(request, profileDocumentNewRequestValidator);
|
||||
}
|
||||
|
||||
public RequestInfoUpdate updateRequestValidation(BaseRequest<ProfileDocumentUpdateRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
return validationHelper.validateTillFirstError(request, profileDocumentUpdateRequestValidator);
|
||||
}
|
||||
|
||||
public RequestInfoUpdate deleteRequestValidation(BaseRequest<CommonDeleteRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
return validationHelper.validateTillFirstError(request, profileDocumentDeleteRequestValidator);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
package ru.spcex.clearing.company.service.v2.validators;
|
||||
|
||||
import java.util.function.Function;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
@Service
|
||||
public class RelationServiceValidator {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final UserRoleVerification userRoleVerification;
|
||||
private final ValidationHelper validationHelper;
|
||||
private final Function<RelationNewRequest, IValidator> relationNewRequestValidator;
|
||||
private final Function<RelationUpdateRequest, IValidator> relationUpdateRequestValidator;
|
||||
private final Function<CommonDeleteRequest, IValidator> relationDeleteRequestValidator;
|
||||
|
||||
public RelationServiceValidator(UserRoleVerification userRoleVerification,
|
||||
ValidationHelper validationHelper,
|
||||
@Qualifier("relationNewRequestValidation")
|
||||
Function<RelationNewRequest, IValidator> relationNewRequestValidator,
|
||||
@Qualifier("relationUpdateRequestValidation")
|
||||
Function<RelationUpdateRequest, IValidator> relationUpdateRequestValidator,
|
||||
@Qualifier("relationDeleteRequestValidation")
|
||||
Function<CommonDeleteRequest, IValidator> relationDeleteRequestValidator) {
|
||||
this.userRoleVerification = userRoleVerification;
|
||||
this.validationHelper = validationHelper;
|
||||
this.relationNewRequestValidator = relationNewRequestValidator;
|
||||
this.relationUpdateRequestValidator = relationUpdateRequestValidator;
|
||||
this.relationDeleteRequestValidator = relationDeleteRequestValidator;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate createRequestValidation(BaseRequest<RelationNewRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, relationNewRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate updateRequestValidation(BaseRequest<RelationUpdateRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, relationUpdateRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate deleteRequestValidation(BaseRequest<CommonDeleteRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, relationDeleteRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
package ru.spcex.clearing.company.service.v2.validators;
|
||||
|
||||
import java.util.function.Function;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
@Service
|
||||
public class SettlementHousePropertiesServiceValidator {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final UserRoleVerification userRoleVerification;
|
||||
private final ValidationHelper validationHelper;
|
||||
private final Function<SettlementHousePropertyNewRequest, IValidator> settlementHousePropertyNewRequestValidator;
|
||||
private final Function<SettlementHousePropertyUpdateRequest, IValidator> settlementHousePropertyUpdateRequestRequestValidator;
|
||||
private final Function<CommonDeleteRequest, IValidator> settlementHousePropertiesDeleteRequestValidator;
|
||||
|
||||
public SettlementHousePropertiesServiceValidator(UserRoleVerification userRoleVerification,
|
||||
ValidationHelper validationHelper,
|
||||
@Qualifier("SettlementHousePropertyNewRequestValidator")
|
||||
Function<SettlementHousePropertyNewRequest, IValidator> settlementHousePropertyNewRequestValidator,
|
||||
@Qualifier("SettlementHousePropertyUpdateRequestValidator")
|
||||
Function<SettlementHousePropertyUpdateRequest, IValidator> settlementHousePropertyUpdateRequestRequestValidator,
|
||||
@Qualifier("SettlementHousePropertiesDeleteRequestValidator")
|
||||
Function<CommonDeleteRequest, IValidator> settlementHousePropertiesDeleteRequestValidator) {
|
||||
this.userRoleVerification = userRoleVerification;
|
||||
this.validationHelper = validationHelper;
|
||||
this.settlementHousePropertyNewRequestValidator = settlementHousePropertyNewRequestValidator;
|
||||
this.settlementHousePropertyUpdateRequestRequestValidator = settlementHousePropertyUpdateRequestRequestValidator;
|
||||
this.settlementHousePropertiesDeleteRequestValidator = settlementHousePropertiesDeleteRequestValidator;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate createRequestValidation(BaseRequest<SettlementHousePropertyNewRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, settlementHousePropertyNewRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate updateRequestValidation(BaseRequest<SettlementHousePropertyUpdateRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, settlementHousePropertyUpdateRequestRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate deleteRequestValidation(BaseRequest<CommonDeleteRequest> request) {
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, settlementHousePropertiesDeleteRequestValidator);
|
||||
return requestInfoUpdate;
|
||||
}
|
||||
}
|
||||
|
|
@ -3,6 +3,7 @@ package ru.spcex.clearing.company.service;
|
|||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -35,6 +36,8 @@ import static ru.spcex.clearing.test.TestUtils.*;
|
|||
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
@Deprecated
|
||||
@Disabled
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
BeanConfiguration.class,
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package ru.spcex.clearing.company.service;
|
|||
|
||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -33,6 +34,8 @@ import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparato
|
|||
import static ru.spcex.clearing.test.TestUtils.*;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
@Deprecated
|
||||
@Disabled
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
CompanyInfoService.class,
|
||||
|
|
|
|||
|
|
@ -42,6 +42,8 @@ import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparato
|
|||
import static ru.spcex.clearing.test.TestUtils.*;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
@Deprecated
|
||||
@Disabled
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
CompanyRoleSetService.class,
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package ru.spcex.clearing.company.service;
|
|||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -42,6 +43,7 @@ import static ru.spcex.clearing.test.TestUtils.*;
|
|||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
@Deprecated
|
||||
@Disabled
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
CompanyService.class,
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package ru.spcex.clearing.company.service;
|
|||
|
||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -33,6 +34,8 @@ import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparato
|
|||
import static ru.spcex.clearing.test.TestUtils.*;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
@Deprecated
|
||||
@Disabled
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
CompanySymbolService.class,
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package ru.spcex.clearing.company.service;
|
|||
|
||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -33,6 +34,8 @@ import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparato
|
|||
import static ru.spcex.clearing.test.TestUtils.*;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
@Deprecated
|
||||
@Disabled
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
BeanConfiguration.class,
|
||||
|
|
|
|||
|
|
@ -1,38 +1,22 @@
|
|||
package ru.spcex.clearing.company.service;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
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.clearing.platform.dictionary.CompanySymbolDictionary;
|
||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
||||
import ru.spcex.clearing.company.config.validation.*;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.*;
|
||||
import ru.spcex.clearing.company.config.validation.ClearingMemberCategoryValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.CompanySymbolValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.ContactValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.ProfileDocumentValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.RelationValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
||||
import ru.spcex.platform.enumeration.CompanySymbol;
|
||||
import ru.spcex.platform.enumeration.ContactTypes;
|
||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
@Deprecated
|
||||
@Disabled
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
MultiCompanyService.class,
|
||||
|
|
@ -58,158 +42,158 @@ import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProv
|
|||
ImdgTestConfig.class,
|
||||
BeanConfiguration.class})
|
||||
class MultiCompanyServiceTest {
|
||||
final Long COMPANY_ID = 123L;
|
||||
|
||||
@Autowired
|
||||
protected MultiCompanyService multiCompanyService;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("hazelcastServiceTest")
|
||||
private ImdgProvider hazelcastServiceTest;
|
||||
|
||||
@PostConstruct
|
||||
private void init() {
|
||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
||||
Imdg<Company> companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
Imdg<CompanySymbols> companySymbolsImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
|
||||
Company company = new Company();
|
||||
company.setId(COMPANY_ID);
|
||||
company.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
company.setFullName("Test company prime");
|
||||
companyImdg.insert(company);
|
||||
|
||||
|
||||
Imdg<CompanySymbolDictionary> companySymbolDictionaryImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbolDictionary, CompanySymbolDictionary.class);
|
||||
{
|
||||
CompanySymbolDictionary cSymbol = new CompanySymbolDictionary();
|
||||
cSymbol.setId(11L);
|
||||
cSymbol.setCode(CompanySymbol.CLRC.getKey());
|
||||
cSymbol.setName(CompanySymbol.CLRC.getKey());
|
||||
cSymbol.setShortname(" CLRC key");
|
||||
companySymbolDictionaryImdg.insert(cSymbol);
|
||||
CompanySymbolDictionary cioSymbol = new CompanySymbolDictionary();
|
||||
cioSymbol.setId(22L);
|
||||
cioSymbol.setCode(CompanySymbol.CIO.getKey());
|
||||
cioSymbol.setName(CompanySymbol.CIO.getKey());
|
||||
companySymbolDictionaryImdg.insert(cioSymbol);
|
||||
}
|
||||
|
||||
Imdg<Contact> contactImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
||||
Contact contact = new Contact();
|
||||
contact.setId(100L);
|
||||
contact.setCompanyId(company.getId());
|
||||
contact.setContactType(ContactTypes.adrs.getKey());
|
||||
contact.setContactValue("UAR, st.Uarus, anystreet st., house 1");
|
||||
contactImdg.insert(contact);
|
||||
|
||||
CompanySymbols companySymbol = new CompanySymbols();
|
||||
companySymbol.setId(222L);
|
||||
companySymbol.setCompanyId(company.getId());
|
||||
companySymbol.setCompanySymbol(CompanySymbol.INN.getKey());
|
||||
companySymbol.setCompanySymbolValue("INN-VALUE");
|
||||
companySymbolsImdg.insert(companySymbol);
|
||||
|
||||
Imdg<ProfileDocument> profileDocumentImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||
ProfileDocument doc = new ProfileDocument();
|
||||
doc.setId(10002L);
|
||||
doc.setCompanyId(COMPANY_ID);
|
||||
doc.setDocumentType(DocumentTypes.form.getKey());
|
||||
doc.setIssueDate(LocalDate.now()); // тест может показать ложное срабатывание в 00:00:00.001
|
||||
profileDocumentImdg.insert(doc);
|
||||
}
|
||||
|
||||
@Test
|
||||
void findCompanyDocument() {
|
||||
ProfileDocumentNewRequest req = new ProfileDocumentNewRequest();
|
||||
req.setCompanyId(COMPANY_ID);
|
||||
req.setDocumentType(DocumentTypes.form.getKey());
|
||||
req.setIssueDate(LocalDate.now());
|
||||
ProfileDocument doc = multiCompanyService.findCompanyDocument(req);
|
||||
assertNotNull(doc);
|
||||
}
|
||||
|
||||
@Test
|
||||
void findCompanySymbols() {
|
||||
CompanySymbolNewRequest req = new CompanySymbolNewRequest();
|
||||
req.setCompanyId(COMPANY_ID);
|
||||
req.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
||||
req.setCompanySymbolValue("CL-VALUE-2");
|
||||
assertNull(multiCompanyService.findCompanySymbols(req));
|
||||
|
||||
req.setCompanySymbol(CompanySymbol.INN.getKey());
|
||||
req.setCompanySymbolValue("INN-VALUE");
|
||||
CompanySymbols symbol = multiCompanyService.findCompanySymbols(req);
|
||||
assertNotNull(symbol);
|
||||
assertEquals("INN-VALUE", symbol.getCompanySymbolValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
void findContact() {
|
||||
ContactNewRequest req = new ContactNewRequest();
|
||||
req.setCompanyId(COMPANY_ID);
|
||||
req.setContactType(ContactTypes.adrs.getKey());
|
||||
req.setContactValue("UAR, st.Uarus, anystreet st., house 2");
|
||||
Contact contact = multiCompanyService.findContact(req);
|
||||
assertNotNull(contact);
|
||||
assertNotEquals(req.getContactValue(), contact.getContactValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
void getCompanyIdForCompanySymbols() {
|
||||
CompanyNewRequest req = new CompanyNewRequest();
|
||||
req.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
||||
req.setCompanySymbolValue("CL-VALUE");
|
||||
assertNull(multiCompanyService.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
||||
|
||||
req.setCompanySymbolValue("INN-VALUE");
|
||||
assertNull(multiCompanyService.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
||||
req.setCompanySymbol(CompanySymbol.INN.getKey());
|
||||
assertEquals(COMPANY_ID, multiCompanyService.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
||||
req.setCompanySymbol(null);
|
||||
req.setCompanySymbolValue(null);
|
||||
assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, null));
|
||||
List<CompanySymbolNewRequest> csReq=new ArrayList<>();
|
||||
assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, null));
|
||||
assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, csReq));
|
||||
{
|
||||
CompanySymbolNewRequest cs=new CompanySymbolNewRequest();
|
||||
cs.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
||||
cs.setCompanySymbolValue("INN-VALUE");
|
||||
csReq.add(cs);
|
||||
}
|
||||
assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, csReq));
|
||||
{
|
||||
CompanySymbolNewRequest cs=new CompanySymbolNewRequest();
|
||||
cs.setCompanySymbol(CompanySymbol.INN.getKey());
|
||||
cs.setCompanySymbolValue("INN-VALUE");
|
||||
csReq.add(cs);
|
||||
}
|
||||
assertEquals(COMPANY_ID, multiCompanyService.getCompanyIdForCompanySymbols(null, req, csReq));
|
||||
}
|
||||
|
||||
@Test
|
||||
void fillCompanyId() {
|
||||
{
|
||||
CompanyGatewayRequest testReq = new CompanyGatewayRequest();
|
||||
testReq.setCompany(new CompanyNewRequest());
|
||||
testReq.setProfileDocuments(null);
|
||||
testReq.setCompanySymbols(null);
|
||||
testReq.setContacts(null);
|
||||
testReq.setClientCodes(null);
|
||||
multiCompanyService.fillCompanyId(testReq, COMPANY_ID);
|
||||
assertEquals(COMPANY_ID, testReq.getCompany().getId());
|
||||
assertNotNull(testReq.getProfileDocuments());
|
||||
assertNotNull(testReq.getCompanySymbols());
|
||||
assertNotNull(testReq.getContacts());
|
||||
assertNotNull(testReq.getClientCodes());
|
||||
}
|
||||
{
|
||||
CompanyGatewayRequest testReq = new CompanyGatewayRequest();
|
||||
testReq.setCompany(new CompanyNewRequest());
|
||||
testReq.setCompanyInfo(new CompanyInfoUpdateRequest());
|
||||
multiCompanyService.fillCompanyId(testReq, COMPANY_ID);
|
||||
assertEquals(COMPANY_ID, testReq.getCompany().getId());
|
||||
}
|
||||
}
|
||||
// final Long COMPANY_ID = 123L;
|
||||
//
|
||||
// @Autowired
|
||||
// protected MultiCompanyService multiCompanyService;
|
||||
//
|
||||
// @Autowired
|
||||
// @Qualifier("hazelcastServiceTest")
|
||||
// private ImdgProvider hazelcastServiceTest;
|
||||
//
|
||||
// @PostConstruct
|
||||
// private void init() {
|
||||
// waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
||||
// Imdg<Company> companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
// Imdg<CompanySymbols> companySymbolsImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
//
|
||||
// Company company = new Company();
|
||||
// company.setId(COMPANY_ID);
|
||||
// company.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
// company.setFullName("Test company prime");
|
||||
// companyImdg.insert(company);
|
||||
//
|
||||
//
|
||||
// Imdg<CompanySymbolDictionary> companySymbolDictionaryImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbolDictionary, CompanySymbolDictionary.class);
|
||||
// {
|
||||
// CompanySymbolDictionary cSymbol = new CompanySymbolDictionary();
|
||||
// cSymbol.setId(11L);
|
||||
// cSymbol.setCode(CompanySymbol.CLRC.getKey());
|
||||
// cSymbol.setName(CompanySymbol.CLRC.getKey());
|
||||
// cSymbol.setShortname(" CLRC key");
|
||||
// companySymbolDictionaryImdg.insert(cSymbol);
|
||||
// CompanySymbolDictionary cioSymbol = new CompanySymbolDictionary();
|
||||
// cioSymbol.setId(22L);
|
||||
// cioSymbol.setCode(CompanySymbol.CIO.getKey());
|
||||
// cioSymbol.setName(CompanySymbol.CIO.getKey());
|
||||
// companySymbolDictionaryImdg.insert(cioSymbol);
|
||||
// }
|
||||
//
|
||||
// Imdg<Contact> contactImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
||||
// Contact contact = new Contact();
|
||||
// contact.setId(100L);
|
||||
// contact.setCompanyId(company.getId());
|
||||
// contact.setContactType(ContactTypes.adrs.getKey());
|
||||
// contact.setContactValue("UAR, st.Uarus, anystreet st., house 1");
|
||||
// contactImdg.insert(contact);
|
||||
//
|
||||
// CompanySymbols companySymbol = new CompanySymbols();
|
||||
// companySymbol.setId(222L);
|
||||
// companySymbol.setCompanyId(company.getId());
|
||||
// companySymbol.setCompanySymbol(CompanySymbol.INN.getKey());
|
||||
// companySymbol.setCompanySymbolValue("INN-VALUE");
|
||||
// companySymbolsImdg.insert(companySymbol);
|
||||
//
|
||||
// Imdg<ProfileDocument> profileDocumentImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||
// ProfileDocument doc = new ProfileDocument();
|
||||
// doc.setId(10002L);
|
||||
// doc.setCompanyId(COMPANY_ID);
|
||||
// doc.setDocumentType(DocumentTypes.form.getKey());
|
||||
// doc.setIssueDate(LocalDate.now()); // тест может показать ложное срабатывание в 00:00:00.001
|
||||
// profileDocumentImdg.insert(doc);
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// void findCompanyDocument() {
|
||||
// ProfileDocumentNewRequest req = new ProfileDocumentNewRequest();
|
||||
// req.setCompanyId(COMPANY_ID);
|
||||
// req.setDocumentType(DocumentTypes.form.getKey());
|
||||
// req.setIssueDate(LocalDate.now());
|
||||
// ProfileDocument doc = multiCompanyService.findCompanyDocument(req);
|
||||
// assertNotNull(doc);
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// void findCompanySymbols() {
|
||||
// CompanySymbolNewRequest req = new CompanySymbolNewRequest();
|
||||
// req.setCompanyId(COMPANY_ID);
|
||||
// req.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
||||
// req.setCompanySymbolValue("CL-VALUE-2");
|
||||
// assertNull(multiCompanyService.findCompanySymbols(req));
|
||||
//
|
||||
// req.setCompanySymbol(CompanySymbol.INN.getKey());
|
||||
// req.setCompanySymbolValue("INN-VALUE");
|
||||
// CompanySymbols symbol = multiCompanyService.findCompanySymbols(req);
|
||||
// assertNotNull(symbol);
|
||||
// assertEquals("INN-VALUE", symbol.getCompanySymbolValue());
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// void findContact() {
|
||||
// ContactNewRequest req = new ContactNewRequest();
|
||||
// req.setCompanyId(COMPANY_ID);
|
||||
// req.setContactType(ContactTypes.adrs.getKey());
|
||||
// req.setContactValue("UAR, st.Uarus, anystreet st., house 2");
|
||||
// Contact contact = multiCompanyService.findContact(req);
|
||||
// assertNotNull(contact);
|
||||
// assertNotEquals(req.getContactValue(), contact.getContactValue());
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// void getCompanyIdForCompanySymbols() {
|
||||
// CompanyNewRequest req = new CompanyNewRequest();
|
||||
// req.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
||||
// req.setCompanySymbolValue("CL-VALUE");
|
||||
// assertNull(multiCompanyService.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
||||
//
|
||||
// req.setCompanySymbolValue("INN-VALUE");
|
||||
// assertNull(multiCompanyService.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
||||
// req.setCompanySymbol(CompanySymbol.INN.getKey());
|
||||
// assertEquals(COMPANY_ID, multiCompanyService.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
||||
// req.setCompanySymbol(null);
|
||||
// req.setCompanySymbolValue(null);
|
||||
// assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, null));
|
||||
// List<CompanySymbolNewRequest> csReq=new ArrayList<>();
|
||||
// assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, null));
|
||||
// assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, csReq));
|
||||
// {
|
||||
// CompanySymbolNewRequest cs=new CompanySymbolNewRequest();
|
||||
// cs.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
||||
// cs.setCompanySymbolValue("INN-VALUE");
|
||||
// csReq.add(cs);
|
||||
// }
|
||||
// assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, csReq));
|
||||
// {
|
||||
// CompanySymbolNewRequest cs=new CompanySymbolNewRequest();
|
||||
// cs.setCompanySymbol(CompanySymbol.INN.getKey());
|
||||
// cs.setCompanySymbolValue("INN-VALUE");
|
||||
// csReq.add(cs);
|
||||
// }
|
||||
// assertEquals(COMPANY_ID, multiCompanyService.getCompanyIdForCompanySymbols(null, req, csReq));
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// void fillCompanyId() {
|
||||
// {
|
||||
// CompanyGatewayRequest testReq = new CompanyGatewayRequest();
|
||||
// testReq.setCompany(new CompanyNewRequest());
|
||||
// testReq.setProfileDocuments(null);
|
||||
// testReq.setCompanySymbols(null);
|
||||
// testReq.setContacts(null);
|
||||
// testReq.setClientCodes(null);
|
||||
// multiCompanyService.fillCompanyId(testReq, COMPANY_ID);
|
||||
// assertEquals(COMPANY_ID, testReq.getCompany().getId());
|
||||
// assertNotNull(testReq.getProfileDocuments());
|
||||
// assertNotNull(testReq.getCompanySymbols());
|
||||
// assertNotNull(testReq.getContacts());
|
||||
// assertNotNull(testReq.getClientCodes());
|
||||
// }
|
||||
// {
|
||||
// CompanyGatewayRequest testReq = new CompanyGatewayRequest();
|
||||
// testReq.setCompany(new CompanyNewRequest());
|
||||
// testReq.setCompanyInfo(new CompanyInfoUpdateRequest());
|
||||
// multiCompanyService.fillCompanyId(testReq, COMPANY_ID);
|
||||
// assertEquals(COMPANY_ID, testReq.getCompany().getId());
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
|
@ -3,6 +3,7 @@ package ru.spcex.clearing.company.service;
|
|||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -37,6 +38,8 @@ import static ru.spcex.clearing.test.TestUtils.*;
|
|||
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
@Deprecated
|
||||
@Disabled
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
BeanConfiguration.class,
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package ru.spcex.clearing.company.service;
|
|||
|
||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -37,6 +38,8 @@ import static ru.spcex.clearing.test.TestUtils.*;
|
|||
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
@Deprecated
|
||||
@Disabled
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
BeanConfiguration.class,
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package ru.spcex.clearing.company.service;
|
|||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -44,6 +45,8 @@ import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparato
|
|||
import static ru.spcex.clearing.test.TestUtils.*;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
@Deprecated
|
||||
@Disabled
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
SettlementHousePropertiesService.class,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,210 @@
|
|||
package ru.spcex.clearing.company.service.v2;
|
||||
|
||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
import static ru.spcex.clearing.test.TestUtils.addRecordToKafka;
|
||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForDelete;
|
||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForNew;
|
||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForUpdate;
|
||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.platform.dictionary.ClearingCategoryDictionary;
|
||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
||||
import ru.spcex.clearing.company.config.validation.ClearingMemberCategoryValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.CompanySymbolValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.RelationValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ClearingMemberCategoryServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyInfoServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanySymbolServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ContactServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ProfileDocumentServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.RelationServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.listeners.ClearingMemberCategoryServiceListener;
|
||||
import ru.spcex.clearing.company.service.v2.validators.ClearingMemberCategoryServiceValidator;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest;
|
||||
import ru.spcex.clearing.test.MatcherFactory;
|
||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
BeanConfiguration.class,
|
||||
ValidationConfig.class,
|
||||
ClearingMemberCategoryServiceListener.class,
|
||||
ClearingMemberCategoryServiceFacade.class,
|
||||
ClearingMemberCategoryServiceValidator.class,
|
||||
ClearingMemberCategoryValidationConfig.class,
|
||||
|
||||
CompanyInfoServiceFacade.class,
|
||||
ProfileDocumentServiceFacade.class,
|
||||
ContactServiceFacade.class,
|
||||
|
||||
CompanyServiceFacade.class, CompanyValidationConfig.class,
|
||||
CompanySymbolServiceFacade.class, CompanySymbolValidationConfig.class,
|
||||
AccountNotificationHelper.class,
|
||||
RelationServiceFacade.class, RelationValidationConfig.class,
|
||||
|
||||
KafkaTestConfig.class,
|
||||
ImdgTestConfig.class})
|
||||
class ClearingMemberCategoryServiceListenerTest {
|
||||
|
||||
public static final MatcherFactory.Matcher<ClearingMemberCategory> MEMBER_CATEGORY_MATCHER = usingIgnoringFieldsComparator();
|
||||
private static final int PARTITION = 0;
|
||||
private static final String TOPIC_MEMBER_CATEGORY_NEW = Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_NEW;
|
||||
private static final String TOPIC_MEMBER_CATEGORY_UPDATE = Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_UPDATE;
|
||||
private static final String TOPIC_MEMBER_CATEGORY_DELETE = Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_DELETE;
|
||||
private static final Long ID = currentID.incrementAndGet();
|
||||
@Autowired
|
||||
ClearingMemberCategoryServiceListener clearingMemberCategoryServiceListener;
|
||||
@Autowired
|
||||
@Qualifier("hazelcastServiceTest")
|
||||
private ImdgProvider hazelcastServiceTest;
|
||||
private Imdg<ClearingMemberCategory> memberCategoryImdg;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("mockProducer")
|
||||
protected Producer<String, Object> mockProducer;
|
||||
|
||||
private long COMPANY_ID;
|
||||
private Company TEST_COMPANY;
|
||||
|
||||
private final String CLEARING_CATEGORY_DICT_CODE = ClearingCategory.B.getKey();
|
||||
private ClearingCategoryDictionary clearingCategoryDictionary;
|
||||
|
||||
@PostConstruct
|
||||
private void init() {
|
||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
||||
memberCategoryImdg = hazelcastServiceTest.getImdg(
|
||||
IMDGDistributedNames.Map_ClearingMemberCategory,
|
||||
ClearingMemberCategory.class
|
||||
);
|
||||
Imdg<ClearingCategoryDictionary> clearingCategoryDictionaryImdg = hazelcastServiceTest.getImdg(
|
||||
IMDGDistributedNames.Map_ClearingCategoryDictionary,
|
||||
ClearingCategoryDictionary.class
|
||||
);
|
||||
|
||||
Imdg<Company> companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
TEST_COMPANY = new Company();
|
||||
TEST_COMPANY.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
COMPANY_ID = companyImdg.insert(TEST_COMPANY);
|
||||
|
||||
clearingCategoryDictionary = new ClearingCategoryDictionary();
|
||||
clearingCategoryDictionary.setCode(CLEARING_CATEGORY_DICT_CODE);
|
||||
clearingCategoryDictionaryImdg.insert(clearingCategoryDictionary);
|
||||
}
|
||||
|
||||
@Test
|
||||
void clearingMemberCategoryNew() throws InterruptedException {
|
||||
//ARRANGE
|
||||
String clearingMemberCategory = CLEARING_CATEGORY_DICT_CODE;
|
||||
ClearingMemberCategoryNewRequest memberCategoryNewRequest = new ClearingMemberCategoryNewRequest();
|
||||
memberCategoryNewRequest.setClearingMemberCategory(clearingMemberCategory);
|
||||
memberCategoryNewRequest.setCompanyId(TEST_COMPANY.getId());
|
||||
|
||||
ClearingMemberCategory predictableClearingMemberCategory = new ClearingMemberCategory();
|
||||
predictableClearingMemberCategory.setCompanyId(COMPANY_ID);
|
||||
predictableClearingMemberCategory.setClearingMemberCategory(clearingMemberCategory);
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForNew(memberCategoryNewRequest, ID);
|
||||
|
||||
addRecordToKafka((MockConsumer) clearingMemberCategoryServiceListener.getConsumer(), TOPIC_MEMBER_CATEGORY_NEW, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
ClearingMemberCategory resultNew = memberCategoryImdg.getFirstObjectBySQL(String.format("clearingMemberCategory = %s", clearingMemberCategory));
|
||||
predictableClearingMemberCategory.setId(resultNew.getId());
|
||||
MEMBER_CATEGORY_MATCHER.assertMatch(resultNew, predictableClearingMemberCategory);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link ClearingMemberCategoryServiceListener#processUpdateClearingMemberCategoryRequest(BaseRequest)} (BaseRequest)}<br>
|
||||
* Тест проверяет обновление сущности {@link ClearingMemberCategory} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link ClearingMemberCategoryUpdateRequest}:<br>
|
||||
* {@link ClearingMemberCategoryUpdateRequest#id} - Идентификатор записи<br>
|
||||
* {@link ClearingMemberCategoryUpdateRequest#getClearingMemberCategory()} - 1234<br>
|
||||
*/
|
||||
@Test
|
||||
void clearingMemberCategoryUpdate() throws InterruptedException {
|
||||
//ARRANGE
|
||||
String clearingMemberCategory = CLEARING_CATEGORY_DICT_CODE;
|
||||
ClearingMemberCategory existsClearingMemberCategory = new ClearingMemberCategory();
|
||||
existsClearingMemberCategory.setClearingMemberCategory("0000");
|
||||
existsClearingMemberCategory.setCompanyId(COMPANY_ID);
|
||||
Long id = memberCategoryImdg.insert(existsClearingMemberCategory);
|
||||
|
||||
ClearingMemberCategoryUpdateRequest memberCategoryUpdateRequest = new ClearingMemberCategoryUpdateRequest();
|
||||
memberCategoryUpdateRequest.setId(id);
|
||||
memberCategoryUpdateRequest.setClearingMemberCategory(clearingMemberCategory);
|
||||
|
||||
ClearingMemberCategory predictableClearingMemberCategory = new ClearingMemberCategory();
|
||||
predictableClearingMemberCategory.setCompanyId(COMPANY_ID);
|
||||
predictableClearingMemberCategory.setId(id);
|
||||
predictableClearingMemberCategory.setClearingMemberCategory(clearingMemberCategory);
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForUpdate(memberCategoryUpdateRequest, id);
|
||||
addRecordToKafka((MockConsumer) clearingMemberCategoryServiceListener.getConsumer(), TOPIC_MEMBER_CATEGORY_UPDATE, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(id, mockProducer);
|
||||
|
||||
ClearingMemberCategory resultUpdating = memberCategoryImdg.getSingleObjectByID(id);
|
||||
MEMBER_CATEGORY_MATCHER.assertMatch(resultUpdating, predictableClearingMemberCategory);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link ClearingMemberCategoryServiceListener#processDeleteClearingMemberCategoryRequest(BaseRequest)} (BaseRequest)}<br>
|
||||
* Тест проверяет удаление сущности {@link ClearingMemberCategory} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link CommonDeleteRequest}:<br>
|
||||
* {@link CommonDeleteRequest#id} - Идентификатор записи<br>
|
||||
*/
|
||||
@Test
|
||||
void clearingMemberCategoryDelete() throws InterruptedException {
|
||||
//ARRANGE
|
||||
String clearingMemberCategory = "0000";
|
||||
ClearingMemberCategory existsClearingMemberCategory = new ClearingMemberCategory();
|
||||
existsClearingMemberCategory.setClearingMemberCategory(clearingMemberCategory);
|
||||
existsClearingMemberCategory.setCompanyId(COMPANY_ID);
|
||||
Long id = memberCategoryImdg.insert(existsClearingMemberCategory);
|
||||
|
||||
CommonDeleteRequest memberCategoryDeleteRequest = new CommonDeleteRequest();
|
||||
memberCategoryDeleteRequest.setId(id);
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForDelete(memberCategoryDeleteRequest, id);
|
||||
addRecordToKafka((MockConsumer) clearingMemberCategoryServiceListener.getConsumer(), TOPIC_MEMBER_CATEGORY_DELETE, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(id, mockProducer);
|
||||
|
||||
ClearingMemberCategory resultDeleting = memberCategoryImdg.getFirstObjectBySQL(String.format("clearingMemberCategory = %s", clearingMemberCategory));
|
||||
Assertions.assertNull(resultDeleting);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,194 @@
|
|||
package ru.spcex.clearing.company.service.v2;
|
||||
|
||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
import static ru.spcex.clearing.test.TestUtils.addRecordToKafka;
|
||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForUpdate;
|
||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.profile.CompanyInfo;
|
||||
import ru.clearing.platform.dictionary.AbstractDictionary;
|
||||
import ru.clearing.platform.dictionary.AllowedDictionary;
|
||||
import ru.clearing.platform.dictionary.CompanySymbolDictionary;
|
||||
import ru.clearing.platform.dictionary.CorporationSoleTypeDictionary;
|
||||
import ru.clearing.platform.dictionary.CountryCodeDictionary;
|
||||
import ru.clearing.platform.dictionary.LegalKindDictionary;
|
||||
import ru.clearing.platform.dictionary.OrganizationTypeDictionary;
|
||||
import ru.clearing.platform.dictionary.WorkflowStatusDictionary;
|
||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
||||
import ru.spcex.clearing.company.config.validation.CompanySymbolValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.RelationValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ClearingMemberCategoryServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyInfoServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanySymbolServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ContactServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ProfileDocumentServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.RelationServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.listeners.CompanyInfoServiceListener;
|
||||
import ru.spcex.clearing.company.service.v2.validators.CompanyInfoServiceValidator;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyInfoUpdateRequest;
|
||||
import ru.spcex.clearing.test.MatcherFactory;
|
||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
CompanyInfoServiceListener.class,
|
||||
CompanyInfoServiceFacade.class,
|
||||
CompanyInfoServiceValidator.class,
|
||||
CompanyValidationConfig.class,
|
||||
CompanySymbolValidationConfig.class,
|
||||
|
||||
ProfileDocumentServiceFacade.class,
|
||||
ContactServiceFacade.class,
|
||||
ClearingMemberCategoryServiceFacade.class,
|
||||
|
||||
CompanyServiceFacade.class,
|
||||
CompanyValidationConfig.class,
|
||||
ValidationConfig.class,
|
||||
CompanySymbolServiceFacade.class,
|
||||
AccountNotificationHelper.class,
|
||||
RelationServiceFacade.class,
|
||||
RelationValidationConfig.class,
|
||||
BeanConfiguration.class,
|
||||
|
||||
KafkaTestConfig.class,
|
||||
ImdgTestConfig.class})
|
||||
class CompanyInfoServiceListenerTest {
|
||||
public static final MatcherFactory.Matcher<CompanyInfo> COMPANY_INFO_MATCHER = usingIgnoringFieldsComparator();
|
||||
private static final int PARTITION = 0;
|
||||
private static final String TOPIC_COMPANY_INFO_UPDATE = Consts.DESTINATION_COMPANY_INFO_UPDATE;
|
||||
private static final Long ID = 0L;
|
||||
|
||||
@Autowired
|
||||
CompanyInfoServiceListener companyInfoService;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("hazelcastServiceTest")
|
||||
private ImdgProvider hazelcastServiceTest;
|
||||
private Imdg<Company> companyImdg;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("mockProducer")
|
||||
protected Producer<String, Object> mockProducer;
|
||||
|
||||
@PostConstruct
|
||||
private void init() {
|
||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
||||
companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
|
||||
// Словари для теста, применяются в ValidationConfig
|
||||
putToDictionary(IMDGDistributedNames.Map_WorkflowStatusDictionary, new WorkflowStatusDictionary(), "ACTV");
|
||||
putToDictionary(IMDGDistributedNames.Map_CompanySymbolDictionary, new CompanySymbolDictionary(), "CLRC");
|
||||
putToDictionary(IMDGDistributedNames.Map_CorporationSoleTypeDictionary, new CorporationSoleTypeDictionary(), "GDIR");
|
||||
putToDictionary(IMDGDistributedNames.Map_CountryCodeDictionary, new CountryCodeDictionary(), "RUS");
|
||||
putToDictionary(IMDGDistributedNames.Map_AllowedDictionary, new AllowedDictionary(), "ALWD");
|
||||
putToDictionary(IMDGDistributedNames.Map_LegalKindDictionary, new LegalKindDictionary(), "JURD");
|
||||
putToDictionary(IMDGDistributedNames.Map_OrganizationTypeDictionary, new OrganizationTypeDictionary(), "NCRD");
|
||||
}
|
||||
|
||||
private <D extends AbstractDictionary /*SpcexObjectBase & Dictionary*/> void putToDictionary(String mapName, D object, String code) {
|
||||
Imdg<D> dMap = (Imdg) hazelcastServiceTest.getImdg(mapName, object.getClass());
|
||||
object.setId(2L);
|
||||
object.setCode(code);
|
||||
object.setName("name of " + code);
|
||||
dMap.insert(object);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link CompanyInfoServiceListener#processNewCompanyInfoUpdateRequest(BaseRequest)}<br>
|
||||
* Тест проверяет обновление сущности {@link CompanyInfo} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link CompanyInfoUpdateRequest}:<br>
|
||||
* {@link CompanyInfoUpdateRequest#id} - Идентификатор записи<br>
|
||||
* {@link CompanyInfoUpdateRequest#getCorporationSoleType()} - GDIR<br>
|
||||
* {@link CompanyInfoUpdateRequest#getCountryCode()} - RUS<br>
|
||||
* {@link CompanyInfoUpdateRequest#getDescription()} - updated description<br>
|
||||
* {@link CompanyInfoUpdateRequest#getProfessionalSign()} - ALWD<br>
|
||||
* {@link CompanyInfoUpdateRequest#getLegalKind()} - JURD<br>
|
||||
* {@link CompanyInfoUpdateRequest#getOrganizationType()} - NCRD<br>
|
||||
* {@link CompanyInfoUpdateRequest#getResidence()} - RUS<br>
|
||||
* {@link CompanyInfoUpdateRequest#getShortName()} - updated shortNameEng<br>
|
||||
* {@link CompanyInfoUpdateRequest#getFullName()} - updated fullNameEng<br>
|
||||
*/
|
||||
@Test
|
||||
void processNewCompanyInfoUpdateRequest() throws InterruptedException {
|
||||
//ARRANGE
|
||||
CompanyInfo existsCompanyInfo = new CompanyInfo();
|
||||
existsCompanyInfo.setId(ID);
|
||||
existsCompanyInfo.setCompanyId(ID);
|
||||
existsCompanyInfo.setCorporationSoleType("0000");
|
||||
existsCompanyInfo.setCountryCode("0000");
|
||||
existsCompanyInfo.setDescription("exists description");
|
||||
existsCompanyInfo.setProfessionalSign("0000");
|
||||
existsCompanyInfo.setLegalKind("0000");
|
||||
existsCompanyInfo.setOrganizationType("0000");
|
||||
existsCompanyInfo.setResidence("0000");
|
||||
existsCompanyInfo.setShortNameEng("exists shortNameEng");
|
||||
existsCompanyInfo.setFullNameEng("exists fullNameEng");
|
||||
Company existsCompany = new Company();
|
||||
existsCompany.setId(ID);
|
||||
existsCompany.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
existsCompany.setProfile(existsCompanyInfo);
|
||||
existsCompany.setShortName("exists shortName");
|
||||
existsCompany.setFullName("exists fullName");
|
||||
companyImdg.insert(existsCompany);
|
||||
|
||||
CompanyInfoUpdateRequest companyInfoUpdateRequest = new CompanyInfoUpdateRequest();
|
||||
companyInfoUpdateRequest.setId(ID);
|
||||
companyInfoUpdateRequest.setCorporationSoleType("GDIR");
|
||||
companyInfoUpdateRequest.setCountryCode("RUS");
|
||||
companyInfoUpdateRequest.setDescription("updated description");
|
||||
companyInfoUpdateRequest.setProfessionalSign("ALWD");
|
||||
companyInfoUpdateRequest.setLegalKind("JURD");
|
||||
companyInfoUpdateRequest.setOrganizationType("NCRD");
|
||||
companyInfoUpdateRequest.setResidence("RUS");
|
||||
companyInfoUpdateRequest.setShortNameEng("updated shortNameEng");
|
||||
companyInfoUpdateRequest.setFullNameEng("updated fullNameEng");
|
||||
companyInfoUpdateRequest.setShortName("updated shortName");
|
||||
companyInfoUpdateRequest.setFullName("updated fullName");
|
||||
|
||||
CompanyInfo predictableCompanyInfo = new CompanyInfo();
|
||||
predictableCompanyInfo.setId(ID);
|
||||
predictableCompanyInfo.setCompanyId(ID);
|
||||
predictableCompanyInfo.setCorporationSoleType("GDIR");
|
||||
predictableCompanyInfo.setCountryCode("RUS");
|
||||
predictableCompanyInfo.setDescription("updated description");
|
||||
predictableCompanyInfo.setProfessionalSign("ALWD");
|
||||
predictableCompanyInfo.setLegalKind("JURD");
|
||||
predictableCompanyInfo.setOrganizationType("NCRD");
|
||||
predictableCompanyInfo.setResidence("RUS");
|
||||
predictableCompanyInfo.setShortNameEng("updated shortNameEng");
|
||||
predictableCompanyInfo.setFullNameEng("updated fullNameEng");
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForUpdate(companyInfoUpdateRequest, ID);
|
||||
|
||||
addRecordToKafka((MockConsumer) companyInfoService.getConsumer(), TOPIC_COMPANY_INFO_UPDATE, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
|
||||
Company resultUpdating = companyImdg.getSingleObjectByID(ID);
|
||||
COMPANY_INFO_MATCHER.assertMatch(resultUpdating.getProfile(), predictableCompanyInfo);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,268 @@
|
|||
package ru.spcex.clearing.company.service.v2;
|
||||
|
||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
import static ru.spcex.clearing.test.TestUtils.addRecordToKafka;
|
||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForDelete;
|
||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForNew;
|
||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForUpdate;
|
||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Map;
|
||||
import javax.annotation.PostConstruct;
|
||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanyRoleSet;
|
||||
import ru.clearing.classes.statics.data.profile.CompanyInfo;
|
||||
import ru.clearing.platform.dictionary.AbstractDictionary;
|
||||
import ru.clearing.platform.dictionary.AllowedDictionary;
|
||||
import ru.clearing.platform.dictionary.CompanyRoleDictionary;
|
||||
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.CompanyRoleSetValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyRoleSetServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.listeners.CompanyRoleSetServiceListener;
|
||||
import ru.spcex.clearing.company.service.v2.validators.CompanyRoleSetServiceValidator;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetUpdateRequest;
|
||||
import ru.spcex.clearing.test.MatcherFactory;
|
||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
||||
import ru.spcex.platform.enumeration.CompanyRole;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
CompanyRoleSetServiceListener.class,
|
||||
CompanyRoleSetServiceFacade.class,
|
||||
CompanyRoleSetServiceValidator.class,
|
||||
CompanyRoleSetValidationConfig.class,
|
||||
|
||||
ValidationConfig.class,
|
||||
BeanConfiguration.class,
|
||||
|
||||
KafkaTestConfig.class,
|
||||
ImdgTestConfig.class})
|
||||
class CompanyRoleSetServiceListenerTest {
|
||||
public static final MatcherFactory.Matcher<CompanyRoleSet> COMPANY_ROLE_SET_MATCHER = usingIgnoringFieldsComparator();
|
||||
private static final int PARTITION = 0;
|
||||
private static final Long COMPANY_ID = 105L;
|
||||
|
||||
@Autowired
|
||||
CompanyRoleSetServiceListener companyRoleSetServiceListener;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("hazelcastServiceTest")
|
||||
private ImdgProvider hazelcastServiceTest;
|
||||
|
||||
private Imdg<Company> companyImdg;
|
||||
private Imdg<CompanyRoleSet> companyRoleSetImdg;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("mockProducer")
|
||||
protected Producer<String, Object> mockProducer;
|
||||
|
||||
@PostConstruct
|
||||
private void init() {
|
||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
||||
companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
companyRoleSetImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class);
|
||||
|
||||
// Словари для теста, применяются в ValidationConfig
|
||||
putToDictionary(IMDGDistributedNames.Map_WorkflowStatusDictionary, new WorkflowStatusDictionary(), "ACTV");
|
||||
putToDictionary(IMDGDistributedNames.Map_CompanySymbolDictionary, new CompanySymbolDictionary(), "CLRC");
|
||||
putToDictionary(IMDGDistributedNames.Map_AllowedDictionary, new AllowedDictionary(), "ALWD");
|
||||
putToDictionary(IMDGDistributedNames.Map_CompanyRoleDictionary, new CompanyRoleDictionary(), "RPRT");
|
||||
putToDictionary(IMDGDistributedNames.Map_CompanyRoleDictionary, new CompanyRoleDictionary(), "SETH");
|
||||
|
||||
Company comp = new Company();
|
||||
comp.setId(COMPANY_ID);
|
||||
comp.setCreated(Instant.now());
|
||||
comp.setFullName("Test LLC inc");
|
||||
comp.setShortName("Test LLC");
|
||||
comp.setProfile(new CompanyInfo());
|
||||
comp.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
companyImdg.insert(comp);
|
||||
}
|
||||
|
||||
private <D extends AbstractDictionary /*SpcexObjectBase & Dictionary*/> void putToDictionary(String mapName, D object, String code) {
|
||||
Imdg<D> dMap = (Imdg<D>) hazelcastServiceTest.getImdg(mapName, object.getClass());
|
||||
object.setId(1000L + code.hashCode() % 1000);
|
||||
object.setCode(code);
|
||||
object.setName("name of " + code);
|
||||
// assert dMap.getSingleObjectByID(object.getId()) == null;
|
||||
dMap.insert(object);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link CompanyRoleSetServiceListener#processNewCompanyRoleSetRequest(BaseRequest)} (BaseRequest)}<br>
|
||||
* * Тест проверяет создание сущности {@link CompanyRoleSet} в IMDG при передаче из Apache Kafka.<br>
|
||||
* * Входной запрос {@link CompanyRoleSetNewRequest}:<br>
|
||||
* * {@link CompanyRoleSetNewRequest#getCompanyId()} - COMPANY_ID (105)<br>
|
||||
* * {@link CompanyRoleSetNewRequest#getCompanyRole()} - SETH<br>
|
||||
* * {@link CompanyRoleSetNewRequest#getWorkflowStatus()} - ACTV<br>
|
||||
*/
|
||||
@Test
|
||||
void companyRoleSetNew1() {
|
||||
//ARRANGE
|
||||
final Long ID = 102L;
|
||||
final String DESTINATION_NEW = Consts.DESTINATION_COMPANY_ROLE_SETS_NEW;
|
||||
companyImdg.size();
|
||||
|
||||
CompanyRoleSetNewRequest newRequest = new CompanyRoleSetNewRequest();
|
||||
newRequest.setCompanyId(COMPANY_ID);
|
||||
newRequest.setCompanyRole(CompanyRole.SETH.getKey());
|
||||
newRequest.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForNew(newRequest, ID);
|
||||
addRecordToKafka((MockConsumer) companyRoleSetServiceListener.getConsumer(), DESTINATION_NEW, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
|
||||
CompanyRoleSet resultNew = companyRoleSetImdg.getFirstObjectByFieldValues(Map.of("companyId", COMPANY_ID));
|
||||
Assertions.assertNotNull(resultNew);
|
||||
Assertions.assertEquals("SETH", resultNew.getCompanyRole());
|
||||
Assertions.assertEquals(WorkflowStatus.Active.getKey(), resultNew.getWorkflowStatus());
|
||||
|
||||
// CLEAN UP
|
||||
companyRoleSetImdg.delete(resultNew);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@link CompanyRoleSetServiceListener#processNewCompanyRoleSetRequest(BaseRequest)} (BaseRequest)}<br>
|
||||
* * Тест проверяет создание сущности {@link CompanyRoleSet} в IMDG при передаче из Apache Kafka.<br>
|
||||
* * Входной запрос {@link CompanyRoleSetNewRequest}:<br>
|
||||
* * {@link CompanyRoleSetNewRequest#getCompanyId()} - COMPANY_ID (105)<br>
|
||||
* * {@link CompanyRoleSetNewRequest#getCompanyRole()} - SETH<br>
|
||||
* * {@link CompanyRoleSetNewRequest#getWorkflowStatus()} - null<br>
|
||||
*/
|
||||
@Disabled
|
||||
@Test
|
||||
void companyRoleSetNew2() {
|
||||
//ARRANGE
|
||||
final Long ID = 103L;
|
||||
final String DESTINATION_NEW = Consts.DESTINATION_COMPANY_ROLE_SETS_NEW;
|
||||
companyImdg.size();
|
||||
|
||||
CompanyRoleSetNewRequest newRequest = new CompanyRoleSetNewRequest();
|
||||
newRequest.setCompanyId(COMPANY_ID);
|
||||
newRequest.setCompanyRole(CompanyRole.SETH.getKey());
|
||||
newRequest.setWorkflowStatus(null);
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForNew(newRequest, ID);
|
||||
addRecordToKafka((MockConsumer) companyRoleSetServiceListener.getConsumer(), DESTINATION_NEW, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
|
||||
CompanyRoleSet resultNew = companyRoleSetImdg.getFirstObjectByFieldValues(Map.of("companyId", COMPANY_ID));
|
||||
Assertions.assertNotNull(resultNew);
|
||||
Assertions.assertEquals("SETH", resultNew.getCompanyRole());
|
||||
Assertions.assertEquals(WorkflowStatus.Active.getKey(), resultNew.getWorkflowStatus());
|
||||
|
||||
// CLEAN UP
|
||||
companyRoleSetImdg.delete(resultNew);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link CompanyRoleSetServiceListener#processUpdateCompanyRoleSetRequest(BaseRequest)} (BaseRequest)}<br>
|
||||
* * Тест проверяет обновление сущности {@link CompanyRoleSet} в IMDG при передаче из Apache Kafka.<br>
|
||||
* * Входной запрос {@link CompanyRoleSetUpdateRequest}:<br>
|
||||
* * {@link CompanyRoleSetUpdateRequest#getId()} - ID<br>
|
||||
* * {@link CompanyRoleSetUpdateRequest#getCompanyId()} - COMPANY_ID<br>
|
||||
* * {@link CompanyRoleSetUpdateRequest#getCompanyRole()} - SETH<br>
|
||||
* * {@link CompanyRoleSetUpdateRequest#getWorkflowStatus()} - null<br>
|
||||
*/
|
||||
@Test
|
||||
void companyRoleSetUpdate() {
|
||||
final Long ID = 104L;
|
||||
final String DESTINATION_UPDATE = Consts.DESTINATION_COMPANY_ROLE_SETS_UPDATE;
|
||||
//ARRANGE
|
||||
CompanyRoleSet existsCompanyRoleSet = new CompanyRoleSet();
|
||||
existsCompanyRoleSet.setId(ID);
|
||||
existsCompanyRoleSet.setCompanyId(COMPANY_ID);
|
||||
existsCompanyRoleSet.setCompanyRole("ODEP");
|
||||
companyRoleSetImdg.insert(existsCompanyRoleSet);
|
||||
|
||||
CompanyRoleSetUpdateRequest companyRoleSetUpdateRequest = new CompanyRoleSetUpdateRequest();
|
||||
companyRoleSetUpdateRequest.setId(ID);
|
||||
companyRoleSetUpdateRequest.setCompanyId(COMPANY_ID);
|
||||
companyRoleSetUpdateRequest.setCompanyRole("SETH");
|
||||
companyRoleSetUpdateRequest.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
|
||||
CompanyRoleSet predictableCompanyRS = new CompanyRoleSet();
|
||||
predictableCompanyRS.setId(ID);
|
||||
predictableCompanyRS.setCompanyId(COMPANY_ID);
|
||||
predictableCompanyRS.setCompanyRole("SETH");
|
||||
predictableCompanyRS.setWorkflowStatus("ACTV");
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForUpdate(companyRoleSetUpdateRequest, ID);
|
||||
|
||||
addRecordToKafka((MockConsumer) companyRoleSetServiceListener.getConsumer(), DESTINATION_UPDATE, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
|
||||
CompanyRoleSet resultUpdating = companyRoleSetImdg.getSingleObjectByID(ID);
|
||||
COMPANY_ROLE_SET_MATCHER.assertMatch(resultUpdating, predictableCompanyRS);
|
||||
|
||||
// CLEAN UP
|
||||
companyRoleSetImdg.delete(existsCompanyRoleSet);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@link CompanyRoleSetServiceListener#processDeleteCompanyRoleSetRequest(BaseRequest)} (BaseRequest)}<br>
|
||||
* Тест проверяет удаление сущности {@link CompanyRoleSet} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link CommonDeleteRequest}:<br>
|
||||
* {@link CommonDeleteRequest#id} - Идентификатор записи<br>
|
||||
*/
|
||||
@Test
|
||||
void deleteCRS() {
|
||||
//ARRANGE
|
||||
final Long ID = 101L;
|
||||
CompanyRoleSet existsCompanyRoleSet = new CompanyRoleSet();
|
||||
existsCompanyRoleSet.setId(ID);
|
||||
existsCompanyRoleSet.setCompanyId(COMPANY_ID);
|
||||
existsCompanyRoleSet.setCompanyRole("ODEP");
|
||||
companyRoleSetImdg.insert(existsCompanyRoleSet);
|
||||
|
||||
CommonDeleteRequest commonDeleteRequest = new CommonDeleteRequest();
|
||||
commonDeleteRequest.setId(ID);
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForDelete(commonDeleteRequest, ID);
|
||||
addRecordToKafka((MockConsumer) companyRoleSetServiceListener.getConsumer(), Consts.DESTINATION_COMPANY_ROLE_SETS_DELETE, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
|
||||
CompanyRoleSet resultDeleting = companyRoleSetImdg.getFirstObjectBySQL("id=" + ID);
|
||||
Assertions.assertNull(resultDeleting);
|
||||
// Assertions.assertEquals(WorkflowStatus.Blocked.getKey(), resultDeleting.getWorkflowStatus());
|
||||
// companyRoleSetImdg.delete(existsCompanyRoleSet);
|
||||
}
|
||||
}
|
||||
|
|
@ -32,10 +32,13 @@ import ru.spcex.clearing.company.config.validation.RelationValidationConfig;
|
|||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
||||
import ru.spcex.clearing.company.service.CompanyService;
|
||||
import ru.spcex.clearing.company.service.CompanySymbolService;
|
||||
import ru.spcex.clearing.company.service.RelationService;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ClearingMemberCategoryServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyInfoServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanySymbolServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ContactServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ProfileDocumentServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.RelationServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.listeners.CompanyServiceListener;
|
||||
import ru.spcex.clearing.company.service.v2.validators.CompanyServiceValidator;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
|
|
@ -59,12 +62,17 @@ import ru.spcex.platform.imdg.api.ImdgProvider;
|
|||
CompanyValidationConfig.class,
|
||||
ValidationConfig.class,
|
||||
AccountNotificationHelper.class,
|
||||
RelationService.class,
|
||||
RelationServiceFacade.class,
|
||||
RelationValidationConfig.class,
|
||||
|
||||
CompanySymbolService.class,
|
||||
CompanySymbolServiceFacade.class,
|
||||
CompanySymbolValidationConfig.class,
|
||||
|
||||
CompanyInfoServiceFacade.class,
|
||||
ProfileDocumentServiceFacade.class,
|
||||
ContactServiceFacade.class,
|
||||
ClearingMemberCategoryServiceFacade.class,
|
||||
|
||||
KafkaTestConfig.class,
|
||||
ImdgTestConfig.class,
|
||||
BeanConfiguration.class})
|
||||
|
|
@ -121,7 +129,7 @@ public class CompanyServiceListenerTest {
|
|||
}
|
||||
|
||||
/**
|
||||
* {@link CompanyService#deleteCompany(BaseRequest)}<br>
|
||||
* {@link CompanyServiceListener#processDeleteCompanyRequest(BaseRequest)} (BaseRequest)}<br>
|
||||
* Тест проверяет удаление сущности {@link Company} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link CommonDeleteRequest}:<br>
|
||||
* {@link CommonDeleteRequest#id} - Идентификатор записи<br>
|
||||
|
|
@ -161,7 +169,7 @@ public class CompanyServiceListenerTest {
|
|||
|
||||
|
||||
/**
|
||||
* {@link CompanyService#createCompany(BaseRequest)}<br>
|
||||
* {@link CompanyServiceListener#processNewCompanyRequest(BaseRequest)} (BaseRequest)}<br>
|
||||
* Тест проверяет удаление сущности {@link Company} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link CommonDeleteRequest}:<br>
|
||||
* {@link CommonDeleteRequest#id} - Идентификатор записи<br>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,158 @@
|
|||
package ru.spcex.clearing.company.service.v2;
|
||||
|
||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
import static ru.spcex.clearing.test.TestUtils.addRecordToKafka;
|
||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForUpdate;
|
||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||
import ru.clearing.platform.dictionary.CompanySymbolDictionary;
|
||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
||||
import ru.spcex.clearing.company.config.validation.CompanySymbolValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.RelationValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ClearingMemberCategoryServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyInfoServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanySymbolServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ContactServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ProfileDocumentServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.RelationServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.listeners.CompanySymbolServiceListener;
|
||||
import ru.spcex.clearing.company.service.v2.validators.CompanySymbolServiceValidator;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
|
||||
import ru.spcex.clearing.test.MatcherFactory;
|
||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
||||
import ru.spcex.platform.enumeration.CompanySymbol;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
CompanySymbolServiceListener.class,
|
||||
CompanySymbolServiceFacade.class,
|
||||
CompanySymbolServiceValidator.class,
|
||||
|
||||
CompanyInfoServiceFacade.class,
|
||||
ProfileDocumentServiceFacade.class,
|
||||
ContactServiceFacade.class,
|
||||
ClearingMemberCategoryServiceFacade.class,
|
||||
|
||||
CompanySymbolValidationConfig.class,
|
||||
ValidationConfig.class,
|
||||
BeanConfiguration.class,
|
||||
|
||||
CompanyServiceFacade.class,
|
||||
CompanyValidationConfig.class,
|
||||
AccountNotificationHelper.class,
|
||||
RelationServiceFacade.class, RelationValidationConfig.class,
|
||||
|
||||
KafkaTestConfig.class,
|
||||
ImdgTestConfig.class})
|
||||
class CompanySymbolServiceListenerTest {
|
||||
public static final MatcherFactory.Matcher<CompanySymbols> COMPANY_SYMBOL_MATCHER = usingIgnoringFieldsComparator();
|
||||
private static final int PARTITION = 0;
|
||||
private static final String TOPIC_COMPANY_SYMBOL_UPDATE = Consts.DESTINATION_COMPANY_SYMBOL_UPDATE;
|
||||
private static final Long ID = 0L;
|
||||
|
||||
@Autowired
|
||||
CompanySymbolServiceListener companySymbolServiceListener;
|
||||
@Autowired
|
||||
@Qualifier("hazelcastServiceTest")
|
||||
private ImdgProvider hazelcastServiceTest;
|
||||
private Imdg<CompanySymbols> companySymbolsImdg;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("mockProducer")
|
||||
protected Producer<String, Object> mockProducer;
|
||||
|
||||
@PostConstruct
|
||||
private void init() {
|
||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
||||
companySymbolsImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
|
||||
|
||||
Imdg<CompanySymbolDictionary> companySymbolDictionaryImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbolDictionary, CompanySymbolDictionary.class);
|
||||
{
|
||||
CompanySymbolDictionary cSymbol = new CompanySymbolDictionary();
|
||||
cSymbol.setId(11L);
|
||||
cSymbol.setCode(CompanySymbol.CLRC.getKey());
|
||||
cSymbol.setName(CompanySymbol.CLRC.getKey());
|
||||
cSymbol.setShortname(" CLRC key");
|
||||
companySymbolDictionaryImdg.insert(cSymbol);
|
||||
CompanySymbolDictionary cioSymbol = new CompanySymbolDictionary();
|
||||
cioSymbol.setId(12L);
|
||||
cioSymbol.setCode(CompanySymbol.CIO.getKey());
|
||||
cioSymbol.setName(CompanySymbol.CIO.getKey());
|
||||
companySymbolDictionaryImdg.insert(cioSymbol);
|
||||
}
|
||||
Imdg<Company> companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
{
|
||||
Company company = new Company();
|
||||
company.setId(ID);
|
||||
company.setShortName("TST");
|
||||
company.setWorkflowStatus("ACTV");
|
||||
companyImdg.insert(company);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link CompanySymbolServiceListener#processUpdateCompanySymbolRequest(BaseRequest)} (BaseRequest)}<br>
|
||||
* Тест проверяет обновление сущности {@link CompanySymbols} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link CompanySymbolUpdateRequest}:<br>
|
||||
* {@link CompanySymbolUpdateRequest#id} - Идентификатор записи<br>
|
||||
* {@link CompanySymbolUpdateRequest#getCompanyId()} - Идентификатор записи<br>
|
||||
* {@link CompanySymbolUpdateRequest#getCompanySymbol()} - 1234<br>
|
||||
* {@link CompanySymbolUpdateRequest#getCompanySymbolValue()} - new companySymbolValue<br>
|
||||
*/
|
||||
@Test
|
||||
void processUpdateCompanySymbolRequest() throws InterruptedException {
|
||||
//ARRANGE
|
||||
String companySymbolValue = "newCompanySymbolValue";
|
||||
CompanySymbols existsCompanySymbols = new CompanySymbols();
|
||||
existsCompanySymbols.setId(ID);
|
||||
existsCompanySymbols.setCompanyId(ID);
|
||||
existsCompanySymbols.setCompanySymbol("CIO");
|
||||
existsCompanySymbols.setCompanySymbolValue("CIO exists companySymbolValue");
|
||||
companySymbolsImdg.insert(existsCompanySymbols);
|
||||
|
||||
CompanySymbolUpdateRequest companySymbolUpdateRequest = new CompanySymbolUpdateRequest();
|
||||
companySymbolUpdateRequest.setId(ID);
|
||||
companySymbolUpdateRequest.setCompanyId(ID);
|
||||
companySymbolUpdateRequest.setCompanySymbol("CIO");
|
||||
companySymbolUpdateRequest.setCompanySymbolValue(companySymbolValue);
|
||||
|
||||
CompanySymbols predictableCompanySymbols = new CompanySymbols();
|
||||
predictableCompanySymbols.setId(ID);
|
||||
predictableCompanySymbols.setCompanyId(ID);
|
||||
predictableCompanySymbols.setCompanySymbol("CIO");
|
||||
predictableCompanySymbols.setCompanySymbolValue(companySymbolValue);
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForUpdate(companySymbolUpdateRequest, ID);
|
||||
addRecordToKafka((MockConsumer) companySymbolServiceListener.getConsumer(), TOPIC_COMPANY_SYMBOL_UPDATE, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
|
||||
CompanySymbols resultUpdating = companySymbolsImdg.getFirstObjectBySQL(String.format("companySymbolValue = %s", companySymbolValue));
|
||||
COMPANY_SYMBOL_MATCHER.assertMatch(resultUpdating, predictableCompanySymbols);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,155 @@
|
|||
package ru.spcex.clearing.company.service.v2;
|
||||
|
||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
import static ru.spcex.clearing.test.TestUtils.addRecordToKafka;
|
||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForNew;
|
||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForUpdate;
|
||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.profile.Contact;
|
||||
import ru.clearing.platform.dictionary.ContactTypeDictionary;
|
||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
||||
import ru.spcex.clearing.company.config.validation.ContactValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ContactServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.listeners.ContactServiceListener;
|
||||
import ru.spcex.clearing.company.service.v2.validators.ContactServiceValidator;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
|
||||
import ru.spcex.clearing.test.MatcherFactory;
|
||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
||||
import ru.spcex.platform.enumeration.ContactTypes;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
BeanConfiguration.class,
|
||||
ValidationConfig.class,
|
||||
ContactValidationConfig.class,
|
||||
ContactServiceListener.class,
|
||||
ContactServiceFacade.class,
|
||||
ContactServiceValidator.class,
|
||||
KafkaTestConfig.class,
|
||||
ImdgTestConfig.class})
|
||||
class ContactServiceListenerTest {
|
||||
public static final MatcherFactory.Matcher<Contact> CONTACT_MATCHER = usingIgnoringFieldsComparator();
|
||||
private static final int PARTITION = 0;
|
||||
private static final String TOPIC_CONTACT_UPDATE = Consts.DESTINATION_CONTACT_UPDATE;
|
||||
private static final String TOPIC_CONTACT_NEW = Consts.DESTINATION_CONTACT_NEW;
|
||||
private static final Long ID = 0L;
|
||||
|
||||
@Autowired
|
||||
ContactServiceListener contactServiceListener;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("hazelcastServiceTest")
|
||||
private ImdgProvider hazelcastServiceTest;
|
||||
private Imdg<Contact> contactImdg;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("mockProducer")
|
||||
protected Producer<String, Object> mockProducer;
|
||||
|
||||
private Company TEST_COMPANY;
|
||||
private Long COMPANY_ID;
|
||||
|
||||
@PostConstruct
|
||||
private void init() {
|
||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
||||
contactImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
||||
|
||||
Imdg<Company> companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
TEST_COMPANY = new Company();
|
||||
TEST_COMPANY.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
COMPANY_ID = companyImdg.insert(TEST_COMPANY);
|
||||
|
||||
ContactTypeDictionary contactTypeDictionary = new ContactTypeDictionary();
|
||||
contactTypeDictionary.setCode(ContactTypes.adrs.getKey());
|
||||
contactTypeDictionary.setName("name");
|
||||
Imdg<ContactTypeDictionary> contactTypeDictionaryImdg = hazelcastServiceTest.getImdg(
|
||||
IMDGDistributedNames.Map_ContactTypeDictionary, ContactTypeDictionary.class
|
||||
);
|
||||
contactTypeDictionaryImdg.insert(contactTypeDictionary);
|
||||
}
|
||||
@Test
|
||||
void contactNew() throws InterruptedException {
|
||||
//ARRANGE
|
||||
ContactNewRequest contactNewRequest = new ContactNewRequest();
|
||||
contactNewRequest.setCompanyId(COMPANY_ID);
|
||||
contactNewRequest.setContactType(ContactTypes.adrs.getKey());
|
||||
contactNewRequest.setContactValue("value");
|
||||
|
||||
Contact predictableContact = new Contact();
|
||||
predictableContact.setCompanyId(COMPANY_ID);
|
||||
predictableContact.setContactType(ContactTypes.adrs.getKey());
|
||||
predictableContact.setContactValue("value");
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForNew(contactNewRequest, ID);
|
||||
addRecordToKafka((MockConsumer) contactServiceListener.getConsumer(), TOPIC_CONTACT_NEW, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
|
||||
Contact resultNew = contactImdg.getAllValues().iterator().next();
|
||||
predictableContact.setId(resultNew.getId());
|
||||
CONTACT_MATCHER.assertMatch(resultNew, predictableContact);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link ContactServiceListener#processUpdateContactRequest(BaseRequest)} (BaseRequest)}<br>
|
||||
* Тест проверяет обновление сущности {@link Contact} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link ContactUpdateRequest}:<br>
|
||||
* {@link ContactUpdateRequest#id} - Идентификатор записи<br>
|
||||
* {@link ContactUpdateRequest#getContactType()} - ADDR<br>
|
||||
* {@link ContactUpdateRequest#getContactValue()} - new ContactValue<br>
|
||||
*/
|
||||
@Test
|
||||
void contactUpdate() throws InterruptedException {
|
||||
//ARRANGE
|
||||
Long existContactID;
|
||||
Contact existsContact = new Contact();
|
||||
existsContact.setCompanyId(COMPANY_ID);
|
||||
existsContact.setContactType(ContactTypes.adrs.getKey());
|
||||
existsContact.setContactValue("exists ContactValue");
|
||||
existContactID = contactImdg.insert(existsContact);
|
||||
|
||||
ContactUpdateRequest contactUpdateRequest = new ContactUpdateRequest();
|
||||
contactUpdateRequest.setId(existContactID);
|
||||
contactUpdateRequest.setContactType(ContactTypes.adrs.getKey());
|
||||
contactUpdateRequest.setContactValue("new ContactValue");
|
||||
|
||||
Contact predictableContact = new Contact();
|
||||
predictableContact.setId(existContactID);
|
||||
predictableContact.setCompanyId(COMPANY_ID);
|
||||
predictableContact.setContactType(ContactTypes.adrs.getKey());
|
||||
predictableContact.setContactValue("new ContactValue");
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForUpdate(contactUpdateRequest, existContactID);
|
||||
addRecordToKafka((MockConsumer) contactServiceListener.getConsumer(), TOPIC_CONTACT_UPDATE, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(existContactID, mockProducer);
|
||||
|
||||
Contact resultUpdating = contactImdg.getSingleObjectByID(existContactID);
|
||||
CONTACT_MATCHER.assertMatch(resultUpdating, predictableContact);
|
||||
}
|
||||
}
|
||||
|
|
@ -30,18 +30,15 @@ import ru.spcex.clearing.company.config.validation.ProfileDocumentValidationConf
|
|||
import ru.spcex.clearing.company.config.validation.RelationValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
||||
import ru.spcex.clearing.company.service.ClearingMemberCategoryService;
|
||||
import ru.spcex.clearing.company.service.CompanyInfoService;
|
||||
import ru.spcex.clearing.company.service.CompanySymbolService;
|
||||
import ru.spcex.clearing.company.service.ContactService;
|
||||
import ru.spcex.clearing.company.service.ProfileDocumentService;
|
||||
import ru.spcex.clearing.company.service.RelationService;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ClearingMemberCategoryServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyInfoServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.MultiCompanyServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanySymbolServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ContactServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ProfileDocumentServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.RelationServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.listeners.CompanyServiceListener;
|
||||
import ru.spcex.clearing.company.service.v2.listeners.MultiCompanyServiceListener;
|
||||
import ru.spcex.clearing.company.service.v2.validators.CompanyServiceValidator;
|
||||
import ru.spcex.clearing.company.service.v2.validators.MultiCompanyServiceValidator;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyGatewayRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyInfoUpdateRequest;
|
||||
|
|
@ -60,28 +57,24 @@ import ru.spcex.platform.imdg.api.ImdgProvider;
|
|||
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
MultiCompanyServiceListener.class,
|
||||
MultiCompanyServiceFacade.class,
|
||||
MultiCompanyServiceValidator.class,
|
||||
|
||||
CompanyServiceListener.class,
|
||||
CompanyServiceFacade.class,
|
||||
CompanyServiceValidator.class,
|
||||
CompanyValidationConfig.class,
|
||||
ValidationConfig.class,
|
||||
CompanySymbolService.class,
|
||||
CompanySymbolServiceFacade.class,
|
||||
AccountNotificationHelper.class,
|
||||
RelationService.class,
|
||||
RelationServiceFacade.class,
|
||||
RelationValidationConfig.class,
|
||||
|
||||
CompanySymbolService.class,
|
||||
CompanySymbolServiceFacade.class,
|
||||
CompanySymbolValidationConfig.class,
|
||||
CompanyInfoService.class,
|
||||
ProfileDocumentService.class,
|
||||
CompanyInfoServiceFacade.class,
|
||||
ProfileDocumentServiceFacade.class,
|
||||
ProfileDocumentValidationConfig.class,
|
||||
ContactService.class,
|
||||
ContactServiceFacade.class,
|
||||
ContactValidationConfig.class,
|
||||
ClearingMemberCategoryService.class,
|
||||
ClearingMemberCategoryServiceFacade.class,
|
||||
ClearingMemberCategoryValidationConfig.class,
|
||||
|
||||
KafkaTestConfig.class,
|
||||
|
|
@ -91,9 +84,7 @@ public class MultiCompanyServiceListenerTest {
|
|||
final Long COMPANY_ID = 123L;
|
||||
|
||||
@Autowired
|
||||
protected MultiCompanyServiceListener multiCompanyServiceListener;
|
||||
@Autowired
|
||||
protected MultiCompanyServiceFacade multiCompanyServiceFacade;
|
||||
protected CompanyServiceFacade companyServiceFacade;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("hazelcastServiceTest")
|
||||
|
|
@ -157,7 +148,7 @@ public class MultiCompanyServiceListenerTest {
|
|||
req.setCompanyId(COMPANY_ID);
|
||||
req.setDocumentType(DocumentTypes.form.getKey());
|
||||
req.setIssueDate(LocalDate.now());
|
||||
ProfileDocument doc = multiCompanyServiceFacade.findCompanyDocument(req);
|
||||
ProfileDocument doc = companyServiceFacade.findCompanyDocument(req);
|
||||
assertNotNull(doc);
|
||||
}
|
||||
|
||||
|
|
@ -167,11 +158,11 @@ public class MultiCompanyServiceListenerTest {
|
|||
req.setCompanyId(COMPANY_ID);
|
||||
req.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
||||
req.setCompanySymbolValue("CL-VALUE-2");
|
||||
assertNull(multiCompanyServiceFacade.findCompanySymbols(req));
|
||||
assertNull(companyServiceFacade.findCompanySymbols(req));
|
||||
|
||||
req.setCompanySymbol(CompanySymbol.INN.getKey());
|
||||
req.setCompanySymbolValue("INN-VALUE");
|
||||
CompanySymbols symbol = multiCompanyServiceFacade.findCompanySymbols(req);
|
||||
CompanySymbols symbol = companyServiceFacade.findCompanySymbols(req);
|
||||
assertNotNull(symbol);
|
||||
assertEquals("INN-VALUE", symbol.getCompanySymbolValue());
|
||||
}
|
||||
|
|
@ -182,7 +173,7 @@ public class MultiCompanyServiceListenerTest {
|
|||
req.setCompanyId(COMPANY_ID);
|
||||
req.setContactType(ContactTypes.adrs.getKey());
|
||||
req.setContactValue("UAR, st.Uarus, anystreet st., house 2");
|
||||
Contact contact = multiCompanyServiceFacade.findContact(req);
|
||||
Contact contact = companyServiceFacade.findContact(req);
|
||||
assertNotNull(contact);
|
||||
assertNotEquals(req.getContactValue(), contact.getContactValue());
|
||||
}
|
||||
|
|
@ -192,32 +183,32 @@ public class MultiCompanyServiceListenerTest {
|
|||
CompanyNewRequest req = new CompanyNewRequest();
|
||||
req.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
||||
req.setCompanySymbolValue("CL-VALUE");
|
||||
assertNull(multiCompanyServiceFacade.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
||||
assertNull(companyServiceFacade.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
||||
|
||||
req.setCompanySymbolValue("INN-VALUE");
|
||||
assertNull(multiCompanyServiceFacade.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
||||
assertNull(companyServiceFacade.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
||||
req.setCompanySymbol(CompanySymbol.INN.getKey());
|
||||
assertEquals(COMPANY_ID, multiCompanyServiceFacade.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
||||
assertEquals(COMPANY_ID, companyServiceFacade.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
||||
req.setCompanySymbol(null);
|
||||
req.setCompanySymbolValue(null);
|
||||
assertNull(multiCompanyServiceFacade.getCompanyIdForCompanySymbols(null, req, null));
|
||||
assertNull(companyServiceFacade.getCompanyIdForCompanySymbols(null, req, null));
|
||||
List<CompanySymbolNewRequest> csReq=new ArrayList<>();
|
||||
assertNull(multiCompanyServiceFacade.getCompanyIdForCompanySymbols(null, req, null));
|
||||
assertNull(multiCompanyServiceFacade.getCompanyIdForCompanySymbols(null, req, csReq));
|
||||
assertNull(companyServiceFacade.getCompanyIdForCompanySymbols(null, req, null));
|
||||
assertNull(companyServiceFacade.getCompanyIdForCompanySymbols(null, req, csReq));
|
||||
{
|
||||
CompanySymbolNewRequest cs=new CompanySymbolNewRequest();
|
||||
cs.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
||||
cs.setCompanySymbolValue("INN-VALUE");
|
||||
csReq.add(cs);
|
||||
}
|
||||
assertNull(multiCompanyServiceFacade.getCompanyIdForCompanySymbols(null, req, csReq));
|
||||
assertNull(companyServiceFacade.getCompanyIdForCompanySymbols(null, req, csReq));
|
||||
{
|
||||
CompanySymbolNewRequest cs=new CompanySymbolNewRequest();
|
||||
cs.setCompanySymbol(CompanySymbol.INN.getKey());
|
||||
cs.setCompanySymbolValue("INN-VALUE");
|
||||
csReq.add(cs);
|
||||
}
|
||||
assertEquals(COMPANY_ID, multiCompanyServiceFacade.getCompanyIdForCompanySymbols(null, req, csReq));
|
||||
assertEquals(COMPANY_ID, companyServiceFacade.getCompanyIdForCompanySymbols(null, req, csReq));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -229,7 +220,7 @@ public class MultiCompanyServiceListenerTest {
|
|||
testReq.setCompanySymbols(null);
|
||||
testReq.setContacts(null);
|
||||
testReq.setClientCodes(null);
|
||||
multiCompanyServiceFacade.fillCompanyId(testReq, COMPANY_ID);
|
||||
companyServiceFacade.fillCompanyId(testReq, COMPANY_ID);
|
||||
assertEquals(COMPANY_ID, testReq.getCompany().getId());
|
||||
assertNotNull(testReq.getProfileDocuments());
|
||||
assertNotNull(testReq.getCompanySymbols());
|
||||
|
|
@ -240,7 +231,7 @@ public class MultiCompanyServiceListenerTest {
|
|||
CompanyGatewayRequest testReq = new CompanyGatewayRequest();
|
||||
testReq.setCompany(new CompanyNewRequest());
|
||||
testReq.setCompanyInfo(new CompanyInfoUpdateRequest());
|
||||
multiCompanyServiceFacade.fillCompanyId(testReq, COMPANY_ID);
|
||||
companyServiceFacade.fillCompanyId(testReq, COMPANY_ID);
|
||||
assertEquals(COMPANY_ID, testReq.getCompany().getId());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,280 @@
|
|||
package ru.spcex.clearing.company.service.v2;
|
||||
|
||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
import static ru.spcex.clearing.test.TestUtils.addRecordToKafka;
|
||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForNew;
|
||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForUpdate;
|
||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import javax.annotation.PostConstruct;
|
||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||
import ru.clearing.platform.dictionary.DocumentTypeDictionary;
|
||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
||||
import ru.spcex.clearing.company.config.validation.CompanySymbolValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.ProfileDocumentValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.RelationValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ClearingMemberCategoryServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyInfoServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.CompanySymbolServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ContactServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.ProfileDocumentServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.facade.RelationServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.listeners.ProfileDocumentServiceListener;
|
||||
import ru.spcex.clearing.company.service.v2.validators.ProfileDocumentServiceValidator;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentUpdateRequest;
|
||||
import ru.spcex.clearing.test.MatcherFactory;
|
||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
BeanConfiguration.class,
|
||||
ValidationConfig.class,
|
||||
ProfileDocumentServiceListener.class,
|
||||
ProfileDocumentServiceFacade.class,
|
||||
ProfileDocumentServiceValidator.class,
|
||||
AccountNotificationHelper.class,
|
||||
ProfileDocumentValidationConfig.class,
|
||||
|
||||
CompanyInfoServiceFacade.class,
|
||||
ContactServiceFacade.class,
|
||||
ClearingMemberCategoryServiceFacade.class,
|
||||
|
||||
CompanyServiceFacade.class, CompanyValidationConfig.class,
|
||||
CompanySymbolServiceFacade.class, CompanySymbolValidationConfig.class,
|
||||
AccountNotificationHelper.class,
|
||||
RelationServiceFacade.class, RelationValidationConfig.class,
|
||||
|
||||
KafkaTestConfig.class,
|
||||
ImdgTestConfig.class})
|
||||
class ProfileDocumentServiceListenerTest {
|
||||
public static final MatcherFactory.Matcher<ProfileDocument> PROFILE_DOCUMENT_MATCHER = usingIgnoringFieldsComparator();
|
||||
private static final int PARTITION = 0;
|
||||
private static final String TOPIC_DESTINATION_PROFILE_DOCUMENT_NEW = Consts.DESTINATION_PROFILE_DOCUMENT_NEW;
|
||||
private static final String TOPIC_DESTINATION_PROFILE_DOCUMENT_UPDATE = Consts.DESTINATION_PROFILE_DOCUMENT_UPDATE;
|
||||
private static final String TOPIC_DESTINATION_PROFILE_DOCUMENT_DELETE = Consts.DESTINATION_PROFILE_DOCUMENT_DELETE;
|
||||
|
||||
private static final Long ID = currentID.getAndIncrement();
|
||||
|
||||
@Autowired
|
||||
ProfileDocumentServiceListener profileDocumentServiceListener;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("hazelcastServiceTest")
|
||||
private ImdgProvider hazelcastServiceTest;
|
||||
|
||||
private Imdg<ProfileDocument> profileDocumentMap;
|
||||
private Imdg<Company> companyMap;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("mockProducer")
|
||||
protected Producer<String, Object> mockProducer;
|
||||
|
||||
private long COMPANY_ID;
|
||||
private Company TEST_COMPANY;
|
||||
|
||||
private DocumentTypes TEST_DOCUMENT_TYPE = DocumentTypes.cio;
|
||||
private String TEST_DOCUMENT_TYPE_ID = TEST_DOCUMENT_TYPE.getKey();
|
||||
|
||||
private DocumentTypes NEW_TEST_DOCUMENT_TYPE = DocumentTypes.edoc;
|
||||
private String NEW_TEST_DOCUMENT_TYPE_ID = NEW_TEST_DOCUMENT_TYPE.getKey();
|
||||
|
||||
private final long PROFILE_DOCUMENT_ID = ID;
|
||||
|
||||
@PostConstruct
|
||||
private void init() {
|
||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
||||
this.profileDocumentMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||
this.companyMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
|
||||
TEST_COMPANY = new Company();
|
||||
TEST_COMPANY.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
COMPANY_ID = companyMap.insert(TEST_COMPANY);
|
||||
|
||||
Imdg<DocumentTypeDictionary> documentTypeDictionaryImdg = hazelcastServiceTest.getImdg(
|
||||
IMDGDistributedNames.Map_DocumentTypeDictionary,
|
||||
DocumentTypeDictionary.class
|
||||
);
|
||||
|
||||
DocumentTypeDictionary documentTypeDictionary = new DocumentTypeDictionary();
|
||||
documentTypeDictionary.setCode(TEST_DOCUMENT_TYPE.getKey());
|
||||
documentTypeDictionary.setName("test_name");
|
||||
documentTypeDictionaryImdg.insert(documentTypeDictionary);
|
||||
|
||||
DocumentTypeDictionary documentTypeDictionary1 = new DocumentTypeDictionary();
|
||||
documentTypeDictionary1.setCode(NEW_TEST_DOCUMENT_TYPE.getKey());
|
||||
documentTypeDictionary1.setName("new_test_name");
|
||||
documentTypeDictionaryImdg.insert(documentTypeDictionary1);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link ProfileDocumentServiceListener#processNewProfileDocumentRequest(BaseRequest)} <br>
|
||||
* Тест проверяет обновление сущности {@link ProfileDocument} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link ProfileDocumentNewRequest}:<br>
|
||||
*/
|
||||
@Test
|
||||
void newProfileDocument() {
|
||||
//ARRANGE
|
||||
ProfileDocumentNewRequest profileDocumentNewRequest = new ProfileDocumentNewRequest();
|
||||
profileDocumentNewRequest.setCompanyId(COMPANY_ID);
|
||||
profileDocumentNewRequest.setDocumentType(TEST_DOCUMENT_TYPE_ID);
|
||||
profileDocumentNewRequest.setIssueDate(LocalDate.now());
|
||||
profileDocumentNewRequest.setIssuePlace("place");
|
||||
profileDocumentNewRequest.setIssuer("issuer");
|
||||
profileDocumentNewRequest.setIssuerCode("issuerCode");
|
||||
profileDocumentNewRequest.setName("name");
|
||||
profileDocumentNewRequest.setNumber("number");
|
||||
profileDocumentNewRequest.setPlace("place");
|
||||
profileDocumentNewRequest.setValidFromDate(LocalDate.now());
|
||||
profileDocumentNewRequest.setValidToDate(LocalDate.now().plus(1, ChronoUnit.DAYS));
|
||||
profileDocumentNewRequest.setLink("link");
|
||||
|
||||
ProfileDocument predictableProfileDocument = new ProfileDocument();
|
||||
predictableProfileDocument.setId(PROFILE_DOCUMENT_ID);
|
||||
predictableProfileDocument.setCompanyId(profileDocumentNewRequest.getCompanyId());
|
||||
predictableProfileDocument.setDocumentType(profileDocumentNewRequest.getDocumentType());
|
||||
predictableProfileDocument.setIssueDate(profileDocumentNewRequest.getIssueDate());
|
||||
predictableProfileDocument.setIssuePlace(profileDocumentNewRequest.getIssuePlace());
|
||||
predictableProfileDocument.setIssuer(profileDocumentNewRequest.getIssuer());
|
||||
predictableProfileDocument.setIssuerCode(profileDocumentNewRequest.getIssuerCode());
|
||||
predictableProfileDocument.setName(profileDocumentNewRequest.getName());
|
||||
predictableProfileDocument.setNumber(profileDocumentNewRequest.getNumber());
|
||||
predictableProfileDocument.setPlace(profileDocumentNewRequest.getPlace());
|
||||
predictableProfileDocument.setValidFromDate(profileDocumentNewRequest.getValidFromDate());
|
||||
predictableProfileDocument.setValidToDate(profileDocumentNewRequest.getValidToDate());
|
||||
predictableProfileDocument.setLink(profileDocumentNewRequest.getLink());
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForNew(profileDocumentNewRequest, ID);
|
||||
|
||||
addRecordToKafka((MockConsumer) profileDocumentServiceListener.getConsumer(), TOPIC_DESTINATION_PROFILE_DOCUMENT_NEW, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
ProfileDocument resultNew = profileDocumentMap.getFirstObjectBySQL(String.format("companyId = %d", COMPANY_ID));
|
||||
predictableProfileDocument.setId(resultNew.getId());
|
||||
PROFILE_DOCUMENT_MATCHER.assertMatch(resultNew, predictableProfileDocument);
|
||||
}
|
||||
|
||||
@Test
|
||||
void updateProfileDocument() {
|
||||
//ARRANGE
|
||||
ProfileDocument existsProfileDocument = new ProfileDocument();
|
||||
existsProfileDocument.setId(ID);
|
||||
existsProfileDocument.setCompanyId(COMPANY_ID);
|
||||
existsProfileDocument.setDocumentType(TEST_DOCUMENT_TYPE_ID);
|
||||
existsProfileDocument.setIssueDate(LocalDate.now());
|
||||
existsProfileDocument.setIssuePlace("place");
|
||||
existsProfileDocument.setIssuer("issuer");
|
||||
existsProfileDocument.setIssuerCode("issuerCode");
|
||||
existsProfileDocument.setName("name");
|
||||
existsProfileDocument.setNumber("number");
|
||||
existsProfileDocument.setPlace("place");
|
||||
existsProfileDocument.setValidFromDate(LocalDate.now());
|
||||
existsProfileDocument.setValidToDate(LocalDate.now().plus(1, ChronoUnit.DAYS));
|
||||
existsProfileDocument.setLink("link");
|
||||
profileDocumentMap.insert(existsProfileDocument);
|
||||
|
||||
ProfileDocument predictableProfileDocument = new ProfileDocument();
|
||||
predictableProfileDocument.setId(PROFILE_DOCUMENT_ID);
|
||||
predictableProfileDocument.setCompanyId(COMPANY_ID);
|
||||
predictableProfileDocument.setDocumentType(NEW_TEST_DOCUMENT_TYPE_ID);
|
||||
predictableProfileDocument.setIssueDate(LocalDate.now());
|
||||
predictableProfileDocument.setIssuePlace("new_place");
|
||||
predictableProfileDocument.setIssuer("new_issuer");
|
||||
predictableProfileDocument.setIssuerCode("new_issuerCode");
|
||||
predictableProfileDocument.setName("new_name");
|
||||
predictableProfileDocument.setNumber("new_number");
|
||||
predictableProfileDocument.setPlace("new_place");
|
||||
predictableProfileDocument.setValidFromDate(LocalDate.now());
|
||||
predictableProfileDocument.setValidToDate(LocalDate.now().plus(1, ChronoUnit.DAYS));
|
||||
predictableProfileDocument.setLink("new_link");
|
||||
|
||||
ProfileDocumentUpdateRequest profileDocumentUpdateRequest = new ProfileDocumentUpdateRequest();
|
||||
profileDocumentUpdateRequest.setId(PROFILE_DOCUMENT_ID);
|
||||
profileDocumentUpdateRequest.setCompanyId(COMPANY_ID);
|
||||
profileDocumentUpdateRequest.setDocumentType(NEW_TEST_DOCUMENT_TYPE_ID);
|
||||
profileDocumentUpdateRequest.setIssueDate(LocalDate.now());
|
||||
profileDocumentUpdateRequest.setIssuePlace("new_place");
|
||||
profileDocumentUpdateRequest.setIssuer("new_issuer");
|
||||
profileDocumentUpdateRequest.setIssuerCode("new_issuerCode");
|
||||
profileDocumentUpdateRequest.setName("new_name");
|
||||
profileDocumentUpdateRequest.setNumber("new_number");
|
||||
profileDocumentUpdateRequest.setPlace("new_place");
|
||||
profileDocumentUpdateRequest.setValidFromDate(LocalDate.now());
|
||||
profileDocumentUpdateRequest.setValidToDate(LocalDate.now().plus(1, ChronoUnit.DAYS));
|
||||
profileDocumentUpdateRequest.setLink("new_link");
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForUpdate(profileDocumentUpdateRequest, ID);
|
||||
|
||||
addRecordToKafka((MockConsumer) profileDocumentServiceListener.getConsumer(), TOPIC_DESTINATION_PROFILE_DOCUMENT_UPDATE, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
ProfileDocument resultUpdate = profileDocumentMap.getFirstObjectBySQL(String.format("companyId = %d", COMPANY_ID));
|
||||
// predictableProfileDocument.setId(resultUpdate.getId());
|
||||
PROFILE_DOCUMENT_MATCHER.assertMatch(resultUpdate, predictableProfileDocument);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void deleteProfileDocument() {
|
||||
//ARRANGE
|
||||
ProfileDocument existsProfileDocument = new ProfileDocument();
|
||||
existsProfileDocument.setId(PROFILE_DOCUMENT_ID);
|
||||
existsProfileDocument.setCompanyId(COMPANY_ID);
|
||||
existsProfileDocument.setDocumentType(TEST_DOCUMENT_TYPE_ID);
|
||||
existsProfileDocument.setIssueDate(LocalDate.now());
|
||||
existsProfileDocument.setIssuePlace("place");
|
||||
existsProfileDocument.setIssuer("issuer");
|
||||
existsProfileDocument.setIssuerCode("issuerCode");
|
||||
existsProfileDocument.setName("name");
|
||||
existsProfileDocument.setNumber("number");
|
||||
existsProfileDocument.setPlace("place");
|
||||
existsProfileDocument.setValidFromDate(LocalDate.now());
|
||||
existsProfileDocument.setValidToDate(LocalDate.now().plus(1, ChronoUnit.DAYS));
|
||||
existsProfileDocument.setLink("link");
|
||||
profileDocumentMap.insert(existsProfileDocument);
|
||||
|
||||
CommonDeleteRequest profileDocumentDeleteRequest = new CommonDeleteRequest();
|
||||
profileDocumentDeleteRequest.setId(PROFILE_DOCUMENT_ID);
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForUpdate(profileDocumentDeleteRequest, ID);
|
||||
|
||||
addRecordToKafka((MockConsumer) profileDocumentServiceListener.getConsumer(), TOPIC_DESTINATION_PROFILE_DOCUMENT_DELETE, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
ProfileDocument resultUpdate = profileDocumentMap.getSingleObjectByID(PROFILE_DOCUMENT_ID);
|
||||
Assertions.assertNull(resultUpdate);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,229 @@
|
|||
package ru.spcex.clearing.company.service.v2;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
import static ru.spcex.clearing.test.TestUtils.addRecordToKafka;
|
||||
import static ru.spcex.clearing.test.TestUtils.clearAllInImdg;
|
||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForNew;
|
||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForUpdate;
|
||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.relation.Relation;
|
||||
import ru.clearing.platform.dictionary.ClearingCategoryDictionary;
|
||||
import ru.clearing.platform.dictionary.ServiceStatusDictionary;
|
||||
import ru.clearing.platform.dictionary.WorkflowStatusDictionary;
|
||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
||||
import ru.spcex.clearing.company.config.validation.RelationValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
||||
import ru.spcex.clearing.company.service.v2.facade.RelationServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.listeners.RelationServiceListener;
|
||||
import ru.spcex.clearing.company.service.v2.validators.RelationServiceValidator;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationUpdateRequest;
|
||||
import ru.spcex.clearing.test.MatcherFactory;
|
||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
BeanConfiguration.class,
|
||||
ValidationConfig.class,
|
||||
RelationServiceListener.class,
|
||||
RelationServiceFacade.class,
|
||||
RelationServiceValidator.class,
|
||||
AccountNotificationHelper.class,
|
||||
RelationValidationConfig.class,
|
||||
KafkaTestConfig.class,
|
||||
ImdgTestConfig.class})
|
||||
class RelationServiceListenerTest {
|
||||
|
||||
public static final MatcherFactory.Matcher<Relation> RELATION_MATCHER = usingIgnoringFieldsComparator("created", "updated");
|
||||
private static final int PARTITION = 0;
|
||||
|
||||
private static final Long ID = currentID.getAndIncrement();
|
||||
|
||||
@Autowired
|
||||
RelationServiceListener relationServiceListener;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("hazelcastServiceTest")
|
||||
private ImdgProvider hazelcastServiceTest;
|
||||
|
||||
private Imdg<Relation> relationMap;
|
||||
private Imdg<Company> companyMap;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("mockProducer")
|
||||
protected Producer<String, Object> mockProducer;
|
||||
|
||||
private long COMPANY_ID;
|
||||
|
||||
private final long RELATION_ID = ID;
|
||||
|
||||
@PostConstruct
|
||||
private void init() {
|
||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
||||
this.relationMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||
this.companyMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
|
||||
Company testCompany = new Company();
|
||||
testCompany.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
COMPANY_ID = companyMap.insert(testCompany);
|
||||
|
||||
Imdg<WorkflowStatusDictionary> workflowStatusDictionaryImdg = hazelcastServiceTest.getImdg(
|
||||
IMDGDistributedNames.Map_WorkflowStatusDictionary,
|
||||
WorkflowStatusDictionary.class
|
||||
);
|
||||
WorkflowStatusDictionary workflowStatusDictionary = new WorkflowStatusDictionary();
|
||||
workflowStatusDictionary.setId(1L);
|
||||
workflowStatusDictionary.setCode(WorkflowStatus.Active.getKey());
|
||||
workflowStatusDictionary.setName("active");
|
||||
workflowStatusDictionaryImdg.insert(workflowStatusDictionary);
|
||||
workflowStatusDictionary = new WorkflowStatusDictionary();
|
||||
workflowStatusDictionary.setId(2L);
|
||||
workflowStatusDictionary.setCode(WorkflowStatus.Blocked.getKey());
|
||||
workflowStatusDictionary.setName("not active");
|
||||
workflowStatusDictionaryImdg.insert(workflowStatusDictionary);
|
||||
|
||||
{
|
||||
Imdg<ServiceStatusDictionary> serviceStatusDictionaryImdg = hazelcastServiceTest.getImdg(
|
||||
IMDGDistributedNames.Map_ServiceStatusDictionary,
|
||||
ServiceStatusDictionary.class
|
||||
);
|
||||
ServiceStatusDictionary status=new ServiceStatusDictionary();
|
||||
status.setId(1L);
|
||||
status.setCode("ACTV");
|
||||
status.setName("\"ACTV\"");
|
||||
serviceStatusDictionaryImdg.insert(status);
|
||||
}
|
||||
|
||||
Imdg<ClearingCategoryDictionary> clearingCategoryDictionaryImdg = hazelcastServiceTest.getImdg(
|
||||
IMDGDistributedNames.Map_ClearingCategoryDictionary,
|
||||
ClearingCategoryDictionary.class
|
||||
);
|
||||
ClearingCategoryDictionary clearingCategoryDictionary = new ClearingCategoryDictionary();
|
||||
clearingCategoryDictionary.setId(1L);
|
||||
clearingCategoryDictionary.setCode(ClearingCategory.I.getKey());
|
||||
clearingCategoryDictionary.setName("I");
|
||||
clearingCategoryDictionaryImdg.insert(clearingCategoryDictionary);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void newRelation() {
|
||||
//ARRANGE
|
||||
clearAllInImdg(relationMap);
|
||||
RelationNewRequest relationNewRequest = new RelationNewRequest();
|
||||
relationNewRequest.setCompanyId(COMPANY_ID);
|
||||
relationNewRequest.setServiceStatus("ACTV");
|
||||
relationNewRequest.setClearingMemberCategory("I");
|
||||
relationNewRequest.setComment(null);
|
||||
|
||||
Relation predictableRelation = new Relation();
|
||||
predictableRelation.setId(RELATION_ID);
|
||||
predictableRelation.setConsumerId(relationNewRequest.companyId);
|
||||
predictableRelation.setService("MKR");
|
||||
predictableRelation.setServiceProduct("ZERO");
|
||||
predictableRelation.setSupplierId(1L);
|
||||
predictableRelation.setServiceStatus("ACTV");
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForNew(relationNewRequest, ID);
|
||||
|
||||
addRecordToKafka((MockConsumer) relationServiceListener.getConsumer(), Consts.DESTINATION_RELATION_NEW, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
Relation resultNew = relationMap.getFirstObjectBySQL("serviceStatus=ACTV"); // String.format("supplierId = %d", COMPANY_ID));
|
||||
predictableRelation.setId(resultNew.getId());
|
||||
RELATION_MATCHER.assertMatch(resultNew, predictableRelation);
|
||||
}
|
||||
|
||||
@Test
|
||||
void updateRelation() {
|
||||
//ARRANGE
|
||||
Relation existsRelation = new Relation();
|
||||
existsRelation.setId(ID);
|
||||
existsRelation.setConsumerId(COMPANY_ID);
|
||||
existsRelation.setSupplierId(1L);
|
||||
existsRelation.setComment("Test ONE");
|
||||
existsRelation.setServiceStatus("ACTV");
|
||||
existsRelation.setServiceProduct("PROD");
|
||||
existsRelation.setService("MKR");
|
||||
relationMap.insert(existsRelation);
|
||||
|
||||
Relation predictableRelation = new Relation();
|
||||
predictableRelation.setId(ID);
|
||||
predictableRelation.setConsumerId(COMPANY_ID);
|
||||
predictableRelation.setSupplierId(1L);
|
||||
predictableRelation.setComment("Another Me - ONE");
|
||||
predictableRelation.setServiceStatus("ACTV");
|
||||
predictableRelation.setServiceProduct("PROD");
|
||||
predictableRelation.setService("MKR");
|
||||
|
||||
RelationUpdateRequest relationUpdateRequest = new RelationUpdateRequest();
|
||||
relationUpdateRequest.setId(RELATION_ID);
|
||||
relationUpdateRequest.setComment("Another Me - ONE");
|
||||
relationUpdateRequest.setServiceStatus("ACTV");
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForUpdate(relationUpdateRequest, ID);
|
||||
|
||||
addRecordToKafka((MockConsumer) relationServiceListener.getConsumer(), Consts.DESTINATION_RELATION_UPDATE, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
Relation resultUpdate = relationMap.getFirstObjectBySQL(String.format("id = %d", RELATION_ID));
|
||||
// predictableProfileDocument.setId(resultUpdate.getId());
|
||||
RELATION_MATCHER.assertMatch(resultUpdate, predictableRelation);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void deleteProfileDocument() {
|
||||
//ARRANGE
|
||||
Relation existsRelation = new Relation();
|
||||
existsRelation.setId(ID);
|
||||
existsRelation.setConsumerId(COMPANY_ID);
|
||||
existsRelation.setSupplierId(1L);
|
||||
existsRelation.setComment("Test ONE");
|
||||
existsRelation.setServiceStatus("ACTV");
|
||||
existsRelation.setServiceProduct("PROD");
|
||||
existsRelation.setService("MKR");
|
||||
relationMap.insert(existsRelation);
|
||||
|
||||
CommonDeleteRequest profileDocumentDeleteRequest = new CommonDeleteRequest();
|
||||
profileDocumentDeleteRequest.setId(RELATION_ID);
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForUpdate(profileDocumentDeleteRequest, ID);
|
||||
|
||||
addRecordToKafka((MockConsumer) relationServiceListener.getConsumer(), Consts.DESTINATION_RELATION_DELETE, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
Relation resultUpdate = relationMap.getSingleObjectByID(RELATION_ID);
|
||||
// Assertions.assertNull(resultUpdate);
|
||||
assertEquals(WorkflowStatus.Blocked.getKey(), resultUpdate.getServiceStatus());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,237 @@
|
|||
package ru.spcex.clearing.company.service.v2;
|
||||
|
||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
import static ru.spcex.clearing.test.TestUtils.addRecordToKafka;
|
||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForDelete;
|
||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForNew;
|
||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForUpdate;
|
||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Map;
|
||||
import javax.annotation.PostConstruct;
|
||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanyRoleSet;
|
||||
import ru.clearing.classes.statics.data.company.SettlementHouseProperties;
|
||||
import ru.clearing.classes.statics.data.profile.CompanyInfo;
|
||||
import ru.clearing.platform.dictionary.AbstractDictionary;
|
||||
import ru.clearing.platform.dictionary.AllowedDictionary;
|
||||
import ru.clearing.platform.dictionary.CompanyRoleDictionary;
|
||||
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.CompanySymbolValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.SettlementHousePropertiesValidationConfig;
|
||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
||||
import ru.spcex.clearing.company.service.v2.facade.SettlementHousePropertiesServiceFacade;
|
||||
import ru.spcex.clearing.company.service.v2.listeners.SettlementHousePropertiesServiceListener;
|
||||
import ru.spcex.clearing.company.service.v2.validators.SettlementHousePropertiesServiceValidator;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyUpdateRequest;
|
||||
import ru.spcex.clearing.test.MatcherFactory;
|
||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
||||
import ru.spcex.platform.enumeration.CompanyRole;
|
||||
import ru.spcex.platform.enumeration.CurrencyCode;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
SettlementHousePropertiesServiceListener.class,
|
||||
SettlementHousePropertiesServiceFacade.class,
|
||||
SettlementHousePropertiesServiceValidator.class,
|
||||
SettlementHousePropertiesValidationConfig.class,
|
||||
CompanySymbolValidationConfig.class,
|
||||
|
||||
ValidationConfig.class,
|
||||
BeanConfiguration.class,
|
||||
|
||||
KafkaTestConfig.class,
|
||||
ImdgTestConfig.class})
|
||||
class SettlementHousePropertiesServiceListenerTest {
|
||||
public static final MatcherFactory.Matcher<SettlementHouseProperties> SETTLEMENT_HOUSE_PROPERTIES_MATCHER = usingIgnoringFieldsComparator();
|
||||
private static final int PARTITION = 0;
|
||||
private static final Long ID = 10L;
|
||||
private static final Long COMPANY_ID = 105L;
|
||||
|
||||
@Autowired
|
||||
SettlementHousePropertiesServiceListener settlementHousePropertiesServiceListener;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("hazelcastServiceTest")
|
||||
private ImdgProvider hazelcastServiceTest;
|
||||
|
||||
private Imdg<Company> companyImdg;
|
||||
private Imdg<CompanyRoleSet> companyRoleSetImdg;
|
||||
private Imdg<SettlementHouseProperties> settlementHousePropertiesImdg;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("mockProducer")
|
||||
protected Producer<String, Object> mockProducer;
|
||||
|
||||
@PostConstruct
|
||||
private void init() {
|
||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
||||
companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
companyRoleSetImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class);
|
||||
settlementHousePropertiesImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_SettlementHouseProperties, SettlementHouseProperties.class);
|
||||
|
||||
// Словари для теста, применяются в ValidationConfig
|
||||
putToDictionary(IMDGDistributedNames.Map_WorkflowStatusDictionary, new WorkflowStatusDictionary(), "ACTV");
|
||||
putToDictionary(IMDGDistributedNames.Map_CompanySymbolDictionary, new CompanySymbolDictionary(), "CLRC");
|
||||
putToDictionary(IMDGDistributedNames.Map_AllowedDictionary, new AllowedDictionary(), "ALWD");
|
||||
putToDictionary(IMDGDistributedNames.Map_CompanyRoleDictionary, new CompanyRoleDictionary(), "RPRT");
|
||||
putToDictionary(IMDGDistributedNames.Map_CompanyRoleDictionary, new CompanyRoleDictionary(), "SETH");
|
||||
putToDictionary(IMDGDistributedNames.Map_CurrencyCodeDictionary, new AllowedDictionary(), "RUB");
|
||||
putToDictionary(IMDGDistributedNames.Map_CurrencyCodeDictionary, new AllowedDictionary(), "AED");
|
||||
putToDictionary(IMDGDistributedNames.Map_CurrencyCodeDictionary, new AllowedDictionary(), "INR");
|
||||
|
||||
Company comp = new Company();
|
||||
comp.setId(COMPANY_ID);
|
||||
comp.setCreated(Instant.now());
|
||||
comp.setFullName("Test LLC inc");
|
||||
comp.setShortName("Test LLC");
|
||||
comp.setProfile(new CompanyInfo());
|
||||
comp.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
companyImdg.insert(comp);
|
||||
CompanyRoleSet crs = new CompanyRoleSet();
|
||||
crs.setId(COMPANY_ID);
|
||||
crs.setCompanyId(COMPANY_ID);
|
||||
crs.setCompanyRole(CompanyRole.SETH.getKey());
|
||||
crs.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
companyRoleSetImdg.insert(crs);
|
||||
}
|
||||
|
||||
private <D extends AbstractDictionary /*SpcexObjectBase & Dictionary*/> void putToDictionary(String mapName, D object, String code) {
|
||||
Imdg<D> dMap = (Imdg<D>) hazelcastServiceTest.getImdg(mapName, object.getClass());
|
||||
object.setId(1000L + code.hashCode() % 1000);
|
||||
object.setCode(code);
|
||||
object.setName("name of " + code);
|
||||
// assert dMap.getSingleObjectByID(object.getId()) == null;
|
||||
dMap.insert(object);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link SettlementHousePropertiesServiceListener#processNewSettlementHousePropertyRequest(BaseRequest)} (BaseRequest)}<br>
|
||||
* * Тест проверяет создание сущности {@link SettlementHouseProperties} в IMDG при передаче из Apache Kafka.<br>
|
||||
* * Входной запрос {@link SettlementHousePropertyNewRequest}:<br>
|
||||
* * {@link SettlementHousePropertyNewRequest#getCompanyId()} - COMPANY_ID<br>
|
||||
* * {@link SettlementHousePropertyNewRequest#getCurrencyCode()} - AED<br>
|
||||
*/
|
||||
@Test
|
||||
void settlementHousePropertiesNew1() {
|
||||
//ARRANGE
|
||||
final String DESTINATION_NEW = Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_NEW;
|
||||
companyImdg.size();
|
||||
|
||||
SettlementHousePropertyNewRequest newRequest = new SettlementHousePropertyNewRequest();
|
||||
newRequest.setCompanyId(COMPANY_ID);
|
||||
newRequest.setCurrencyCode("AED"); // RUB разрешён только для COMPANY_ID=2.
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForNew(newRequest, ID);
|
||||
addRecordToKafka((MockConsumer) settlementHousePropertiesServiceListener.getConsumer(), DESTINATION_NEW, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
|
||||
SettlementHouseProperties resultNew = settlementHousePropertiesImdg.getFirstObjectByFieldValues(Map.of("companyId", COMPANY_ID));
|
||||
Assertions.assertNotNull(resultNew);
|
||||
Assertions.assertEquals("AED", resultNew.getCurrencyCode());
|
||||
Assertions.assertEquals(COMPANY_ID, resultNew.getCompanyId());
|
||||
|
||||
// CLEAN UP
|
||||
settlementHousePropertiesImdg.delete(resultNew);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link SettlementHousePropertiesServiceListener#processUpdateSettlementHousePropertyRequest(BaseRequest)} (BaseRequest)}<br>
|
||||
* * Тест проверяет обновление сущности {@link SettlementHouseProperties} в IMDG при передаче из Apache Kafka.<br>
|
||||
* * Входной запрос {@link SettlementHousePropertyUpdateRequest}:<br>
|
||||
* * {@link SettlementHousePropertyUpdateRequest#getId()} - ID<br>
|
||||
* * {@link SettlementHousePropertyUpdateRequest#getCompanyId()} - COMPANY_ID<br>
|
||||
* * {@link SettlementHousePropertyUpdateRequest#getCurrencyCode()} - AED<br>
|
||||
*/
|
||||
@Test
|
||||
void companyRoleSetUpdate() {
|
||||
final String DESTINATION_UPDATE = Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_UPDATE;
|
||||
//ARRANGE
|
||||
SettlementHouseProperties existsSettlementHouseProperties = new SettlementHouseProperties();
|
||||
existsSettlementHouseProperties.setId(ID);
|
||||
existsSettlementHouseProperties.setCompanyId(COMPANY_ID);
|
||||
existsSettlementHouseProperties.setCurrencyCode("INR"); // Индийская рупия
|
||||
settlementHousePropertiesImdg.insert(existsSettlementHouseProperties);
|
||||
|
||||
SettlementHousePropertyUpdateRequest settlementHousePropertyUpdateRequest = new SettlementHousePropertyUpdateRequest();
|
||||
settlementHousePropertyUpdateRequest.setId(ID);
|
||||
settlementHousePropertyUpdateRequest.setCompanyId(COMPANY_ID);
|
||||
settlementHousePropertyUpdateRequest.setCurrencyCode("AED");
|
||||
|
||||
SettlementHouseProperties predictableSHP = new SettlementHouseProperties();
|
||||
predictableSHP.setId(ID);
|
||||
predictableSHP.setCompanyId(COMPANY_ID);
|
||||
predictableSHP.setCurrencyCode("AED");
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForUpdate(settlementHousePropertyUpdateRequest, ID);
|
||||
|
||||
addRecordToKafka((MockConsumer) settlementHousePropertiesServiceListener.getConsumer(), DESTINATION_UPDATE, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
|
||||
SettlementHouseProperties resultUpdating = settlementHousePropertiesImdg.getSingleObjectByID(ID);
|
||||
SETTLEMENT_HOUSE_PROPERTIES_MATCHER.assertMatch(resultUpdating, predictableSHP);
|
||||
|
||||
// CLEAN UP
|
||||
settlementHousePropertiesImdg.delete(resultUpdating);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@link SettlementHousePropertiesServiceListener#processDeleteSettlementHousePropertyRequest(BaseRequest)} (BaseRequest)} (BaseRequest)}<br>
|
||||
* Тест проверяет удаление сущности {@link SettlementHouseProperties} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link CommonDeleteRequest}:<br>
|
||||
* {@link CommonDeleteRequest#id} - Идентификатор записи<br>
|
||||
*/
|
||||
@Test
|
||||
void deleteSHP() throws InterruptedException {
|
||||
//ARRANGE
|
||||
final Long ID = 101L;
|
||||
SettlementHouseProperties existsSettlementHouseProperties = new SettlementHouseProperties();
|
||||
existsSettlementHouseProperties.setId(ID);
|
||||
existsSettlementHouseProperties.setCompanyId(COMPANY_ID);
|
||||
existsSettlementHouseProperties.setCurrencyCode(CurrencyCode.RUR.getKey());
|
||||
settlementHousePropertiesImdg.insert(existsSettlementHouseProperties);
|
||||
|
||||
CommonDeleteRequest commonDeleteRequest = new CommonDeleteRequest();
|
||||
commonDeleteRequest.setId(ID);
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForDelete(commonDeleteRequest, ID);
|
||||
addRecordToKafka((MockConsumer) settlementHousePropertiesServiceListener.getConsumer(), Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_DELETE, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingSendAndCheckRecord(ID, mockProducer);
|
||||
|
||||
//Company resultDeleting = companyImdg.getSingleObjectByID(ID);
|
||||
SettlementHouseProperties resultDeleting = settlementHousePropertiesImdg.getFirstObjectBySQL("id=" + ID);
|
||||
Assertions.assertNull(resultDeleting);
|
||||
}
|
||||
}
|
||||
|
|
@ -23,4 +23,27 @@ public class ClearingMemberCategoryUpdateRequest {
|
|||
public void setClearingMemberCategory(String clearingMemberCategory) {
|
||||
this.clearingMemberCategory = clearingMemberCategory;
|
||||
}
|
||||
|
||||
public static Builder builder() {
|
||||
return new ClearingMemberCategoryUpdateRequest().new Builder();
|
||||
}
|
||||
|
||||
public class Builder {
|
||||
private Builder() {
|
||||
}
|
||||
|
||||
public Builder id(Long id) {
|
||||
ClearingMemberCategoryUpdateRequest.this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder clearingMemberCategory(String clearingMemberCategory) {
|
||||
ClearingMemberCategoryUpdateRequest.this.clearingMemberCategory = clearingMemberCategory;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ClearingMemberCategoryUpdateRequest build() {
|
||||
return ClearingMemberCategoryUpdateRequest.this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,4 +47,37 @@ public class CompanySymbolUpdateRequest {
|
|||
public void setCompanySymbolValue(String companySymbolValue) {
|
||||
this.companySymbolValue = companySymbolValue;
|
||||
}
|
||||
|
||||
public static Builder builder() {
|
||||
return new CompanySymbolUpdateRequest().new Builder();
|
||||
}
|
||||
|
||||
public class Builder {
|
||||
private Builder() {
|
||||
}
|
||||
|
||||
public Builder id(Long id) {
|
||||
CompanySymbolUpdateRequest.this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder companyId(Long companyId) {
|
||||
CompanySymbolUpdateRequest.this.companyId = companyId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder companySymbol(String companySymbol) {
|
||||
CompanySymbolUpdateRequest.this.companySymbol = companySymbol;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder companySymbolValue(String companySymbolValue) {
|
||||
CompanySymbolUpdateRequest.this.companySymbolValue = companySymbolValue;
|
||||
return this;
|
||||
}
|
||||
|
||||
public CompanySymbolUpdateRequest build() {
|
||||
return CompanySymbolUpdateRequest.this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,4 +33,32 @@ public class ContactUpdateRequest {
|
|||
public void setContactValue(String contactValue) {
|
||||
this.contactValue = contactValue;
|
||||
}
|
||||
|
||||
public static Builder builder() {
|
||||
return new ContactUpdateRequest().new Builder();
|
||||
}
|
||||
|
||||
public class Builder {
|
||||
private Builder() {
|
||||
}
|
||||
|
||||
public Builder id(Long id) {
|
||||
ContactUpdateRequest.this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder contactType(String contactType) {
|
||||
ContactUpdateRequest.this.contactType = contactType;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder contactValue(String contactValue) {
|
||||
ContactUpdateRequest.this.contactValue = contactValue;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ContactUpdateRequest build() {
|
||||
return ContactUpdateRequest.this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -145,4 +145,82 @@ public class ProfileDocumentUpdateRequest {
|
|||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public static Builder builder() {
|
||||
return new ProfileDocumentUpdateRequest().new Builder();
|
||||
}
|
||||
|
||||
public class Builder {
|
||||
private Builder() {
|
||||
}
|
||||
|
||||
public Builder id(Long id) {
|
||||
ProfileDocumentUpdateRequest.this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder companyId(Long companyId) {
|
||||
ProfileDocumentUpdateRequest.this.companyId = companyId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder documentType(String documentType) {
|
||||
ProfileDocumentUpdateRequest.this.documentType = documentType;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder issueDate(LocalDate issueDate) {
|
||||
ProfileDocumentUpdateRequest.this.issueDate = issueDate;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder issuePlace(String issuePlace) {
|
||||
ProfileDocumentUpdateRequest.this.issuePlace = issuePlace;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder issuer(String issuer) {
|
||||
ProfileDocumentUpdateRequest.this.issuer = issuer;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder issuerCode(String issuerCode) {
|
||||
ProfileDocumentUpdateRequest.this.issuerCode = issuerCode;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder name(String name) {
|
||||
ProfileDocumentUpdateRequest.this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder number(String number) {
|
||||
ProfileDocumentUpdateRequest.this.number = number;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder place(String place) {
|
||||
ProfileDocumentUpdateRequest.this.place = place;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder validFromDate(LocalDate validFromDate) {
|
||||
ProfileDocumentUpdateRequest.this.validFromDate = validFromDate;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder validToDate(LocalDate validToDate) {
|
||||
ProfileDocumentUpdateRequest.this.validToDate = validToDate;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder link(String link) {
|
||||
ProfileDocumentUpdateRequest.this.link = link;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ProfileDocumentUpdateRequest build() {
|
||||
return ProfileDocumentUpdateRequest.this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue