diff --git a/clearing-parent/xml-importer/pom.xml b/clearing-parent/xml-importer/pom.xml
index e753972b3..f3c62e1b1 100644
--- a/clearing-parent/xml-importer/pom.xml
+++ b/clearing-parent/xml-importer/pom.xml
@@ -118,6 +118,11 @@
assertj-core
test
+
+ ru.spcex.clearing
+ test-clearing
+ test
+
diff --git a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/ImporterImdgConfig.java b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/ImporterImdgConfig.java
index 0c54ab12d..3789aef00 100644
--- a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/ImporterImdgConfig.java
+++ b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/ImporterImdgConfig.java
@@ -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
diff --git a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/XMLImporterConfig.java b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/XMLImporterConfig.java
index dae81ee05..9638a3a02 100644
--- a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/XMLImporterConfig.java
+++ b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/config/XMLImporterConfig.java
@@ -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> getMapOfTables() {
- Map> map = new HashMap<>();
+ Map> 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));
diff --git a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/data/ResultContainer.java b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/data/ResultContainer.java
index 38c91c374..89eaebf39 100644
--- a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/data/ResultContainer.java
+++ b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/data/ResultContainer.java
@@ -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;
+ }
}
diff --git a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/data/tags/objects/DF55ObjectTag.java b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/data/tags/objects/DF55ObjectTag.java
index af99a464d..3ed10aefe 100644
--- a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/data/tags/objects/DF55ObjectTag.java
+++ b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/data/tags/objects/DF55ObjectTag.java
@@ -155,8 +155,8 @@ public class DF55ObjectTag extends ObjectTag {
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());
diff --git a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/data/tags/objects/DF57ObjectTag.java b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/data/tags/objects/DF57ObjectTag.java
index e4aee9930..0aa43c546 100644
--- a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/data/tags/objects/DF57ObjectTag.java
+++ b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/data/tags/objects/DF57ObjectTag.java
@@ -154,8 +154,8 @@ public class DF57ObjectTag extends ObjectTag {
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());
diff --git a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/steps/ImportToDB.java b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/steps/ImportToDB.java
index 9f1904196..74a8fbe80 100644
--- a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/steps/ImportToDB.java
+++ b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/steps/ImportToDB.java
@@ -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();
diff --git a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/steps/ReadXMLFile.java b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/steps/ReadXMLFile.java
new file mode 100644
index 000000000..48b10fc16
--- /dev/null
+++ b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/logic/steps/ReadXMLFile.java
@@ -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;
+ }
+ }
+}
diff --git a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/services/XMLImporterService.java b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/services/XMLImporterService.java
index b9a8526e9..4384049a4 100644
--- a/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/services/XMLImporterService.java
+++ b/clearing-parent/xml-importer/src/main/java/ru/spcex/clearing/xml/importer/services/XMLImporterService.java
@@ -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 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();
diff --git a/clearing-parent/xml-importer/src/test/java/ru/spcex/clearing/xml/importer/logic/steps/ImportToDBTest.java b/clearing-parent/xml-importer/src/test/java/ru/spcex/clearing/xml/importer/logic/steps/ImportToDBTest.java
new file mode 100644
index 000000000..60f4feef5
--- /dev/null
+++ b/clearing-parent/xml-importer/src/test/java/ru/spcex/clearing/xml/importer/logic/steps/ImportToDBTest.java
@@ -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;
+ @SpyBean
+ private MockProducer producer;
+ @Autowired
+ @Qualifier("mockProducer")
+ protected Producer 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 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 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 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 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 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 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());
+ }
+}
\ No newline at end of file
diff --git a/clearing-parent/xml-importer/src/test/java/ru/spcex/clearing/xml/importer/logic/steps/ReadXMLFileTest.java b/clearing-parent/xml-importer/src/test/java/ru/spcex/clearing/xml/importer/logic/steps/ReadXMLFileTest.java
new file mode 100644
index 000000000..5c092cc3e
--- /dev/null
+++ b/clearing-parent/xml-importer/src/test/java/ru/spcex/clearing/xml/importer/logic/steps/ReadXMLFileTest.java
@@ -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);
+ }
+}
\ No newline at end of file
diff --git a/clearing-parent/xml-importer/src/test/resources/application.properties b/clearing-parent/xml-importer/src/test/resources/application.properties
new file mode 100644
index 000000000..6150e0955
--- /dev/null
+++ b/clearing-parent/xml-importer/src/test/resources/application.properties
@@ -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
\ No newline at end of file
diff --git a/clearing-parent/xml-importer/src/test/resources/xml/DF-01_S_PRC1604240915_1.xml b/clearing-parent/xml-importer/src/test/resources/xml/DF-01_S_PRC1604240915_1.xml
new file mode 100644
index 000000000..8da444be6
--- /dev/null
+++ b/clearing-parent/xml-importer/src/test/resources/xml/DF-01_S_PRC1604240915_1.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/clearing-parent/xml-importer/src/test/resources/xml/DF-04_S_PRC1604240915_1.xml b/clearing-parent/xml-importer/src/test/resources/xml/DF-04_S_PRC1604240915_1.xml
new file mode 100644
index 000000000..947f3cf8c
--- /dev/null
+++ b/clearing-parent/xml-importer/src/test/resources/xml/DF-04_S_PRC1604240915_1.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/clearing-parent/xml-importer/src/test/resources/xml/DF-06_S_PRC1604240915_1.xml b/clearing-parent/xml-importer/src/test/resources/xml/DF-06_S_PRC1604240915_1.xml
new file mode 100644
index 000000000..a25441867
--- /dev/null
+++ b/clearing-parent/xml-importer/src/test/resources/xml/DF-06_S_PRC1604240915_1.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/clearing-parent/xml-importer/src/test/resources/xml/DF-52_S_PRC1604240915_1.xml b/clearing-parent/xml-importer/src/test/resources/xml/DF-52_S_PRC1604240915_1.xml
new file mode 100644
index 000000000..7090a8ee1
--- /dev/null
+++ b/clearing-parent/xml-importer/src/test/resources/xml/DF-52_S_PRC1604240915_1.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/clearing-parent/xml-importer/src/test/resources/xml/DF-55_S_PRC1604240915_1.xml b/clearing-parent/xml-importer/src/test/resources/xml/DF-55_S_PRC1604240915_1.xml
new file mode 100644
index 000000000..613373137
--- /dev/null
+++ b/clearing-parent/xml-importer/src/test/resources/xml/DF-55_S_PRC1604240915_1.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/clearing-parent/xml-importer/src/test/resources/xml/DF-57_S_PRC1604240915_1.xml b/clearing-parent/xml-importer/src/test/resources/xml/DF-57_S_PRC1604240915_1.xml
new file mode 100644
index 000000000..b15db8bf7
--- /dev/null
+++ b/clearing-parent/xml-importer/src/test/resources/xml/DF-57_S_PRC1604240915_1.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
\ No newline at end of file