This commit is contained in:
Ivan Nikolaev-Axenov 2024-11-21 13:00:05 +03:00
parent e3099abb42
commit 9db8a6f4a8
16 changed files with 68 additions and 37 deletions

View file

@ -1,6 +1,7 @@
package ru.spcex.clearing.xml.exporter.config.settings;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import ru.spcex.clearing.platform.messaging.config.element.KafkaConsumerSettings;
@ -11,13 +12,21 @@ import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams;
@PropertySource("file:${spring.config.location}/application.properties")
@ConfigurationProperties("export-xml-service")
public class ExportXMLServiceSettings {
@NestedConfigurationProperty
private HazelcastClientParams hazelcast;
@NestedConfigurationProperty
private KafkaConsumerSettings kafkaConsumer;
@NestedConfigurationProperty
private KafkaProducerSettings kafkaProducer;
@NestedConfigurationProperty
private Common common;
@NestedConfigurationProperty
private Store store;
@NestedConfigurationProperty
private Cron cron;
private String section;
public HazelcastClientParams getHazelcast() {
return hazelcast;
}
@ -65,4 +74,12 @@ public class ExportXMLServiceSettings {
public void setKafkaProducer(KafkaProducerSettings kafkaProducer) {
this.kafkaProducer = kafkaProducer;
}
public String getSection() {
return section;
}
public void setSection(String section) {
this.section = section;
}
}

View file

@ -17,10 +17,12 @@ public class ResultContainer {
private LocalDateTime registrationDateTime;
private String memberCode;
private DocumentTag documentTag;
private String section;
public ResultContainer(Table tableForExport) {
public ResultContainer(Table tableForExport, String section) {
this.tableForExport = tableForExport;
this.uuid = UUID.randomUUID();
this.section = section;
}
public Table getTableForExport() {
@ -94,4 +96,12 @@ public class ResultContainer {
public void setDocumentTag(DocumentTag documentTag) {
this.documentTag = documentTag;
}
public String getSection() {
return section;
}
public void setSection(String section) {
this.section = section;
}
}

View file

@ -1,6 +1,5 @@
package ru.spcex.clearing.xml.exporter.logic.data.enums;
import static ru.spcex.clearing.xml.exporter.logic.stages.PrepareXMLFile.SECTION;
import static ru.spcex.clearing.xml.exporter.logic.stages.PrepareXMLFile.outDir;
import java.io.File;
@ -46,7 +45,7 @@ public enum FilenameTemplate {
name.substring(i);
}
},
df_section_dateTime_counter_mamberCode {
df_section_dateTime_counter_memberCode {
@Override
public String getFileName(ResultContainer resultContainer, List<SftpFileInfo> files) {
return appendSection(resultContainer)
@ -63,7 +62,7 @@ public enum FilenameTemplate {
result.append(File.separator);
result.append(resultContainer.getTableForExport().getFilePrefix().toUpperCase(Locale.ROOT));
result.append('_');
result.append(SECTION);
result.append(resultContainer.getSection());
return result;
}

View file

@ -25,7 +25,6 @@ import ru.spcex.clearing.xml.exporter.logic.data.enums.Table;
@Component
public class PrepareXMLFile implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());
public static final String SECTION = "S";
private final ExportXMLServiceSettings settings;
public static String outDir;
private final SFTPConfig.XmlGateway gateway;
@ -83,12 +82,12 @@ public class PrepareXMLFile implements InitializingBean {
private static final Map<Table, FilenameTemplate> nameTemplates = new EnumMap<>(Table.class);
static {
nameTemplates.put(Table.S_DF02, FilenameTemplate.df_section_sameName);
nameTemplates.put(Table.S_DF02, FilenameTemplate.df_section_dateTime_counter); // df_section_sameName
nameTemplates.put(Table.S_DF03, FilenameTemplate.df_section_dateTime_counter);
nameTemplates.put(Table.S_DF05, FilenameTemplate.df_section_dateTime);
nameTemplates.put(Table.S_DF07, FilenameTemplate.df_section_sameName);
nameTemplates.put(Table.S_DF05, FilenameTemplate.df_section_dateTime_counter); // df_section_dateTime
nameTemplates.put(Table.S_DF07, FilenameTemplate.df_section_dateTime_counter); // df_section_sameName
nameTemplates.put(Table.S_DF51, FilenameTemplate.df_section_dateTime_counter);
nameTemplates.put(Table.S_DF53, FilenameTemplate.df_section_sameName);
nameTemplates.put(Table.S_DF53, FilenameTemplate.df_section_dateTime_counter); // df_section_sameName
nameTemplates.put(Table.S_DF54, FilenameTemplate.df_section_dateTime_counter);
nameTemplates.put(Table.S_DF56, FilenameTemplate.df_section_dateTime_counter);
}

View file

@ -6,6 +6,7 @@ import org.apache.kafka.clients.consumer.Consumer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.StopWatch;
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
@ -31,17 +32,20 @@ public class CommandService extends QueueConsumer implements InitializingBean {
private final ExportFromHazelcast exportFromHazelcast;
private final WriteXMLFile writeXMLFile;
private final Journal journal;
private final String section;
public CommandService(Consumer<String, Object> kafkaQueue,
PrepareXMLFile prepareXMLFile,
ExportFromHazelcast exportFromHazelcast,
WriteXMLFile writeXMLFile,
Journal journal) {
Journal journal,
@Value("${export-xml-service.section:S}") String section) {
super(kafkaQueue);
this.prepareXMLFile = prepareXMLFile;
this.exportFromHazelcast = exportFromHazelcast;
this.writeXMLFile = writeXMLFile;
this.journal = journal;
this.section = section;
}
@Override
@ -88,7 +92,7 @@ public class CommandService extends QueueConsumer implements InitializingBean {
if (tableForExport.isEmpty()) {
throw new IllegalStateException(String.format("Unsupported table prefix: %s", request.getNameOfTable()));
}
ResultContainer resultContainer = new ResultContainer(tableForExport.get());
ResultContainer resultContainer = new ResultContainer(tableForExport.get(), section);
resultContainer.setGroupId(request.getSdfGroupId());
resultContainer.setSourceName(request.getFileName());
runProcess(resultContainer);
@ -96,7 +100,7 @@ public class CommandService extends QueueConsumer implements InitializingBean {
private void processSpecial(Table table, BaseRequest<SdfClearingRequest> systemRequest) {
SdfClearingRequest request = systemRequest.getRequestPayload();
ResultContainer resultContainer = new ResultContainer(table);
ResultContainer resultContainer = new ResultContainer(table, section);
resultContainer.setGroupId(request.getGroupId());
resultContainer.setSourceName(null);
runProcess(resultContainer);
@ -105,7 +109,7 @@ public class CommandService extends QueueConsumer implements InitializingBean {
private void processByLauncher(Table table, BaseRequest<LauncherCommandRequest> systemRequest) {
LauncherCommandRequest request = systemRequest.getRequestPayload();
log.info("RequestId={}, LauncherCommandRequest task={}. Table {}", systemRequest.getId(), request.getTaskName(), table);
ResultContainer resultContainer = new ResultContainer(table);
ResultContainer resultContainer = new ResultContainer(table, section);
resultContainer.setGroupId(null);
resultContainer.setSourceName(null);
runProcess(resultContainer);

View file

@ -30,3 +30,5 @@ export-xml-service.kafka-producer.retries=0
export-xml-service.kafka-producer.batch-size=16384
export-xml-service.kafka-producer.linger-ms=1
export-xml-service.kafka-producer.buffer-memory=33554432
export-xml-service.section=S

View file

@ -110,7 +110,7 @@ class ExportFromHazelcastTest {
Imdg<SDf02> imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf02, SDf02.class);
imdg.insert(expectedSDf02);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF02);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF02, "S");
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-02_S_PRC1604240915_1.xml"));
StageResult stageResult = exportFromHazelcast.process(actualResultContainer);
@ -152,7 +152,7 @@ class ExportFromHazelcastTest {
Imdg<SDf03> imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf03, SDf03.class);
imdg.insert(expectedSDf03);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF03);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF03, "S");
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-03_S_PRC1604240915_1.xml"));
StageResult stageResult = exportFromHazelcast.process(actualResultContainer);
@ -186,7 +186,7 @@ class ExportFromHazelcastTest {
Imdg<SDf05> imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf05, SDf05.class);
imdg.insert(expectedSDf05);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF05);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF05, "S");
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-05_S_PRC1604240915_1.xml"));
StageResult stageResult = exportFromHazelcast.process(actualResultContainer);
@ -220,7 +220,7 @@ class ExportFromHazelcastTest {
Imdg<SDf07> imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf07, SDf07.class);
imdg.insert(expectedSDf07);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF07);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF07, "S");
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-07_S_PRC1604240915_1.xml"));
StageResult stageResult = exportFromHazelcast.process(actualResultContainer);
@ -252,7 +252,7 @@ class ExportFromHazelcastTest {
Imdg<SDf51> imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf51, SDf51.class);
imdg.insert(expectedSDf51);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF51);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF51, "S");
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-51_S_PRC1604240915_1.xml"));
StageResult stageResult = exportFromHazelcast.process(actualResultContainer);
@ -279,7 +279,7 @@ class ExportFromHazelcastTest {
Imdg<SDf53> imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf53, SDf53.class);
imdg.insert(expectedSDf53);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF53);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF53, "S");
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-53_S_PRC1604240915_1.xml"));
StageResult stageResult = exportFromHazelcast.process(actualResultContainer);
@ -334,7 +334,7 @@ class ExportFromHazelcastTest {
Imdg<SDf54> imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf54, SDf54.class);
imdg.insert(expectedSDf54);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF54);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF54, "S");
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-54_S_PRC1604240915_1.xml"));
StageResult stageResult = exportFromHazelcast.process(actualResultContainer);
@ -387,7 +387,7 @@ class ExportFromHazelcastTest {
Imdg<SDf56> imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf56, SDf56.class);
imdg.insert(expectedSDf56);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF56);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF56, "S");
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-56_S_PRC1604240915_1.xml"));
StageResult stageResult = exportFromHazelcast.process(actualResultContainer);

