From 7279fdf7436da30f22eda1a9ff2471ba7e47c285 Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 8 Aug 2023 11:53:38 +0300 Subject: [PATCH 1/2] Sdf07/Sdf09 fix --- .../service/executors/Sdf06Executor.java | 4 ++-- .../service/executors/Sdf08Executor.java | 8 +++++++- .../services/AbstractExporterService.java | 16 ++++++++++------ .../services/LauncherCommandReceiver.java | 4 ++-- .../cud/importexport/SwtExporterRequest.java | 11 +++++++++++ 5 files changed, 32 insertions(+), 11 deletions(-) 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 17e40b2f8..5c0f3368b 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 @@ -114,7 +114,7 @@ public class Sdf06Executor { errorSdf07.setGenerationId(sdf07GroupId); sdf07Imdg.insert(errorSdf07); }); - sendToExporter(groupId); + sendToExporter(sdf07GroupId); return; } Collection requests = new ArrayList<>(); @@ -169,7 +169,7 @@ public class Sdf06Executor { assetOperationListRequest.setAssetOperationRequests(requests); kafkaSender.sendRequestToQueue(Consts.ASSET_OPERATION, assetOperationListRequest); } else if (sdf07WasCreated) { - sendToExporter(groupId); + sendToExporter(sdf07GroupId); } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java index 18ff2538e..595c59b07 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java @@ -18,8 +18,10 @@ import ru.clearing.classes.statics.data.statement.Statement; import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.error.ClearingErrorInternal; import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdfRequestPart; import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.importexport.SwtExporterRequest; import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; import ru.spcex.clearing.service.model.Result; import ru.spcex.clearing.service.validation.ValidationStored; @@ -86,11 +88,15 @@ public class Sdf08Executor extends AbstractExecutor { @Override public boolean isNeedToSendCommand() { - return false; + return true; } @Override public void sendCommand(KafkaSender kafkaSender, Result result) { + SwtExporterRequest swtReq = new SwtExporterRequest(); + swtReq.setType(SdfTable.SDF_09.getKey()); + swtReq.setGroupId(result.getGenerationId()); + kafkaSender.sendRequestToQueue(Consts.SWT_EXPORTER, swtReq); } Company searchCompany(String depoCode) { diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterService.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterService.java index 53e962ffe..759bd70dc 100644 --- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterService.java +++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterService.java @@ -13,10 +13,14 @@ import ru.spcex.platform.enumeration.SwtTable; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; -import java.io.*; +import java.io.ByteArrayOutputStream; +import java.io.OutputStream; +import java.io.PrintWriter; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.*; +import java.util.Collection; +import java.util.Objects; +import java.util.Optional; import static ru.spcex.clearing.platform.messaging.domain.Consts.JOURNAL_SERVICE; @@ -56,7 +60,7 @@ public abstract class AbstractExporterService { protected abstract SWTHeaderData getHeader(T record); - public void process() { + public void process(Long groupId) { LocalDateTime exportAt = LocalDateTime.now(); String fileName = formatFileName(typeForFileName(), sectionForFileName(), exportAt); @@ -66,7 +70,7 @@ public abstract class AbstractExporterService { byte[] data; { ByteArrayOutputStream outBuffer = new ByteArrayOutputStream(); - Collection records = selectItems(); + Collection records = selectItems(groupId); log.debug("Prepared {} record from {} to file {}", records.size(), sdfImdg.getMapName(), fileName); SWTHeaderData swtHeaderData = makeSwtHeader(records); @@ -123,8 +127,8 @@ public abstract class AbstractExporterService { } // Выборка - protected Collection selectItems() { - return sdfImdg.getAllValues(); + protected Collection selectItems(Long groupId) { + return sdfImdg.getCollectionObjectsBySQL("generationId = %d".formatted(groupId)); } // Конвертация (поля см. meta.xml) diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/LauncherCommandReceiver.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/LauncherCommandReceiver.java index f32040c21..24bb186e4 100644 --- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/LauncherCommandReceiver.java +++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/LauncherCommandReceiver.java @@ -42,7 +42,7 @@ public class LauncherCommandReceiver extends QueueConsumer implements Initializi for (AbstractExporterService exporter : exporterServices) { log.debug("Export {}", exporter); try { - exporter.process(); + exporter.process(-1L); } catch (Exception e) { log.error("One of exporter has error: {}", ExceptionUtils.getStackTrace(e)); } @@ -57,7 +57,7 @@ public class LauncherCommandReceiver extends QueueConsumer implements Initializi if (exporter.getType().getKey().equals(req.getType())) { log.debug("Export {}", exporter); try { - exporter.process(); + exporter.process(req.getGroupId()); } catch (Exception e) { log.error("Exporter has error: {}", ExceptionUtils.getStackTrace(e)); } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/importexport/SwtExporterRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/importexport/SwtExporterRequest.java index 4ee6c16e6..db82b97a1 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/importexport/SwtExporterRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/importexport/SwtExporterRequest.java @@ -6,6 +6,9 @@ public class SwtExporterRequest { @JsonProperty public String type; + @JsonProperty + public Long groupId; + public String getType() { return type; } @@ -13,4 +16,12 @@ public class SwtExporterRequest { public void setType(String type) { this.type = type; } + + public Long getGroupId() { + return groupId; + } + + public void setGroupId(Long groupId) { + this.groupId = groupId; + } } From 8ecb0b7c9e626bcf37f82a47f5ea1394e5ac2fe6 Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 8 Aug 2023 12:13:41 +0300 Subject: [PATCH 2/2] =?UTF-8?q?SDF06=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=BF=D0=B0=D0=BD=D0=B8=D0=B8=20=D0=BF=D0=BE?= =?UTF-8?q?=20deal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../validation/Sdf06NewValidationRule.java | 24 ++++--------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf06NewValidationRule.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf06NewValidationRule.java index 88b49f13c..93506ed75 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf06NewValidationRule.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf06NewValidationRule.java @@ -4,14 +4,12 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.company.Company; -import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.misc.Session; import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.sdf.SDf06; import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.platform.enumeration.AccountType; -import ru.spcex.platform.enumeration.CompanySymbol; import ru.spcex.platform.enumeration.RegistryTradingParams; import ru.spcex.platform.enumeration.WorkflowStatus; import ru.spcex.platform.imdg.api.Imdg; @@ -35,27 +33,13 @@ public enum Sdf06NewValidationRule implements IValidationRule validate(ImdgValidationContext context) { SDf06 sdf06 = context.getValidatedObject(); - Imdg companySymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); Imdg companyImdg = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class); - - CompanySymbols companySymbols = null; - if (sdf06.getInn() != null) { //TextUtil.isEmpty - companySymbols = companySymbolsImdg.getFirstObjectByFieldValues(Map.of( - "companySymbol", CompanySymbol.INN.getKey(), - "companySymbolValue", sdf06.getInn())); - } else if (sdf06.getBic() != null) { - companySymbols = companySymbolsImdg.getFirstObjectByFieldValues(Map.of( - "companySymbol", CompanySymbol.BIC.getKey(), - "companySymbolValue", sdf06.getBic())); + if (TextUtil.isEmpty(sdf06.getDeal())) { + return of(ClearingError.CompanyNotFoundB, sdf06.getDeal()); } - if (companySymbols == null) { - return of(ClearingError.CompanyNotFoundB, "inn=" + sdf06.getInn() + "/bic=" + sdf06.getBic()); - } - Company company = companyImdg.getSingleObjectByID(companySymbols.getCompanyId()); + Company company = companyImdg.getFirstObjectBySQL("tradingCode = '" + sdf06.getDeal() + "'"); if (company == null) { - return of(ClearingError.CompanyNotFoundB, "inn=" + sdf06.getInn() - + "/bic=" + sdf06.getBic() - + "/companyId=" + companySymbols.getCompanyId()); + return of(ClearingError.CompanyNotFoundB, sdf06.getDeal()); } context.storeObject(ValidationStored.Sdf06Company, company); return empty();