akulikov 2024-11-29 16:35:20 +03:00
parent dc3427bdf9
commit 75ac48c00d
19 changed files with 83 additions and 86 deletions

View file

@ -116,6 +116,8 @@ public class SDFProcessService {
newSdf.setResult(result);
newSdf.setGenerationTime(now);
newSdf.setGenerationId(sdf52.getGenerationId());
newSdf.setMessageId(String.valueOf(sdf52.getGenerationId()));
newSdf.setParentId(sdf52.getMessageId());
if (!Objects.equals(newGenerationId, newSdf.getGenerationId())) { // never
log.warn("Different GenerationId={} for sdf53[{}] and GenerationId={} for group of sdf52",
newSdf.getGenerationId(), newSdf.getId(), newGenerationId

View file

@ -4,13 +4,14 @@ import java.time.Instant;
import ru.clearing.classes.ConstSerializable;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.spcex.platform.classes.base.interfaces.WithAccount;
import ru.spcex.platform.classes.base.interfaces.WithFileName;
/**
* ДФ-02 Уведомление об исполнении операции загрузки денежных средств или уведомление об ошибке
* <p>
* DB table: S_DF02
**/
public class SDf02 extends SpcexObjectBase implements WithAccount, WithMessageId, WithParentId {
public class SDf02 extends SpcexObjectBase implements WithAccount, WithMessageId, WithParentId, WithFileName {
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private String curr_code;

View file

@ -3,13 +3,14 @@ package ru.clearing.classes.statics.data.sdf;
import java.time.Instant;
import ru.clearing.classes.ConstSerializable;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.spcex.platform.classes.base.interfaces.WithFileName;
/**
* ДФ-03 Реестр платежных поручений
* <p>
* DB table: S_DF03
**/
public class SDf03 extends SpcexObjectBase implements WithMessageId, WithParentId {
public class SDf03 extends SpcexObjectBase implements WithMessageId, WithParentId, WithFileName {
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private String seg_type;

View file

@ -4,13 +4,14 @@ import java.math.BigDecimal;
import java.time.Instant;
import ru.clearing.classes.ConstSerializable;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.spcex.platform.classes.base.interfaces.WithFileName;
/**
* ДФ-07 Ответ на запрос по зачислению/списанию денежных средств
* <p>
* DB table: S_DF07
**/
public class SDf07 extends SpcexObjectBase implements WithMessageId, WithParentId {
public class SDf07 extends SpcexObjectBase implements WithMessageId, WithParentId, WithFileName {
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private String account;

View file

@ -3,13 +3,14 @@ package ru.clearing.classes.statics.data.sdf;
import java.time.Instant;
import ru.clearing.classes.ConstSerializable;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.spcex.platform.classes.base.interfaces.WithFileName;
/**
* ДФ-53 Квитанция о получении информации о состоянии счета (блокировка/разблокировка/закрытие/открытие)
* <p>
* DB table: S_DF53
**/
public class SDf53 extends SpcexObjectBase implements WithMessageId, WithParentId {
public class SDf53 extends SpcexObjectBase implements WithMessageId, WithParentId, WithFileName {
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private String account;

View file

@ -301,6 +301,8 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
}
sDf02.setGenerationId(generationIdForGroup);
sDf02.setGenerationTime(Instant.now());
sDf02.setMessageId(String.valueOf(sdf01.getGenerationId()));
sDf02.setParentId(sdf01.getMessageId());
return sDf02;
}
@ -322,6 +324,8 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
sDf02.setGenerationId(generationIdForGroup);
sDf02.setGenerationTime(Instant.now());
sDf02.setResult(SdfResult.OK.getKey());
sDf02.setMessageId(String.valueOf(sdf01.getGenerationId()));
sDf02.setParentId(sdf01.getMessageId());
return sDf02;
}

View file

@ -357,6 +357,8 @@ public class Sdf06Executor {
sDf07.setDoc_date(sdf06.getDoc_date());
sDf07.setDoc_num(sdf06.getDoc_num());
sDf07.setPay_val(sdf06.getPay_val());
sDf07.setMessageId(String.valueOf(sdf06.getGenerationId()));
sDf07.setParentId(sdf06.getMessageId());
return sDf07;
}

View file

@ -10,21 +10,17 @@ import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.function.Supplier;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import net.logstash.logback.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.sdf.SDf01;
import ru.clearing.classes.statics.data.sdf.SDf02;
import ru.clearing.classes.statics.data.sdf.SDf06;
import ru.clearing.classes.statics.data.sdf.SDf03;
import ru.clearing.classes.statics.data.sdf.SDf07;
import ru.clearing.classes.statics.data.sdf.SDf52;
import ru.clearing.classes.statics.data.sdf.SDf53;
import ru.clearing.classes.statics.data.sdf.WithMessageId;
import ru.clearing.classes.statics.data.sdf.WithParentId;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import static ru.spcex.clearing.platform.messaging.domain.Consts.PAIR_SDF;
import ru.spcex.clearing.platform.messaging.domain.cud.utilities.PairSdfRequest;
@ -40,6 +36,7 @@ import ru.spcex.clearing.xml.exporter.logic.data.tags.ParentDocTag;
import ru.spcex.clearing.xml.exporter.logic.data.tags.objects.ObjectTag;
import static ru.spcex.clearing.xml.exporter.logic.data.tags.objects.ObjectTag.ruCurrency;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.spcex.platform.classes.base.interfaces.WithFileName;
import ru.spcex.platform.enumeration.CurrencyCode;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
@ -54,9 +51,10 @@ public class ExportFromHazelcast {
private final ExportXMLServiceSettings settings;
private final XmlMapper xmlMapper;
private final Imdg<SDf01> sDf01Imdg;
private final Imdg<SDf52> sDf52Imdg;
private final Imdg<SDf06> sDf06Imdg;
private final Imdg<SDf02> sDf02Imdg;
private final Imdg<SDf03> sDf03Imdg;
private final Imdg<SDf07> sDf07Imdg;
private final Imdg<SDf53> sDf53Imdg;
public ExportFromHazelcast(ImdgProvider imdgProvider,
SFTPConfig.XmlGateway gateway,
@ -70,9 +68,10 @@ public class ExportFromHazelcast {
this.kafkaSender = kafkaSender;
this.settings = settings;
this.sDf01Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf01, SDf01.class);
this.sDf52Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf52, SDf52.class);
this.sDf06Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf06, SDf06.class);
this.sDf02Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf02, SDf02.class);
this.sDf03Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf03, SDf03.class);
this.sDf53Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf53, SDf53.class);
this.sDf07Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf07, SDf07.class);
this.xmlMapper = xmlMapper;
}
@ -89,13 +88,24 @@ public class ExportFromHazelcast {
path = settings.getStore().getOutPayValDir().get(currency);
}
String messageName = switch (table) {
case S_DF02 -> "Квитанция приема остатков";
case S_DF03 -> "Распоряжение по итогам клиринга";
case S_DF05 -> "Уведомление о завершении клиринга";
case S_DF07 -> "Квитанция на запрос неторгового поручения";
case S_DF51 -> "Запрос на получение остатков";
case S_DF54 -> "Распоряжение на вывод денежных средств";
case S_DF56 -> "Запрос на получение выписки по счетам";
default -> "";
};
DocumentTag documentTag = new DocumentTag();
ParentDocTag parentDocTag = new ParentDocTag();
parentDocTag.setParentId("");
// todo: Добавить данные DocumentTag'а
documentTag.setMessageId(String.valueOf(resultContainer.getGroupId()));
documentTag.setMessageType(table.getFilePrefix().replace("-", ""));
documentTag.setMessageName("");
documentTag.setMessageName(messageName);
documentTag.setMessageDate(LocalDate.now());
documentTag.setMessageTime(LocalTime.now());
@ -141,12 +151,11 @@ public class ExportFromHazelcast {
}
for (SpcexObjectBase s : tableRows) {
if (s instanceof SDf02 sDf02) {
patchDocumentTag(documentTag, sDf02.getInSDfId(), sDf01Imdg, SDf01::getMessageId);
} else if (s instanceof SDf53 sDf53) {
patchDocumentTag(documentTag, sDf53.getInSDfId(), sDf52Imdg, SDf52::getMessageId);
} else if (s instanceof SDf07 sDf07) {
patchDocumentTag(documentTag, sDf07.getInSDfId(), sDf06Imdg, SDf06::getMessageId);
if (s instanceof WithParentId withParentId && withParentId.getParentId() != null) {
documentTag.getParentDoc().setParentId(withParentId.getParentId());
}
if (s instanceof WithFileName withFileName) {
updateSdfFilename(withFileName, xmlFile);
}
}
@ -169,6 +178,14 @@ public class ExportFromHazelcast {
return StageResult.OK;
}
private void updateSdfFilename(WithFileName s, File file) {
s.setFileName(file.getName());
if (s instanceof SDf02 sDf02) sDf02Imdg.update(sDf02);
else if (s instanceof SDf03 sDf03) sDf03Imdg.update(sDf03);
else if (s instanceof SDf53 sDf53) sDf53Imdg.update(sDf53);
else if (s instanceof SDf07 sDf07) sDf07Imdg.update(sDf07);
}
private <T extends SpcexObjectBase> List<ObjectTag<? extends SpcexObjectBase>> addObjectTags(Collection<T> tableRows, Table table) {
List<ObjectTag<? extends SpcexObjectBase>> result = new ArrayList<>();
@ -182,23 +199,6 @@ public class ExportFromHazelcast {
return result;
}
private <T extends SpcexObjectBase> void patchDocumentTag(DocumentTag documentTag, Long inSdfId, Imdg<T> mapWithInSdf, Function<T, String> messageIdGetter) {
T inSdf = mapWithInSdf.getSingleObjectByID(inSdfId);
if (inSdf instanceof WithMessageId withMessageId) {
if (StringUtils.isBlank(documentTag.getParentDoc().getParentId())) {
documentTag.getParentDoc().setParentId(withMessageId.getMessageId());
} else if (!documentTag.getParentDoc().getParentId().equalsIgnoreCase(withMessageId.getMessageId())) {
log.warn(
"Different messageId (for batch {}, current {}), skip",
documentTag.getParentDoc().getParentId(),
withMessageId.getMessageId()
);
} else {
documentTag.getParentDoc().setParentId(withMessageId.getMessageId());
}
}
}
private void sendPairSdfRequest(ResultContainer resultContainer) {
PairSdfRequest request = new PairSdfRequest();
request.setGenerationId(resultContainer.getGroupId());

View file

@ -15,6 +15,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.balance.ExportToFileReque
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.SdfClearingRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
import ru.spcex.clearing.xml.exporter.logic.data.ResultContainer;
import ru.spcex.clearing.xml.exporter.logic.data.enums.StageResult;
import ru.spcex.clearing.xml.exporter.logic.data.enums.Table;
@ -47,41 +48,41 @@ public class CommandService extends QueueConsumer implements InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
callback(ExportToFileRequest.class)
.setConsumer(this::process)
.setFunction(this::process)
.forDestination(Consts.EXPORT_PROCESS, callbacks::put);
callback(SdfClearingRequest.class)
.setConsumer(r -> processSpecial(Table.S_DF02, r))
.setFunction(r -> processSpecial(Table.S_DF02, r))
.forDestination(Consts.SDF02_PROCESS, callbacks::put);
callback(SdfClearingRequest.class)
.setConsumer(r -> processSpecial(Table.S_DF03, r)) // todo необходимо в отдельную папку: "в отдельную директорию SettlementHouse_Fail (чтобы не отдавать такие файлы в ПРЦ"
.setFunction(r -> processSpecial(Table.S_DF03, r)) // todo необходимо в отдельную папку: "в отдельную директорию SettlementHouse_Fail (чтобы не отдавать такие файлы в ПРЦ"
.forDestination(Consts.SDF03_PROCESS, callbacks::put);
callback(SdfClearingRequest.class)
.setConsumer(r -> processSpecial(Table.S_DF05, r))
.setFunction(r -> processSpecial(Table.S_DF05, r))
.forDestination(Consts.SDF05_PROCESS, callbacks::put);
callback(SdfClearingRequest.class)
.setConsumer(r -> processSpecial(Table.S_DF07, r))
.setFunction(r -> processSpecial(Table.S_DF07, r))
.forDestination(Consts.SDF07_PROCESS, callbacks::put);
callback(SdfClearingRequest.class)
.setConsumer(r -> processSpecial(Table.S_DF51, r))
.setFunction(r -> processSpecial(Table.S_DF51, r))
.forDestination(Consts.SDF51_PROCESS, callbacks::put);
callback(SdfClearingRequest.class)
.setConsumer(r -> processSpecial(Table.S_DF53, r))
.setFunction(r -> processSpecial(Table.S_DF53, r))
.forDestination(Consts.SDF53_PROCESS, callbacks::put);
callback(SdfClearingRequest.class)
.setConsumer(r -> processSpecial(Table.S_DF54, r))
.setFunction(r -> processSpecial(Table.S_DF54, r))
.forDestination(Consts.SDF54_PROCESS, callbacks::put);
callback(SdfClearingRequest.class)
.setConsumer(r -> processSpecial(Table.S_DF56, r))
.setFunction(r -> processSpecial(Table.S_DF56, r))
.forDestination(Consts.SDF56_PROCESS, callbacks::put);
callback(LauncherCommandRequest.class)
.setConsumer(r -> processByLauncher(Table.S_DF54, r))
.setFunction(r -> processByLauncher(Table.S_DF54, r))
.forDestination(Task.dbfExport_OUTV.topic(), callbacks::put); // todo: добавить код для экспорта XML
init();
}
private void process(BaseRequest<ExportToFileRequest> systemRequest) {
private RequestInfoUpdate process(BaseRequest<ExportToFileRequest> systemRequest) {
ExportToFileRequest request = systemRequest.getRequestPayload();
Optional<Table> tableForExport = Arrays.stream(Table.values()).
filter(table -> table.getFilePrefix().equalsIgnoreCase(request.getNameOfTable())).findFirst();
@ -91,27 +92,27 @@ public class CommandService extends QueueConsumer implements InitializingBean {
ResultContainer resultContainer = new ResultContainer(tableForExport.get(), section);
resultContainer.setGroupId(request.getSdfGroupId());
resultContainer.setSourceName(request.getFileName());
runProcess(resultContainer);
return runProcess(resultContainer);
}
private void processSpecial(Table table, BaseRequest<SdfClearingRequest> systemRequest) {
private RequestInfoUpdate processSpecial(Table table, BaseRequest<SdfClearingRequest> systemRequest) {
SdfClearingRequest request = systemRequest.getRequestPayload();
ResultContainer resultContainer = new ResultContainer(table, section);
resultContainer.setGroupId(request.getGroupId());
resultContainer.setSourceName(null);
runProcess(resultContainer);
return runProcess(resultContainer);
}
private void processByLauncher(Table table, BaseRequest<LauncherCommandRequest> systemRequest) {
private RequestInfoUpdate 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, section);
resultContainer.setGroupId(null);
resultContainer.setSourceName(null);
runProcess(resultContainer);
return runProcess(resultContainer);
}
private void runProcess(ResultContainer resultContainer) {
private RequestInfoUpdate runProcess(ResultContainer resultContainer) {
log.info("uuid {}. Task started", resultContainer.getUuid());
StageResult result;
@ -133,5 +134,6 @@ public class CommandService extends QueueConsumer implements InitializingBean {
resultContainer.getUuid(),
result,
stopWatch.getTotalTimeMillis());
return null;
}
}

View file

@ -33,14 +33,11 @@ import org.springframework.boot.test.mock.mockito.SpyBean;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.TestPropertySource;
import ru.clearing.classes.statics.data.sdf.SDf01;
import ru.clearing.classes.statics.data.sdf.SDf02;
import ru.clearing.classes.statics.data.sdf.SDf03;
import ru.clearing.classes.statics.data.sdf.SDf05;
import ru.clearing.classes.statics.data.sdf.SDf06;
import ru.clearing.classes.statics.data.sdf.SDf07;
import ru.clearing.classes.statics.data.sdf.SDf51;
import ru.clearing.classes.statics.data.sdf.SDf52;
import ru.clearing.classes.statics.data.sdf.SDf53;
import ru.clearing.classes.statics.data.sdf.SDf54;
import ru.clearing.classes.statics.data.sdf.SDf56;
@ -136,16 +133,11 @@ class ExportFromHazelcastTest {
expectedSDf02.setFile_type("test11");
expectedSDf02.setResult("test12");
expectedSDf02.setInSDfId((long) "inSDf02Id".hashCode());
expectedSDf02.setParentId("007");
Imdg<SDf02> imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf02, SDf02.class);
imdg.insert(expectedSDf02);
SDf01 forParentId = new SDf01();
forParentId.setId(expectedSDf02.getInSDfId());
forParentId.setMessageId("007");
Imdg<SDf01> sDf01Imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf01, SDf01.class);
sDf01Imdg.insert(forParentId);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF02, "S");
actualResultContainer.setGroupId(1777L);
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-02_S_PRC1604240915_1.xml"));
@ -311,16 +303,11 @@ class ExportFromHazelcastTest {
expectedSDf07.setDoc_num("test11");
expectedSDf07.setDoc_date("14.03.24");
expectedSDf07.setPay_val("test12");
expectedSDf07.setParentId("005");
Imdg<SDf07> imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf07, SDf07.class);
imdg.insert(expectedSDf07);
SDf06 forParentId = new SDf06();
forParentId.setId(expectedSDf07.getInSDfId());
forParentId.setMessageId("005");
Imdg<SDf06> sDf06Imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf06, SDf06.class);
sDf06Imdg.insert(forParentId);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF07, "S");
actualResultContainer.setGroupId(3775L);
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-07_S_PRC1604240915_1.xml"));
@ -401,16 +388,11 @@ class ExportFromHazelcastTest {
expectedSDf53.setStatus(1L);
expectedSDf53.setAccType("test4");
expectedSDf53.setResult("test5");
expectedSDf53.setParentId("006");
Imdg<SDf53> imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf53, SDf53.class);
imdg.insert(expectedSDf53);
SDf52 forParentId = new SDf52();
forParentId.setId(expectedSDf53.getInSDfId());
forParentId.setMessageId("006");
Imdg<SDf52> sDf52Imdg = hazelcastService.getImdg(IMDGDistributedNames.Map_SDf52, SDf52.class);
sDf52Imdg.insert(forParentId);
ResultContainer actualResultContainer = new ResultContainer(Table.S_DF53, "S");
actualResultContainer.setGroupId(2776L);
actualResultContainer.setFileForExport(new File("./src/test/resources/xml/DF-53_S_PRC1604240915_1.xml"));

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<DOCUMENT MESSAGEID="1777" MESSAGETYPE="DF02" MESSAGENAME="" MESSAGEDATE="2024-11-27" MESSAGETIME="15:14:34" SENDER="" RECIEVER="">
<DOCUMENT MESSAGEID="1777" MESSAGETYPE="DF02" MESSAGENAME="Квитанция приема остатков" MESSAGEDATE="2024-11-27" MESSAGETIME="15:14:34" SENDER="" RECIEVER="">
<PARENTDOC PARENTID="007"/>
<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" RESULT="test12"/>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<DOCUMENT MESSAGEID="null" MESSAGETYPE="DF02" MESSAGENAME="" MESSAGEDATE="2024-11-27" MESSAGETIME="15:14:34" SENDER="" RECIEVER="">
<DOCUMENT MESSAGEID="null" MESSAGETYPE="DF02" MESSAGENAME="Квитанция приема остатков" MESSAGEDATE="2024-11-27" MESSAGETIME="15:14:34" SENDER="" RECIEVER="">
<PARENTDOC PARENTID=""/>
<OBJECTS/>
</DOCUMENT>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<DOCUMENT MESSAGEID="null" MESSAGETYPE="DF03" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<DOCUMENT MESSAGEID="null" 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="null" MESSAGETYPE="DF05" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<DOCUMENT MESSAGEID="null" 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="3775" MESSAGETYPE="DF07" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<DOCUMENT MESSAGEID="3775" MESSAGETYPE="DF07" MESSAGENAME="Квитанция на запрос неторгового поручения" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<PARENTDOC PARENTID="005"/>
<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="null" MESSAGETYPE="DF51" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<DOCUMENT MESSAGEID="null" 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="null" MESSAGETYPE="DF54" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<DOCUMENT MESSAGEID="null" 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="null" MESSAGETYPE="DF56" MESSAGENAME="" MESSAGEDATE="2024-03-14" MESSAGETIME="09:15:31" SENDER="" RECIEVER="">
<DOCUMENT MESSAGEID="null" 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"/>

View file

@ -2,4 +2,5 @@ package ru.spcex.platform.classes.base.interfaces;
public interface WithFileName {
String getFileName();
void setFileName(String fileName);
}