View file

@ -99,7 +99,7 @@ class WriteXMLFileTest {
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF02);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF02, "S");
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-02_S_PRC1604240915_1.xml"));
actualResultContainer.setDocumentTag(expectedDocumentTag);
@ -146,7 +146,7 @@ class WriteXMLFileTest {
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF03);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF03, "S");
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-03_S_PRC1604240915_1.xml"));
actualResultContainer.setDocumentTag(expectedDocumentTag);
@ -184,7 +184,7 @@ class WriteXMLFileTest {
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF05);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF05, "S");
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-05_S_PRC1604240915_1.xml"));
actualResultContainer.setDocumentTag(expectedDocumentTag);
@ -231,7 +231,7 @@ class WriteXMLFileTest {
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF07);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF07, "S");
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-07_S_PRC1604240915_1.xml"));
actualResultContainer.setDocumentTag(expectedDocumentTag);
@ -268,7 +268,7 @@ class WriteXMLFileTest {
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF51);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF51, "S");
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-51_S_PRC1604240915_1.xml"));
actualResultContainer.setDocumentTag(expectedDocumentTag);
@ -309,7 +309,7 @@ class WriteXMLFileTest {
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF53);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF53, "S");
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-53_S_PRC1604240915_1.xml"));
actualResultContainer.setDocumentTag(expectedDocumentTag);
@ -374,7 +374,7 @@ class WriteXMLFileTest {
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF54);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF54, "S");
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-54_S_PRC1604240915_1.xml"));
actualResultContainer.setDocumentTag(expectedDocumentTag);
@ -415,7 +415,7 @@ class WriteXMLFileTest {
expectedDocumentTag.setParentDoc(expectedParentDocTag);
expectedDocumentTag.setObjects(List.of(expectedObjectTag));
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF56);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF56, "S");
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-56_S_PRC1604240915_1.xml"));
actualResultContainer.setDocumentTag(expectedDocumentTag);

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF02" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECEIVER="">
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF02" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT CURR_CODE="test1" ACCOUNT="test2" REMAINDER="test3" DEAL="test4" ACC_CODE="test5" DAT="2024-03-14" MARKET="test6" ACC_NAME="test7" ACC_TYPE="test8" SUMENGAGE="test9" SUMUNBLOK="test10" FILE_TYPE="test11"/>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF03" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECEIVER="">
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF03" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT SEG_TYPE="test1" DOC_TYPE="test2" DOCNM_REF="test3" DOCNMPREV="test4" C_ACC_DEB="test5" SBANKNAM="test6" C_ACC_CRED="test7" RBANKNAM="test8" PAY_DATE="2024-03-14" PAY_VAL="test9" SUM_DEB="test10" SPECIF_1="test11" IMP_RESULT="test12"/>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF05" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECEIVER="">
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF05" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT TP="10" DT="2024-03-14" TM="09:22:12" PR="test2"/>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF07" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECEIVER="">
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF07" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT ACCOUNT="test1" SUM="10" MARKET="test3" TYPE="test4" DEAL="test5" CLIENTN="test6" INN="test7" BIC="test8" SPEC="test9" NUMBER="2" DOC_NUM="test11" DOC_DATE="2024-03-14" PAY_VAL="test12"/>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF51" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECEIVER="">
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF51" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT NUMBER="1234" UNIXTIME="1710396191" DATETIME="2024-03-14T09:03:11"/>

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF53" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECEIVER="">
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF53" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT ACCOUNT="test1" ACC_NAME="test2" DEAL="test3" DATE="2024-03-14" STATUS="1" ACC_TYPE="test4" RESULT="test5"/>

View file

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

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF56" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECEIVER="">
<DOCUMENT MESSAGEID="" MESSAGETYPE="DF56" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS>
<OBJECT NUMBER="test1" SUNIXTIME="1710396191" SDATETIME="2024-03-14T09:03:11" EUNIXTIME="1713168191" EDATETIME="2024-04-15T11:03:11" ACCOUNT="test4" DEAL="test5"/>