company-service http://jira.mfd.msk:8088/browse/CLS-259 исправления
This commit is contained in:
parent
cdd6a0996f
commit
1b98981c9f
5 changed files with 66 additions and 10 deletions
|
|
@ -73,7 +73,7 @@ public class ContactValidationConfig {
|
||||||
IMDGDistributedNames.Map_Contact,
|
IMDGDistributedNames.Map_Contact,
|
||||||
Contact.class,
|
Contact.class,
|
||||||
CompanyErrors.RequiredFieldEmpty,
|
CompanyErrors.RequiredFieldEmpty,
|
||||||
CompanyErrors.CompanyNotFound,
|
CompanyErrors.ContactNotFound,
|
||||||
contact -> {
|
contact -> {
|
||||||
if (contactUpdateRequest.getContactType() == null) return null;
|
if (contactUpdateRequest.getContactType() == null) return null;
|
||||||
if (!contactUpdateRequest.getContactType().equalsIgnoreCase(contact.getContactType())) {
|
if (!contactUpdateRequest.getContactType().equalsIgnoreCase(contact.getContactType())) {
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ public class ProfileDocumentValidationConfig {
|
||||||
Company.class,
|
Company.class,
|
||||||
CompanyErrors.RequiredFieldEmpty,
|
CompanyErrors.RequiredFieldEmpty,
|
||||||
CompanyErrors.CompanyNotFound,
|
CompanyErrors.CompanyNotFound,
|
||||||
company -> WorkflowStatus.Active.getKey().equals(company.getWorkflowStatus()) ? null : CompanyErrors.CompanyDisabled),
|
company -> WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? null : CompanyErrors.CompanyDisabled),
|
||||||
DictionaryPresentRule.instance("documentType",
|
DictionaryPresentRule.instance("documentType",
|
||||||
ProfileDocumentNewRequest::getDocumentType,
|
ProfileDocumentNewRequest::getDocumentType,
|
||||||
IMDGDistributedNames.Map_DocumentTypeDictionary,
|
IMDGDistributedNames.Map_DocumentTypeDictionary,
|
||||||
|
|
@ -138,7 +138,15 @@ public class ProfileDocumentValidationConfig {
|
||||||
IMDGDistributedNames.Map_ProfileDocument,
|
IMDGDistributedNames.Map_ProfileDocument,
|
||||||
ProfileDocument.class,
|
ProfileDocument.class,
|
||||||
CompanyErrors.RequiredFieldEmpty,
|
CompanyErrors.RequiredFieldEmpty,
|
||||||
CompanyErrors.RecordNotFound)
|
CompanyErrors.RecordNotFound,
|
||||||
|
profileDoc -> {
|
||||||
|
Imdg<Company> companyImdg = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
|
Company company = companyImdg.getSingleObjectByID(profileDoc.getCompanyId());
|
||||||
|
if (company == null) {
|
||||||
|
return CompanyErrors.CompanyNotFound;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
})
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,14 +22,18 @@ import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
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 ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class CompanyInfoService extends QueueConsumer implements InitializingBean {
|
public class CompanyInfoService extends QueueConsumer implements InitializingBean {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
private final ImdgProvider imdgProvider;
|
||||||
private final Imdg<Company> companyMap;
|
private final Imdg<Company> companyMap;
|
||||||
protected final CompanyService companyService;
|
protected final CompanyService companyService;
|
||||||
private final RequestHelper requestHelper;
|
private final RequestHelper requestHelper;
|
||||||
|
|
@ -46,6 +50,7 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea
|
||||||
Function<CompanyInfoUpdateRequest, IValidator> companyInfoUpdateRequestValidator) {
|
Function<CompanyInfoUpdateRequest, IValidator> companyInfoUpdateRequestValidator) {
|
||||||
super(kafkaQueue, kafkaProducer);
|
super(kafkaQueue, kafkaProducer);
|
||||||
this.companyService = companyService;
|
this.companyService = companyService;
|
||||||
|
this.imdgProvider = imdgProvider;
|
||||||
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
this.validationHelper = validationHelper;
|
this.validationHelper = validationHelper;
|
||||||
this.userRoleVerification = userRoleVerification;
|
this.userRoleVerification = userRoleVerification;
|
||||||
|
|
@ -56,16 +61,16 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() {
|
public void afterPropertiesSet() {
|
||||||
callback(CompanyInfoUpdateRequest.class)
|
callback(CompanyInfoUpdateRequest.class)
|
||||||
.setFunction(this::companyInfoUpdate)
|
.setFunction(request -> requestHelper.requestFunction(this::companyInfoUpdate, request))
|
||||||
.forDestination(Consts.DESTINATION_COMPANY_INFO_UPDATE, callbacks::put);
|
.forDestination(Consts.DESTINATION_COMPANY_INFO_UPDATE, callbacks::put);
|
||||||
callback(CompanyInfoUpdateRequest.class)
|
callback(CompanyInfoUpdateRequest.class)
|
||||||
.setFunction(this::companyInfoUpdate)
|
.setFunction(request -> requestHelper.requestFunction(this::companyInfoUpdate, request))
|
||||||
.forDestination(Consts.DESTINATION_COMPANY_INFO_NEW, callbacks::put); // логика заполнения одинакова с companyInfoUpdate
|
.forDestination(Consts.DESTINATION_COMPANY_INFO_NEW, callbacks::put); // логика заполнения одинакова с companyInfoUpdate
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public RequestInfoUpdate companyInfoUpdate(BaseRequest<CompanyInfoUpdateRequest> companyInfoReq) {
|
public RequestInfoUpdate companyInfoUpdate(BaseRequest<CompanyInfoUpdateRequest> companyInfoReq) throws ValidationException {
|
||||||
CompanyInfoUpdateRequest req = companyInfoReq.getRequestPayload();
|
CompanyInfoUpdateRequest req = companyInfoReq.getRequestPayload();
|
||||||
log.debug("{} received", req.getClass().getSimpleName());
|
log.debug("{} received", req.getClass().getSimpleName());
|
||||||
{ // Валидация, ValidationException
|
{ // Валидация, ValidationException
|
||||||
|
|
@ -81,6 +86,7 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea
|
||||||
log.trace("Company {} not found", req.getId());
|
log.trace("Company {} not found", req.getId());
|
||||||
return requestHelper.makeErrorResponse(companyInfoReq, CompanyErrors.CompanyNotFound, companyInfoReq.getId());
|
return requestHelper.makeErrorResponse(companyInfoReq, CompanyErrors.CompanyNotFound, companyInfoReq.getId());
|
||||||
}
|
}
|
||||||
|
company.setUpdated(Instant.now());
|
||||||
CompanyInfo companyInfo = company.getProfile();
|
CompanyInfo companyInfo = company.getProfile();
|
||||||
|
|
||||||
companyInfo.setCorporationSoleType(req.getCorporationSoleType());
|
companyInfo.setCorporationSoleType(req.getCorporationSoleType());
|
||||||
|
|
@ -93,8 +99,39 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea
|
||||||
companyInfo.setShortNameEng(req.getShortNameEng());
|
companyInfo.setShortNameEng(req.getShortNameEng());
|
||||||
companyInfo.setFullNameEng(req.getFullNameEng());
|
companyInfo.setFullNameEng(req.getFullNameEng());
|
||||||
|
|
||||||
company.setUpdated(Instant.now());
|
company.setShortName(req.getShortName());
|
||||||
companyMap.update(company);
|
company.setFullName(req.getFullName());
|
||||||
|
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.relationHelper.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());
|
log.debug("successfully CompanyInfo processed, id {}", companyInfo.getId());
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
|
||||||
|
|
@ -174,8 +174,10 @@ public class ProfileDocumentService extends QueueConsumer implements Initializin
|
||||||
ProfileDocument profileDocument = profileDocumentMap.getSingleObjectByID(profileDocumentUpdateRequest.getId());
|
ProfileDocument profileDocument = profileDocumentMap.getSingleObjectByID(profileDocumentUpdateRequest.getId());
|
||||||
|
|
||||||
String prevDocType = profileDocument.getDocumentType();
|
String prevDocType = profileDocument.getDocumentType();
|
||||||
if (profileDocumentUpdateRequest.getCompanyId() != null)
|
if (profileDocumentUpdateRequest.getCompanyId() != null && !profileDocumentUpdateRequest.getCompanyId().equals(profileDocument.getCompanyId())) {
|
||||||
profileDocument.setCompanyId(profileDocumentUpdateRequest.getCompanyId());
|
log.warn("profileDocumentUpdateRequest[{}] CompanyId {} not match", profileDocumentUpdateRequest.getId(), profileDocumentUpdateRequest.getCompanyId());
|
||||||
|
return requestHelper.makeErrorResponse(profileDocumentUpdateRequestBaseRequest, CompanyErrors.WrongFieldValue, "companyId");
|
||||||
|
}
|
||||||
|
|
||||||
if (profileDocumentUpdateRequest.getDocumentType() != null)
|
if (profileDocumentUpdateRequest.getDocumentType() != null)
|
||||||
profileDocument.setDocumentType(profileDocumentUpdateRequest.getDocumentType());
|
profileDocument.setDocumentType(profileDocumentUpdateRequest.getDocumentType());
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.boot.test.mock.mockito.SpyBean;
|
import org.springframework.boot.test.mock.mockito.SpyBean;
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
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.company.CompanySymbols;
|
||||||
import ru.clearing.platform.dictionary.CompanySymbolDictionary;
|
import ru.clearing.platform.dictionary.CompanySymbolDictionary;
|
||||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
import ru.spcex.clearing.company.config.BeanConfiguration;
|
||||||
|
|
@ -92,6 +93,14 @@ class CompanySymbolServiceTest {
|
||||||
cioSymbol.setName(CompanySymbol.CIO.getKey());
|
cioSymbol.setName(CompanySymbol.CIO.getKey());
|
||||||
companySymbolDictionaryImdg.insert(cioSymbol);
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
TestUtils.FutureRecordMetadata future = spy(TestUtils.FutureRecordMetadata.class);
|
TestUtils.FutureRecordMetadata future = spy(TestUtils.FutureRecordMetadata.class);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue