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