profileDocumentNewRequest
This commit is contained in:
parent
7eb629f158
commit
dcb517d300
3 changed files with 69 additions and 15 deletions
|
|
@ -4,7 +4,9 @@ import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
|
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
|
||||||
|
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||||
import ru.clearing.platform.dictionary.ClearingCategoryDictionary;
|
import ru.clearing.platform.dictionary.ClearingCategoryDictionary;
|
||||||
|
import ru.clearing.platform.dictionary.DocumentTypeDictionary;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
|
|
@ -27,6 +29,8 @@ public class ValidationConfig {
|
||||||
addImdg.accept(IMDGDistributedNames.Map_Company, Company.class);
|
addImdg.accept(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
addImdg.accept(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
addImdg.accept(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||||
addImdg.accept(IMDGDistributedNames.Map_ClearingCategoryDictionary, ClearingCategoryDictionary.class);
|
addImdg.accept(IMDGDistributedNames.Map_ClearingCategoryDictionary, ClearingCategoryDictionary.class);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_DocumentTypeDictionary, DocumentTypeDictionary.class);
|
||||||
|
|
||||||
return imdg;
|
return imdg;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,9 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.lang.NonNull;
|
import org.springframework.lang.NonNull;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
|
@ -14,10 +16,17 @@ import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||||
|
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||||
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
||||||
|
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||||
|
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||||
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.utils.validation.IValidator;
|
||||||
|
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
@Service
|
||||||
public class ProfileDocumentService extends QueueConsumer implements InitializingBean {
|
public class ProfileDocumentService extends QueueConsumer implements InitializingBean {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
private Imdg<ProfileDocument> profileDocumentMap;
|
private Imdg<ProfileDocument> profileDocumentMap;
|
||||||
|
|
@ -25,14 +34,21 @@ public class ProfileDocumentService extends QueueConsumer implements Initializin
|
||||||
private ImdgProvider imdgProvider;
|
private ImdgProvider imdgProvider;
|
||||||
private KafkaSender kafkaReqProducer;
|
private KafkaSender kafkaReqProducer;
|
||||||
|
|
||||||
|
private final Function<ProfileDocumentNewRequest, IValidator> profileDocumentNewRequestValidator;
|
||||||
|
private final ValidationHelper validationHelper;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public ProfileDocumentService(Consumer<String, Object> kafkaQueue,
|
public ProfileDocumentService(Consumer<String, Object> kafkaQueue,
|
||||||
Producer<String, Object> kafkaProducer,
|
Producer<String, Object> kafkaProducer,
|
||||||
KafkaSender kafkaReqProducer,
|
KafkaSender kafkaReqProducer,
|
||||||
ImdgProvider imdgProvider) {
|
ImdgProvider imdgProvider,
|
||||||
|
@Qualifier("profileDocumentNewRequestValidation") Function<ProfileDocumentNewRequest, IValidator> profileDocumentNewRequestValidator,
|
||||||
|
ValidationHelper validationHelper) {
|
||||||
super(kafkaQueue, kafkaProducer);
|
super(kafkaQueue, kafkaProducer);
|
||||||
this.imdgProvider = imdgProvider;
|
this.imdgProvider = imdgProvider;
|
||||||
this.kafkaReqProducer = kafkaReqProducer;
|
this.kafkaReqProducer = kafkaReqProducer;
|
||||||
|
this.profileDocumentNewRequestValidator = profileDocumentNewRequestValidator;
|
||||||
|
this.validationHelper = validationHelper;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -41,20 +57,22 @@ public class ProfileDocumentService extends QueueConsumer implements Initializin
|
||||||
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
|
|
||||||
callback(ProfileDocumentNewRequest.class)
|
callback(ProfileDocumentNewRequest.class)
|
||||||
.setConsumer(this::newProfileDocument)
|
.setConsumer(this::profileDocumentNew)
|
||||||
.forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_NEW, callbacks::put);
|
.forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_NEW, callbacks::put);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private void newProfileDocument(BaseRequest<ProfileDocumentNewRequest> profileDocumentNewRequestBaseRequest) {
|
private RequestInfoUpdate profileDocumentNew(BaseRequest<ProfileDocumentNewRequest> profileDocumentNewRequestBaseRequest) {
|
||||||
log.trace("Start processing ProfileDocumentNewRequest!");
|
log.trace("Start processing ProfileDocumentNewRequest!");
|
||||||
|
|
||||||
|
RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(
|
||||||
|
profileDocumentNewRequestBaseRequest,
|
||||||
|
profileDocumentNewRequestValidator
|
||||||
|
);
|
||||||
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
|
|
||||||
ProfileDocumentNewRequest profileDocumentNewRequest = profileDocumentNewRequestBaseRequest.getRequestPayload();
|
ProfileDocumentNewRequest profileDocumentNewRequest = profileDocumentNewRequestBaseRequest.getRequestPayload();
|
||||||
Long companyId = profileDocumentNewRequest.getCompanyId();
|
|
||||||
Company company = companyMap.getSingleObjectByID(companyId);
|
|
||||||
if (company != null && !company.getWorkflowStatus().equalsIgnoreCase("ACTV")) {
|
|
||||||
throw new IllegalStateException("Wrong company with ID " + companyId + " and workflow status " + company.getWorkflowStatus());
|
|
||||||
}
|
|
||||||
ProfileDocument profileDocument = new ProfileDocument();
|
ProfileDocument profileDocument = new ProfileDocument();
|
||||||
profileDocument.setCompanyId(profileDocumentNewRequest.getCompanyId());
|
profileDocument.setCompanyId(profileDocumentNewRequest.getCompanyId());
|
||||||
profileDocument.setDocumentType(profileDocumentNewRequest.getDocumentType());
|
profileDocument.setDocumentType(profileDocumentNewRequest.getDocumentType());
|
||||||
|
|
@ -69,9 +87,11 @@ public class ProfileDocumentService extends QueueConsumer implements Initializin
|
||||||
profileDocument.setValidToDate(profileDocumentNewRequest.getValidToDate());
|
profileDocument.setValidToDate(profileDocumentNewRequest.getValidToDate());
|
||||||
profileDocument.setLink(profileDocumentNewRequest.getLink());
|
profileDocument.setLink(profileDocumentNewRequest.getLink());
|
||||||
profileDocumentMap.insert(profileDocument);
|
profileDocumentMap.insert(profileDocument);
|
||||||
if (profileDocument.getDocumentType().equalsIgnoreCase("XCNT")) {
|
|
||||||
|
|
||||||
//kafkaReqProducer.sendRequestToQueue(Consts.EXPORT_PROCESS, exportRequest);
|
if (profileDocument.getDocumentType().equalsIgnoreCase(DocumentTypes.xcnt.getKey())) {
|
||||||
|
// kafkaReqProducer.sendRequestToQueue(Consts.EXPORT_PROCESS, exportRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,18 +14,25 @@ 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.Company;
|
||||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
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.HazelcastServiceTestConfiguration;
|
import ru.spcex.clearing.company.config.HazelcastServiceTestConfiguration;
|
||||||
import ru.spcex.clearing.company.config.KafkaConfigTest;
|
import ru.spcex.clearing.company.config.KafkaConfigTest;
|
||||||
|
import ru.spcex.clearing.company.config.validation.ProfileDocumentValidationConfig;
|
||||||
|
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
||||||
import ru.spcex.clearing.company.utils.MatcherFactory;
|
import ru.spcex.clearing.company.utils.MatcherFactory;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
||||||
|
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.Imdg;
|
||||||
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
|
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
import java.time.temporal.ChronoUnit;
|
||||||
|
|
||||||
import static ru.spcex.clearing.company.config.HazelcastServiceTestConfiguration.currentID;
|
import static ru.spcex.clearing.company.config.HazelcastServiceTestConfiguration.currentID;
|
||||||
import static ru.spcex.clearing.company.utils.MatcherFactory.usingIgnoringFieldsComparator;
|
import static ru.spcex.clearing.company.utils.MatcherFactory.usingIgnoringFieldsComparator;
|
||||||
|
|
@ -33,8 +40,11 @@ import static ru.spcex.clearing.company.utils.TestUtils.*;
|
||||||
|
|
||||||
@ExtendWith(SpringExtension.class)
|
@ExtendWith(SpringExtension.class)
|
||||||
@ContextConfiguration(classes = {
|
@ContextConfiguration(classes = {
|
||||||
|
BeanConfiguration.class,
|
||||||
|
ValidationConfig.class,
|
||||||
ProfileDocumentService.class,
|
ProfileDocumentService.class,
|
||||||
KafkaConfigTest.class,
|
KafkaConfigTest.class,
|
||||||
|
ProfileDocumentValidationConfig.class,
|
||||||
HazelcastServiceTestConfiguration.class})
|
HazelcastServiceTestConfiguration.class})
|
||||||
class ProfileDocumentServiceTest {
|
class ProfileDocumentServiceTest {
|
||||||
|
|
||||||
|
|
@ -55,11 +65,32 @@ class ProfileDocumentServiceTest {
|
||||||
@SpyBean
|
@SpyBean
|
||||||
private MockProducer<String, Object> mockProducer;
|
private MockProducer<String, Object> mockProducer;
|
||||||
|
|
||||||
|
private final long COMPANY_ID = 777L;
|
||||||
|
private Company TEST_COMPANY;
|
||||||
|
|
||||||
|
private DocumentTypes TEST_DOCUMENT_TYPE = DocumentTypes.cio;
|
||||||
|
private String TEST_DOCUMENT_TYPE_ID = TEST_DOCUMENT_TYPE.getKey();
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
private void init() {
|
private void init() {
|
||||||
hazelcastServiceTest.waitAvailable();
|
hazelcastServiceTest.waitAvailable();
|
||||||
this.profileDocumentMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
this.profileDocumentMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||||
this.companyMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
this.companyMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
|
|
||||||
|
TEST_COMPANY = new Company();
|
||||||
|
TEST_COMPANY.setId(COMPANY_ID);
|
||||||
|
TEST_COMPANY.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||||
|
companyMap.insert(TEST_COMPANY);
|
||||||
|
|
||||||
|
DocumentTypeDictionary documentTypeDictionary = new DocumentTypeDictionary();
|
||||||
|
documentTypeDictionary.setCode(TEST_DOCUMENT_TYPE.getKey());
|
||||||
|
documentTypeDictionary.setName("test_name");
|
||||||
|
Imdg<DocumentTypeDictionary> documentTypeDictionaryImdg = hazelcastServiceTest.getImdg(
|
||||||
|
IMDGDistributedNames.Map_DocumentTypeDictionary,
|
||||||
|
DocumentTypeDictionary.class
|
||||||
|
);
|
||||||
|
documentTypeDictionaryImdg.insert(documentTypeDictionary);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -70,10 +101,9 @@ class ProfileDocumentServiceTest {
|
||||||
@Test
|
@Test
|
||||||
void newProfileDocument() {
|
void newProfileDocument() {
|
||||||
//ARRANGE
|
//ARRANGE
|
||||||
Long companyId = 1234L;
|
|
||||||
ProfileDocumentNewRequest profileDocumentNewRequest = new ProfileDocumentNewRequest();
|
ProfileDocumentNewRequest profileDocumentNewRequest = new ProfileDocumentNewRequest();
|
||||||
profileDocumentNewRequest.setCompanyId(companyId);
|
profileDocumentNewRequest.setCompanyId(COMPANY_ID);
|
||||||
profileDocumentNewRequest.setDocumentType("doc");
|
profileDocumentNewRequest.setDocumentType(TEST_DOCUMENT_TYPE_ID);
|
||||||
profileDocumentNewRequest.setIssueDate(LocalDate.now());
|
profileDocumentNewRequest.setIssueDate(LocalDate.now());
|
||||||
profileDocumentNewRequest.setIssuePlace("place");
|
profileDocumentNewRequest.setIssuePlace("place");
|
||||||
profileDocumentNewRequest.setIssuer("issuer");
|
profileDocumentNewRequest.setIssuer("issuer");
|
||||||
|
|
@ -82,7 +112,7 @@ class ProfileDocumentServiceTest {
|
||||||
profileDocumentNewRequest.setNumber("number");
|
profileDocumentNewRequest.setNumber("number");
|
||||||
profileDocumentNewRequest.setPlace("place");
|
profileDocumentNewRequest.setPlace("place");
|
||||||
profileDocumentNewRequest.setValidFromDate(LocalDate.now());
|
profileDocumentNewRequest.setValidFromDate(LocalDate.now());
|
||||||
profileDocumentNewRequest.setValidToDate(LocalDate.now());
|
profileDocumentNewRequest.setValidToDate(LocalDate.now().plus(1, ChronoUnit.DAYS));
|
||||||
profileDocumentNewRequest.setLink("link");
|
profileDocumentNewRequest.setLink("link");
|
||||||
|
|
||||||
ProfileDocument predictableProfileDocument = new ProfileDocument();
|
ProfileDocument predictableProfileDocument = new ProfileDocument();
|
||||||
|
|
@ -106,7 +136,7 @@ class ProfileDocumentServiceTest {
|
||||||
|
|
||||||
//ASSERT
|
//ASSERT
|
||||||
waitingWhenAddedRecordAndCheckIt(ID, mockProducer, producerRecord);
|
waitingWhenAddedRecordAndCheckIt(ID, mockProducer, producerRecord);
|
||||||
ProfileDocument resultNew = profileDocumentMap.getSingleObjectBySQL(String.format("companyId = %d", companyId));
|
ProfileDocument resultNew = profileDocumentMap.getSingleObjectBySQL(String.format("companyId = %d", COMPANY_ID));
|
||||||
predictableProfileDocument.setId(resultNew.getId());
|
predictableProfileDocument.setId(resultNew.getId());
|
||||||
PROFILE_DOCUMENT_MATCHER.assertMatch(resultNew, predictableProfileDocument);
|
PROFILE_DOCUMENT_MATCHER.assertMatch(resultNew, predictableProfileDocument);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue