xml-importer ReadXMLFile and ImportToDB steps tests added

This commit is contained in:
Ivan Nikolaev-Axenov 2024-06-18 10:34:55 +03:00
parent 0106d58569
commit 2588000456
18 changed files with 1040 additions and 25 deletions

View file

@ -118,6 +118,11 @@
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ru.spcex.clearing</groupId>
<artifactId>test-clearing</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>

View file

@ -6,6 +6,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import ru.spcex.clearing.xml.importer.config.settings.ImportXMLServiceSettings;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
@Configuration
@ -33,7 +34,7 @@ public class ImporterImdgConfig {
@Autowired
@Bean
public HazelcastService imdgProvider(
public ImdgProvider imdgProvider(
@Qualifier("taskExecutorHazelcastClientInitializer") ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer,
@Qualifier("taskExecutorIdGeneratorAwaiter") ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter,
ImportXMLServiceSettings settings

View file

@ -16,7 +16,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import ru.clearing.classes.statics.data.sdf.SDf01;
@ -30,20 +29,19 @@ import ru.spcex.clearing.xml.importer.config.settings.ImportXMLServiceSettings;
import ru.spcex.clearing.xml.importer.logic.data.enums.ETable;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
import ru.spcex.platform.imdg.api.ImdgProvider;
@Configuration
@EnableConfigurationProperties
@ComponentScan(basePackages = {"ru.spcex.clearing.xml.importer"})
public class XMLImporterConfig {
private final Logger log = LoggerFactory.getLogger(getClass());
private final ImportXMLServiceSettings settings;
private final ApplicationContext context;
private final HazelcastService hazelcastService;
private final ImdgProvider hazelcastService;
public XMLImporterConfig(ImportXMLServiceSettings settings,
ApplicationContext context,
HazelcastService hazelcastService) {
ImdgProvider hazelcastService) {
this.settings = settings;
this.context = context;
this.hazelcastService = hazelcastService;
@ -65,7 +63,7 @@ public class XMLImporterConfig {
@Bean("mapOfTable")
public Map<ETable, Imdg<? extends SpcexObjectBase>> getMapOfTables() {
Map<ETable, Imdg<? extends SpcexObjectBase>> map = new HashMap<>();
Map<ETable, Imdg<? extends SpcexObjectBase>> map = new HashMap<>();
map.put(ETable.DF_01, hazelcastService.getImdg(IMDGDistributedNames.Map_SDf01, SDf01.class));
map.put(ETable.DF_04, hazelcastService.getImdg(IMDGDistributedNames.Map_SDf04, SDf04.class));
map.put(ETable.DF_06, hazelcastService.getImdg(IMDGDistributedNames.Map_SDf06, SDf06.class));

View file

@ -4,12 +4,14 @@ import java.io.File;
import java.util.UUID;
import ru.spcex.clearing.xml.importer.logic.data.enums.ETable;
import ru.spcex.clearing.xml.importer.logic.data.enums.StageResult;
import ru.spcex.clearing.xml.importer.logic.data.tags.DocumentTag;
public class ResultContainer {
private UUID uuid;
private ETable xmlTable;
private File xmlFile;
private StageResult lastStageStatus;
private DocumentTag documentTag;
public ResultContainer(ETable xmlTable, File xmlFile) {
this.xmlTable = xmlTable;
@ -48,4 +50,12 @@ public class ResultContainer {
public void setLastStageStatus(StageResult lastStageRes) {
this.lastStageStatus = lastStageRes;
}
public DocumentTag getDocumentTag() {
return documentTag;
}
public void setDocumentTag(DocumentTag documentTag) {
this.documentTag = documentTag;
}
}

View file

@ -155,8 +155,8 @@ public class DF55ObjectTag extends ObjectTag<SDf55> {
result.setSclientn2(this.getSclientn1());
result.setSclientn3(this.getSclientn1());
result.setSclientn4(this.getSclientn1());
result.setInn_deb(this.getInnCred());
result.setKpp_deb(this.getKppCred());
result.setInn_deb(this.getInnDeb());
result.setKpp_deb(this.getKppDeb());
result.setAcc_deb(this.getAccDeb());
result.setRclientn1(this.getRclientn1());
result.setRclientn2(this.getRclientn1());

View file

@ -154,8 +154,8 @@ public class DF57ObjectTag extends ObjectTag<SDf57> {
result.setRclientn2(this.getRclientn1());
result.setRclientn3(this.getRclientn1());
result.setRclientn4(this.getRclientn1());
result.setInn_cred(this.getInnDeb());
result.setKpp_cred(this.getKppDeb());
result.setInn_cred(this.getInnCred());
result.setKpp_cred(this.getKppCred());
result.setAcc_kr(this.getAccKr());
result.setSpecif(this.getSpecif());
result.setDoc_Num(this.getDocNum());

View file

@ -1,8 +1,6 @@
package ru.spcex.clearing.xml.importer.logic.steps;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import java.io.File;
import java.io.IOException;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -16,7 +14,6 @@ import ru.spcex.clearing.xml.importer.logic.data.tags.objects.ObjectTag;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
import ru.spcex.platform.utils.log.ExceptionUtils;
@Component
public class ImportToDB {
@ -39,17 +36,7 @@ public class ImportToDB {
public StageResult process(ResultContainer resultContainer) {
log.info("uuid {}. Stage: Import to DB", resultContainer.getUuid());
ETable currTable = resultContainer.getXmlTable();
File xmlFile = resultContainer.getXmlFile();
DocumentTag documentTag;
try {
documentTag = xmlMapper.readValue(xmlFile, DocumentTag.class);
System.out.println(documentTag);
} catch (IOException e) {
log.error(ExceptionUtils.getStackTrace(e));
kafkaMessenger.notifyUserAboutErrorParsing(e, resultContainer);
log.info("uuid {}. Stage import to DB finished with status {}", resultContainer.getUuid(), StageResult.ERROR);
return StageResult.ERROR;
}
DocumentTag documentTag = resultContainer.getDocumentTag();
String fileName = resultContainer.getXmlFile().getName();
Long fileId = hazelcastService.getImdgIdGenerator().nextId();

View file

@ -0,0 +1,38 @@
package ru.spcex.clearing.xml.importer.logic.steps;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import ru.spcex.clearing.xml.importer.logic.data.ResultContainer;
import ru.spcex.clearing.xml.importer.logic.data.enums.StageResult;
import ru.spcex.clearing.xml.importer.logic.data.tags.DocumentTag;
import ru.spcex.platform.utils.log.ExceptionUtils;
@Component
public class ReadXMLFile {
private final Logger log = LoggerFactory.getLogger(getClass());
private final XmlMapper xmlMapper;
private final XmlImportKafkaMessenger kafkaMessenger;
public ReadXMLFile(@Qualifier("xmlMapper") XmlMapper xmlMapper,
XmlImportKafkaMessenger kafkaMessenger) {
this.xmlMapper = xmlMapper;
this.kafkaMessenger = kafkaMessenger;
}
public StageResult process(ResultContainer resultContainer) {
log.info("uuid {}. Stage: Reading XML file", resultContainer.getUuid());
try {
resultContainer.setDocumentTag(xmlMapper.readValue(resultContainer.getXmlFile(), DocumentTag.class));
return StageResult.OK;
} catch (IOException e) {
log.error(ExceptionUtils.getStackTrace(e));
kafkaMessenger.notifyUserAboutErrorParsing(e, resultContainer);
log.info("uuid {}. Stage reading from XML file finished with status {}", resultContainer.getUuid(), StageResult.ERROR);
return StageResult.ERROR;
}
}
}

View file

@ -25,6 +25,7 @@ import ru.spcex.clearing.xml.importer.logic.data.ResultContainer;
import ru.spcex.clearing.xml.importer.logic.data.enums.ETable;
import ru.spcex.clearing.xml.importer.logic.steps.ChangeDirOfFileStage;
import ru.spcex.clearing.xml.importer.logic.steps.ImportToDB;
import ru.spcex.clearing.xml.importer.logic.steps.ReadXMLFile;
import ru.spcex.platform.utils.collection.Pair;
@Service("xmlImporterService")
@ -35,15 +36,18 @@ public class XMLImporterService {
private final ThreadPoolTaskExecutor executorService;
private final Set<Path> filesCurrentlyInProcess;
private final ReadXMLFile readXMLFile;
private final ImportToDB importToDB;
private final ChangeDirOfFileStage changeDirOfFileStage;
public XMLImporterService(@Qualifier("fileChecker") FileChecker fileChecker,
@Qualifier("executor") ThreadPoolTaskExecutor executorService,
ReadXMLFile readXMLFile,
ImportToDB importToDB,
ChangeDirOfFileStage changeDirOfFileStage) {
this.fileChecker = fileChecker;
this.executorService = executorService;
this.readXMLFile = readXMLFile;
this.importToDB = importToDB;
this.changeDirOfFileStage = changeDirOfFileStage;
this.filesCurrentlyInProcess = new HashSet<>();
@ -89,6 +93,7 @@ public class XMLImporterService {
log.info("uuid {}. Task started", task.getUuid());
StopWatch stopWatch = new StopWatch();
stopWatch.start();
task.setLastStageStatus(readXMLFile.process(task));
task.setLastStageStatus(importToDB.process(task));
task.setLastStageStatus(changeDirOfFileStage.process(task));
stopWatch.stop();

View file

@ -0,0 +1,486 @@
package ru.spcex.clearing.xml.importer.logic.steps;
import java.io.File;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.List;
import java.util.Objects;
import javax.annotation.PostConstruct;
import org.apache.kafka.clients.producer.MockProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.SpyBean;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.TestPropertySource;
import ru.clearing.classes.statics.data.sdf.SDf01;
import ru.clearing.classes.statics.data.sdf.SDf04;
import ru.clearing.classes.statics.data.sdf.SDf06;
import ru.clearing.classes.statics.data.sdf.SDf52;
import ru.clearing.classes.statics.data.sdf.SDf55;
import ru.clearing.classes.statics.data.sdf.SDf57;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.test.TestObjectCreator;
import ru.spcex.clearing.test.config.ImdgTestConfig;
import ru.spcex.clearing.test.config.KafkaTestConfig;
import ru.spcex.clearing.xml.importer.config.XMLImporterConfig;
import ru.spcex.clearing.xml.importer.config.settings.ImportXMLServiceSettings;
import ru.spcex.clearing.xml.importer.logic.data.ResultContainer;
import ru.spcex.clearing.xml.importer.logic.data.enums.ETable;
import ru.spcex.clearing.xml.importer.logic.data.enums.StageResult;
import ru.spcex.clearing.xml.importer.logic.data.tags.DocumentTag;
import ru.spcex.clearing.xml.importer.logic.data.tags.ParentDocTag;
import ru.spcex.clearing.xml.importer.logic.data.tags.objects.DF01ObjectTag;
import ru.spcex.clearing.xml.importer.logic.data.tags.objects.DF04ObjectTag;
import ru.spcex.clearing.xml.importer.logic.data.tags.objects.DF06ObjectTag;
import ru.spcex.clearing.xml.importer.logic.data.tags.objects.DF52ObjectTag;
import ru.spcex.clearing.xml.importer.logic.data.tags.objects.DF55ObjectTag;
import ru.spcex.clearing.xml.importer.logic.data.tags.objects.DF57ObjectTag;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
@SpringBootTest(classes = {
ImportToDB.class,
ImportXMLServiceSettings.class,
XmlImportKafkaMessenger.class,
XMLImporterConfig.class,
ImdgTestConfig.class,
KafkaTestConfig.class,
})
@TestPropertySource(properties = {"spring.config.location=./src/test/resources/"})
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
class ImportToDBTest {
private final Logger log = LoggerFactory.getLogger(getClass());
@Autowired
@Qualifier("hazelcastServiceTest")
private HazelcastService hazelcastService;
@Captor
private ArgumentCaptor<ProducerRecord> producerRecord;
@SpyBean
private MockProducer<String, Object> producer;
@Autowired
@Qualifier("mockProducer")
protected Producer<String, Object> mockProducer;
@Autowired
private ImportToDB importToDB;
@PostConstruct
private void init() {
hazelcastService.waitAvailable();
new TestObjectCreator(hazelcastService).createUserAdmin(1000L);
}
@Test
void process_shouldImportSDf01ToHazelcast() {
DF01ObjectTag expectedObjectTag = new DF01ObjectTag();
expectedObjectTag.setCurrCode("test1");
expectedObjectTag.setAccount("test2");
expectedObjectTag.setRemainder("test3");
expectedObjectTag.setDeal("test4");
expectedObjectTag.setAccCode("test5");
expectedObjectTag.setDat(LocalDate.parse("2024-03-14"));
expectedObjectTag.setMarket("test6");
expectedObjectTag.setAccName("test7");
expectedObjectTag.setAccType("test8");
expectedObjectTag.setSumengage("test9");
expectedObjectTag.setSumunblock("test10");
expectedObjectTag.setFileType("test11");
ParentDocTag expectedParentDocTag = new ParentDocTag();
expectedParentDocTag.setParentId("");
DocumentTag expectedDocumentTag = new DocumentTag();
expectedDocumentTag.setMessageId("qq");
expectedDocumentTag.setMessageType("DF01");
expectedDocumentTag.setMessageName("ww");
expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14"));
expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31"));
expectedDocumentTag.setSender("БИСКВИТ");
expectedDocumentTag.setReceiver("");
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
ResultContainer actualResultContainer = new ResultContainer(ETable.DF_01,
new File(Objects.requireNonNull(getClass()
.getClassLoader()
.getResource("xml/DF-01_S_PRC1604240915_1.xml")).getFile()));
actualResultContainer.setDocumentTag(expectedDocumentTag);
StageResult stageResult = importToDB.process(actualResultContainer);
Imdg<SDf01> imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf01, SDf01.class);
SDf01 actualSDf01 = imdg.getAllValues().iterator().next();
Assertions.assertThat(stageResult).isEqualTo(StageResult.OK);
Assertions.assertThat(actualSDf01.getCurr_code()).isEqualTo(expectedObjectTag.getCurrCode());
Assertions.assertThat(actualSDf01.getAccount()).isEqualTo(expectedObjectTag.getAccount());
Assertions.assertThat(actualSDf01.getRemainder()).isEqualTo(expectedObjectTag.getRemainder());
Assertions.assertThat(actualSDf01.getDeal()).isEqualTo(expectedObjectTag.getDeal());
Assertions.assertThat(actualSDf01.getAcc_code()).isEqualTo(expectedObjectTag.getAccCode());
Assertions.assertThat(LocalDate.parse(actualSDf01.getDat())).isEqualTo(expectedObjectTag.getDat());
Assertions.assertThat(actualSDf01.getMarket()).isEqualTo(expectedObjectTag.getMarket());
Assertions.assertThat(actualSDf01.getAcc_name()).isEqualTo(expectedObjectTag.getAccName());
Assertions.assertThat(actualSDf01.getAcc_type()).isEqualTo(expectedObjectTag.getAccType());
Assertions.assertThat(actualSDf01.getSumengage()).isEqualTo(expectedObjectTag.getSumengage());
Assertions.assertThat(actualSDf01.getSumunblock()).isEqualTo(expectedObjectTag.getSumunblock());
Assertions.assertThat(actualSDf01.getFile_type()).isEqualTo(expectedObjectTag.getFileType());
}
@Test
void process_shouldImportSDf04ToHazelcast() {
DF04ObjectTag expectedObjectTag = new DF04ObjectTag();
expectedObjectTag.setSegType("test1");
expectedObjectTag.setDocType("test2");
expectedObjectTag.setDocnmRef("test3");
expectedObjectTag.setDocnmprev("test4");
expectedObjectTag.setcAccDeb("test5");
expectedObjectTag.setSbanknam1("test6");
expectedObjectTag.setcAccCred("test7");
expectedObjectTag.setRbanknam1("test8");
expectedObjectTag.setPayDate(LocalDate.parse("2024-03-14"));
expectedObjectTag.setPayVal("test9");
expectedObjectTag.setSumDeb("test10");
expectedObjectTag.setSpecif1("test11");
expectedObjectTag.setImpResult("test12");
ParentDocTag expectedParentDocTag = new ParentDocTag();
expectedParentDocTag.setParentId("");
DocumentTag expectedDocumentTag = new DocumentTag();
expectedDocumentTag.setMessageId("qq");
expectedDocumentTag.setMessageType("DF04");
expectedDocumentTag.setMessageName("ww");
expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14"));
expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31"));
expectedDocumentTag.setSender("БИСКВИТ");
expectedDocumentTag.setReceiver("");
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
ResultContainer actualResultContainer = new ResultContainer(ETable.DF_04,
new File(Objects.requireNonNull(getClass()
.getClassLoader()
.getResource("xml/DF-04_S_PRC1604240915_1.xml")).getFile()));
actualResultContainer.setDocumentTag(expectedDocumentTag);
StageResult stageResult = importToDB.process(actualResultContainer);
Imdg<SDf04> imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf04, SDf04.class);
SDf04 actualSDf04 = imdg.getAllValues().iterator().next();
Assertions.assertThat(stageResult).isEqualTo(StageResult.OK);
Assertions.assertThat(actualSDf04.getSeg_type()).isEqualTo(expectedObjectTag.getSegType());
Assertions.assertThat(actualSDf04.getDoc_type()).isEqualTo(expectedObjectTag.getDocType());
Assertions.assertThat(actualSDf04.getDocnm_ref()).isEqualTo(expectedObjectTag.getDocnmRef());
Assertions.assertThat(actualSDf04.getDocnmprev()).isEqualTo(expectedObjectTag.getDocnmprev());
Assertions.assertThat(actualSDf04.getC_acc_deb()).isEqualTo(expectedObjectTag.getcAccDeb());
Assertions.assertThat(actualSDf04.getSbanknam1()).isEqualTo(expectedObjectTag.getSbanknam1());
Assertions.assertThat(actualSDf04.getC_acc_cred()).isEqualTo(expectedObjectTag.getcAccCred());
Assertions.assertThat(actualSDf04.getRbanknam1()).isEqualTo(expectedObjectTag.getRbanknam1());
Assertions.assertThat(LocalDate.parse(actualSDf04.getPay_date())).isEqualTo(expectedObjectTag.getPayDate());
Assertions.assertThat(actualSDf04.getPay_val()).isEqualTo(expectedObjectTag.getPayVal());
Assertions.assertThat(actualSDf04.getSum_deb()).isEqualTo(expectedObjectTag.getSumDeb());
Assertions.assertThat(actualSDf04.getSpecif_1()).isEqualTo(expectedObjectTag.getSpecif1());
Assertions.assertThat(actualSDf04.getImp_result()).isEqualTo(expectedObjectTag.getImpResult());
}
@Test
void process_shouldImportSDf06ToHazelcast() {
DF06ObjectTag expectedObjectTag = new DF06ObjectTag();
expectedObjectTag.setAccount("test1");
expectedObjectTag.setSum(new BigDecimal(BigInteger.TEN));
expectedObjectTag.setMarket("test3");
expectedObjectTag.setType("test4");
expectedObjectTag.setDeal("test5");
expectedObjectTag.setClientN("test6");
expectedObjectTag.setInn("test7");
expectedObjectTag.setBic("test8");
expectedObjectTag.setSpec("test9");
expectedObjectTag.setNumber(new BigDecimal(BigInteger.TWO));
expectedObjectTag.setDocNum("test11");
expectedObjectTag.setDocDate(LocalDate.parse("2024-03-14"));
expectedObjectTag.setPayVal("test12");
ParentDocTag expectedParentDocTag = new ParentDocTag();
expectedParentDocTag.setParentId("");
DocumentTag expectedDocumentTag = new DocumentTag();
expectedDocumentTag.setMessageId("qq");
expectedDocumentTag.setMessageType("DF06");
expectedDocumentTag.setMessageName("ww");
expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14"));
expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31"));
expectedDocumentTag.setSender("БИСКВИТ");
expectedDocumentTag.setReceiver("");
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
ResultContainer actualResultContainer = new ResultContainer(ETable.DF_06,
new File(Objects.requireNonNull(getClass()
.getClassLoader()
.getResource("xml/DF-06_S_PRC1604240915_1.xml")).getFile()));
actualResultContainer.setDocumentTag(expectedDocumentTag);
StageResult stageResult = importToDB.process(actualResultContainer);
Imdg<SDf06> imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf06, SDf06.class);
SDf06 actualSDf06 = imdg.getAllValues().iterator().next();
Assertions.assertThat(stageResult).isEqualTo(StageResult.OK);
Assertions.assertThat(actualSDf06.getAccount()).isEqualTo(expectedObjectTag.getAccount());
Assertions.assertThat(actualSDf06.getSum()).isEqualTo(expectedObjectTag.getSum());
Assertions.assertThat(actualSDf06.getMarket()).isEqualTo(expectedObjectTag.getMarket());
Assertions.assertThat(actualSDf06.getType()).isEqualTo(expectedObjectTag.getType());
Assertions.assertThat(actualSDf06.getDeal()).isEqualTo(expectedObjectTag.getDeal());
Assertions.assertThat(actualSDf06.getClientN()).isEqualTo(expectedObjectTag.getClientN());
Assertions.assertThat(actualSDf06.getInn()).isEqualTo(expectedObjectTag.getInn());
Assertions.assertThat(actualSDf06.getBic()).isEqualTo(expectedObjectTag.getBic());
Assertions.assertThat(actualSDf06.getSpec()).isEqualTo(expectedObjectTag.getSpec());
Assertions.assertThat(actualSDf06.getNumber()).isEqualTo(expectedObjectTag.getNumber());
Assertions.assertThat(actualSDf06.getDoc_Num()).isEqualTo(expectedObjectTag.getDocNum());
Assertions.assertThat(LocalDate.parse(actualSDf06.getDoc_Date())).isEqualTo(expectedObjectTag.getDocDate());
Assertions.assertThat(actualSDf06.getPay_val()).isEqualTo(expectedObjectTag.getPayVal());
}
@Test
void process_shouldImportSDf52ToHazelcast() {
DF52ObjectTag expectedObjectTag = new DF52ObjectTag();
expectedObjectTag.setAccount("test1");
expectedObjectTag.setAccName("test2");
expectedObjectTag.setDeal("test3");
expectedObjectTag.setDate(LocalDate.parse("2024-03-14"));
expectedObjectTag.setAccType("test5");
expectedObjectTag.setStatus(1L);
ParentDocTag expectedParentDocTag = new ParentDocTag();
expectedParentDocTag.setParentId("");
DocumentTag expectedDocumentTag = new DocumentTag();
expectedDocumentTag.setMessageId("qq");
expectedDocumentTag.setMessageType("DF52");
expectedDocumentTag.setMessageName("ww");
expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14"));
expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31"));
expectedDocumentTag.setSender("БИСКВИТ");
expectedDocumentTag.setReceiver("");
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
ResultContainer actualResultContainer = new ResultContainer(ETable.DF_52,
new File(Objects.requireNonNull(getClass()
.getClassLoader()
.getResource("xml/DF-52_S_PRC1604240915_1.xml")).getFile()));
actualResultContainer.setDocumentTag(expectedDocumentTag);
StageResult stageResult = importToDB.process(actualResultContainer);
Imdg<SDf52> imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf52, SDf52.class);
SDf52 actualSDf52 = imdg.getAllValues().iterator().next();
Assertions.assertThat(stageResult).isEqualTo(StageResult.OK);
Assertions.assertThat(actualSDf52.getAccount()).isEqualTo(expectedObjectTag.getAccount());
Assertions.assertThat(actualSDf52.getAcc_name()).isEqualTo(expectedObjectTag.getAccName());
Assertions.assertThat(actualSDf52.getDeal()).isEqualTo(expectedObjectTag.getDeal());
Assertions.assertThat(LocalDate.parse(actualSDf52.getDate())).isEqualTo(expectedObjectTag.getDate());
Assertions.assertThat(actualSDf52.getAcc_type()).isEqualTo(expectedObjectTag.getAccType());
Assertions.assertThat(actualSDf52.getStatus()).isEqualTo(expectedObjectTag.getStatus());
}
@Test
void process_shouldImportSDf55ToHazelcast() {
DF55ObjectTag expectedObjectTag = new DF55ObjectTag();
expectedObjectTag.setSegType("test1");
expectedObjectTag.setDocType("test2");
expectedObjectTag.setDocnmRef("test3");
expectedObjectTag.setDocnmprev("test4");
expectedObjectTag.setSbankcode("test5");
expectedObjectTag.setcAccDeb("test6");
expectedObjectTag.setSbanknam1("test7");
expectedObjectTag.setRbankcode("test8");
expectedObjectTag.setcAccCred("test9");
expectedObjectTag.setRbanknam1("test10");
expectedObjectTag.setOpType("test11");
expectedObjectTag.setOpOrder("test12");
expectedObjectTag.setPayDate(LocalDate.parse("2024-03-14"));
expectedObjectTag.setPayVal("test13");
expectedObjectTag.setSumDeb("test14");
expectedObjectTag.setSclientn1("test15");
expectedObjectTag.setInnDeb("test16");
expectedObjectTag.setKppDeb("test17");
expectedObjectTag.setAccDeb("test18");
expectedObjectTag.setRclientn1("test19");
expectedObjectTag.setInnCred("test20");
expectedObjectTag.setKppCred("test21");
expectedObjectTag.setAccKr1("test22");
expectedObjectTag.setSpecif1("test23");
expectedObjectTag.setSendType("test24");
expectedObjectTag.setDocResult("test25");
expectedObjectTag.setDocNum("test26");
expectedObjectTag.setDocDate(LocalDate.parse("2024-03-15"));
expectedObjectTag.setValueDate(LocalDate.parse("2024-03-16"));
expectedObjectTag.setSwiftBen("test27");
expectedObjectTag.setSwiftInt("test28");
ParentDocTag expectedParentDocTag = new ParentDocTag();
expectedParentDocTag.setParentId("");
DocumentTag expectedDocumentTag = new DocumentTag();
expectedDocumentTag.setMessageId("qq");
expectedDocumentTag.setMessageType("DF55");
expectedDocumentTag.setMessageName("ww");
expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14"));
expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31"));
expectedDocumentTag.setSender("БИСКВИТ");
expectedDocumentTag.setReceiver("");
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
ResultContainer actualResultContainer = new ResultContainer(ETable.DF_55,
new File(Objects.requireNonNull(getClass()
.getClassLoader()
.getResource("xml/DF-55_S_PRC1604240915_1.xml")).getFile()));
actualResultContainer.setDocumentTag(expectedDocumentTag);
StageResult stageResult = importToDB.process(actualResultContainer);
Imdg<SDf55> imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf55, SDf55.class);
SDf55 actualSDf55 = imdg.getAllValues().iterator().next();
Assertions.assertThat(stageResult).isEqualTo(StageResult.OK);
Assertions.assertThat(actualSDf55.getSeg_type()).isEqualTo(expectedObjectTag.getSegType());
Assertions.assertThat(actualSDf55.getDoc_type()).isEqualTo(expectedObjectTag.getDocType());
Assertions.assertThat(actualSDf55.getDocnm_ref()).isEqualTo(expectedObjectTag.getDocnmRef());
Assertions.assertThat(actualSDf55.getDocnmprev()).isEqualTo(expectedObjectTag.getDocnmprev());
Assertions.assertThat(actualSDf55.getSbankcode()).isEqualTo(expectedObjectTag.getSbankcode());
Assertions.assertThat(actualSDf55.getC_acc_deb()).isEqualTo(expectedObjectTag.getcAccDeb());
Assertions.assertThat(actualSDf55.getSbanknam1()).isEqualTo(expectedObjectTag.getSbanknam1());
Assertions.assertThat(actualSDf55.getRbankcode()).isEqualTo(expectedObjectTag.getRbankcode());
Assertions.assertThat(actualSDf55.getC_acc_cred()).isEqualTo(expectedObjectTag.getcAccCred());
Assertions.assertThat(actualSDf55.getRbanknam1()).isEqualTo(expectedObjectTag.getRbanknam1());
Assertions.assertThat(actualSDf55.getOp_type()).isEqualTo(expectedObjectTag.getOpType());
Assertions.assertThat(actualSDf55.getOp_order()).isEqualTo(expectedObjectTag.getOpOrder());
Assertions.assertThat(LocalDate.parse(actualSDf55.getPay_date())).isEqualTo(expectedObjectTag.getPayDate());
Assertions.assertThat(actualSDf55.getPay_val()).isEqualTo(expectedObjectTag.getPayVal());
Assertions.assertThat(actualSDf55.getSum_deb()).isEqualTo(expectedObjectTag.getSumDeb());
Assertions.assertThat(actualSDf55.getSclientn1()).isEqualTo(expectedObjectTag.getSclientn1());
Assertions.assertThat(actualSDf55.getInn_deb()).isEqualTo(expectedObjectTag.getInnDeb());
Assertions.assertThat(actualSDf55.getKpp_deb()).isEqualTo(expectedObjectTag.getKppDeb());
Assertions.assertThat(actualSDf55.getAcc_deb()).isEqualTo(expectedObjectTag.getAccDeb());
Assertions.assertThat(actualSDf55.getRclientn1()).isEqualTo(expectedObjectTag.getRclientn1());
Assertions.assertThat(actualSDf55.getInn_cred()).isEqualTo(expectedObjectTag.getInnCred());
Assertions.assertThat(actualSDf55.getKpp_cred()).isEqualTo(expectedObjectTag.getKppCred());
Assertions.assertThat(actualSDf55.getAcc_kr_1()).isEqualTo(expectedObjectTag.getAccKr1());
Assertions.assertThat(actualSDf55.getSpecif_1()).isEqualTo(expectedObjectTag.getSpecif1());
Assertions.assertThat(actualSDf55.getSend_type()).isEqualTo(expectedObjectTag.getSendType());
Assertions.assertThat(actualSDf55.getDoc_result()).isEqualTo(expectedObjectTag.getDocResult());
Assertions.assertThat(actualSDf55.getDoc_Num()).isEqualTo(expectedObjectTag.getDocNum());
Assertions.assertThat(LocalDate.parse(actualSDf55.getDoc_Date())).isEqualTo(expectedObjectTag.getDocDate());
Assertions.assertThat(LocalDate.parse(actualSDf55.getValue_date())).isEqualTo(expectedObjectTag.getValueDate());
Assertions.assertThat(actualSDf55.getSwift_ben()).isEqualTo(expectedObjectTag.getSwiftBen());
Assertions.assertThat(actualSDf55.getSwift_int()).isEqualTo(expectedObjectTag.getSwiftInt());
}
@Test
void process_shouldImportSDf57ToHazelcast() {
DF57ObjectTag expectedObjectTag = new DF57ObjectTag();
expectedObjectTag.setId(1L);
expectedObjectTag.setDealDeb("test2");
expectedObjectTag.setDealCred("test3");
expectedObjectTag.setSbankcode("test4");
expectedObjectTag.setcAccDeb("test5");
expectedObjectTag.setSbanknam1("test6");
expectedObjectTag.setRbankcode("test7");
expectedObjectTag.setcAccCred("test8");
expectedObjectTag.setRbanknam1("test9");
expectedObjectTag.setOpType("test10");
expectedObjectTag.setPayDate(LocalDate.parse("2024-03-15"));
expectedObjectTag.setExtDate(111L);
expectedObjectTag.setPayVal("test11");
expectedObjectTag.setSumDeb("test12");
expectedObjectTag.setSclientn1("test13");
expectedObjectTag.setInnDeb("test14");
expectedObjectTag.setKppDeb("test15");
expectedObjectTag.setAccDeb("test16");
expectedObjectTag.setRclientn1("test17");
expectedObjectTag.setInnCred("test18");
expectedObjectTag.setKppCred("test19");
expectedObjectTag.setAccKr("test20");
expectedObjectTag.setSpecif("test21");
expectedObjectTag.setDocNum("test22");
expectedObjectTag.setDocDate(LocalDate.parse("2024-03-16"));
expectedObjectTag.setDtIn("test23");
expectedObjectTag.setKtIn("test24");
expectedObjectTag.setDtOut("test25");
expectedObjectTag.setKtOut("test26");
ParentDocTag expectedParentDocTag = new ParentDocTag();
expectedParentDocTag.setParentId("");
DocumentTag expectedDocumentTag = new DocumentTag();
expectedDocumentTag.setMessageId("qq");
expectedDocumentTag.setMessageType("DF57");
expectedDocumentTag.setMessageName("ww");
expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14"));
expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31"));
expectedDocumentTag.setSender("БИСКВИТ");
expectedDocumentTag.setReceiver("");
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
ResultContainer actualResultContainer = new ResultContainer(ETable.DF_57,
new File(Objects.requireNonNull(getClass()
.getClassLoader()
.getResource("xml/DF-57_S_PRC1604240915_1.xml")).getFile()));
actualResultContainer.setDocumentTag(expectedDocumentTag);
StageResult stageResult = importToDB.process(actualResultContainer);
Imdg<SDf57> imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf57, SDf57.class);
SDf57 actualSDf57 = imdg.getAllValues().iterator().next();
Assertions.assertThat(stageResult).isEqualTo(StageResult.OK);
Assertions.assertThat(actualSDf57.getDbfId()).isEqualTo(expectedObjectTag.getId());
Assertions.assertThat(actualSDf57.getDeal_deb()).isEqualTo(expectedObjectTag.getDealDeb());
Assertions.assertThat(actualSDf57.getDeal_cred()).isEqualTo(expectedObjectTag.getDealCred());
Assertions.assertThat(actualSDf57.getSbankcode()).isEqualTo(expectedObjectTag.getSbankcode());
Assertions.assertThat(actualSDf57.getC_acc_deb()).isEqualTo(expectedObjectTag.getcAccDeb());
Assertions.assertThat(actualSDf57.getSbanknam1()).isEqualTo(expectedObjectTag.getSbanknam1());
Assertions.assertThat(actualSDf57.getRbankcode()).isEqualTo(expectedObjectTag.getRbankcode());
Assertions.assertThat(actualSDf57.getC_acc_cred()).isEqualTo(expectedObjectTag.getcAccCred());
Assertions.assertThat(actualSDf57.getRbanknam1()).isEqualTo(expectedObjectTag.getRbanknam1());
Assertions.assertThat(actualSDf57.getOp_type()).isEqualTo(expectedObjectTag.getOpType());
Assertions.assertThat(LocalDate.parse(actualSDf57.getPay_date())).isEqualTo(expectedObjectTag.getPayDate());
Assertions.assertThat(Long.parseLong(actualSDf57.getExt_date())).isEqualTo(expectedObjectTag.getExtDate());
Assertions.assertThat(actualSDf57.getPay_val()).isEqualTo(expectedObjectTag.getPayVal());
Assertions.assertThat(actualSDf57.getSum_deb()).isEqualTo(expectedObjectTag.getSumDeb());
Assertions.assertThat(actualSDf57.getSclientn1()).isEqualTo(expectedObjectTag.getSclientn1());
Assertions.assertThat(actualSDf57.getInn_deb()).isEqualTo(expectedObjectTag.getInnDeb());
Assertions.assertThat(actualSDf57.getKpp_deb()).isEqualTo(expectedObjectTag.getKppDeb());
Assertions.assertThat(actualSDf57.getAcc_deb()).isEqualTo(expectedObjectTag.getAccDeb());
Assertions.assertThat(actualSDf57.getRclientn1()).isEqualTo(expectedObjectTag.getRclientn1());
Assertions.assertThat(actualSDf57.getInn_cred()).isEqualTo(expectedObjectTag.getInnCred());
Assertions.assertThat(actualSDf57.getKpp_cred()).isEqualTo(expectedObjectTag.getKppCred());
Assertions.assertThat(actualSDf57.getAcc_kr()).isEqualTo(expectedObjectTag.getAccKr());
Assertions.assertThat(actualSDf57.getSpecif()).isEqualTo(expectedObjectTag.getSpecif());
Assertions.assertThat(actualSDf57.getDoc_Num()).isEqualTo(expectedObjectTag.getDocNum());
Assertions.assertThat(LocalDate.parse(actualSDf57.getDoc_Date())).isEqualTo(expectedObjectTag.getDocDate());
Assertions.assertThat(actualSDf57.getDt_in()).isEqualTo(expectedObjectTag.getDtIn());
Assertions.assertThat(actualSDf57.getKt_in()).isEqualTo(expectedObjectTag.getKtIn());
Assertions.assertThat(actualSDf57.getDt_out()).isEqualTo(expectedObjectTag.getDtOut());
Assertions.assertThat(actualSDf57.getKt_out()).isEqualTo(expectedObjectTag.getKtOut());
}
}

View file

@ -0,0 +1,337 @@
package ru.spcex.clearing.xml.importer.logic.steps;
import java.io.File;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.List;
import java.util.Objects;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.TestPropertySource;
import ru.spcex.clearing.test.config.ImdgTestConfig;
import ru.spcex.clearing.test.config.KafkaTestConfig;
import ru.spcex.clearing.xml.importer.config.XMLImporterConfig;
import ru.spcex.clearing.xml.importer.config.settings.ImportXMLServiceSettings;
import ru.spcex.clearing.xml.importer.logic.data.ResultContainer;
import ru.spcex.clearing.xml.importer.logic.data.enums.ETable;
import ru.spcex.clearing.xml.importer.logic.data.enums.StageResult;
import ru.spcex.clearing.xml.importer.logic.data.tags.DocumentTag;
import ru.spcex.clearing.xml.importer.logic.data.tags.ParentDocTag;
import ru.spcex.clearing.xml.importer.logic.data.tags.objects.DF01ObjectTag;
import ru.spcex.clearing.xml.importer.logic.data.tags.objects.DF04ObjectTag;
import ru.spcex.clearing.xml.importer.logic.data.tags.objects.DF06ObjectTag;
import ru.spcex.clearing.xml.importer.logic.data.tags.objects.DF52ObjectTag;
import ru.spcex.clearing.xml.importer.logic.data.tags.objects.DF55ObjectTag;
import ru.spcex.clearing.xml.importer.logic.data.tags.objects.DF57ObjectTag;
@SpringBootTest(classes = {
ReadXMLFile.class,
ImportXMLServiceSettings.class,
XmlImportKafkaMessenger.class,
XMLImporterConfig.class,
ImdgTestConfig.class,
KafkaTestConfig.class,
})
@TestPropertySource(properties = {"spring.config.location=./src/test/resources/"})
class ReadXMLFileTest {
private final Logger log = LoggerFactory.getLogger(getClass());
@Autowired
private ReadXMLFile readXMLFile;
@Test
void process_shouldReadSDf01XMLFile() {
ResultContainer actualResultContainer = new ResultContainer(ETable.DF_01,
new File(Objects.requireNonNull(getClass()
.getClassLoader()
.getResource("xml/DF-01_S_PRC1604240915_1.xml")).getFile()));
StageResult processResult = readXMLFile.process(actualResultContainer);
DF01ObjectTag expectedObjectTag = new DF01ObjectTag();
expectedObjectTag.setCurrCode("test1");
expectedObjectTag.setAccount("test2");
expectedObjectTag.setRemainder("test3");
expectedObjectTag.setDeal("test4");
expectedObjectTag.setAccCode("test5");
expectedObjectTag.setDat(LocalDate.parse("2024-03-14"));
expectedObjectTag.setMarket("test6");
expectedObjectTag.setAccName("test7");
expectedObjectTag.setAccType("test8");
expectedObjectTag.setSumengage("test9");
expectedObjectTag.setSumunblock("test10");
expectedObjectTag.setFileType("test11");
ParentDocTag expectedParentDocTag = new ParentDocTag();
expectedParentDocTag.setParentId("");
DocumentTag expectedDocumentTag = new DocumentTag();
expectedDocumentTag.setMessageId("qq");
expectedDocumentTag.setMessageType("DF01");
expectedDocumentTag.setMessageName("ww");
expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14"));
expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31"));
expectedDocumentTag.setSender("БИСКВИТ");
expectedDocumentTag.setReceiver("");
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
Assertions.assertThat(processResult).isEqualTo(StageResult.OK);
Assertions.assertThat(actualResultContainer.getDocumentTag())
.usingRecursiveComparison()
.isEqualTo(expectedDocumentTag);
}
@Test
void process_shouldReadSDf04XMLFile() {
ResultContainer actualResultContainer = new ResultContainer(ETable.DF_04,
new File(Objects.requireNonNull(getClass()
.getClassLoader()
.getResource("xml/DF-04_S_PRC1604240915_1.xml")).getFile()));
StageResult processResult = readXMLFile.process(actualResultContainer);
DF04ObjectTag expectedObjectTag = new DF04ObjectTag();
expectedObjectTag.setSegType("test1");
expectedObjectTag.setDocType("test2");
expectedObjectTag.setDocnmRef("test3");
expectedObjectTag.setDocnmprev("test4");
expectedObjectTag.setcAccDeb("test5");
expectedObjectTag.setSbanknam1("test6");
expectedObjectTag.setcAccCred("test7");
expectedObjectTag.setRbanknam1("test8");
expectedObjectTag.setPayDate(LocalDate.parse("2024-03-14"));
expectedObjectTag.setPayVal("test9");
expectedObjectTag.setSumDeb("test10");
expectedObjectTag.setSpecif1("test11");
expectedObjectTag.setImpResult("test12");
ParentDocTag expectedParentDocTag = new ParentDocTag();
expectedParentDocTag.setParentId("");
DocumentTag expectedDocumentTag = new DocumentTag();
expectedDocumentTag.setMessageId("qq");
expectedDocumentTag.setMessageType("DF04");
expectedDocumentTag.setMessageName("ww");
expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14"));
expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31"));
expectedDocumentTag.setSender("БИСКВИТ");
expectedDocumentTag.setReceiver("");
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
Assertions.assertThat(processResult).isEqualTo(StageResult.OK);
Assertions.assertThat(actualResultContainer.getDocumentTag())
.usingRecursiveComparison()
.isEqualTo(expectedDocumentTag);
}
@Test
void process_shouldReadSDf06XMLFile() {
ResultContainer actualResultContainer = new ResultContainer(ETable.DF_06,
new File(Objects.requireNonNull(getClass()
.getClassLoader()
.getResource("xml/DF-06_S_PRC1604240915_1.xml")).getFile()));
StageResult processResult = readXMLFile.process(actualResultContainer);
DF06ObjectTag expectedObjectTag = new DF06ObjectTag();
expectedObjectTag.setAccount("test1");
expectedObjectTag.setSum(new BigDecimal(BigInteger.TEN));
expectedObjectTag.setMarket("test3");
expectedObjectTag.setType("test4");
expectedObjectTag.setDeal("test5");
expectedObjectTag.setClientN("test6");
expectedObjectTag.setInn("test7");
expectedObjectTag.setBic("test8");
expectedObjectTag.setSpec("test9");
expectedObjectTag.setNumber(new BigDecimal(BigInteger.TWO));
expectedObjectTag.setDocNum("test11");
expectedObjectTag.setDocDate(LocalDate.parse("2024-03-14"));
expectedObjectTag.setPayVal("test12");
ParentDocTag expectedParentDocTag = new ParentDocTag();
expectedParentDocTag.setParentId("");
DocumentTag expectedDocumentTag = new DocumentTag();
expectedDocumentTag.setMessageId("qq");
expectedDocumentTag.setMessageType("DF06");
expectedDocumentTag.setMessageName("ww");
expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14"));
expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31"));
expectedDocumentTag.setSender("БИСКВИТ");
expectedDocumentTag.setReceiver("");
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
Assertions.assertThat(processResult).isEqualTo(StageResult.OK);
Assertions.assertThat(actualResultContainer.getDocumentTag())
.usingRecursiveComparison()
.isEqualTo(expectedDocumentTag);
}
@Test
void process_shouldReadSDf52XMLFile() {
ResultContainer actualResultContainer = new ResultContainer(ETable.DF_52,
new File(Objects.requireNonNull(getClass()
.getClassLoader()
.getResource("xml/DF-52_S_PRC1604240915_1.xml")).getFile()));
StageResult processResult = readXMLFile.process(actualResultContainer);
DF52ObjectTag expectedObjectTag = new DF52ObjectTag();
expectedObjectTag.setAccount("test1");
expectedObjectTag.setAccName("test2");
expectedObjectTag.setDeal("test3");
expectedObjectTag.setDate(LocalDate.parse("2024-03-14"));
expectedObjectTag.setAccType("test5");
expectedObjectTag.setStatus(1L);
ParentDocTag expectedParentDocTag = new ParentDocTag();
expectedParentDocTag.setParentId("");
DocumentTag expectedDocumentTag = new DocumentTag();
expectedDocumentTag.setMessageId("qq");
expectedDocumentTag.setMessageType("DF52");
expectedDocumentTag.setMessageName("ww");
expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14"));
expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31"));
expectedDocumentTag.setSender("БИСКВИТ");
expectedDocumentTag.setReceiver("");
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
Assertions.assertThat(processResult).isEqualTo(StageResult.OK);
Assertions.assertThat(actualResultContainer.getDocumentTag())
.usingRecursiveComparison()
.isEqualTo(expectedDocumentTag);
}
@Test
void process_shouldReadSDf55XMLFile() {
ResultContainer actualResultContainer = new ResultContainer(ETable.DF_55,
new File(Objects.requireNonNull(getClass()
.getClassLoader()
.getResource("xml/DF-55_S_PRC1604240915_1.xml")).getFile()));
StageResult processResult = readXMLFile.process(actualResultContainer);
DF55ObjectTag expectedObjectTag = new DF55ObjectTag();
expectedObjectTag.setSegType("test1");
expectedObjectTag.setDocType("test2");
expectedObjectTag.setDocnmRef("test3");
expectedObjectTag.setDocnmprev("test4");
expectedObjectTag.setSbankcode("test5");
expectedObjectTag.setcAccDeb("test6");
expectedObjectTag.setSbanknam1("test7");
expectedObjectTag.setRbankcode("test8");
expectedObjectTag.setcAccCred("test9");
expectedObjectTag.setRbanknam1("test10");
expectedObjectTag.setOpType("test11");
expectedObjectTag.setOpOrder("test12");
expectedObjectTag.setPayDate(LocalDate.parse("2024-03-14"));
expectedObjectTag.setPayVal("test13");
expectedObjectTag.setSumDeb("test14");
expectedObjectTag.setSclientn1("test15");
expectedObjectTag.setInnDeb("test16");
expectedObjectTag.setKppDeb("test17");
expectedObjectTag.setAccDeb("test18");
expectedObjectTag.setRclientn1("test19");
expectedObjectTag.setInnCred("test20");
expectedObjectTag.setKppCred("test21");
expectedObjectTag.setAccKr1("test22");
expectedObjectTag.setSpecif1("test23");
expectedObjectTag.setSendType("test24");
expectedObjectTag.setDocResult("test25");
expectedObjectTag.setDocNum("test26");
expectedObjectTag.setDocDate(LocalDate.parse("2024-03-15"));
expectedObjectTag.setValueDate(LocalDate.parse("2024-03-16"));
expectedObjectTag.setSwiftBen("test27");
expectedObjectTag.setSwiftInt("test28");
ParentDocTag expectedParentDocTag = new ParentDocTag();
expectedParentDocTag.setParentId("");
DocumentTag expectedDocumentTag = new DocumentTag();
expectedDocumentTag.setMessageId("qq");
expectedDocumentTag.setMessageType("DF55");
expectedDocumentTag.setMessageName("ww");
expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14"));
expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31"));
expectedDocumentTag.setSender("БИСКВИТ");
expectedDocumentTag.setReceiver("");
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
Assertions.assertThat(processResult).isEqualTo(StageResult.OK);
Assertions.assertThat(actualResultContainer.getDocumentTag())
.usingRecursiveComparison()
.isEqualTo(expectedDocumentTag);
}
@Test
void process_shouldReadSDf57XMLFile() {
ResultContainer actualResultContainer = new ResultContainer(ETable.DF_57,
new File(Objects.requireNonNull(getClass()
.getClassLoader()
.getResource("xml/DF-57_S_PRC1604240915_1.xml")).getFile()));
StageResult processResult = readXMLFile.process(actualResultContainer);
DF57ObjectTag expectedObjectTag = new DF57ObjectTag();
expectedObjectTag.setId(1L);
expectedObjectTag.setDealDeb("test2");
expectedObjectTag.setDealCred("test3");
expectedObjectTag.setSbankcode("test4");
expectedObjectTag.setcAccDeb("test5");
expectedObjectTag.setSbanknam1("test6");
expectedObjectTag.setRbankcode("test7");
expectedObjectTag.setcAccCred("test8");
expectedObjectTag.setRbanknam1("test9");
expectedObjectTag.setOpType("test10");
expectedObjectTag.setPayDate(LocalDate.parse("2024-03-15"));
expectedObjectTag.setExtDate(111L);
expectedObjectTag.setPayVal("test11");
expectedObjectTag.setSumDeb("test12");
expectedObjectTag.setSclientn1("test13");
expectedObjectTag.setInnDeb("test14");
expectedObjectTag.setKppDeb("test15");
expectedObjectTag.setAccDeb("test16");
expectedObjectTag.setRclientn1("test17");
expectedObjectTag.setInnCred("test18");
expectedObjectTag.setKppCred("test19");
expectedObjectTag.setAccKr("test20");
expectedObjectTag.setSpecif("test21");
expectedObjectTag.setDocNum("test22");
expectedObjectTag.setDocDate(LocalDate.parse("2024-03-16"));
expectedObjectTag.setDtIn("test23");
expectedObjectTag.setKtIn("test24");
expectedObjectTag.setDtOut("test25");
expectedObjectTag.setKtOut("test26");
ParentDocTag expectedParentDocTag = new ParentDocTag();
expectedParentDocTag.setParentId("");
DocumentTag expectedDocumentTag = new DocumentTag();
expectedDocumentTag.setMessageId("qq");
expectedDocumentTag.setMessageType("DF57");
expectedDocumentTag.setMessageName("ww");
expectedDocumentTag.setMessageDate(LocalDate.parse("2024-03-14"));
expectedDocumentTag.setMessageTime(LocalTime.parse("09:15:31"));
expectedDocumentTag.setSender("БИСКВИТ");
expectedDocumentTag.setReceiver("");
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
Assertions.assertThat(processResult).isEqualTo(StageResult.OK);
Assertions.assertThat(actualResultContainer.getDocumentTag())
.usingRecursiveComparison()
.isEqualTo(expectedDocumentTag);
}
}

View file

@ -0,0 +1,43 @@
server.port=8081
server.servlet.context-path=/xml-importer
spring.main.web-application-type=servlet
import-xml-service.scheduler.check-src-dir-cron=* * * * 1 ?
import-xml-service.store.delete-src-files=false
import-xml-service.store.src-dir=/opt/clearing/file/xml-importer/
import-xml-service.store.out-dir=/opt/clearing/file/xml-importer/loaded/
import-xml-service.store.out-dir-error=/opt/clearing/file/xml-importer/error/
import-xml-service.common.encoding-source=cp866
import-xml-service.common.insert-batch-size=100
import-xml-service.common.threads-count=10
#sftpSrcDir
import-xml-service.store.sftp-in.sftp-src-pay-val-dir.rub=clearing_xml-importer_sftp/rub/
import-xml-service.store.sftp-in.sftp-src-pay-val-dir.eur=clearing_xml-importer_sftp/eur/
import-xml-service.store.sftp-in.sftp-src-dir=clearing_xml-importer_sftp
import-xml-service.store.sftp-in.user=user
import-xml-service.store.sftp-in.password=*********
import-xml-service.store.sftp-in.server-ip=127.0.0.1
import-xml-service.store.sftp-in.server-port=22
import-xml-service.hazelcast.cluster-members=127.0.0.1:5701
import-xml-service.hazelcast.login=dev
import-xml-service.hazelcast.password=dev-pass
import-xml-service.kafka-producer.bootstrap-servers=localhost:9092
import-xml-service.kafka-producer.acks=all
import-xml-service.kafka-producer.retries=0
import-xml-service.kafka-producer.batch-size=16384
import-xml-service.kafka-producer.linger-ms=1
import-xml-service.kafka-producer.buffer-memory=33554432
import-xml-service.kafka-consumer.bootstrap-servers=localhost:9092
import-xml-service.kafka-consumer.group-id=dev-group-clearing-service
import-xml-service.kafka-consumer.enable-auto-commit=false
import-xml-service.kafka-consumer.session-timeout-ms=30000
import-xml-service.kafka-consumer.auto-offset-reset=latest
import-xml-service.kafka-consumer.linger-ms=1
import-xml-service.kafka-consumer.buffer-memory=33554432

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<DOCUMENT MESSAGEID="qq" MESSAGETYPE="DF01" MESSAGENAME="ww" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="БИСКВИТ" RECEIVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT CURR_CODE="test1" ACCOUNT="test2" REMAINDER="test3" DEAL="test4" ACC_CODE="test5" DAT="2024-03-14" MARKET="test6" ACC_NAME="test7" ACC_TYPE="test8" SUMENGAGE="test9" SUMUNBLOK="test10" FILE_TYPE="test11" />
</OBJECTS>
</DOCUMENT>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<DOCUMENT MESSAGEID="qq" MESSAGETYPE="DF04" MESSAGENAME="ww" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="БИСКВИТ" RECEIVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT SEG_TYPE="test1" DOC_TYPE="test2" DOCNM_REF="test3" DOCNMPREV="test4" C_ACC_DEB="test5" SBANKNAM="test6" C_ACC_CRED="test7" RBANKNAM="test8" PAY_DATE="2024-03-14" PAY_VAL="test9" SUM_DEB="test10" SPECIF_1="test11" IMP_RESULT="test12" />
</OBJECTS>
</DOCUMENT>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<DOCUMENT MESSAGEID="qq" MESSAGETYPE="DF06" MESSAGENAME="ww" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="БИСКВИТ" RECEIVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT ACCOUNT="test1" SUM="10" MARKET="test3" TYPE="test4" DEAL="test5" CLIENTN="test6" INN="test7" BIC="test8" SPEC="test9" NUMBER="2" DOC_NUM="test11" DOC_DATE="2024-03-14" PAY_VAL="test12" />
</OBJECTS>
</DOCUMENT>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<DOCUMENT MESSAGEID="qq" MESSAGETYPE="DF52" MESSAGENAME="ww" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="БИСКВИТ" RECEIVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT ACCOUNT="test1" ACC_NAME="test2" DEAL="test3" DATE="2024-03-14" STATUS="1" ACC_TYPE="test5" />
</OBJECTS>
</DOCUMENT>

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<DOCUMENT MESSAGEID="qq" MESSAGETYPE="DF55" MESSAGENAME="ww" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="БИСКВИТ" RECEIVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT
SEG_TYPE="test1"
DOC_TYPE="test2"
DOCNM_REF="test3"
DOCNMPREV="test4"
SBANKCODE="test5"
C_ACC_DEB="test6"
SBANKNAM="test7"
RBANKCODE="test8"
C_ACC_CRED="test9"
RBANKNAM="test10"
OP_TYPE="test11"
OP_ORDER="test12"
PAY_DATE="2024-03-14"
PAY_VAL="test13"
SUM_DEB="test14"
SCLIENTN="test15"
INN_DEB="test16"
KPP_DEB="test17"
ACC_DEB="test18"
RCLIENTN="test19"
INN_CRED="test20"
KPP_CRED="test21"
ACC_KR_1="test22"
SPECIF_1="test23"
SEND_TYPE="test24"
DOC_RESULT="test25"
DOC_NUM="test26"
DOC_DATE="2024-03-15"
VALUE_DATE="2024-03-16"
SWIFT_BEN="test27"
SWIFT_INT="test28"
/>
</OBJECTS>
</DOCUMENT>

View file

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<DOCUMENT MESSAGEID="qq" MESSAGETYPE="DF57" MESSAGENAME="ww" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31"
SENDER="БИСКВИТ" RECEIVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT
ID="1"
DEAL_DEB="test2"
DEAL_CRED="test3"
SBANKCODE="test4"
C_ACC_DEB="test5"
SBANKNAM="test6"
RBANKCODE="test7"
C_ACC_CRED="test8"
RBANKNAM="test9"
OP_TYPE="test10"
PAY_DATE="2024-03-15"
EXT_DATE="111"
PAY_VAL="test11"
SUM_DEB="test12"
SCLIENTN="test13"
INN_DEB="test14"
KPP_DEB="test15"
ACC_DEB="test16"
RCLIENTN="test17"
INN_CRED="test18"
KPP_CRED="test19"
ACC_KR="test20"
SPECIF="test21"
DOC_NUM="test22"
DOC_DATE="2024-03-16"
DT_IN="test23"
KT_IN="test24"
DT_OUT="test25"
KT_OUT="test26"
/>
</OBJECTS>
</DOCUMENT>