diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf01.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf01.java
index d17918ae7..787b655f7 100644
--- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf01.java
+++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf01.java
@@ -3,6 +3,7 @@ package ru.clearing.classes.statics.data.sdf;
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;
import ru.spcex.platform.classes.base.interfaces.WithMarket;
import java.time.Instant;
@@ -12,7 +13,7 @@ import java.time.Instant;
*
* DB table: S_DF01
**/
-public class SDf01 extends SpcexObjectBase implements WithAccount, WithMarket {
+public class SDf01 extends SpcexObjectBase implements WithAccount, WithMarket, WithFileName {
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private String curr_code;
diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf06.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf06.java
index 1e2c5e432..9c879d92d 100644
--- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf06.java
+++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf06.java
@@ -2,6 +2,7 @@ package ru.clearing.classes.statics.data.sdf;
import ru.clearing.classes.ConstSerializable;
import ru.spcex.platform.classes.base.SpcexObjectBase;
+import ru.spcex.platform.classes.base.interfaces.WithFileName;
import java.math.BigDecimal;
import java.time.Instant;
@@ -11,7 +12,7 @@ import java.time.Instant;
*
* DB table: S_DF06
**/
-public class SDf06 extends SpcexObjectBase {
+public class SDf06 extends SpcexObjectBase implements WithFileName {
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private String account;
diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/AbstractExecutor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/AbstractExecutor.java
index afead4914..a3230e4a1 100644
--- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/AbstractExecutor.java
+++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/AbstractExecutor.java
@@ -3,12 +3,21 @@ package ru.spcex.clearing.service.executors;
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.clearing.service.model.Result;
+import ru.spcex.platform.classes.base.interfaces.WithFileName;
import java.util.Collection;
+import java.util.Objects;
public abstract class AbstractExecutor {
public abstract Result execute(Collection sdf, StatementRequest statementRequest);
public abstract String exportTableName();
public abstract boolean isNeedToSendCommand();
public abstract void sendCommand(KafkaSender kafkaSender, Result result);
+ public static String getFileName(Collection extends WithFileName> sdfs) {
+ return sdfs.stream()
+ .map(WithFileName::getFileName)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .orElse(null);
+ }
}
diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java
index 2e92d441e..279f19167 100644
--- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java
+++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java
@@ -99,6 +99,7 @@ public class Sdf01Executor extends AbstractExecutor {
ExportToFileRequest exportRequest = new ExportToFileRequest();
exportRequest.setSdfGroupId(result.getChildGenerationId());
exportRequest.setNameOfTable(exportTableName());
+ exportRequest.setFileName(result.getFileName());
kafkaSender.sendRequestToQueue(Consts.EXPORT_PROCESS, exportRequest);
}
@@ -106,8 +107,8 @@ public class Sdf01Executor extends AbstractExecutor {
Result result = new Result();
Long generationIdForGroup = statementRequest.getChildGenerationId() != null ? statementRequest.getChildGenerationId() : imdgProvider.getImdgIdGenerator().nextId();
result.setChildGenerationId(generationIdForGroup);
-// boolean reviseFailed = false;
- log.info("SDF01 execution: sdf01 number={}, groupId={}", sdf.size(), sdf.stream().findFirst().map(SDf01::getGenerationId).orElse(null));
+ result.setFileName(getFileName(sdf));
+ log.info("SDF01 execution: sdf01 file={} number={}, groupId={}", result.getFileName(), sdf.size(), sdf.stream().findFirst().map(SDf01::getGenerationId).orElse(null));
for (SDf01 sdf01 : sdf) {
IValidator validator = sDf01Validator.apply(sdf01);
Optional error = validator.tillFirstError();
diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf06Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf06Executor.java
index 95be88dd2..47a6fe3fe 100644
--- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf06Executor.java
+++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf06Executor.java
@@ -34,6 +34,7 @@ import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.enumeration.IMessageResolver;
import ru.spcex.platform.utils.number.BigDecimalUtil;
+import ru.spcex.platform.utils.text.TextUtil;
import ru.spcex.platform.utils.validation.IValidator;
import java.math.BigDecimal;
@@ -105,6 +106,8 @@ public class Sdf06Executor {
Collection sdfs = sdfImdg.getCollectionObjectsByFieldValues(Map.of(
"generationId", groupId
));
+ String fileName = AbstractExecutor.getFileName(sdfs);
+ log.info("start processing SDF06: groupId={} file={}", groupId, fileName);
Instant now = Instant.now();
Long sdf07GroupId = idGenerator.nextId();
if (sdf06GroupId != null) {
@@ -114,7 +117,7 @@ public class Sdf06Executor {
errorSdf07.setGenerationId(sdf07GroupId);
sdf07Imdg.insert(errorSdf07);
});
- sendToExporter(sdf07GroupId);
+ sendToExporter(sdf07GroupId, fileName);
return;
}
Collection requests = new ArrayList<>();
@@ -169,7 +172,7 @@ public class Sdf06Executor {
assetOperationListRequest.setAssetOperationRequests(requests);
kafkaSender.sendRequestToQueue(Consts.ASSET_OPERATION, assetOperationListRequest);
} else if (sdf07WasCreated) {
- sendToExporter(sdf07GroupId);
+ sendToExporter(sdf07GroupId, fileName);
}
}
@@ -197,6 +200,7 @@ public class Sdf06Executor {
public void processGatewayResponse(BaseRequest req) {
Instant now = Instant.now();
+ String fileName = null;
for (SingleAssetResponse gatewayMsg : req.getRequestPayload().getApprovals()) {
//получаем запрос для текущей группы sdf06
//находим группу
@@ -209,6 +213,9 @@ public class Sdf06Executor {
Long sdf06Id = stmt.getInSDfId();
SDf06 sdf06 = sdf06Imdg.getSingleObjectByID(sdf06Id);
+ if (fileName == null && !TextUtil.isEmpty(sdf06.getFileName())) {
+ fileName = sdf06.getFileName();
+ }
if (sdf06 == null) {
log.error("Sdf06.id {} not found by statement.id {}", sdf06Id, statementId);
return;
@@ -241,7 +248,7 @@ public class Sdf06Executor {
statementImdg.update(stmt);
}
}
- sendToExporter(sdf07GroupId);
+ sendToExporter(sdf07GroupId, fileName);
log.debug("All gateway responses received for SDF06 groupId {}. SDF07 groupId {}", sdf06GroupId, sdf07GroupId);
clearContext();
}
@@ -251,10 +258,11 @@ public class Sdf06Executor {
this.sdf07GroupId = null;
}
- private void sendToExporter(Long generationId) {
+ private void sendToExporter(Long generationId, String fileName) {
ExportToFileRequest exportRequest = new ExportToFileRequest();
exportRequest.setSdfGroupId(generationId);
exportRequest.setNameOfTable("DF-07");
+ exportRequest.setFileName(fileName);
kafkaSender.sendRequestToQueue(Consts.EXPORT_PROCESS, exportRequest);
}
diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/model/Result.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/model/Result.java
index 60bd23029..b43ed0eb7 100644
--- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/model/Result.java
+++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/model/Result.java
@@ -8,6 +8,7 @@ import java.util.List;
public class Result {
private List accountRequests = new ArrayList<>();
private Long childGenerationId;
+ private String fileName;
public List getAccountRequests() {
return accountRequests;
@@ -24,4 +25,12 @@ public class Result {
public void setChildGenerationId(Long generationId) {
this.childGenerationId = generationId;
}
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
}
diff --git a/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithFileName.java b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithFileName.java
new file mode 100644
index 000000000..69a4fa132
--- /dev/null
+++ b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithFileName.java
@@ -0,0 +1,5 @@
+package ru.spcex.platform.classes.base.interfaces;
+
+public interface WithFileName {
+ String getFileName();
+}