From 2de7c9876ec3dadd55832120b87ef7422a736052 Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 7 Dec 2022 17:37:07 +0300 Subject: [PATCH 001/234] http://jira.mfd.msk:8088/browse/CLS-100 --- .../queue/scheduler/LauncherController.java | 12 +++++-- .../clearing/service/ClearingService.java | 2 +- ...Sdf04Receiver.java => EventsReceiver.java} | 9 +++-- clearing-parent/dbf-importer/pom.xml | 4 +++ .../dbf/importer/config/KafkaConfig.java | 11 +++++++ .../settings/ImportDBFServiceSettings.java | 10 ++++++ .../importer/services/DBFImporterService.java | 10 +++++- .../dbf/importer/services/FileChecker.java | 7 ++-- .../services/LauncherCommandReceiver.java | 33 +++++++++++++++++++ .../src/main/resources/application.properties | 10 +++++- .../ru/spcex/platform/enumeration/Task.java | 22 +++++++++++++ 11 files changed, 121 insertions(+), 9 deletions(-) rename clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/{Sdf04Receiver.java => EventsReceiver.java} (65%) create mode 100644 clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/LauncherCommandReceiver.java create mode 100644 platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherController.java index 8285850b8..8f1eeadae 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherController.java @@ -13,6 +13,7 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import ru.clearing.classes.statics.data.scheduler.Launcher; import ru.clearing.classes.statics.data.user.User; +import ru.clearing.platform.dictionary.AbstractDictionary; import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController; import ru.spcex.clearing.backendapi.controller.request.cud.schedule.LauncherNew; import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; @@ -23,7 +24,6 @@ import ru.spcex.clearing.backendapi.security.KeycloakUtils; import ru.spcex.clearing.backendapi.service.IOperator; import ru.spcex.clearing.backendapi.service.IStateLoader; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.utils.enumeration.EnumMessage; @@ -38,12 +38,14 @@ import java.util.concurrent.ExecutionException; public class LauncherController extends AbstractQueueController { private final IStateLoader stateLoader; private final Imdg userImdg; + private final Imdg taskDictionary; @Autowired public LauncherController(IStateLoader stateLoader, IOperator operator, ImdgProvider imdgProvider) { super(operator); this.stateLoader = stateLoader; this.userImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_User, User.class); + this.taskDictionary = imdgProvider.getImdg(IMDGDistributedNames.Map_TaskDictionary, AbstractDictionary.class); } @ApiOperation(value = "get all Launchers.") @@ -63,6 +65,10 @@ public class LauncherController extends AbstractQueueController { @ResponseBody public CudResponse add(@ApiParam(value = "Код задания из taskDictionary", required = true, example = "ABLK") @PathVariable("task-code") String dictionaryName) throws ExecutionException, InterruptedException { + AbstractDictionary taskEnum = taskDictionary.getSingleObjectByFieldValues(Map.of("code", dictionaryName)); + if (taskEnum == null) { + throw new NotFound404Exception("task dictionary element with code '" + dictionaryName + "'"); + } LauncherNew launcherCommand = new LauncherNew(); Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); String username = KeycloakUtils.getUserNameFromAuthentication(authentication); @@ -72,7 +78,9 @@ public class LauncherController extends AbstractQueueController { } launcherCommand.setTask(dictionaryName); launcherCommand.setUserId(user.getId()); - return processRequest(Consts.LAUNCHER_NEW, launcherCommand); + //топики ограничиваются наличием в taskDictionary + //подписываются на разные топики в разных модулях, см. ru.spcex.platform.enumeration.Task#topic + return processRequest("launcher-" + dictionaryName, launcherCommand); } @Autowired diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ClearingService.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ClearingService.java index 887fda87d..a2c9487a8 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ClearingService.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ClearingService.java @@ -32,7 +32,7 @@ public class ClearingService { } public void paymentUpdateBySdf04(Long sdf04GroupId) { - log.info("adding sdf03/11 from STLD payments task to queue"); + log.info("updating payment.transactionStatus by sdf04 task added to queue"); executor.execute(() -> paymentUpdater.updatePayments(sdf04GroupId)); } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Sdf04Receiver.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java similarity index 65% rename from clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Sdf04Receiver.java rename to clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java index 08db5dde1..bd4bfef11 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Sdf04Receiver.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java @@ -5,12 +5,14 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Service; import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.cud.clearing.Sdf04Request; +import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.platform.enumeration.Task; @Service -public class Sdf04Receiver extends QueueConsumer implements InitializingBean { +public class EventsReceiver extends QueueConsumer implements InitializingBean { private final ClearingService clearingService; - public Sdf04Receiver(Consumer kafkaQueue, ClearingService clearingService) { + public EventsReceiver(Consumer kafkaQueue, ClearingService clearingService) { super(kafkaQueue); this.clearingService = clearingService; } @@ -23,6 +25,9 @@ public class Sdf04Receiver extends QueueConsumer implements InitializingBean { clearingService.paymentUpdateBySdf04(requestPayload.getGroupId()); }) .forDestination(Consts.SDF04_PROCESS, callbacks::put); + callback(LauncherCommandRequest.class) + .setConsumer(event -> clearingService.sdfCreate()) + .forDestination(Task.createOrder.topic(), callbacks::put); init(); } } diff --git a/clearing-parent/dbf-importer/pom.xml b/clearing-parent/dbf-importer/pom.xml index d3d50fe59..0460db432 100644 --- a/clearing-parent/dbf-importer/pom.xml +++ b/clearing-parent/dbf-importer/pom.xml @@ -66,6 +66,10 @@ ru.spcex.platform platform-messaging + + ru.spcex.platform + platform-enum + diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/KafkaConfig.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/KafkaConfig.java index bf533336b..fc448445b 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/KafkaConfig.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/KafkaConfig.java @@ -1,11 +1,15 @@ package ru.spcex.clearing.dbf.importer.config; +import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.producer.Producer; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; import ru.spcex.clearing.dbf.importer.config.settings.ImportDBFServiceSettings; import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.config.KafkaConsumerFactory; import ru.spcex.clearing.platform.messaging.config.KafkaProducerFactory; import ru.spcex.clearing.platform.messaging.service.RequestInfo; import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; @@ -35,4 +39,11 @@ public class KafkaConfig { .build(); }; } + + @Autowired + @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) + @Bean + public Consumer createConsumer(ImportDBFServiceSettings settings) { + return KafkaConsumerFactory.consumer(settings.getKafkaConsumer()); + } } diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/settings/ImportDBFServiceSettings.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/settings/ImportDBFServiceSettings.java index 8c4bd1fe2..af11e25ee 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/settings/ImportDBFServiceSettings.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/settings/ImportDBFServiceSettings.java @@ -3,6 +3,7 @@ package ru.spcex.clearing.dbf.importer.config.settings; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; +import ru.spcex.clearing.platform.messaging.config.element.KafkaConsumerSettings; import ru.spcex.clearing.platform.messaging.config.element.KafkaProducerSettings; import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams; @@ -12,6 +13,7 @@ import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams; public class ImportDBFServiceSettings { private HazelcastClientParams hazelcast; private KafkaProducerSettings kafkaProducer; + private KafkaConsumerSettings kafkaConsumer; private Common common; private Store store; private Cron cron; @@ -32,6 +34,14 @@ public class ImportDBFServiceSettings { this.kafkaProducer = kafkaProducer; } + public KafkaConsumerSettings getKafkaConsumer() { + return kafkaConsumer; + } + + public void setKafkaConsumer(KafkaConsumerSettings kafkaConsumer) { + this.kafkaConsumer = kafkaConsumer; + } + public Common getCommon() { return common; } diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java index 384056064..a4413c8a9 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java @@ -1,5 +1,7 @@ package ru.spcex.clearing.dbf.importer.services; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; @@ -16,6 +18,7 @@ import java.util.Map; @Service("dbfImporterService") @EnableScheduling public class DBFImporterService { + private final Logger log = LoggerFactory.getLogger(getClass()); private final FileChecker fileChecker; private final ThreadPoolTaskExecutor executorService; private final Processor processor; @@ -30,7 +33,12 @@ public class DBFImporterService { @Scheduled(cron = "${import-dbf-service.scheduler.check-src-dir-cron}") public void run() { - Map> newFiles = fileChecker.checkNewFiles(); + run(null); + } + + public void run(ETable specificTable) { + log.info("performing import {}", specificTable != null ? specificTable.name() : ""); + Map> newFiles = fileChecker.checkNewFiles(specificTable); for (Map.Entry> newFilesEntry : newFiles.entrySet()) { ETable currTable = newFilesEntry.getKey(); List fileList = newFilesEntry.getValue(); diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/FileChecker.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/FileChecker.java index 785523c3e..2ee390a94 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/FileChecker.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/FileChecker.java @@ -16,6 +16,10 @@ public class FileChecker { } public Map> checkNewFiles() { + return checkNewFiles(null); + } + + public Map> checkNewFiles(ETable specificTable) { Map> newFiles = new EnumMap<>(ETable.class); String srcDir = settings.getStore().getSrcDir(); @@ -27,11 +31,10 @@ public class FileChecker { ETable currTable = ETable.getTableForFilename(dbfFile.getName()); if (currTable == null) continue; - + if (specificTable != null && !specificTable.equals(currTable)) continue; List currList = newFiles.computeIfAbsent(currTable, list -> new LinkedList<>()); currList.add(dbfFile); } - return newFiles; } diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/LauncherCommandReceiver.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/LauncherCommandReceiver.java new file mode 100644 index 000000000..eec3f4f88 --- /dev/null +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/LauncherCommandReceiver.java @@ -0,0 +1,33 @@ +package ru.spcex.clearing.dbf.importer.services; + +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.Autowired; +import org.springframework.stereotype.Service; +import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable; +import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.platform.enumeration.Task; + +@Service +public class LauncherCommandReceiver extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); + private final DBFImporterService importer; + + @Autowired + public LauncherCommandReceiver(Consumer kafkaQueue, + DBFImporterService importer) { + super(kafkaQueue); + this.importer = importer; + } + + @Override + public void afterPropertiesSet() { + callback(LauncherCommandRequest.class) + .setConsumer(action -> importer.run(ETable.DF_04)) + .forDestination(Task.createOrderConfirm.topic(), callbacks::put); + init(); + } +} diff --git a/clearing-parent/dbf-importer/src/main/resources/application.properties b/clearing-parent/dbf-importer/src/main/resources/application.properties index 4c0438d76..c1c2a3fe0 100644 --- a/clearing-parent/dbf-importer/src/main/resources/application.properties +++ b/clearing-parent/dbf-importer/src/main/resources/application.properties @@ -22,4 +22,12 @@ import-dbf-service.kafka-producer.acks=all import-dbf-service.kafka-producer.retries=0 import-dbf-service.kafka-producer.batch-size=16384 import-dbf-service.kafka-producer.linger-ms=1 -import-dbf-service.kafka-producer.buffer-memory=33554432 \ No newline at end of file +import-dbf-service.kafka-producer.buffer-memory=33554432 + +import-dbf-service.kafka-consumer.bootstrap-servers=localhost:9092 +import-dbf-service.kafka-consumer.group-id=dev-group-clearing-service +import-dbf-service.kafka-consumer.enable-auto-commit=false +import-dbf-service.kafka-consumer.session-timeout-ms=30000 +import-dbf-service.kafka-consumer.auto-offset-reset=latest +import-dbf-service.kafka-consumer.linger-ms=1 +import-dbf-service.kafka-consumer.buffer-memory=33554432 \ No newline at end of file diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java new file mode 100644 index 000000000..762af41b4 --- /dev/null +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java @@ -0,0 +1,22 @@ +package ru.spcex.platform.enumeration; + +import ru.spcex.platform.utils.enumeration.IEnumKey; + +public enum Task implements IEnumKey { + createOrder("CORD"), createOrderConfirm("CORC"); + + private final String key; + + Task(String key) { + this.key = key; + } + + @Override + public String getKey() { + return key; + } + + public String topic() { + return "launcher-" + getKey(); + } +} From c41e9cc0f1b1517b387789ee285738ff8d19a4d4 Mon Sep 17 00:00:00 2001 From: akulikov Date: Wed, 7 Dec 2022 15:45:23 +0300 Subject: [PATCH 002/234] report-service: all-reports for cls-[25, 26, 27, 28, 29, 52, 53, 92, 93, 102] --- .../clearing/reports/ReportWithPeriod.java | 36 +++ .../reports/reports/AbstractReport.java | 27 +- .../reports/ReportWithClearingStatus.java | 6 +- .../reports/WithCompanyClearingCode.java | 14 -- .../reports/bt_12_2/ReportPA_BT2_B.java | 114 +++++++++ .../reports/bt_12_2/ReportPA_BT2_IV.java | 114 +++++++++ .../reports/reports/bt_13/Report_BT13_11.java | 94 +++++++ .../reports/reports/bt_13/Report_BT13_12.java | 122 +++++++++ .../reports/bt_16_5/Report_BT16_5.java | 72 ++++++ .../reports/bt_17_1/ReportBR_0420315_P1.java | 7 +- .../reports/bt_17_1/ReportBR_0420315_P2.java | 17 +- .../reports/bt_17_2/ReportBR_0420317.java | 23 +- .../reports/bt_17_3/ReportBR_0420318.java | 7 +- .../reports/bt_17_4/ReportBR_0420314_P1.java | 16 +- .../reports/bt_17_4/ReportBR_0420314_P2.java | 21 +- .../reports/bt_17_5/ReportBR_0420312_P1.java | 20 +- .../reports/bt_17_5/ReportBR_0420312_P10.java | 13 +- .../reports/bt_17_5/ReportBR_0420312_P11.java | 35 --- .../reports/bt_17_5/ReportBR_0420312_P2.java | 11 +- .../reports/bt_17_5/ReportBR_0420312_P3.java | 11 +- .../reports/bt_17_5/ReportBR_0420312_P4.java | 11 +- .../reports/bt_17_5/ReportBR_0420312_P5.java | 11 +- .../reports/bt_17_5/ReportBR_0420312_P6.java | 11 +- .../reports/bt_17_5/ReportBR_0420312_P7.java | 11 +- .../reports/bt_17_5/ReportBR_0420312_P8.java | 11 +- .../reports/bt_17_5/ReportBR_0420312_P9.java | 14 +- .../reports/services/ReportsService.java | 237 +++++++++++++++++- .../xml_test/FormattedLocalTimeConverter.java | 37 +++ 28 files changed, 977 insertions(+), 146 deletions(-) create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportWithPeriod.java delete mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/WithCompanyClearingCode.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_B.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_IV.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_11.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_12.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_16_5/Report_BT16_5.java delete mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P11.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/FormattedLocalTimeConverter.java diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportWithPeriod.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportWithPeriod.java new file mode 100644 index 000000000..07caffd69 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportWithPeriod.java @@ -0,0 +1,36 @@ +package ru.spcex.clearing.reports; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import com.thoughtworks.xstream.annotations.XStreamConverter; +import ru.spcex.clearing.reports.reports.AbstractReport; +import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter; + +import java.time.LocalDate; + +/** + * Шапка для отчётов, содержащих startDate и endDate + */ +public class ReportWithPeriod extends AbstractReport { + + @XStreamAsAttribute + @XStreamAlias("startDate") + @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"}) + protected LocalDate startDate; + + @XStreamAsAttribute + @XStreamAlias("endDate") + @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"}) + protected LocalDate endDate; + + + public ReportWithPeriod(String version, + String code, + String name, + LocalDate startDate, + LocalDate endDate) { + super(version, code, name); + this.startDate = startDate; + this.endDate = endDate; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java index d9b3992ac..df56feb45 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java @@ -2,10 +2,6 @@ package ru.spcex.clearing.reports.reports; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import com.thoughtworks.xstream.annotations.XStreamConverter; -import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter; - -import java.time.LocalDate; /** * Общая шапка (атрибуты) для всех отчетов @@ -24,33 +20,12 @@ public abstract class AbstractReport { @XStreamAlias("name") protected String name; - @XStreamAsAttribute - @XStreamAlias("startDate") - @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"}) - protected LocalDate startDate; - - @XStreamAsAttribute - @XStreamAlias("endDate") - @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"}) - protected LocalDate endDate; - - @XStreamAsAttribute - @XStreamAlias("destination") - protected String destination; - - public AbstractReport(String version, String code, - String name, - LocalDate startDate, - LocalDate endDate, - String destination) { + String name) { this.version = version; this.code = code; this.name = name; - this.startDate = startDate; - this.endDate = endDate; - this.destination = destination; } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithClearingStatus.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithClearingStatus.java index 313ce168a..e211edeea 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithClearingStatus.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithClearingStatus.java @@ -2,10 +2,11 @@ package ru.spcex.clearing.reports.reports; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; -public abstract class ReportWithClearingStatus extends AbstractReport { +public abstract class ReportWithClearingStatus extends ReportWithPeriod { @XStreamAsAttribute @XStreamAlias("clearingStatus") protected String clearingStatus; @@ -15,9 +16,8 @@ public abstract class ReportWithClearingStatus extends AbstractReport { String name, LocalDate startDate, LocalDate endDate, - String destination, String clearingStatus) { - super(version, code, name, startDate, endDate, destination); + super(version, code, name, startDate, endDate); this.clearingStatus = clearingStatus; } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/WithCompanyClearingCode.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/WithCompanyClearingCode.java deleted file mode 100644 index 79a63ccbe..000000000 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/WithCompanyClearingCode.java +++ /dev/null @@ -1,14 +0,0 @@ -package ru.spcex.clearing.reports.reports; - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamAsAttribute; - -public abstract class WithCompanyClearingCode { - @XStreamAsAttribute - @XStreamAlias("company_clearingCode") - protected String companyClearingCode; - - public WithCompanyClearingCode(String companyClearingCode) { - this.companyClearingCode = companyClearingCode; - } -} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_B.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_B.java new file mode 100644 index 000000000..c527ee2b5 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_B.java @@ -0,0 +1,114 @@ +package ru.spcex.clearing.reports.reports.bt_12_2; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports.ReportWithPeriod; + +import java.time.LocalDate; + +@XStreamAlias("netPositionBank") +public class ReportPA_BT2_B extends ReportWithPeriod { + + @XStreamAsAttribute + @XStreamAlias("clearingMemberCategory") + private String clearingMemberCategory; + + + @XStreamAlias("liabilitiesClaimsAssets_fullName") + private String liabilitiesClaimsAssetsFullName; + + @XStreamAlias("company_clearingCode") + private String companyClearingCode; + + @XStreamAlias("liabilitiesClaimsAssets_settlementDate") + private String liabilitiesClaimsAssetsSettlementDate; + + @XStreamAlias("liabilitiesClaimsAssets_refundDate") + private String liabilitiesClaimsAssetsRefundDate; + + @XStreamAlias("liabilitiesClaimsAssets_tradingDate") + private String liabilitiesClaimsAssetsTradingDate; + + @XStreamAlias("liabilitiesClaimsAssets_contract") + private String liabilitiesClaimsAssetsContract; + + @XStreamAlias("liabilitiesClaimsAssets_liabilitiesQuantity") + private String liabilitiesClaimsAssetsLiabilitiesQuantity; + + @XStreamAlias("chargeCommission") + private String chargeCommission; + + @XStreamAlias("liabilitiesClaimsAssets_ClaimsQuantity") + private String liabilitiesClaimsAssetsClaimsQuantity; + + @XStreamAlias("liabilitiesClaimsAssets_refundPaymentId") + private String liabilitiesClaimsAssetsRefundPaymentId; + + @XStreamAlias("liabilitiesClaimsAssets_clearingStatus") + private String liabilitiesClaimsAssetsClearingStatus; + + @XStreamAlias("liabilitiesClaimsAssets_comment") + private String liabilitiesClaimsAssetsComment; + + @XStreamAlias("total") + private Total total; + + + public ReportPA_BT2_B(LocalDate startDate, + LocalDate endDate, + String clearingMemberCategory, + String liabilitiesClaimsAssetsFullName, + String companyClearingCode, + String liabilitiesClaimsAssetsSettlementDate, + String liabilitiesClaimsAssetsRefundDate, + String liabilitiesClaimsAssetsTradingDate, + String liabilitiesClaimsAssetsContract, + String liabilitiesClaimsAssetsLiabilitiesQuantity, + String chargeCommission, + String liabilitiesClaimsAssetsClaimsQuantity, + String liabilitiesClaimsAssetsRefundPaymentId, + String liabilitiesClaimsAssetsClearingStatus, + String liabilitiesClaimsAssetsComment, + String claimsAmount, + String liabilitiesAmount, + String paymentAmount) { + super("0.0.1", + "BT2", + "Отчет по нетто-позиции участника клиринга в секции МКР (Уполномоченный банк)", + startDate, + endDate); + this.clearingMemberCategory = clearingMemberCategory; + this.liabilitiesClaimsAssetsFullName = liabilitiesClaimsAssetsFullName; + this.companyClearingCode = companyClearingCode; + this.liabilitiesClaimsAssetsSettlementDate = liabilitiesClaimsAssetsSettlementDate; + this.liabilitiesClaimsAssetsRefundDate = liabilitiesClaimsAssetsRefundDate; + this.liabilitiesClaimsAssetsTradingDate = liabilitiesClaimsAssetsTradingDate; + this.liabilitiesClaimsAssetsContract = liabilitiesClaimsAssetsContract; + this.liabilitiesClaimsAssetsLiabilitiesQuantity = liabilitiesClaimsAssetsLiabilitiesQuantity; + this.chargeCommission = chargeCommission; + this.liabilitiesClaimsAssetsClaimsQuantity = liabilitiesClaimsAssetsClaimsQuantity; + this.liabilitiesClaimsAssetsRefundPaymentId = liabilitiesClaimsAssetsRefundPaymentId; + this.liabilitiesClaimsAssetsClearingStatus = liabilitiesClaimsAssetsClearingStatus; + this.liabilitiesClaimsAssetsComment = liabilitiesClaimsAssetsComment; + this.total = new Total(claimsAmount, liabilitiesAmount, paymentAmount); + } + + @XStreamAlias("total") + public static class Total { + @XStreamAlias("claimsAmount") + private String claimsAmount; + + @XStreamAlias("liabilitiesAmount") + private String liabilitiesAmount; + + @XStreamAlias("paymentAmount") + private String paymentAmount; + + public Total(String claimsAmount, String liabilitiesAmount, String paymentAmount) { + this.claimsAmount = claimsAmount; + this.liabilitiesAmount = liabilitiesAmount; + this.paymentAmount = paymentAmount; + } + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_IV.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_IV.java new file mode 100644 index 000000000..04ddbdc22 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_IV.java @@ -0,0 +1,114 @@ +package ru.spcex.clearing.reports.reports.bt_12_2; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports.ReportWithPeriod; + +import java.time.LocalDate; + +@XStreamAlias("netPositionInitiator") +public class ReportPA_BT2_IV extends ReportWithPeriod { + + @XStreamAsAttribute + @XStreamAlias("clearingMemberCategory") + private String clearingMemberCategory; + + + @XStreamAlias("liabilitiesClaimsAssets_fullName") + private String liabilitiesClaimsAssetsFullName; + + @XStreamAlias("company_clearingCode") + private String companyClearingCode; + + @XStreamAlias("liabilitiesClaimsAssets_settlementDate") + private String liabilitiesClaimsAssetsSettlementDate; + + @XStreamAlias("liabilitiesClaimsAssets_refundDate") + private String liabilitiesClaimsAssetsRefundDate; + + @XStreamAlias("liabilitiesClaimsAssets_tradingDate") + private String liabilitiesClaimsAssetsTradingDate; + + @XStreamAlias("liabilitiesClaimsAssets_contract") + private String liabilitiesClaimsAssetsContract; + + @XStreamAlias("liabilitiesClaimsAssets_liabilitiesQuantity") + private String liabilitiesClaimsAssetsLiabilitiesQuantity; + + @XStreamAlias("chargeCommission") + private String chargeCommission; + + @XStreamAlias("liabilitiesClaimsAssets_ClaimsQuantity") + private String liabilitiesClaimsAssetsClaimsQuantity; + + @XStreamAlias("liabilitiesClaimsAssets_refundPaymentId") + private String liabilitiesClaimsAssetsRefundPaymentId; + + @XStreamAlias("liabilitiesClaimsAssets_clearingStatus") + private String liabilitiesClaimsAssetsClearingStatus; + + @XStreamAlias("liabilitiesClaimsAssets_comment") + private String liabilitiesClaimsAssetsComment; + + @XStreamAlias("total") + private Total total; + + + public ReportPA_BT2_IV(LocalDate startDate, + LocalDate endDate, + String clearingMemberCategory, + String liabilitiesClaimsAssetsFullName, + String companyClearingCode, + String liabilitiesClaimsAssetsSettlementDate, + String liabilitiesClaimsAssetsRefundDate, + String liabilitiesClaimsAssetsTradingDate, + String liabilitiesClaimsAssetsContract, + String liabilitiesClaimsAssetsLiabilitiesQuantity, + String chargeCommission, + String liabilitiesClaimsAssetsClaimsQuantity, + String liabilitiesClaimsAssetsRefundPaymentId, + String liabilitiesClaimsAssetsClearingStatus, + String liabilitiesClaimsAssetsComment, + String claimsAmount, + String liabilitiesAmount, + String paymentAmount) { + super("0.0.1", + "BT2", + "Отчет по нетто-позиции участника клиринга в секции МКР (Вкладчик)", + startDate, + endDate); + this.clearingMemberCategory = clearingMemberCategory; + this.liabilitiesClaimsAssetsFullName = liabilitiesClaimsAssetsFullName; + this.companyClearingCode = companyClearingCode; + this.liabilitiesClaimsAssetsSettlementDate = liabilitiesClaimsAssetsSettlementDate; + this.liabilitiesClaimsAssetsRefundDate = liabilitiesClaimsAssetsRefundDate; + this.liabilitiesClaimsAssetsTradingDate = liabilitiesClaimsAssetsTradingDate; + this.liabilitiesClaimsAssetsContract = liabilitiesClaimsAssetsContract; + this.liabilitiesClaimsAssetsLiabilitiesQuantity = liabilitiesClaimsAssetsLiabilitiesQuantity; + this.chargeCommission = chargeCommission; + this.liabilitiesClaimsAssetsClaimsQuantity = liabilitiesClaimsAssetsClaimsQuantity; + this.liabilitiesClaimsAssetsRefundPaymentId = liabilitiesClaimsAssetsRefundPaymentId; + this.liabilitiesClaimsAssetsClearingStatus = liabilitiesClaimsAssetsClearingStatus; + this.liabilitiesClaimsAssetsComment = liabilitiesClaimsAssetsComment; + this.total = new Total(claimsAmount, liabilitiesAmount, paymentAmount); + } + + @XStreamAlias("total") + public static class Total { + @XStreamAlias("claimsAmount") + private String claimsAmount; + + @XStreamAlias("liabilitiesAmount") + private String liabilitiesAmount; + + @XStreamAlias("paymentAmount") + private String paymentAmount; + + public Total(String claimsAmount, String liabilitiesAmount, String paymentAmount) { + this.claimsAmount = claimsAmount; + this.liabilitiesAmount = liabilitiesAmount; + this.paymentAmount = paymentAmount; + } + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_11.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_11.java new file mode 100644 index 000000000..0bb6fce3f --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_11.java @@ -0,0 +1,94 @@ +package ru.spcex.clearing.reports.reports.bt_13; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports.reports.AbstractReport; + +import java.time.LocalDate; +import java.time.LocalTime; + +@XStreamAlias("incomingDocuments") +public class Report_BT13_11 extends AbstractReport { + @XStreamAsAttribute + @XStreamAlias("date") + private LocalDate date; + + @XStreamAsAttribute + @XStreamAlias("time") + private LocalTime time; + + + @XStreamAlias("inDocumentJournal_registrationDate") + private String inDocumentJournalRegistrationDate; + + @XStreamAlias("inDocumentJournal_registrationTime") + private String inDocumentJournalRegistrationTime; + + @XStreamAlias("inDocumentJournal_registrationNumber") + private String inDocumentJournalRegistrationNumber; + + @XStreamAlias("inDocumentJournal_documentName") + private String inDocumentJournalDocumentName; + + @XStreamAlias("inDocumentJournal_sender") + private String inDocumentJournalSender; + + @XStreamAlias("inDocumentJournal_quantity") + private String inDocumentJournalQuantity; + + @XStreamAlias("inDocumentJournal_clearingCode") + private String inDocumentJournalClearingCode; + + @XStreamAlias("inDocumentJournal_courierType") + private String inDocumentJournalCourierType; + + @XStreamAlias("inDocumentJournal_emailDate") + private String inDocumentJournal_emailDate; + + @XStreamAlias("inDocumentJournal_Amount") + private String inDocumentJournalAmount; + + @XStreamAlias("inDocumentJournal_dossierNumber") + private String inDocumentJournalDossierNumber; + + @XStreamAlias("inDocumentJournal_Comment") + private String inDocumentJournalComment; + + @XStreamAlias("inDocumentJournal_receiptDate") + private String inDocumentJournalReceiptDate; + + + public Report_BT13_11(LocalDate date, + LocalTime time, + String inDocumentJournalRegistrationDate, + String inDocumentJournalRegistrationTime, + String inDocumentJournalRegistrationNumber, + String inDocumentJournalDocumentName, + String inDocumentJournalSender, + String inDocumentJournalQuantity, + String inDocumentJournalClearingCode, + String inDocumentJournalCourierType, + String inDocumentJournal_emailDate, + String inDocumentJournalAmount, + String inDocumentJournalDossierNumber, + String inDocumentJournalComment, + String inDocumentJournalReceiptDate) { + super("0.0.1", "BT 13.11", "Журнал Входящих документов"); + this.date = date; + this.time = time; + this.inDocumentJournalRegistrationDate = inDocumentJournalRegistrationDate; + this.inDocumentJournalRegistrationTime = inDocumentJournalRegistrationTime; + this.inDocumentJournalRegistrationNumber = inDocumentJournalRegistrationNumber; + this.inDocumentJournalDocumentName = inDocumentJournalDocumentName; + this.inDocumentJournalSender = inDocumentJournalSender; + this.inDocumentJournalQuantity = inDocumentJournalQuantity; + this.inDocumentJournalClearingCode = inDocumentJournalClearingCode; + this.inDocumentJournalCourierType = inDocumentJournalCourierType; + this.inDocumentJournal_emailDate = inDocumentJournal_emailDate; + this.inDocumentJournalAmount = inDocumentJournalAmount; + this.inDocumentJournalDossierNumber = inDocumentJournalDossierNumber; + this.inDocumentJournalComment = inDocumentJournalComment; + this.inDocumentJournalReceiptDate = inDocumentJournalReceiptDate; + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_12.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_12.java new file mode 100644 index 000000000..9e7a36639 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_12.java @@ -0,0 +1,122 @@ +package ru.spcex.clearing.reports.reports.bt_13; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports.reports.AbstractReport; + +import java.time.LocalDate; +import java.time.LocalTime; + +@XStreamAlias("outgoingDocuments") +public class Report_BT13_12 extends AbstractReport { + @XStreamAsAttribute + @XStreamAlias("date") + private LocalDate date; + + @XStreamAsAttribute + @XStreamAlias("time") + private LocalTime time; + + + @XStreamAlias("outDocumentJournal_registrationDate") + private String outDocumentJournalRegistrationDate; + + @XStreamAlias("outDocumentJournal_registrationTime") + private String outDocumentJournalRegistrationTime; + + @XStreamAlias("outDocumentJournal_registrationNumber") + private String outDocumentJournalRegistrationNumber; + + @XStreamAlias("outDocumentJournal_documentName") + private String outDocumentJournalDocumentName; + + @XStreamAlias("outDocumentJournal_address") + private String outDocumentJournalAddress; + + @XStreamAlias("outDocumentJournal_quantity") + private String outDocumentJournalQuantity; + + @XStreamAlias("outDocumentJournal_clearingCode") + private String outDocumentJournalClearingCode; + + @XStreamAlias("outDocumentJournal_courierType") + private String outDocumentJournalCourierType; + + @XStreamAlias("outDocumentJournal_emailDate") + private String outDocumentJournal_emailDate; + + @XStreamAlias("outDocumentJournal_Amount") + private String outDocumentJournalAmount; + + @XStreamAlias("outDocumentJournal_dossierNumber") + private String outDocumentJournalDossierNumber; + + @XStreamAlias("outDocumentJournal_postDate") + private String outDocumentJournalPostDate; + + + public Report_BT13_12(LocalDate date, + LocalTime time, + String outDocumentJournalRegistrationDate, + String outDocumentJournalRegistrationTime, + String outDocumentJournalRegistrationNumber, + String outDocumentJournalDocumentName, + String outDocumentJournalAddress, + String outDocumentJournalQuantity, + String outDocumentJournalClearingCode, + String outDocumentJournalCourierType, + String outDocumentJournal_emailDate, + String outDocumentJournalAmount, + String outDocumentJournalDossierNumber, + String outDocumentJournalPostDate) { + super("0.0.1", "BT 13.12", "Журнал Исходящих документов"); + this.date = date; + this.time = time; + this.outDocumentJournalRegistrationDate = outDocumentJournalRegistrationDate; + this.outDocumentJournalRegistrationTime = outDocumentJournalRegistrationTime; + this.outDocumentJournalRegistrationNumber = outDocumentJournalRegistrationNumber; + this.outDocumentJournalDocumentName = outDocumentJournalDocumentName; + this.outDocumentJournalAddress = outDocumentJournalAddress; + this.outDocumentJournalQuantity = outDocumentJournalQuantity; + this.outDocumentJournalClearingCode = outDocumentJournalClearingCode; + this.outDocumentJournalCourierType = outDocumentJournalCourierType; + this.outDocumentJournal_emailDate = outDocumentJournal_emailDate; + this.outDocumentJournalAmount = outDocumentJournalAmount; + this.outDocumentJournalDossierNumber = outDocumentJournalDossierNumber; + this.outDocumentJournalPostDate = outDocumentJournalPostDate; + } + + public Report_BT13_12(String version, + String code, + String name, + LocalDate date, + LocalTime time, + String outDocumentJournalRegistrationDate, + String outDocumentJournalRegistrationTime, + String outDocumentJournalRegistrationNumber, + String outDocumentJournalDocumentName, + String outDocumentJournalAddress, + String outDocumentJournalQuantity, + String outDocumentJournalClearingCode, + String outDocumentJournalCourierType, + String outDocumentJournal_emailDate, + String outDocumentJournalAmount, + String outDocumentJournalDossierNumber, + String outDocumentJournalPostDate) { + super(version, code, name); + this.date = date; + this.time = time; + this.outDocumentJournalRegistrationDate = outDocumentJournalRegistrationDate; + this.outDocumentJournalRegistrationTime = outDocumentJournalRegistrationTime; + this.outDocumentJournalRegistrationNumber = outDocumentJournalRegistrationNumber; + this.outDocumentJournalDocumentName = outDocumentJournalDocumentName; + this.outDocumentJournalAddress = outDocumentJournalAddress; + this.outDocumentJournalQuantity = outDocumentJournalQuantity; + this.outDocumentJournalClearingCode = outDocumentJournalClearingCode; + this.outDocumentJournalCourierType = outDocumentJournalCourierType; + this.outDocumentJournal_emailDate = outDocumentJournal_emailDate; + this.outDocumentJournalAmount = outDocumentJournalAmount; + this.outDocumentJournalDossierNumber = outDocumentJournalDossierNumber; + this.outDocumentJournalPostDate = outDocumentJournalPostDate; + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_16_5/Report_BT16_5.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_16_5/Report_BT16_5.java new file mode 100644 index 000000000..0b3db0ccc --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_16_5/Report_BT16_5.java @@ -0,0 +1,72 @@ +package ru.spcex.clearing.reports.reports.bt_16_5; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports.reports.AbstractReport; + +import java.time.LocalDate; +import java.time.LocalTime; + +@XStreamAlias("accountBalanceInfo") +public class Report_BT16_5 extends AbstractReport { + @XStreamAsAttribute + @XStreamAlias("date") + private LocalDate date; + + @XStreamAsAttribute + @XStreamAlias("time") + private LocalTime time; + + + @XStreamAlias("id") + private String id; + + @XStreamAlias("clearingHouse") + private String clearingHouse; + + @XStreamAlias("company_clearingCode") + private String companyClearingCode; + + @XStreamAlias("company_fullName") + private String companyFullName; + + @XStreamAlias("accountBalance_account") + private String accountBalanceAccount; + + @XStreamAlias("accountBalance_openAmount") + private String accountBalanceOpenAmount; + + @XStreamAlias("accountBalance_debitAmount") + private String accountBalanceDebitAmount; + + @XStreamAlias("accountBalance_creditAmount") + private String accountBalanceCreditAmount; + + @XStreamAlias("accountBalance_closeAmount") + private String accountBalanceCloseAmount; + + + public Report_BT16_5(LocalDate date, + LocalTime time, + String clearingHouse, + String companyClearingCode, + String companyFullName, + String accountBalanceAccount, + String accountBalanceOpenAmount, + String accountBalanceDebitAmount, + String accountBalanceCreditAmount, + String accountBalanceCloseAmount) { + super("0.0.1", "BT 16.5", "Отчет о денежных средствах на счете внутреннего учета (клиринговом регистре) Участника клиринга"); + this.date = date; + this.time = time; + this.clearingHouse = clearingHouse; + this.companyClearingCode = companyClearingCode; + this.companyFullName = companyFullName; + this.accountBalanceAccount = accountBalanceAccount; + this.accountBalanceOpenAmount = accountBalanceOpenAmount; + this.accountBalanceDebitAmount = accountBalanceDebitAmount; + this.accountBalanceCreditAmount = accountBalanceCreditAmount; + this.accountBalanceCloseAmount = accountBalanceCloseAmount; + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java index 2a11b2c55..ab2700296 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java @@ -11,6 +11,10 @@ import java.util.List; @XStreamAlias("clearedLiabilities") public class ReportBR_0420315_P1 extends ReportWithClearingStatus { + @XStreamAsAttribute + @XStreamAlias("destination") + private String destination; + @XStreamAsAttribute @XStreamAlias("clearingMemberCategory") private String clearingMemberCategory; @@ -20,6 +24,7 @@ public class ReportBR_0420315_P1 extends ReportWithClearingStatus { public ReportBR_0420315_P1(LocalDate startDate, LocalDate endDate, + String destination, String clearingMemberCategory, String clearingStatus) { super("0.0.1", @@ -27,8 +32,8 @@ public class ReportBR_0420315_P1 extends ReportWithClearingStatus { "Сведения об исполненных обязательствах, допущенных к клирингу, за отчетный период, часть 1", startDate, endDate, - "BR", clearingStatus); + this.destination = destination; this.clearingMemberCategory = clearingMemberCategory; } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P2.java index 642f71bdf..450b87e0f 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P2.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P2.java @@ -2,23 +2,30 @@ package ru.spcex.clearing.reports.reports.bt_17_1; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.reports.AbstractReport; +import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; @XStreamAlias("clearedLiabilitiesTotal") -public class ReportBR_0420315_P2 extends AbstractReport { +public class ReportBR_0420315_P2 extends ReportWithPeriod { + @XStreamAsAttribute + @XStreamAlias("destination") + private String destination; @XStreamAlias("total") private final Info_0420315_P2 total; - public ReportBR_0420315_P2(LocalDate startDate, LocalDate endDate, String contractQty, String liabilitiesAmount) { + public ReportBR_0420315_P2(LocalDate startDate, + LocalDate endDate, + String destination, + String contractQty, + String liabilitiesAmount) { super("0.0.1", "0420315", "Сведения об исполненных обязательствах, допущенных к клирингу, за отчетный период, часть 2", startDate, - endDate, - "BR"); + endDate); + this.destination = destination; total = new Info_0420315_P2(contractQty, liabilitiesAmount); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_2/ReportBR_0420317.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_2/ReportBR_0420317.java index c8714fac8..8ad1f2bcd 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_2/ReportBR_0420317.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_2/ReportBR_0420317.java @@ -2,26 +2,29 @@ package ru.spcex.clearing.reports.reports.bt_17_2; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.reports.AbstractReport; -import ru.spcex.clearing.reports.reports.WithCompanyClearingCode; +import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; @XStreamAlias("clearingServiceStatus") -public class ReportBR_0420317 extends AbstractReport { +public class ReportBR_0420317 extends ReportWithPeriod { + @XStreamAsAttribute + @XStreamAlias("destination") + private String destination; + @XStreamAlias("rows") private final List rows = new ArrayList<>(); - public ReportBR_0420317(LocalDate startDate, - LocalDate endDate) { + public ReportBR_0420317(LocalDate startDate, LocalDate endDate, String destination) { super("0.0.1", "0420317", "Сведения о предоставлении, прекращении, приостановке," + " возобновлении допуска к клиринговому обслуживанию", startDate, - endDate, "BR"); + endDate); + this.destination = destination; } public List getRows() { @@ -29,7 +32,11 @@ public class ReportBR_0420317 extends AbstractReport { } @XStreamAlias("row") - public static class Info_0420317 extends WithCompanyClearingCode { + public static class Info_0420317 { + @XStreamAsAttribute + @XStreamAlias("company_clearingCode") + protected String companyClearingCode; + @XStreamAsAttribute @XStreamAlias("relation_supplierId") private String relationSupplierId; @@ -71,7 +78,7 @@ public class ReportBR_0420317 extends AbstractReport { String companySymbolCode, String companyInfoCountryCode, String relationComment) { - super(companyClearingCode); + this.companyClearingCode = companyClearingCode; this.relationSupplierId = relationSupplierId; this.relationServiceId = relationServiceId; this.relationServiceStatus = relationServiceStatus; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java index b5ff5909b..c48422636 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java @@ -10,18 +10,21 @@ import java.util.List; @XStreamAlias("unfundedLiabilities") public class ReportBR_0420318 extends ReportWithClearingStatus { + @XStreamAsAttribute + @XStreamAlias("destination") + private String destination; @XStreamAlias("rows") private final List rows = new ArrayList<>(); - public ReportBR_0420318(LocalDate startDate, LocalDate endDate, String clearingStatus) { + public ReportBR_0420318(LocalDate startDate, LocalDate endDate, String clearingStatus, String destination) { super("0.0.1", "0420318", "Сведения о неисполненных обязательствах", startDate, endDate, - "BR", clearingStatus); + this.destination = destination; } public List getRows() { diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P1.java index cb9e22242..cc6dfed89 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P1.java @@ -3,7 +3,6 @@ package ru.spcex.clearing.reports.reports.bt_17_4; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.reports.ReportWithClearingStatus; -import ru.spcex.clearing.reports.reports.WithCompanyClearingCode; import java.time.LocalDate; import java.util.ArrayList; @@ -11,18 +10,21 @@ import java.util.List; @XStreamAlias("accountTransactionLiabilities") public class ReportBR_0420314_P1 extends ReportWithClearingStatus { + @XStreamAsAttribute + @XStreamAlias("destination") + private String destination; @XStreamAlias("rows") private final List rows = new ArrayList<>(); - public ReportBR_0420314_P1(LocalDate startDate, LocalDate endDate, String clearingStatus) { + public ReportBR_0420314_P1(LocalDate startDate, LocalDate endDate, String clearingStatus, String destination) { super("0.0.1", "0420314", "Сведения об УК и операциях, проведенных по торговым счетам, часть 1", startDate, endDate, - "BR", clearingStatus); + this.destination = destination; } public List getRows() { @@ -31,7 +33,11 @@ public class ReportBR_0420314_P1 extends ReportWithClearingStatus { @XStreamAlias("partOne") - public static class Info_0420314_P1 extends WithCompanyClearingCode { + public static class Info_0420314_P1 { + @XStreamAsAttribute + @XStreamAlias("company_clearingCode") + protected String companyClearingCode; + @XStreamAsAttribute @XStreamAlias("paymentInstruction_senderId") private String paymentInstructionSenderId; @@ -73,7 +79,7 @@ public class ReportBR_0420314_P1 extends ReportWithClearingStatus { String clearingMemberCategoryClearingMemberCategory, String profileDocumentDocumentTypeAndValidFromDate, String liabilitiesClaimsAssetsLiabilitiesQuantity) { - super(companyClearingCode); + this.companyClearingCode = companyClearingCode; this.paymentInstructionSenderId = paymentInstructionSenderId; this.profileDocumentId = profileDocumentId; this.companyFullName = companyFullName; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P2.java index cdb737894..6c924222a 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P2.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P2.java @@ -2,15 +2,17 @@ package ru.spcex.clearing.reports.reports.bt_17_4; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.reports.AbstractReport; -import ru.spcex.clearing.reports.reports.WithCompanyClearingCode; +import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; @XStreamAlias("accountTransactionTurnover") -public class ReportBR_0420314_P2 extends AbstractReport { +public class ReportBR_0420314_P2 extends ReportWithPeriod { + @XStreamAsAttribute + @XStreamAlias("destination") + private String destination; @XStreamAsAttribute @XStreamAlias("transactionStatus") @@ -19,13 +21,14 @@ public class ReportBR_0420314_P2 extends AbstractReport { @XStreamAlias("rows") private final List rows = new ArrayList<>(); - public ReportBR_0420314_P2(LocalDate startDate, LocalDate endDate, String transactionStatus) { + public ReportBR_0420314_P2(LocalDate startDate, LocalDate endDate, String transactionStatus, String destination) { super("0.0.1", "0420314", "Сведения об УК и операциях, проведенных по торговым счетам, часть 2", startDate, - endDate, "BR"); + endDate); this.transactionStatus = transactionStatus; + this.destination = destination; } public List getRows() { @@ -34,7 +37,11 @@ public class ReportBR_0420314_P2 extends AbstractReport { @XStreamAlias("partTwo") - public static class Info_0420314_P2 extends WithCompanyClearingCode { + public static class Info_0420314_P2 { + @XStreamAsAttribute + @XStreamAlias("company_clearingCode") + protected String companyClearingCode; + @XStreamAsAttribute @XStreamAlias("paymentInstruction_senderId") private String paymentInstructionSenderId; @@ -66,7 +73,7 @@ public class ReportBR_0420314_P2 extends AbstractReport { String paymentInstructionCreditLegAmount, String paymentInstructionDebitLegAmount, String accountBalanceCloseBalanceAmount) { - super(companyClearingCode); + this.companyClearingCode = companyClearingCode; this.paymentInstructionSenderId = paymentInstructionSenderId; this.profileDocumentId = profileDocumentId; this.accountBalanceOpenBalanceAmount = accountBalanceOpenBalanceAmount; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java index cea7a4639..a19956e75 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java @@ -2,13 +2,15 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.reports.AbstractReport; -import ru.spcex.clearing.reports.reports.WithCompanyClearingCode; +import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; @XStreamAlias("clearingCoverage1") -public class ReportBR_0420312_P1 extends AbstractReport { +public class ReportBR_0420312_P1 extends ReportWithPeriod { + @XStreamAsAttribute + @XStreamAlias("destination") + private String destination; @XStreamAlias("part_1") private final Info_0420312_P1 part_1; @@ -16,6 +18,7 @@ public class ReportBR_0420312_P1 extends AbstractReport { public ReportBR_0420312_P1(LocalDate startDate, LocalDate endDate, String companyClearingCode, + String destination, String liabilitiesClaimsAssetsCompanyId, String liabilitiesClaimsAssetsFullName, String companySymbolCode, @@ -26,7 +29,8 @@ public class ReportBR_0420312_P1 extends AbstractReport { "0420312", "Сведения о клиринговом обеспечении, часть 1", startDate, - endDate, "BR"); + endDate); + this.destination = destination; part_1 = new Info_0420312_P1(companyClearingCode, liabilitiesClaimsAssetsCompanyId, liabilitiesClaimsAssetsFullName, @@ -36,7 +40,11 @@ public class ReportBR_0420312_P1 extends AbstractReport { clearingMemberCategoryClearingMemberCategory); } - public static class Info_0420312_P1 extends WithCompanyClearingCode { + public static class Info_0420312_P1 { + @XStreamAsAttribute + @XStreamAlias("company_clearingCode") + private String companyClearingCode; + @XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_companyId") private String liabilitiesClaimsAssetsCompanyId; @@ -69,7 +77,7 @@ public class ReportBR_0420312_P1 extends AbstractReport { String companySymbolValue, String companyInfoCountryCode, String clearingMemberCategoryClearingMemberCategory) { - super(companyClearingCode); + this.companyClearingCode = companyClearingCode; this.liabilitiesClaimsAssetsCompanyId = liabilitiesClaimsAssetsCompanyId; this.liabilitiesClaimsAssetsFullName = liabilitiesClaimsAssetsFullName; this.companySymbolCode = companySymbolCode; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P10.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P10.java index b1d7be876..e7196690b 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P10.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P10.java @@ -2,24 +2,29 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.reports.AbstractReport; +import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; -@XStreamAlias("report") -public class ReportBR_0420312_P10 extends AbstractReport { +@XStreamAlias("clearingCoverage10") +public class ReportBR_0420312_P10 extends ReportWithPeriod { + @XStreamAsAttribute + @XStreamAlias("destination") + private String destination; @XStreamAlias("part_10") private final Info_0420312_P10 part_10; public ReportBR_0420312_P10(LocalDate startDate, LocalDate endDate, + String destination, String liabilitiesAmount) { super("0.0.5", "0420312", "Сведения о клиринговом обеспечении, часть 10", startDate, - endDate, "BR"); + endDate); + this.destination = destination; part_10 = new Info_0420312_P10(liabilitiesAmount); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P11.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P11.java deleted file mode 100644 index 5f74936eb..000000000 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P11.java +++ /dev/null @@ -1,35 +0,0 @@ -package ru.spcex.clearing.reports.reports.bt_17_5; - -import com.thoughtworks.xstream.annotations.XStreamAlias; -import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.reports.AbstractReport; - -import java.time.LocalDate; - -@XStreamAlias("report") -public class ReportBR_0420312_P11 extends AbstractReport { - - @XStreamAlias("part_11") - private final Info_0420312_P11 part_11; - - public ReportBR_0420312_P11(LocalDate startDate, - LocalDate endDate, - String liabilitiesAmount) { - super("0.0.5", - "0420312", - "Сведения о клиринговом обеспечении", - startDate, - endDate, "BR"); - part_11 = new Info_0420312_P11(liabilitiesAmount); - } - - public static class Info_0420312_P11 { - @XStreamAsAttribute - @XStreamAlias("liabilities_amount") - private String liabilitiesAmount; - - public Info_0420312_P11(String liabilitiesAmount) { - this.liabilitiesAmount = liabilitiesAmount; - } - } -} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P2.java index 9fc68a866..0cf73c838 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P2.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P2.java @@ -2,25 +2,30 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.reports.AbstractReport; +import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; @XStreamAlias("clearingCoverage2") -public class ReportBR_0420312_P2 extends AbstractReport { +public class ReportBR_0420312_P2 extends ReportWithPeriod { + @XStreamAsAttribute + @XStreamAlias("destination") + private String destination; @XStreamAlias("part_2") private final Info_0420312_P2 part_2; public ReportBR_0420312_P2(LocalDate startDate, LocalDate endDate, + String destination, String liabilitiesClaimsAssetsCompanyId, String liabilitiesClaimsAssetsLiabilities) { super("0.0.1", "0420312", "Сведения о клиринговом обеспечении, часть 2", startDate, - endDate, "BR"); + endDate); + this.destination = destination; part_2 = new Info_0420312_P2(liabilitiesClaimsAssetsCompanyId, liabilitiesClaimsAssetsLiabilities); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P3.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P3.java index 69cbeed34..0c92c0676 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P3.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P3.java @@ -2,25 +2,30 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.reports.AbstractReport; +import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; @XStreamAlias("clearingCoverage3") -public class ReportBR_0420312_P3 extends AbstractReport { +public class ReportBR_0420312_P3 extends ReportWithPeriod { + @XStreamAsAttribute + @XStreamAlias("destination") + private String destination; @XStreamAlias("part_3") private final Info_0420312_P3 part_3; public ReportBR_0420312_P3(LocalDate startDate, LocalDate endDate, + String destination, String liabilitiesClaimsAssetsCompanyId, String liabilitiesClaimsAssetsLiabilities) { super("0.0.5", "0420312", "Сведения о клиринговом обеспечении, часть 3", startDate, - endDate, "BR"); + endDate); + this.destination = destination; part_3 = new Info_0420312_P3(liabilitiesClaimsAssetsCompanyId, liabilitiesClaimsAssetsLiabilities); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P4.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P4.java index 88f7ed98d..ee1d00f29 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P4.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P4.java @@ -2,24 +2,29 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.reports.AbstractReport; +import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; @XStreamAlias("clearingCoverage4") -public class ReportBR_0420312_P4 extends AbstractReport { +public class ReportBR_0420312_P4 extends ReportWithPeriod { + @XStreamAsAttribute + @XStreamAlias("destination") + private String destination; @XStreamAlias("part_4") private final Info_0420312_P4 part_4; public ReportBR_0420312_P4(LocalDate startDate, LocalDate endDate, + String destination, String liabilitiesAmount) { super("0.0.5", "0420312", "Сведения о клиринговом обеспечении, часть 4", startDate, - endDate, "BR"); + endDate); + this.destination = destination; part_4 = new Info_0420312_P4(liabilitiesAmount); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P5.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P5.java index e65c6b8ea..57318d940 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P5.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P5.java @@ -2,24 +2,29 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.reports.AbstractReport; +import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; @XStreamAlias("clearingCoverage5") -public class ReportBR_0420312_P5 extends AbstractReport { +public class ReportBR_0420312_P5 extends ReportWithPeriod { + @XStreamAsAttribute + @XStreamAlias("destination") + private String destination; @XStreamAlias("part_5") private final Info_0420312_P5 part_5; public ReportBR_0420312_P5(LocalDate startDate, LocalDate endDate, + String destination, String liabilitiesAmount) { super("0.0.5", "0420312", "Сведения о клиринговом обеспечении, часть 5", startDate, - endDate, "BR"); + endDate); + this.destination = destination; part_5 = new Info_0420312_P5(liabilitiesAmount); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P6.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P6.java index 68c6c6de4..b03bf0069 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P6.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P6.java @@ -2,24 +2,29 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.reports.AbstractReport; +import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; @XStreamAlias("clearingCoverage6") -public class ReportBR_0420312_P6 extends AbstractReport { +public class ReportBR_0420312_P6 extends ReportWithPeriod { + @XStreamAsAttribute + @XStreamAlias("destination") + private String destination; @XStreamAlias("part_6") private final Info_0420312_P6 part_6; public ReportBR_0420312_P6(LocalDate startDate, LocalDate endDate, + String destination, String liabilitiesAmount) { super("0.0.5", "0420312", "Сведения о клиринговом обеспечении, часть 6", startDate, - endDate, "BR"); + endDate); + this.destination = destination; part_6 = new Info_0420312_P6(liabilitiesAmount); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P7.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P7.java index d47311392..72a57f10b 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P7.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P7.java @@ -2,24 +2,29 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.reports.AbstractReport; +import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; @XStreamAlias("clearingCoverage7") -public class ReportBR_0420312_P7 extends AbstractReport { +public class ReportBR_0420312_P7 extends ReportWithPeriod { + @XStreamAsAttribute + @XStreamAlias("destination") + private String destination; @XStreamAlias("part_7") private final Info_0420312_P7 part_7; public ReportBR_0420312_P7(LocalDate startDate, LocalDate endDate, + String destination, String liabilitiesAmount) { super("0.0.5", "0420312", "Сведения о клиринговом обеспечении, часть 7", startDate, - endDate, "BR"); + endDate); + this.destination = destination; part_7 = new Info_0420312_P7(liabilitiesAmount); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P8.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P8.java index eadc04583..8f6f431a5 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P8.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P8.java @@ -2,18 +2,22 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.reports.AbstractReport; +import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; @XStreamAlias("clearingCoverage8") -public class ReportBR_0420312_P8 extends AbstractReport { +public class ReportBR_0420312_P8 extends ReportWithPeriod { + @XStreamAsAttribute + @XStreamAlias("destination") + private String destination; @XStreamAlias("part_8") private final Info_0420312_P8 part_8; public ReportBR_0420312_P8(LocalDate startDate, LocalDate endDate, + String destination, String currencyId, String liabilitiesClaimsAssetsCompanyId, String liabilitiesClaimsAssetsFullName, @@ -25,7 +29,8 @@ public class ReportBR_0420312_P8 extends AbstractReport { "0420312", "Сведения о клиринговом обеспечении, часть 8", startDate, - endDate, "BR"); + endDate); + this.destination = destination; part_8 = new Info_0420312_P8(currencyId, liabilitiesClaimsAssetsCompanyId, liabilitiesClaimsAssetsFullName, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P9.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P9.java index 627ba50de..d508df865 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P9.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P9.java @@ -2,18 +2,22 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.reports.AbstractReport; +import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; -@XStreamAlias("report") -public class ReportBR_0420312_P9 extends AbstractReport { +@XStreamAlias("clearingCoverage9") +public class ReportBR_0420312_P9 extends ReportWithPeriod { + @XStreamAsAttribute + @XStreamAlias("destination") + private String destination; @XStreamAlias("part_9") private final Info_0420312_P9 part_9; public ReportBR_0420312_P9(LocalDate startDate, LocalDate endDate, + String destination, String currencyId, String liabilitiesClaimsAssetsCompanyId, String liabilitiesClaimsMoneyCurrencyCode, @@ -22,8 +26,8 @@ public class ReportBR_0420312_P9 extends AbstractReport { "0420312", "Сведения о клиринговом обеспечении, часть 9", startDate, - endDate, - "BR"); + endDate); + this.destination = destination; part_9 = new Info_0420312_P9(currencyId, liabilitiesClaimsAssetsCompanyId, liabilitiesClaimsMoneyCurrencyCode, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportsService.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportsService.java index de17f8e74..eb81e8c85 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportsService.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportsService.java @@ -5,13 +5,21 @@ import com.thoughtworks.xstream.io.naming.NoNameCoder; import com.thoughtworks.xstream.io.xml.XppDriver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_BT2_B; +import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_BT2_IV; +import ru.spcex.clearing.reports.reports.bt_13.Report_BT13_11; +import ru.spcex.clearing.reports.reports.bt_13.Report_BT13_12; +import ru.spcex.clearing.reports.reports.bt_16_5.Report_BT16_5; import ru.spcex.clearing.reports.reports.bt_17_1.ReportBR_0420315_P1; import ru.spcex.clearing.reports.reports.bt_17_1.ReportBR_0420315_P2; import ru.spcex.clearing.reports.reports.bt_17_2.ReportBR_0420317; import ru.spcex.clearing.reports.reports.bt_17_3.ReportBR_0420318; import ru.spcex.clearing.reports.reports.bt_17_4.ReportBR_0420314_P1; +import ru.spcex.clearing.reports.reports.bt_17_4.ReportBR_0420314_P2; +import ru.spcex.clearing.reports.reports.bt_17_5.*; import java.time.LocalDate; +import java.time.LocalTime; public class ReportsService { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -24,9 +32,29 @@ public class ReportsService { xStream.processAnnotations(ReportBR_0420317.class); xStream.processAnnotations(ReportBR_0420318.class); xStream.processAnnotations(ReportBR_0420314_P1.class); + xStream.processAnnotations(ReportBR_0420314_P2.class); + xStream.processAnnotations(ReportBR_0420312_P1.class); + xStream.processAnnotations(ReportBR_0420312_P2.class); + xStream.processAnnotations(ReportBR_0420312_P3.class); + xStream.processAnnotations(ReportBR_0420312_P4.class); + xStream.processAnnotations(ReportBR_0420312_P5.class); + xStream.processAnnotations(ReportBR_0420312_P6.class); + xStream.processAnnotations(ReportBR_0420312_P7.class); + xStream.processAnnotations(ReportBR_0420312_P8.class); + xStream.processAnnotations(ReportBR_0420312_P9.class); + xStream.processAnnotations(ReportBR_0420312_P10.class); + xStream.processAnnotations(ReportPA_BT2_IV.class); + xStream.processAnnotations(ReportPA_BT2_B.class); + xStream.processAnnotations(Report_BT16_5.class); + xStream.processAnnotations(Report_BT13_11.class); + xStream.processAnnotations(Report_BT13_12.class); + + + /* ========= БТ 17.1 ========== */ ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(LocalDate.now(), LocalDate.now(), + "BR", "clearingMemberCategory", "clearingStatus"); ReportBR_0420315_P1.Info_0420315_P1 info_0420315_p1 = new ReportBR_0420315_P1.Info_0420315_P1("companyId", @@ -37,13 +65,19 @@ public class ReportsService { reportBR_0420315_p1.getRows().add(info_0420315_p1); log.info("ReportBR_0420315_P1:\n{}\n", xStream.toXML(reportBR_0420315_p1)); + + ReportBR_0420315_P2 reportBR_0420315_p2 = new ReportBR_0420315_P2(LocalDate.now(), LocalDate.now(), + "BR", "contractorQty", "liabilitiesAmount"); log.info("ReportBR_0420315_P2:\n{}\n", xStream.toXML(reportBR_0420315_p2)); - ReportBR_0420317 reportBR_0420317 = new ReportBR_0420317(LocalDate.now(), LocalDate.now()); + + + /* ========= БТ 17.2 ========== */ + ReportBR_0420317 reportBR_0420317 = new ReportBR_0420317(LocalDate.now(), LocalDate.now(), "BR"); ReportBR_0420317.Info_0420317 info_0420317 = new ReportBR_0420317.Info_0420317("companyClearingCode", "relationSupplierId", "relationServiceId", @@ -56,7 +90,10 @@ public class ReportsService { reportBR_0420317.getRows().add(info_0420317); log.info("ReportBR_0420317:\n{}\n", xStream.toXML(reportBR_0420317)); - ReportBR_0420318 reportBR_0420318 = new ReportBR_0420318(LocalDate.now(), LocalDate.now(), "clearingStatus"); + + + /* ========= БТ 17.3 ========== */ + ReportBR_0420318 reportBR_0420318 = new ReportBR_0420318(LocalDate.now(), LocalDate.now(), "clearingStatus", "BR"); ReportBR_0420318.Info_0420318 info_0420318 = new ReportBR_0420318.Info_0420318( "liabilitiesClaimsAssetsFullName", "companySymbolsCode", @@ -74,7 +111,10 @@ public class ReportsService { reportBR_0420318.getRows().add(info_0420318); log.info("ReportBR_0420318:\n{}\n", xStream.toXML(reportBR_0420318)); - ReportBR_0420314_P1 reportBR_0420314P1 = new ReportBR_0420314_P1(LocalDate.now(), LocalDate.now(), "clearingStatus"); + + + /* ========= БТ 17.4 ========== */ + ReportBR_0420314_P1 reportBR_0420314P1 = new ReportBR_0420314_P1(LocalDate.now(), LocalDate.now(), "clearingStatus", "BR"); ReportBR_0420314_P1.Info_0420314_P1 info_0420314P1 = new ReportBR_0420314_P1.Info_0420314_P1("companyClearingCode", "paymentInstructionSenderId", "profileDocumentId", @@ -86,7 +126,196 @@ public class ReportsService { "liabilitiesClaimsAssetsLiabilitiesQuantity" ); reportBR_0420314P1.getRows().add(info_0420314P1); - log.info("ReportBR_0420314:\n{}\n", xStream.toXML(reportBR_0420314P1)); + log.info("ReportBR_0420314_P1:\n{}\n", xStream.toXML(reportBR_0420314P1)); + + + + ReportBR_0420314_P2 reportBR_0420314P2 = new ReportBR_0420314_P2(LocalDate.now(), LocalDate.now(), "transactionStatus", "BR"); + ReportBR_0420314_P2.Info_0420314_P2 info_0420314P2 = new ReportBR_0420314_P2.Info_0420314_P2("companyClearingCode", + "paymentInstructionSenderId", + "profileDocumentId", + "accountBalanceOpenBalanceAmt", + "paymentInstructionCreditLegAmount", + "paymentInstructionDebitLegAmount", + "accountBalanceCloseBalanceAmount" + ); + reportBR_0420314P2.getRows().add(info_0420314P2); + log.info("ReportBR_0420314_P2:\n{}\n", xStream.toXML(reportBR_0420314P2)); + + + + /* ========= БТ 17.5 ========== */ + ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(LocalDate.now(), + LocalDate.now(), + "companyClearingCode", + "BR", + "liabilitesClaimsAssetsCompanyId", + "liabilitesClaimsAssetsFullName", + "companySymbolCode", + "companySymbolValue", + "companyInfoCountryCode", + "clearingMemberCategory"); + log.info("ReportBR_0420312_P1:\n{}\n", xStream.toXML(reportBR_0420312P1)); + + ReportBR_0420312_P2 reportBR_0420312P2 = new ReportBR_0420312_P2(LocalDate.now(), + LocalDate.now(), + "BR", + "liabilitiesClaimsAssetsCompanyId", + "liabilitiesClaimsAssetsLiabilities"); + log.info("ReportBR_0420312_P2:\n{}\n", xStream.toXML(reportBR_0420312P2)); + + ReportBR_0420312_P3 reportBR_0420312P3 = new ReportBR_0420312_P3(LocalDate.now(), + LocalDate.now(), + "BR", + "liabilitiesClaimsAssetsCompanyId", + "liabilitiesClaimsAssetsLiabilities"); + log.info("ReportBR_0420312_P3:\n{}\n", xStream.toXML(reportBR_0420312P3)); + + ReportBR_0420312_P4 reportBR_0420312P4 = new ReportBR_0420312_P4(LocalDate.now(), + LocalDate.now(), + "BR", + "liabilitiesAmount"); + log.info("ReportBR_0420312_P4:\n{}\n", xStream.toXML(reportBR_0420312P4)); + + ReportBR_0420312_P5 reportBR_0420312P5 = new ReportBR_0420312_P5(LocalDate.now(), + LocalDate.now(), + "BR", + "liabilitiesAmount"); + log.info("ReportBR_0420312_P5:\n{}\n", xStream.toXML(reportBR_0420312P5)); + + ReportBR_0420312_P6 reportBR_0420312P6 = new ReportBR_0420312_P6(LocalDate.now(), + LocalDate.now(), + "BR", + "liabilitiesAmount"); + log.info("ReportBR_0420312_P6:\n{}\n", xStream.toXML(reportBR_0420312P6)); + + ReportBR_0420312_P7 reportBR_0420312P7 = new ReportBR_0420312_P7(LocalDate.now(), + LocalDate.now(), + "BR", + "liabilitiesAmount"); + log.info("ReportBR_0420312_P7:\n{}\n", xStream.toXML(reportBR_0420312P7)); + + ReportBR_0420312_P8 reportBR_0420312P8 = new ReportBR_0420312_P8(LocalDate.now(), + LocalDate.now(), + "BR", + "currencyId", + "liabilitiesClaimsAssetsCompanyId", + "liabilitiesClaimsAssetsFullName", + "companySymbolCode", + "companySymbolValue", + "companyInfoCountryCode", + "clearingMemberCategory"); + log.info("ReportBR_0420312_P8:\n{}\n", xStream.toXML(reportBR_0420312P8)); + + ReportBR_0420312_P9 reportBR_0420312P9 = new ReportBR_0420312_P9(LocalDate.now(), + LocalDate.now(), + "BR", + "currencyId", + "liabilitiesClaimsAssetsCompanyId", + "liabilitiesClaimsMoneyCurrencyCode", + "liabilitiesClaimsAssetsLiabilities"); + log.info("ReportBR_0420312_P9:\n{}\n", xStream.toXML(reportBR_0420312P9)); + + ReportBR_0420312_P10 reportBR_0420312P10 = new ReportBR_0420312_P10(LocalDate.now(), + LocalDate.now(), + "BR", + "liabilitiesAmount"); + log.info("ReportBR_0420312_P10:\n{}\n", xStream.toXML(reportBR_0420312P10)); + + + + /* ========= БТ 12.2 ========== */ + ReportPA_BT2_IV reportPA_bt2_iv = new ReportPA_BT2_IV(LocalDate.now(), + LocalDate.now(), + "clearingMemberCategory", + "liabilitiesClaimsAssetsFullName", + "companyClearingCode", + "liabilitiesClaimsAssetsSettlementDate", + "liabilitiesClaimsAssetsRefundDate", + "liabilitiesClaimsAssetsTradingDate", + "liabilitiesClaimsAssetsContract", + "liabilitiesClaimsAssetsLiabilitiesQuantity", + "chargeCommission", + "liabilitiesClaimsAssetsClaimsQuantity", + "liabilitiesClaimsAssetsRefundPaymentId", + "liabilitiesClaimsAssetsClearingStatus", + "liabilitiesClaimsAssetsComment", + "claimsAmount", + "liabilitiesAmount", + "paymentAmount"); + log.info("ReportPA_BT2_IV:\n{}\n", xStream.toXML(reportPA_bt2_iv)); + + ReportPA_BT2_B reportPA_bt2_b = new ReportPA_BT2_B(LocalDate.now(), + LocalDate.now(), + "clearingMemberCategory", + "liabilitiesClaimsAssetsFullName", + "companyClearingCode", + "liabilitiesClaimsAssetsSettlementDate", + "liabilitiesClaimsAssetsRefundDate", + "liabilitiesClaimsAssetsTradingDate", + "liabilitiesClaimsAssetsContract", + "liabilitiesClaimsAssetsLiabilitiesQuantity", + "chargeCommission", + "liabilitiesClaimsAssetsClaimsQuantity", + "liabilitiesClaimsAssetsRefundPaymentId", + "liabilitiesClaimsAssetsClearingStatus", + "liabilitiesClaimsAssetsComment", + "claimsAmount", + "liabilitiesAmount", + "paymentAmount"); + log.info("ReportPA_BT2_B:\n{}\n", xStream.toXML(reportPA_bt2_b)); + + + + /* ========= БТ 13 ========== */ + Report_BT13_11 report_bt13_11 = new Report_BT13_11(LocalDate.now(), + LocalTime.now(), + "inDocumentJournalRegistrationDate", + "inDocumentJournalRegistrationTime", + "inDocumentJournalRegistrationNumber", + "inDocumentJournalDocumentName" , + "inDocumentJournalSender", + "inDocumentJournalQuality", + "inDocumentJournalClearingCode", + "inDocumentJournalCourierType", + "inDocumentJournalEmailDate", + "inDocumentJournalAmount", + "inDocumentJournalDossierNumber", + "inDocumentJournalComment", + "inDocumentJournalReceiptDate"); + log.info("Report_BT13_11:\n{}\n", xStream.toXML(report_bt13_11)); + + Report_BT13_12 report_bt13_12 = new Report_BT13_12(LocalDate.now(), + LocalTime.now(), + "outDocumentJournalRegistrationDate", + "outDocumentJournalRegistrationTime", + "outDocumentJournalRegistrationNumber", + "outDocumentJournalDocumentName" , + "outDocumentJournalAddress", + "outDocumentJournalQuality", + "outDocumentJournalClearingCode", + "outDocumentJournalCourierType", + "outDocumentJournalEmailDate", + "outDocumentJournalAmount", + "outDocumentJournalDossierNumber", + "outDocumentJournalPostDate"); + log.info("Report_BT13_12:\n{}\n", xStream.toXML(report_bt13_12)); + + + + /* ========= БТ 16.5 ========== */ + Report_BT16_5 report_bt16_5 = new Report_BT16_5(LocalDate.now(), + LocalTime.now(), + "clearingHouse", + "companyClearingCode", + "companyFullName", + "accountBalanceAccount", + "accountBalanceOpenAmount", + "accountBalanceDebitAmount", + "accountBalanceCreditAmount", + "accountBalanceCloseAmount"); + log.info("Report_BT16_5:\n{}\n", xStream.toXML(report_bt16_5)); + } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/FormattedLocalTimeConverter.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/FormattedLocalTimeConverter.java new file mode 100644 index 000000000..0bcb2a347 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/xml_test/FormattedLocalTimeConverter.java @@ -0,0 +1,37 @@ +package ru.spcex.clearing.reports.xml_test; + +import com.thoughtworks.xstream.converters.basic.AbstractSingleValueConverter; + +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.util.Objects; + +public class FormattedLocalTimeConverter extends AbstractSingleValueConverter { + private final String DEFAULT_PATTERN = "HH:mm:ss"; + private final DateTimeFormatter formatter; + + public FormattedLocalTimeConverter() { + formatter = DateTimeFormatter.ofPattern(DEFAULT_PATTERN); + } + + public FormattedLocalTimeConverter(String pattern) { + formatter = DateTimeFormatter.ofPattern(Objects.requireNonNullElse(pattern, DEFAULT_PATTERN)); + } + + @Override + public boolean canConvert(Class type) { + return LocalTime.class.isAssignableFrom(type); + } + + @Override + public Object fromString(String str) { + // not implemented (not used) + return null; + } + + @Override + public String toString(Object obj) { + LocalTime date = (LocalTime) obj; + return date != null ? formatter.format(date) : ""; + } +} From dcbdea0abfacd23cc8e106f2ece89b820cb0fc51 Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 7 Dec 2022 19:22:32 +0300 Subject: [PATCH 003/234] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-100?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=81=D0=BE?= =?UTF-8?q?=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D0=B1?= =?UTF-8?q?=D1=8A=D0=B5=D0=BA=D1=82=D0=BE=D0=B2=20Launcher?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../queue/scheduler/LauncherController.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherController.java index 8f1eeadae..f5429d6c9 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherController.java @@ -29,6 +29,7 @@ import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IMessageResolver; +import java.time.Instant; import java.util.Collection; import java.util.Map; import java.util.concurrent.ExecutionException; @@ -39,6 +40,7 @@ public class LauncherController extends AbstractQueueController { private final IStateLoader stateLoader; private final Imdg userImdg; private final Imdg taskDictionary; + private final Imdg launcherImdg; @Autowired public LauncherController(IStateLoader stateLoader, IOperator operator, ImdgProvider imdgProvider) { @@ -46,6 +48,7 @@ public class LauncherController extends AbstractQueueController { this.stateLoader = stateLoader; this.userImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_User, User.class); this.taskDictionary = imdgProvider.getImdg(IMDGDistributedNames.Map_TaskDictionary, AbstractDictionary.class); + this.launcherImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Launcher, Launcher.class); } @ApiOperation(value = "get all Launchers.") @@ -78,11 +81,21 @@ public class LauncherController extends AbstractQueueController { } launcherCommand.setTask(dictionaryName); launcherCommand.setUserId(user.getId()); + //пока здесь + saveLauncher(dictionaryName, user.getId()); //топики ограничиваются наличием в taskDictionary //подписываются на разные топики в разных модулях, см. ru.spcex.platform.enumeration.Task#topic return processRequest("launcher-" + dictionaryName, launcherCommand); } + private void saveLauncher(String taskCode, Long userId) { + Launcher launcherCommandHistory = new Launcher(); + launcherCommandHistory.setTask(taskCode); + launcherCommandHistory.setSenderId(userId); + launcherCommandHistory.setCreated(Instant.now()); + launcherImdg.insert(launcherCommandHistory); + } + @Autowired private IMessageResolver errorResolver; From e65973cf9014ede0ed4ff40a188463a98021f2e7 Mon Sep 17 00:00:00 2001 From: aalehin Date: Thu, 8 Dec 2022 13:37:20 +0300 Subject: [PATCH 004/234] plannerAllToday fixup --- .../ru/spcex/clearing/imdg/util/Util.java | 61 ++++++++++++++++--- 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/util/Util.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/util/Util.java index 83d356bdc..be82af6fd 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/util/Util.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/util/Util.java @@ -4,10 +4,13 @@ import com.hazelcast.core.HazelcastInstance; import com.hazelcast.core.IMap; import ru.clearing.classes.statics.data.scheduler.ClearingCalendar; import ru.clearing.classes.statics.data.scheduler.Planner; +import ru.clearing.classes.statics.data.scheduler.PlannerAllToday; import ru.clearing.classes.statics.data.scheduler.PlannerTemplate; import java.time.LocalDate; +import java.util.ArrayList; import java.util.List; +import java.util.Optional; import static ru.spcex.clearing.imdg.IMDGDistributedNames.*; @@ -15,16 +18,60 @@ public class Util { public static void makeSchedulerAllTodayMap(HazelcastInstance hazelcastInstance) { IMap plannerMap = hazelcastInstance.getMap(Map_Planner); - IMap tradingCalendarMap = hazelcastInstance.getMap(Map_ClearingCalendar); + IMap clearingCalendarMap = hazelcastInstance.getMap(Map_ClearingCalendar); IMap plannerTemplateMap = hazelcastInstance.getMap(Map_PlannerTemplate); - Boolean isTradingCalendarEmpty = tradingCalendarMap.isEmpty(); - - List listOfSchedulerOnDate = plannerMap.values().stream().filter((x) -> x.getClearingDate().isEqual(LocalDate.now())).toList(); - if (isTradingCalendarEmpty) { - //то из timeTable все активные записи. - } else { + LocalDate currentDate = LocalDate.now(); + List listOfPlannerAllToday = new ArrayList<>(); + //= plannerMap.values().stream().filter((x) -> x.getClearingDate().isEqual(currentDate)).toList(); + if (!plannerMap.isEmpty()) { + switch (currentDate.getDayOfWeek()) { + case MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY -> listOfPlannerAllToday.addAll(getPlannersOnMonday2Friday(currentDate, clearingCalendarMap, plannerTemplateMap)); + case SUNDAY, SATURDAY -> listOfPlannerAllToday.addAll(getPlannersOnSunday2Saturday()); + } } + PlannerAllToday plannerAllToday = new PlannerAllToday(); } + + private static List getPlannersOnMonday2Friday(LocalDate currentDate, IMap clearingCalendarMap, IMap plannerTemplateMap) { + List res = new ArrayList<>(); + if (clearingCalendarMap == null || clearingCalendarMap.isEmpty()) { + for (PlannerTemplate plannerTemplate : plannerTemplateMap.values()) { + res.add(createPlannerAllTodayFromPlannerTemplate(plannerTemplate)); + } + } else { + Optional clearingCalendarOptional = clearingCalendarMap.values().stream().filter((calendar) -> { + return calendar.getClearingDate().isEqual(currentDate); + }).findFirst(); + if (clearingCalendarOptional.isPresent()) { + ClearingCalendar calendar = clearingCalendarOptional.get(); + if (calendar.getDayStatus().equalsIgnoreCase("active")) { //todo уточнить какой здесь может быть статус + + } + } + } + + return res; + } + + private static List getPlannersOnSunday2Saturday() { + List res = new ArrayList<>(); + + return res; + } + + private static PlannerAllToday createPlannerAllTodayFromPlanner(Planner planner) { + PlannerAllToday res = new PlannerAllToday(); + + return res; + } + + private static PlannerAllToday createPlannerAllTodayFromPlannerTemplate(PlannerTemplate plannerTemplate) { + PlannerAllToday res = new PlannerAllToday(); + + return res; + + } + } From 6a1951db28133db727a61cecfaae8d5d1a2707ca Mon Sep 17 00:00:00 2001 From: ialbert Date: Thu, 8 Dec 2022 17:06:38 +0300 Subject: [PATCH 005/234] http://jira.mfd.msk:8088/browse/CLS-69 --- .../balance/config/ValidationConfig.java | 5 ++- .../balance/service/Sdf16Executor.java | 6 ++- .../AccountBalanceFreeAmountEnough.java | 44 +++++++++++++++++++ .../validation/Sdf09ValidationRule.java | 24 +--------- .../validation/Sdf16ValidationRule.java | 10 +++-- .../classes/statics/data/sdf/SDf09.java | 3 +- .../classes/statics/data/sdf/SDf16.java | 3 +- .../classes/base/interfaces/WithSum.java | 7 +++ .../platform/enumeration/CompanySymbol.java | 2 +- .../platform/enumeration/InOutSDfType.java | 2 +- .../iml/hazelcast/adapter/ImdgHazelcast.java | 11 +++++ 11 files changed, 82 insertions(+), 35 deletions(-) create mode 100644 clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/AccountBalanceFreeAmountEnough.java create mode 100644 platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithSum.java diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java index 452c07053..161f536ca 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java @@ -74,7 +74,8 @@ public class ValidationConfig { return new ValidatorImpl<>(context, Sdf16ValidationRule.CompanyPresent, ExistClrnAccountValidationRule.AccountPresent, - MarketIsUValidationRule.instance); + MarketIsUValidationRule.instance, + AccountBalanceFreeAmountEnough.instance(SDf16.class)); }; } @@ -92,7 +93,7 @@ public class ValidationConfig { Sdf09ValidationRule.CompanyPresent, Sdf09ValidationRule.AccountPresent, MarketIsUValidationRule.instance, - Sdf09ValidationRule.BalanceEnough + AccountBalanceFreeAmountEnough.instance(SDf09.class) ); }; } diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java index eb4989deb..6a85cfd37 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java @@ -116,7 +116,8 @@ public class Sdf16Executor extends AbstractExecutor { statement.setSenderId(Sender.Prc.getId()); statement.setCreated(Instant.now()); statement.setClearingDate(LocalDate.now()); - statement.setStatementType(StatementType.full.getKey()); + statement.setStatementType(StatementType.incr.getKey()); + statement.setComment(sdf.getSpec()); statement.setAccountId(account.getId()); statement.setAccount(sdf.getAccount()); statement.setInOutDirection(InOutDirection.in.getKey()); @@ -124,13 +125,14 @@ public class Sdf16Executor extends AbstractExecutor { statement.setCashMovementCurrencyCode(CurrencyCode.RUB.getKey()); statement.setOperationStatus(OperationStatus.Pending.getKey()); statement.setInSDfId(sdf.getId()); - statement.setInOutSDfType(InOutSDfType.type1.getKey()); + statement.setInOutSDfType(InOutSDfType.type16.getKey()); statementImdg.insert(statement); return statement; } private void updateFlow(Statement statement, SDf16 sdf, Account account) { statement.setUpdated(Instant.now()); + statement.setComment(sdf.getSpec()); statement.setAccountId(account.getId()); statement.setAccount(sdf.getAccount()); statement.setInOutDirection(InOutDirection.in.getKey()); diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/AccountBalanceFreeAmountEnough.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/AccountBalanceFreeAmountEnough.java new file mode 100644 index 000000000..ec4597943 --- /dev/null +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/AccountBalanceFreeAmountEnough.java @@ -0,0 +1,44 @@ +package ru.spcex.clearing.balance.validation; + +import ru.clearing.classes.statics.data.account.AccountBalance; +import ru.spcex.clearing.balance.errors.BalanceError; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.platform.classes.base.interfaces.WithAccount; +import ru.spcex.platform.classes.base.interfaces.WithSum; +import ru.spcex.platform.enumeration.AccountType; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.validation.ImdgValidationContext; +import ru.spcex.platform.utils.enumeration.EnumMessage; +import ru.spcex.platform.utils.validation.IValidationRule; + +import java.math.BigDecimal; +import java.util.Map; +import java.util.Optional; + +public class AccountBalanceFreeAmountEnough implements IValidationRule> { + + private AccountBalanceFreeAmountEnough() { + } + + public static AccountBalanceFreeAmountEnough instance(Class clazz) { + return new AccountBalanceFreeAmountEnough<>(); + } + + @Override + public Optional validate(ImdgValidationContext context) { + T validatedObject = context.getValidatedObject(); + if (validatedObject.getSum().compareTo(BigDecimal.ZERO) >= 0) { + return empty(); + } + Imdg balanceImdg = context.obtainMap(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class); + AccountBalance balance = balanceImdg.getSingleObjectByFieldValues(Map.of("account", validatedObject.getAccount(), + "accountType", AccountType.Clrn.getKey())); + if (balance == null) { + return of(BalanceError.BalanceNotEnough); + } + if (balance.getFreeBalanceAmount().compareTo(validatedObject.getSum()) < 0) { + return of(BalanceError.BalanceNotEnough); + } + return empty(); + } +} diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/Sdf09ValidationRule.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/Sdf09ValidationRule.java index 6f2590a8e..5daf7d4a6 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/Sdf09ValidationRule.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/Sdf09ValidationRule.java @@ -1,7 +1,6 @@ package ru.spcex.clearing.balance.validation; import ru.clearing.classes.statics.data.account.Account; -import ru.clearing.classes.statics.data.account.AccountBalance; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.sdf.SDf09; @@ -14,7 +13,6 @@ import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.validation.IValidationRule; -import java.math.BigDecimal; import java.util.Map; import java.util.Optional; @@ -60,27 +58,7 @@ public enum Sdf09ValidationRule implements IValidationRule validate(ImdgValidationContext context) { - SDf09 validatedObject = context.getValidatedObject(); - if (validatedObject.getSum().compareTo(BigDecimal.ZERO) >= 0) { - return empty(); - } - Imdg balanceImdg = context.obtainMap(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class); - AccountBalance balance = balanceImdg.getSingleObjectByFieldValues(Map.of("account", validatedObject.getAccount(), - "accountType", AccountType.Clrn.getKey())); - if (balance == null) { - return of(BalanceError.BalanceNotEnough); - } - if (balance.getFreeBalanceAmount().compareTo(validatedObject.getSum()) < 0) { - return of(BalanceError.BalanceNotEnough); - } - return empty(); - } - } - ; + }; @Override public String ruleName() { diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/Sdf16ValidationRule.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/Sdf16ValidationRule.java index 43cb3cd49..69bdeb806 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/Sdf16ValidationRule.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/Sdf16ValidationRule.java @@ -5,12 +5,12 @@ import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.sdf.SDf16; import ru.spcex.clearing.balance.errors.BalanceError; import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.platform.enumeration.CompanySymbol; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.validation.IValidationRule; -import java.util.Map; import java.util.Optional; public enum Sdf16ValidationRule implements IValidationRule> { @@ -20,8 +20,10 @@ public enum Sdf16ValidationRule implements IValidationRule companySymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); Imdg companyImdg = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class); - CompanySymbols companySymbols = companySymbolsImdg.getSingleObjectByFieldValues(Map.of("companySymbolValue", sdf16.getInn())); -// CompanySymbols companySymbols = companySymbolsImdg.getSingleObjectByFieldValues(Map.of("companySymbolValue", sdf16.getInn()));//search by bic + CompanySymbols companySymbols = companySymbolsImdg.getSingleObjectBySQL( + String.format("(companySymbolValue = '%s' and companySymbol = '%s') " + + "or (companySymbolValue = '%s' and companySymbol = '%s')", + sdf16.getInn(), CompanySymbol.INN.getKey(), sdf16.getBic(), CompanySymbol.BIC.getKey())); Company company = null; if (companySymbols != null) { company = companyImdg.getSingleObjectByID(companySymbols.getCompanyId()); @@ -36,6 +38,6 @@ public enum Sdf16ValidationRule implements IValidationRule * DB table: S_DF08 **/ -public class SDf09 extends SpcexObjectBase implements WithAccount, WithMarket { +public class SDf09 extends SpcexObjectBase implements WithAccount, WithMarket, WithSum { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private String account; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf16.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf16.java index dce51b3db..2072f0cb0 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf16.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf16.java @@ -4,6 +4,7 @@ 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.WithMarket; +import ru.spcex.platform.classes.base.interfaces.WithSum; import java.math.BigDecimal; import java.time.Instant; @@ -13,7 +14,7 @@ import java.time.Instant; *

* DB table: S_DF16 **/ -public class SDf16 extends SpcexObjectBase implements WithAccount, WithMarket { +public class SDf16 extends SpcexObjectBase implements WithAccount, WithMarket, WithSum { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private String account; diff --git a/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithSum.java b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithSum.java new file mode 100644 index 000000000..5e1772969 --- /dev/null +++ b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithSum.java @@ -0,0 +1,7 @@ +package ru.spcex.platform.classes.base.interfaces; + +import java.math.BigDecimal; + +public interface WithSum { + BigDecimal getSum(); +} diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/CompanySymbol.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/CompanySymbol.java index efe0ea3c3..33170c8d0 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/CompanySymbol.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/CompanySymbol.java @@ -3,7 +3,7 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; public enum CompanySymbol implements IEnumKey { - INN("INN"); + INN("INN"), BIC("BIC"); private final String key; diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/InOutSDfType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/InOutSDfType.java index 62617520e..496c5befb 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/InOutSDfType.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/InOutSDfType.java @@ -3,7 +3,7 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; public enum InOutSDfType implements IEnumKey { - type1("0102"), type9("0910"); + type1("0102"), type16("1617"), type9("0910"); private final String key; diff --git a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java index 940adedcb..0db5e0b28 100644 --- a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java +++ b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java @@ -6,6 +6,7 @@ import com.hazelcast.core.IMap; import com.hazelcast.core.IdGenerator; import com.hazelcast.query.Predicate; import com.hazelcast.query.Predicates; +import com.hazelcast.query.SqlPredicate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ru.spcex.platform.classes.base.SpcexObjectBase; @@ -99,6 +100,16 @@ public class ImdgHazelcast implements Imdg { } } + @Override + public T getSingleObjectBySQL(String paramString) { + SqlPredicate sqlPredicate = new SqlPredicate(paramString); + Set> found = map.entrySet(sqlPredicate); + Iterator> allFoundByCondition = found.iterator(); + if (allFoundByCondition.hasNext()) { + return allFoundByCondition.next().getValue(); + } else return null; + } + /** * возвращает коллекцию объектов, удовлетворяющий условиям на поля */ From af5d18ba36660a01223700dc64d02a45a3b99f45 Mon Sep 17 00:00:00 2001 From: ialbert Date: Thu, 8 Dec 2022 18:15:22 +0300 Subject: [PATCH 006/234] fixed not found wrong status 500 -> 404 --- .../controller/queue/QueueExceptionHandler.java | 12 ++++++++++++ .../backendapi/errors/NotFound404Exception.java | 4 ++++ .../backendapi/service/impl/OperatorImpl.java | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/QueueExceptionHandler.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/QueueExceptionHandler.java index 70dafb130..612664217 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/QueueExceptionHandler.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/QueueExceptionHandler.java @@ -20,6 +20,7 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExcep import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; import ru.spcex.clearing.backendapi.errors.ActionValidationException; import ru.spcex.clearing.backendapi.errors.BackEndError; +import ru.spcex.clearing.backendapi.errors.NotFound404Exception; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.log.ExceptionUtils; @@ -64,6 +65,17 @@ public class QueueExceptionHandler extends ResponseEntityExceptionHandler { } + @ExceptionHandler(NotFound404Exception.class) + @ResponseStatus(value = HttpStatus.NOT_FOUND) + @ResponseBody + public BasicSpcexResponse notFoundEx(NotFound404Exception ex) { + BasicSpcexResponse response = new BasicSpcexResponse(); + EnumMessage message = ex.getError(); + response.setCode(message.getSubject().getId()); + response.setMessage(errorResolver.resolve(message)); + return response; + } + @ExceptionHandler(value = Throwable.class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) @ResponseBody diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/errors/NotFound404Exception.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/errors/NotFound404Exception.java index 1483749e5..9c225657f 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/errors/NotFound404Exception.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/errors/NotFound404Exception.java @@ -10,6 +10,10 @@ public class NotFound404Exception extends RuntimeException { this.error = new EnumMessage(BackEndError.ResourceNotFound, comment); } + public NotFound404Exception(EnumMessage error) { + this.error = error; + } + public EnumMessage getError() { return error; } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/OperatorImpl.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/OperatorImpl.java index dedc83844..a5d1334bf 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/OperatorImpl.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/OperatorImpl.java @@ -67,7 +67,7 @@ public class OperatorImpl implements IOperator { if (validator != null) { validator.tillFirstError().ifPresent(enumMessage -> { if (enumMessage.getSubject().equalsById(BackEndError.ResourceNotFound.getId())) { - throw new NotFound404Exception((String) enumMessage.getArgs()[0]); + throw new NotFound404Exception(enumMessage); } else { throw new ActionValidationException(enumMessage); } From 52605cfc483e43acc48804810a768af3b3af2012 Mon Sep 17 00:00:00 2001 From: aalehin Date: Thu, 8 Dec 2022 19:33:50 +0300 Subject: [PATCH 007/234] http://jira.mfd.msk:8088/browse/CLS-51 --- plannerAllToday set up --- .../ru/spcex/clearing/imdg/util/Util.java | 61 +++++++++++++++---- 1 file changed, 48 insertions(+), 13 deletions(-) diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/util/Util.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/util/Util.java index be82af6fd..acf8a31cc 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/util/Util.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/util/Util.java @@ -20,18 +20,32 @@ public class Util { IMap plannerMap = hazelcastInstance.getMap(Map_Planner); IMap clearingCalendarMap = hazelcastInstance.getMap(Map_ClearingCalendar); IMap plannerTemplateMap = hazelcastInstance.getMap(Map_PlannerTemplate); + IMap plannerAllTodayMap = hazelcastInstance.getMap(Map_PlannerAllToday); LocalDate currentDate = LocalDate.now(); List listOfPlannerAllToday = new ArrayList<>(); - //= plannerMap.values().stream().filter((x) -> x.getClearingDate().isEqual(currentDate)).toList(); + if (!plannerMap.isEmpty()) { switch (currentDate.getDayOfWeek()) { case MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY -> listOfPlannerAllToday.addAll(getPlannersOnMonday2Friday(currentDate, clearingCalendarMap, plannerTemplateMap)); - case SUNDAY, SATURDAY -> listOfPlannerAllToday.addAll(getPlannersOnSunday2Saturday()); + case SUNDAY, SATURDAY -> listOfPlannerAllToday.addAll(getPlannersOnSunday2Saturday(currentDate, clearingCalendarMap, plannerTemplateMap)); } } - PlannerAllToday plannerAllToday = new PlannerAllToday(); + plannerMap.values().stream().filter((x) -> x.getClearingDate().isEqual(currentDate)).forEach((x) -> { + if (x.getTaskStatus().equalsIgnoreCase("ACTV")) { + listOfPlannerAllToday.add(createPlannerAllTodayFromPlanner(x)); + } + + if (x.getTaskStatus().equalsIgnoreCase("CNCL") || x.getTaskStatus().equalsIgnoreCase("BLKD")) { + listOfPlannerAllToday.removeIf((allToday) -> !x.getTaskTime().equals(allToday.getTaskTime()) || + !x.getTask().equalsIgnoreCase(allToday.getTask())); + } + }); + for (PlannerAllToday plannerAllToday : listOfPlannerAllToday) { + plannerAllToday.setId(hazelcastInstance.getIdGenerator(MAP_SEQUENCE_NAME).newId()); + plannerAllTodayMap.put(plannerAllToday.getId(), plannerAllToday); + } } private static List getPlannersOnMonday2Friday(LocalDate currentDate, IMap clearingCalendarMap, IMap plannerTemplateMap) { @@ -41,13 +55,16 @@ public class Util { res.add(createPlannerAllTodayFromPlannerTemplate(plannerTemplate)); } } else { - Optional clearingCalendarOptional = clearingCalendarMap.values().stream().filter((calendar) -> { - return calendar.getClearingDate().isEqual(currentDate); - }).findFirst(); + Optional clearingCalendarOptional = clearingCalendarMap.values().stream().filter((calendar) -> calendar.getClearingDate().isEqual(currentDate)).findFirst(); if (clearingCalendarOptional.isPresent()) { ClearingCalendar calendar = clearingCalendarOptional.get(); - if (calendar.getDayStatus().equalsIgnoreCase("active")) { //todo уточнить какой здесь может быть статус - + if (calendar.getDayStatus().equalsIgnoreCase("BDAY")) { //todo уточнить какой здесь может быть статус + if (calendar.getCompanyId() != null && calendar.getCompanyId() != 0) { + for (PlannerTemplate plannerTemplate : + plannerTemplateMap.values()) { + res.add(createPlannerAllTodayFromPlannerTemplate(plannerTemplate)); + } + } } } } @@ -55,23 +72,41 @@ public class Util { return res; } - private static List getPlannersOnSunday2Saturday() { + private static List getPlannersOnSunday2Saturday(LocalDate currentDate, IMap clearingCalendarMap, IMap plannerTemplateMap) { List res = new ArrayList<>(); - + Optional clearingCalendarOptional = clearingCalendarMap.values().stream().filter((calendar) -> calendar.getClearingDate().isEqual(currentDate)).findFirst(); + if (clearingCalendarOptional.isPresent()) { + ClearingCalendar clearingCalendar = clearingCalendarOptional.get(); + if (clearingCalendar.getDayStatus().equalsIgnoreCase("BDAY")) { + for (PlannerTemplate plannerTemplate : plannerTemplateMap.values()) { + res.add(createPlannerAllTodayFromPlannerTemplate(plannerTemplate)); + } + } + } return res; } private static PlannerAllToday createPlannerAllTodayFromPlanner(Planner planner) { PlannerAllToday res = new PlannerAllToday(); - + res.setTask(planner.getTask()); + res.setTaskTime(planner.getTaskTime()); + res.setClearingDate(planner.getClearingDate()); + res.setMarket(planner.getMarket()); + res.setTaskStatus(planner.getTaskStatus()); + res.setSecurityId(planner.getSecurityId()); + res.setParent("PLNR"); + res.setParentId(planner.getId()); return res; } private static PlannerAllToday createPlannerAllTodayFromPlannerTemplate(PlannerTemplate plannerTemplate) { PlannerAllToday res = new PlannerAllToday(); - + res.setTask(plannerTemplate.getTask()); + res.setTaskTime(plannerTemplate.getTaskTime()); + res.setTaskStatus(plannerTemplate.getTaskStatus()); + res.setParent("TMPL"); + res.setParentId(plannerTemplate.getId()); return res; - } } From 4059c57c9e40477db228782f49521d36f03ef449 Mon Sep 17 00:00:00 2001 From: aalehin Date: Thu, 8 Dec 2022 19:35:07 +0300 Subject: [PATCH 008/234] http://jira.mfd.msk:8088/browse/CLS-51 --- small fix up --- .../imdg/src/main/java/ru/spcex/clearing/imdg/util/Util.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/util/Util.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/util/Util.java index acf8a31cc..8e75d85fc 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/util/Util.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/util/Util.java @@ -58,7 +58,7 @@ public class Util { Optional clearingCalendarOptional = clearingCalendarMap.values().stream().filter((calendar) -> calendar.getClearingDate().isEqual(currentDate)).findFirst(); if (clearingCalendarOptional.isPresent()) { ClearingCalendar calendar = clearingCalendarOptional.get(); - if (calendar.getDayStatus().equalsIgnoreCase("BDAY")) { //todo уточнить какой здесь может быть статус + if (calendar.getDayStatus().equalsIgnoreCase("BDAY")) { if (calendar.getCompanyId() != null && calendar.getCompanyId() != 0) { for (PlannerTemplate plannerTemplate : plannerTemplateMap.values()) { From 094659eca16149091e17d1aec774875e84ed104a Mon Sep 17 00:00:00 2001 From: aalehin Date: Thu, 8 Dec 2022 19:37:07 +0300 Subject: [PATCH 009/234] http://jira.mfd.msk:8088/browse/CLS-78 --- fix up --- .../service/PlannerAllTodayService.java | 33 ------------------- 1 file changed, 33 deletions(-) delete mode 100644 clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerAllTodayService.java diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerAllTodayService.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerAllTodayService.java deleted file mode 100644 index 88515a082..000000000 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerAllTodayService.java +++ /dev/null @@ -1,33 +0,0 @@ -package ru.spcex.clearing.scheduler.service; - -import org.apache.kafka.clients.consumer.Consumer; -import org.apache.kafka.clients.producer.Producer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.InitializingBean; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import ru.clearing.classes.statics.data.scheduler.PlannerAllToday; -import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.platform.messaging.service.QueueConsumer; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.api.ImdgProvider; - -@Service -public class PlannerAllTodayService extends QueueConsumer implements InitializingBean { - private final Logger log = LoggerFactory.getLogger(getClass()); - private final Imdg schedulerAllTodayMap; - - @Autowired - public PlannerAllTodayService(Consumer kafkaQueue, Producer kafkaProducer, - ImdgProvider imdgProvider) { - super(kafkaQueue, kafkaProducer); - this.schedulerAllTodayMap = imdgProvider.getImdg(IMDGDistributedNames.Map_PlannerAllToday, PlannerAllToday.class); - } - - @Override - public void afterPropertiesSet() { - init(); - } - -} From 39410874a97d16ce3dc7333d8e03d5e3ed1ad403 Mon Sep 17 00:00:00 2001 From: ialbert Date: Fri, 9 Dec 2022 12:15:44 +0300 Subject: [PATCH 010/234] meta update --- clearing-parent/backend-api/src/main/resources/meta/meta.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/clearing-parent/backend-api/src/main/resources/meta/meta.xml b/clearing-parent/backend-api/src/main/resources/meta/meta.xml index a14fe0008..ad76483c8 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/meta.xml +++ b/clearing-parent/backend-api/src/main/resources/meta/meta.xml @@ -1,6 +1,6 @@ - + @@ -705,7 +705,7 @@ - + @@ -719,6 +719,7 @@ + From ad84cbd6a6d68406269f57dc2a4f9dd97967ce93 Mon Sep 17 00:00:00 2001 From: ialbert Date: Fri, 9 Dec 2022 12:43:43 +0300 Subject: [PATCH 011/234] http://jira.mfd.msk:8088/browse/CLS-148 keyRate -> rate --- .../request/cud/utilities/KeyRateNewAction.java | 12 ++++++------ .../request/cud/utilities/KeyRateUpdateAction.java | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/KeyRateNewAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/KeyRateNewAction.java index ec422c424..6e84101b9 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/KeyRateNewAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/KeyRateNewAction.java @@ -20,7 +20,7 @@ import java.util.List; public class KeyRateNewAction implements IAction { @ApiModelProperty(value = "Ключевая ставка ЦБ РФ", example = "12.5") @JsonProperty - public BigDecimal keyRate; + public BigDecimal rate; @ApiModelProperty(value = "Дата начала действия ключевой ставки", example = "2022-01-20") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "Europe/Moscow") @JsonDeserialize(using = LocalDateDeserializer.class) @@ -53,17 +53,17 @@ public class KeyRateNewAction implements IAction { var req = new KeyRateNewRequest(); req.setStartDate(this.getStartDate()); req.setEndDate(this.getEndDate()); - req.setKeyRate(this.getKeyRate()); + req.setKeyRate(this.getRate()); req.setDocument(this.getDocument()); return req; } - public BigDecimal getKeyRate() { - return keyRate; + public BigDecimal getRate() { + return rate; } - public void setKeyRate(BigDecimal keyRate) { - this.keyRate = keyRate; + public void setRate(BigDecimal rate) { + this.rate = rate; } public LocalDate getStartDate() { diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/KeyRateUpdateAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/KeyRateUpdateAction.java index 4c5a1b3d2..250506c75 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/KeyRateUpdateAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/KeyRateUpdateAction.java @@ -18,7 +18,7 @@ public class KeyRateUpdateAction implements IAction { public Long id; @ApiModelProperty(value = "Ключевая ставка ЦБ РФ", example = "12.5") @JsonProperty - public BigDecimal keyRate; + public BigDecimal rate; @ApiModelProperty(value = "Дата начала действия ключевой ставки", example = "2022-01-20") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "Europe/Moscow") @JsonDeserialize(using = LocalDateDeserializer.class) @@ -45,17 +45,17 @@ public class KeyRateUpdateAction implements IAction { req.setId(this.getId()); req.setStartDate(this.getStartDate()); req.setEndDate(this.getEndDate()); - req.setKeyRate(this.getKeyRate()); + req.setKeyRate(this.getRate()); req.setDocument(this.getDocument()); return req; } - public BigDecimal getKeyRate() { - return keyRate; + public BigDecimal getRate() { + return rate; } - public void setKeyRate(BigDecimal keyRate) { - this.keyRate = keyRate; + public void setRate(BigDecimal rate) { + this.rate = rate; } public LocalDate getStartDate() { From e0dcd246041aaf0a17dd58fc7b66172176fc29c7 Mon Sep 17 00:00:00 2001 From: ialbert Date: Fri, 9 Dec 2022 14:35:31 +0300 Subject: [PATCH 012/234] http://jira.mfd.msk:8088/browse/CLS-69 --- .../balance/service/AbstractExecutor.java | 1 + .../balance/service/Sdf01Executor.java | 5 ++ .../balance/service/Sdf09Executor.java | 5 ++ .../balance/service/Sdf16Executor.java | 26 ++++++++++- .../balance/service/StatementService.java | 2 +- .../platform/enumeration/ObjectType.java | 18 ++++++++ .../platform/messaging/domain/Consts.java | 2 +- .../cud/utilities/NotificationNewRequest.java | 46 +++++++++++++++++++ 8 files changed, 101 insertions(+), 4 deletions(-) create mode 100644 platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/NotificationNewRequest.java diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AbstractExecutor.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AbstractExecutor.java index 6e21bc084..cc7429904 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AbstractExecutor.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AbstractExecutor.java @@ -7,4 +7,5 @@ import java.util.Collection; public abstract class AbstractExecutor { abstract Result execute(Collection sdf, StatementRequest statementRequest); + abstract String exportTableName(); } diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf01Executor.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf01Executor.java index a6ba8c479..7caae9494 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf01Executor.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf01Executor.java @@ -59,6 +59,11 @@ public class Sdf01Executor extends AbstractExecutor { this.errorResolver = errorResolver; } + @Override + String exportTableName() { + return "DF-02"; + } + public Result execute(Collection sdf, StatementRequest statementRequest){ Result result = new Result(); Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId(); diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf09Executor.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf09Executor.java index 242604d4c..20193293f 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf09Executor.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf09Executor.java @@ -57,6 +57,11 @@ public class Sdf09Executor extends AbstractExecutor { this.errorResolver = errorResolver; } + @Override + String exportTableName() { + return "DF-10"; + } + public Result execute(Collection sdf, StatementRequest statementRequest){ Result result = new Result(); Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId(); diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java index 6a85cfd37..a91db0fb6 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java @@ -12,8 +12,11 @@ import ru.clearing.classes.statics.data.statement.Statement; import ru.spcex.clearing.balance.errors.BalanceError; import ru.spcex.clearing.balance.validation.ValidationStored; 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.utilities.NotificationNewRequest; +import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; import ru.spcex.platform.enumeration.*; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -43,16 +46,17 @@ public class Sdf16Executor extends AbstractExecutor { private final AccountBalanceService accountBalanceService; private final IMessageResolver errorResolver; private final Imdg accountBalanceImdg; + private final KafkaSender kafaSender; public Sdf16Executor(Function sDf16Validator, LoggingService errorLogger, ImdgProvider imdgProvider, AccountBalanceService accountBalanceService, - IMessageResolver errorResolver) { + IMessageResolver errorResolver, KafkaSender kafaSender) { this.statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class); this.sdf17Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf17, SDf17.class); this.accountBalanceImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class); - ; + this.kafaSender = kafaSender; this.sDf16Validator = sDf16Validator; this.errorLogger = errorLogger; this.imdgProvider = imdgProvider; @@ -60,6 +64,11 @@ public class Sdf16Executor extends AbstractExecutor { this.errorResolver = errorResolver; } + @Override + String exportTableName() { + return "DF-17"; + } + public Result execute(Collection sdf, StatementRequest statementRequest) { Result result = new Result(); Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId(); @@ -106,10 +115,23 @@ public class Sdf16Executor extends AbstractExecutor { statement.setOperationStatus(OperationStatus.Executed.getKey()); } statementImdg.update(statement); + NotificationNewRequest notificationNewRequest = createNotification(statement.getId(), + statement.getSenderId(), + statement.getAddresseeId()); + kafaSender.sendRequestToQueue(Consts.NOTIFICATION_NEW, notificationNewRequest); } return result; } + private NotificationNewRequest createNotification(Long id, Long senderId, Long addresseeId) { + NotificationNewRequest request = new NotificationNewRequest(); + request.setSenderId(senderId); + request.setAddresseeId(addresseeId); + request.setObjectType(ObjectType.statement.getKey()); + request.setObjectId(id); + return request; + } + private Statement createFlow(SDf16 sdf, Company company, Account account) { Statement statement = new Statement(); statement.setAddresseeId(company.getId()); diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java index ee232f632..f74047b3f 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java @@ -79,7 +79,7 @@ public class StatementService extends QueueConsumer implements InitializingBean if (res.getAccountRequests().size() == 0) { ExportToFileRequest exportRequest = new ExportToFileRequest(); exportRequest.setSdfGroupId(res.getGenerationId()); - exportRequest.setNameOfTable("DF-02"); + exportRequest.setNameOfTable(service.exportTableName()); kafkaReqProducer.sendRequestToQueue(Consts.EXPORT_PROCESS, exportRequest); } else { kafkaReqProducer.sendRequestToQueue(Consts.ACCOUNT_NEW, createAccountsRequest(statementRequest.getGroupId(), res.getAccountRequests())); diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java new file mode 100644 index 000000000..b90e5e1e8 --- /dev/null +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ObjectType.java @@ -0,0 +1,18 @@ +package ru.spcex.platform.enumeration; + +import ru.spcex.platform.utils.enumeration.IEnumKey; + +public enum ObjectType implements IEnumKey { + statement("STMT"); + + private final String key; + + ObjectType(String key) { + this.key = key; + } + + @Override + public String getKey() { + return key; + } +} diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index 34746ccb7..bfc7d89cd 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -40,7 +40,6 @@ public interface Consts { String USER_LOGOUT_SUCCESS = "user-logout-success"; String USER_SETTINGS_UPDATE = "user-settings-update"; - //todo String STATEMENT_PROCESS = "statement-process"; String SDF04_PROCESS = "sdf04-process"; String SDF03_PROCESS = "sdf03-process"; @@ -49,6 +48,7 @@ public interface Consts { String ACCOUNT_NEW = "account-new"; String BALANCE_ACCOUNT_NEW = "balance-account-new"; String LAUNCHER_NEW = "launcher-new"; + String NOTIFICATION_NEW = "notification-new"; String REQUEST_INFO_UPDATE = "request-info-update"; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/NotificationNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/NotificationNewRequest.java new file mode 100644 index 000000000..88b57c4db --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/NotificationNewRequest.java @@ -0,0 +1,46 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.utilities; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class NotificationNewRequest { + @JsonProperty + public Long senderId; + @JsonProperty + public Long addresseeId; + @JsonProperty + public String objectType; + @JsonProperty + public Long objectId; + + public Long getSenderId() { + return senderId; + } + + public void setSenderId(Long senderId) { + this.senderId = senderId; + } + + public Long getAddresseeId() { + return addresseeId; + } + + public void setAddresseeId(Long addresseeId) { + this.addresseeId = addresseeId; + } + + public String getObjectType() { + return objectType; + } + + public void setObjectType(String objectType) { + this.objectType = objectType; + } + + public Long getObjectId() { + return objectId; + } + + public void setObjectId(Long objectId) { + this.objectId = objectId; + } +} From 70bfd94b64539f53447917b862e691e75646c2e0 Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 12 Dec 2022 11:04:48 +0300 Subject: [PATCH 013/234] http://jira.mfd.msk:8088/browse/CLS-35 --- .../dbf/importer/logic/Processor.java | 1 + .../importer/services/DBFImporterService.java | 50 ++++++++++++++++--- 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/Processor.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/Processor.java index dcdb92c9d..86340fc6f 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/Processor.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/Processor.java @@ -27,6 +27,7 @@ public class Processor { for (Stage currStage : pipeline) { log.info("uuid {}. Stage: {}", task.getUuid(), currStage.getClass().getSimpleName()); result = currStage.process(task); + log.info("uuid {}. Stage {} finished", task.getUuid(), currStage.getClass().getSimpleName()); if (Arrays.asList(StageResult.ERROR, StageResult.COMPLETE).contains(result)) break; } long endMills = System.currentTimeMillis(); diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java index a4413c8a9..51eed3b59 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java @@ -12,8 +12,12 @@ import ru.spcex.clearing.dbf.importer.logic.data.ResultContainer; import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable; import java.io.File; +import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service("dbfImporterService") @EnableScheduling @@ -37,15 +41,45 @@ public class DBFImporterService { } public void run(ETable specificTable) { - log.info("performing import {}", specificTable != null ? specificTable.name() : ""); - Map> newFiles = fileChecker.checkNewFiles(specificTable); - for (Map.Entry> newFilesEntry : newFiles.entrySet()) { - ETable currTable = newFilesEntry.getKey(); - List fileList = newFilesEntry.getValue(); - for (File dbfFile : fileList) { - executorService.execute(() -> processor.process(ResultContainer.createNewTask(currTable, dbfFile))); + log.info("adding import task {}", specificTable != null ? specificTable.name() : ""); + executorService.execute(() -> { + log.info("checking new files... {}", specificTable != null ? specificTable.name() : ""); + Map> newFiles = fileChecker.checkNewFiles(specificTable); + if (log.isDebugEnabled()) { + log.debug("following files will be processed {}", forLogging(newFiles)); + } else { + log.info("following files will be processed {}", forLoggingSizeOnly(newFiles)); } - } + for (Map.Entry> newFilesEntry : newFiles.entrySet()) { + ETable currTable = newFilesEntry.getKey(); + List fileList = newFilesEntry.getValue(); + for (File dbfFile : fileList) { + processor.process(ResultContainer.createNewTask(currTable, dbfFile)); + } + } + }); + } + + private static String forLogging(Map> files) { + return files + .entrySet() + .stream() + .flatMap((Function>, Stream>) entry -> { + List r = new LinkedList<>(); + for (File file : entry.getValue()) { + r.add(entry.getKey().name() + " " + file.toPath()); + } + return r.stream(); + }) + .collect(Collectors.joining(";", "[", "]")); + } + + private static String forLoggingSizeOnly(Map> files) { + return files + .entrySet() + .stream() + .map(entry -> entry.getKey().name() + " " + entry.getValue().size()) + .collect(Collectors.joining(";", "[", "]")); } } From d4767d5937bccc3e3d4b0d4ce6899b29218963d8 Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 12 Dec 2022 13:12:58 +0300 Subject: [PATCH 014/234] http://jira.mfd.msk:8088/browse/CLS-35 --- .../clearing/dbf/importer/logic/stages/ImportToDB.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java index 59f0d63d0..f0259951f 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java @@ -9,6 +9,7 @@ import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable; import ru.spcex.clearing.dbf.importer.logic.data.enums.StageResult; import ru.spcex.clearing.dbf.importer.logic.data.tables.AbstractTable; import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; +import ru.spcex.platform.utils.log.ExceptionUtils; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -51,12 +52,19 @@ public class ImportToDB extends Stage { table.setFileId(fileId); for (int i = 0; i < dbfReader.getRecordCount(); i++) { Object[] entity = dbfReader.nextRecord(); + if (entity == null) { + log.warn("record index {} null", i); + continue; + } table.injectEntity(table.getEntity(entity)); } kafkaMessenger.notifySystemIfNeeded(currTable, fileId); } catch (IOException exception) { log.warn(exception.getMessage()); return StageResult.ERROR; + } catch (Throwable e) { + log.error(ExceptionUtils.getStackTrace(e)); + return StageResult.ERROR; } From 55cd288dd9b0096e54db8450f3669f4ae8084e40 Mon Sep 17 00:00:00 2001 From: aalehin Date: Mon, 12 Dec 2022 13:15:34 +0300 Subject: [PATCH 015/234] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-57?= =?UTF-8?q?=20---=20scheduler=5Fservice:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B8=20=D0=B2=20launcher=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8?= =?UTF-8?q?=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scheduler/service/LauncherService.java | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/LauncherService.java diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/LauncherService.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/LauncherService.java new file mode 100644 index 000000000..82e9862af --- /dev/null +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/LauncherService.java @@ -0,0 +1,52 @@ +package ru.spcex.clearing.scheduler.service; + +import org.apache.kafka.clients.consumer.Consumer; +import org.apache.kafka.clients.producer.Producer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import ru.clearing.classes.statics.data.scheduler.Launcher; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.time.Instant; + +public class LauncherService extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); + private final Imdg launcherMap; + + @Autowired + public LauncherService(Consumer kafkaQueue, Producer kafkaProducer, + ImdgProvider imdgProvider) { + super(kafkaQueue, kafkaProducer); + this.launcherMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Launcher, Launcher.class); + } + + @Override + public void afterPropertiesSet() { + callback(LauncherCommandRequest.class) + .setConsumer(this::newLauncher) + .forDestination(Consts.LAUNCHER_NEW, callbacks::put); + init(); + } + + private void newLauncher(BaseRequest userRequest) { + LauncherCommandRequest req = userRequest.getRequestPayload(); + log.debug("LauncherCommandRequest received"); + Instant created = Instant.now(); + Launcher launcher = new Launcher(); + launcher.setTask(req.getTaskName()); + launcher.setSenderId(req.getUserId()); + launcher.setCreated(created); + launcher.setUpdated(created); + launcherMap.insert(launcher); + log.debug("successfully processed, new id {}", launcher.getId()); + } + +} From eedb15dba77818903cd926aca140813dd829fe8d Mon Sep 17 00:00:00 2001 From: aalehin Date: Mon, 12 Dec 2022 13:31:53 +0300 Subject: [PATCH 016/234] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-63?= =?UTF-8?q?=20---=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BD=D0=BB=D0=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spcex/clearing/imdg/object/UserRoleSessionMapStore.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/UserRoleSessionMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/UserRoleSessionMapStore.java index f1f9cd4cf..fdc8edf8b 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/UserRoleSessionMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/UserRoleSessionMapStore.java @@ -29,7 +29,7 @@ public class UserRoleSessionMapStore extends TemplateMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "USER_ID", "USER_ROLE", "COMPANY_ID", "STATUS" + "ID", "USER_ID", "USER_ROLE", "COMPANY_ID", "STATUS" }; } @@ -40,7 +40,7 @@ public class UserRoleSessionMapStore extends TemplateMapStore { object.setId(resultSet.getObject("ID", Long.class)); object.setUserId(resultSet.getObject("USER_ID", Long.class)); object.setUserRole(resultSet.getObject("USER_ROLE", String.class)); - object.setCompanyId(companyId.equals(0L) ? 1 : companyId); + object.setCompanyId(companyId == null || companyId.equals(0L) ? 1 : companyId); object.setStatus(resultSet.getObject("STATUS", String.class)); return object; } From d377a788f28dd8237be6bad32b54919ebeb2e534 Mon Sep 17 00:00:00 2001 From: psemenkov Date: Mon, 12 Dec 2022 14:44:14 +0300 Subject: [PATCH 017/234] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20SDf11,=20SDf11MapStore,=20Sdf11Builder,=20SDf03,?= =?UTF-8?q?=20SDf03MapStore,=20Sdf03Builder=20=D0=BA=D0=B0=D0=BA=20=D0=B2?= =?UTF-8?q?=20=D0=BC=D0=B5=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../classes/statics/data/sdf/SDf03.java | 11 ++- .../classes/statics/data/sdf/SDf11.java | 11 ++- .../clearing/service/order/Sdf03Builder.java | 3 +- .../clearing/service/order/Sdf11Builder.java | 3 +- .../clearing/imdg/object/SDf03MapStore.java | 98 ++++++++++--------- .../clearing/imdg/object/SDf11MapStore.java | 94 +++++++++--------- .../structure/RunnableMapNamesForTesting.java | 19 ++-- 7 files changed, 131 insertions(+), 108 deletions(-) diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf03.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf03.java index 4d190fef9..a8ab57740 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf03.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf03.java @@ -7,7 +7,7 @@ import java.time.Instant; /** * ДФ-03 Сводное платежное поручение - * + *

* DB table: S_DF03 **/ public class SDf03 extends SpcexObjectBase { @@ -61,6 +61,7 @@ public class SDf03 extends SpcexObjectBase { private String imp_result; private Instant generationTime; private Long generationId; + private Long paymentInstructionId; public String getSeg_type() { return seg_type; @@ -445,4 +446,12 @@ public class SDf03 extends SpcexObjectBase { public void setDocnmprev(String docnmprev) { this.docnmprev = docnmprev; } + + public Long getPaymentInstructionId() { + return paymentInstructionId; + } + + public void setPaymentInstructionId(Long paymentInstructionId) { + this.paymentInstructionId = paymentInstructionId; + } } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf11.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf11.java index b8e2f2c69..b0b27136c 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf11.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf11.java @@ -7,7 +7,7 @@ import java.time.Instant; /** * ДФ-11 Из КС в ПРЦ Платежное распоряжение на перевод средств с ТБС Участника на КС Инициатора - * + *

* DB table: S_DF11 **/ public class SDf11 extends SpcexObjectBase { @@ -60,6 +60,7 @@ public class SDf11 extends SpcexObjectBase { private String doc_result; private Instant generationTime; private Long generationId; + private Long paymentInstructionId; public String getSeg_type() { return seg_type; @@ -436,4 +437,12 @@ public class SDf11 extends SpcexObjectBase { public void setGenerationId(Long generationId) { this.generationId = generationId; } + + public Long getPaymentInstructionId() { + return paymentInstructionId; + } + + public void setPaymentInstructionId(Long paymentInstructionId) { + this.paymentInstructionId = paymentInstructionId; + } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/Sdf03Builder.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/Sdf03Builder.java index a16f02452..d91755610 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/Sdf03Builder.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/Sdf03Builder.java @@ -47,8 +47,7 @@ public class Sdf03Builder { } sDf03.setGenerationTime(Instant.now()); sDf03.setGenerationId(generationId); - //todo -// sDf03.setPaymentInstructionId(paymentInstruction.getId()); + sDf03.setPaymentInstructionId(paymentInstruction.getId()); return sDf03; } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/Sdf11Builder.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/Sdf11Builder.java index 310a77b1d..c609b133e 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/Sdf11Builder.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/Sdf11Builder.java @@ -47,8 +47,7 @@ public class Sdf11Builder { } sDf11.setGenerationTime(Instant.now()); sDf11.setGenerationId(generationId); - //todo -// sDf03.setPaymentInstructionId(paymentInstruction.getId()); + sDf11.setPaymentInstructionId(paymentInstruction.getId()); return sDf11; } } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf03MapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf03MapStore.java index d7b3fe94e..b06068c55 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf03MapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf03MapStore.java @@ -29,13 +29,13 @@ public class SDf03MapStore extends TemplateMapStore { @Override public String[] getFields() { - return new String[] { + return new String[]{ "ID", "SEG_TYPE", "DOC_TYPE", "DOCNM_REF", "DOCNMPREV", "PRIORITY", "SBANKCODE", "C_ACC_DEB", "SBANKNAM1", "SBANKNAM2", "SBANKNAM3", "SBANKNAM4", "SBANKNAM5", "RBANKCODE", "C_ACC_CRED", "RBANKNAM1", "RBANKNAM2", "RBANKNAM3", "RBANKNAM4", "RBANKNAM5", "PAY_DATE", "EXT_DATE", "PAY_VAL", "SUM_DEB", "SCLIENTN1", "SCLIENTN2", "SCLIENTN3", "SCLIENTN4", "SC_CODE", "ACC_DEB", "RCLIENTN1", "RCLIENTN2", "RCLIENTN3", "RCLIENTN4", "ACC_KR_1", "ACC_KR_2", "SP_CODE", "SPECIF_1", "SPECIF_2", "SPECIF_3", "SPECIF_4", "SPECIF_5", - "SPECIF_6", "SEND_TYPE", "SERVDATE", "DOC_RESULT", "IMP_RESULT", "GENERATION_TIME", "GENERATION_ID" + "SPECIF_6", "SEND_TYPE", "SERVDATE", "DOC_RESULT", "IMP_RESULT", "GENERATION_TIME", "GENERATION_ID", "PAYMENT_INSTRUCTION_ID" }; } @@ -91,6 +91,7 @@ public class SDf03MapStore extends TemplateMapStore { object.setImp_result(resultSet.getObject("IMP_RESULT", String.class)); object.setGenerationTime(getInstantFromTimestamp(resultSet, "GENERATION_TIME")); object.setGenerationId(resultSet.getObject("GENERATION_ID", Long.class)); + object.setPaymentInstructionId(resultSet.getObject("PAYMENT_INSTRUCTION_ID", Long.class)); return object; } @@ -99,53 +100,54 @@ public class SDf03MapStore extends TemplateMapStore { Object[] args = new Object[]{ object.getId(), object.getSeg_type(), - object.getDoc_type(), - object.getDocnm_ref(), - object.getDocnmprev(), - object.getPriority(), - object.getSbankcode(), - object.getC_acc_deb(), - object.getSbanknam1(), - object.getSbanknam2(), - object.getSbanknam3(), - object.getSbanknam4(), - object.getSbanknam5(), - object.getRbankcode(), - object.getC_acc_cred(), - object.getRbanknam1(), - object.getRbanknam2(), - object.getRbanknam3(), - object.getRbanknam4(), - object.getRbanknam5(), - object.getPay_date(), - object.getExt_date(), - object.getPay_val(), - object.getSum_deb(), - object.getSclientn1(), - object.getSclientn2(), - object.getSclientn3(), - object.getSclientn4(), - object.getSc_code(), - object.getAcc_deb(), - object.getRclientn1(), - object.getRclientn2(), - object.getRclientn3(), - object.getRclientn4(), - object.getAcc_kr_1(), - object.getAcc_kr_2(), - object.getSp_code(), - object.getSpecif_1(), - object.getSpecif_2(), - object.getSpecif_3(), - object.getSpecif_4(), - object.getSpecif_5(), - object.getSpecif_6(), - object.getSend_type(), - object.getServdate(), - object.getDoc_result(), - object.getImp_result(), + object.getDoc_type(), + object.getDocnm_ref(), + object.getDocnmprev(), + object.getPriority(), + object.getSbankcode(), + object.getC_acc_deb(), + object.getSbanknam1(), + object.getSbanknam2(), + object.getSbanknam3(), + object.getSbanknam4(), + object.getSbanknam5(), + object.getRbankcode(), + object.getC_acc_cred(), + object.getRbanknam1(), + object.getRbanknam2(), + object.getRbanknam3(), + object.getRbanknam4(), + object.getRbanknam5(), + object.getPay_date(), + object.getExt_date(), + object.getPay_val(), + object.getSum_deb(), + object.getSclientn1(), + object.getSclientn2(), + object.getSclientn3(), + object.getSclientn4(), + object.getSc_code(), + object.getAcc_deb(), + object.getRclientn1(), + object.getRclientn2(), + object.getRclientn3(), + object.getRclientn4(), + object.getAcc_kr_1(), + object.getAcc_kr_2(), + object.getSp_code(), + object.getSpecif_1(), + object.getSpecif_2(), + object.getSpecif_3(), + object.getSpecif_4(), + object.getSpecif_5(), + object.getSpecif_6(), + object.getSend_type(), + object.getServdate(), + object.getDoc_result(), + object.getImp_result(), TimeUtil.toDateFromInstant(object.getGenerationTime()), - object.getGenerationId() + object.getGenerationId(), + object.getPaymentInstructionId() }; return args; } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf11MapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf11MapStore.java index 7667a2acd..febedde70 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf11MapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf11MapStore.java @@ -29,13 +29,13 @@ public class SDf11MapStore extends TemplateMapStore { @Override public String[] getFields() { - return new String[] { + return new String[]{ "ID", "SEG_TYPE", "DOC_TYPE", "DOCNM_REF", "DOCNMPREV", "PRIORITY", "SBANKCODE", "C_ACC_DEB", "SBANKNAM1", "SBANKNAM2", "SBANKNAM3", "SBANKNAM4", "SBANKNAM5", "RBANKCODE", "C_ACC_CRED", "RBANKNAM1", "RBANKNAM2", "RBANKNAM3", "RBANKNAM4", "RBANKNAM5", "PAY_DATE", "EXT_DATE", "PAY_VAL", "SUM_DEB", "SCLIENTN1", "SCLIENTN2", "SCLIENTN3", "SCLIENTN4", "SC_CODE", "ACC_DEB", "RCLIENTN1", "RCLIENTN2", "RCLIENTN3", "RCLIENTN4", "ACC_KR_1", "ACC_KR_2", "SP_CODE", "SPECIF_1", "SPECIF_2", "SPECIF_3", "SPECIF_4", "SPECIF_5", - "SPECIF_6", "SEND_TYPE", "SERVDATE", "DOC_RESULT", "GENERATION_TIME", "GENERATION_ID" + "SPECIF_6", "SEND_TYPE", "SERVDATE", "DOC_RESULT", "GENERATION_TIME", "GENERATION_ID", "PAYMENT_INSTRUCTION_ID" }; } @@ -90,6 +90,7 @@ public class SDf11MapStore extends TemplateMapStore { object.setDoc_result(resultSet.getObject("DOC_RESULT", String.class)); object.setGenerationTime(getInstantFromTimestamp(resultSet, "GENERATION_TIME")); object.setGenerationId(resultSet.getObject("GENERATION_ID", Long.class)); + object.setPaymentInstructionId(resultSet.getObject("PAYMENT_INSTRUCTION_ID", Long.class)); return object; } @@ -98,52 +99,53 @@ public class SDf11MapStore extends TemplateMapStore { Object[] args = new Object[]{ object.getId(), object.getSeg_type(), - object.getDoc_type(), - object.getDocnm_ref(), + object.getDoc_type(), + object.getDocnm_ref(), object.getDocnmprev(), - object.getPriority(), - object.getSbankcode(), - object.getC_acc_deb(), - object.getSbanknam1(), - object.getSbanknam2(), - object.getSbanknam3(), - object.getSbanknam4(), - object.getSbanknam5(), - object.getRbankcode(), - object.getC_acc_cred(), - object.getRbanknam1(), - object.getRbanknam2(), - object.getRbanknam3(), - object.getRbanknam4(), - object.getRbanknam5(), - object.getPay_date(), - object.getExt_date(), - object.getPay_val(), - object.getSum_deb(), - object.getSclientn1(), - object.getSclientn2(), - object.getSclientn3(), - object.getSclientn4(), - object.getSc_code(), - object.getAcc_deb(), - object.getRclientn1(), - object.getRclientn2(), - object.getRclientn3(), - object.getRclientn4(), - object.getAcc_kr_1(), - object.getAcc_kr_2(), - object.getSp_code(), - object.getSpecif_1(), - object.getSpecif_2(), - object.getSpecif_3(), - object.getSpecif_4(), - object.getSpecif_5(), - object.getSpecif_6(), - object.getSend_type(), - object.getServdate(), - object.getDoc_result(), + object.getPriority(), + object.getSbankcode(), + object.getC_acc_deb(), + object.getSbanknam1(), + object.getSbanknam2(), + object.getSbanknam3(), + object.getSbanknam4(), + object.getSbanknam5(), + object.getRbankcode(), + object.getC_acc_cred(), + object.getRbanknam1(), + object.getRbanknam2(), + object.getRbanknam3(), + object.getRbanknam4(), + object.getRbanknam5(), + object.getPay_date(), + object.getExt_date(), + object.getPay_val(), + object.getSum_deb(), + object.getSclientn1(), + object.getSclientn2(), + object.getSclientn3(), + object.getSclientn4(), + object.getSc_code(), + object.getAcc_deb(), + object.getRclientn1(), + object.getRclientn2(), + object.getRclientn3(), + object.getRclientn4(), + object.getAcc_kr_1(), + object.getAcc_kr_2(), + object.getSp_code(), + object.getSpecif_1(), + object.getSpecif_2(), + object.getSpecif_3(), + object.getSpecif_4(), + object.getSpecif_5(), + object.getSpecif_6(), + object.getSend_type(), + object.getServdate(), + object.getDoc_result(), TimeUtil.toDateFromInstant(object.getGenerationTime()), - object.getGenerationId() + object.getGenerationId(), + object.getPaymentInstructionId() }; return args; } diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java index f97406af2..da87bd596 100644 --- a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java @@ -12,6 +12,7 @@ import ru.clearing.classes.statics.data.journal.InDocumentJournal; import ru.clearing.classes.statics.data.journal.OutDocumentJournal; import ru.clearing.classes.statics.data.messages.ErrorText; import ru.clearing.classes.statics.data.misc.KeyRate; +import ru.clearing.classes.statics.data.misc.Listing; import ru.clearing.classes.statics.data.misc.MoneyMarketSecurity; import ru.clearing.classes.statics.data.profile.Contact; import ru.clearing.classes.statics.data.profile.ProfileDocument; @@ -54,18 +55,20 @@ public class RunnableMapNamesForTesting { businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UserHistory, UserHistory.class)); //business object - businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Account, Account.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Account, Account.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ClearingCalendar, ClearingCalendar.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Company, Company.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ErrorText, ErrorText.class)); - businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Relation, Relation.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Launcher, Launcher.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Listing, Listing.class, + new SettingOperation("setLotSize", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("21.11")}))); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Planner, Planner.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_PlannerTemplate, PlannerTemplate.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Relation, Relation.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Security, Security.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Statement, Statement.class, new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("23.22")}))); - businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Launcher, Launcher.class)); - businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_PlannerTemplate, PlannerTemplate.class)); - businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ClearingCalendar, ClearingCalendar.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UserConnect, UserConnect.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_User, User.class)); @@ -119,13 +122,13 @@ public class RunnableMapNamesForTesting { businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Contact, Contact.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_InDocumentJournal, InDocumentJournal.class, - new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("23.22")}))); + new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("22.12")}))); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_InformationAccount, InformationAccount.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_KeyRate, KeyRate.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class, - new SettingOperation("setNominalValue", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("23.22")}))); + new SettingOperation("setNominalValue", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("25.25")}))); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_OutDocumentJournal, OutDocumentJournal.class, - new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("23.22")}))); + new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("28.28")}))); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_PlannerAllToday, PlannerAllToday.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf01, SDf01.class)); From f5afbd5c9f4f0a0f1eb6bf68c8fe964b70c5abc9 Mon Sep 17 00:00:00 2001 From: psemenkov Date: Mon, 12 Dec 2022 15:42:41 +0300 Subject: [PATCH 018/234] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BC=D0=B0=D0=BF=D1=81=D1=82=D0=BE=D1=80=D1=8B=20?= =?UTF-8?q?=D0=B2=20=D1=82=D0=B5=D1=81=D1=82=20=D0=B8=20=D0=B8=D1=81=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20SessionMapStore,=20PaymentInst?= =?UTF-8?q?ructionMapStore,=20NotificationMapStore,=20ManagementJournalMap?= =?UTF-8?q?Store.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ManagementJournalMapStore.java | 2 +- .../imdg/object/NotificationMapStore.java | 7 ++++--- .../object/PaymentInstructionMapStore.java | 15 +++++++++------ .../clearing/imdg/object/SessionMapStore.java | 7 ++++--- .../structure/RunnableMapNamesForTesting.java | 19 +++++++++++++------ 5 files changed, 31 insertions(+), 19 deletions(-) diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/ManagementJournalMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/ManagementJournalMapStore.java index b184781ca..67c8d3031 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/ManagementJournalMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/ManagementJournalMapStore.java @@ -75,7 +75,7 @@ public class ManagementJournalMapStore extends TemplateMapStore { protected Object[] objectToField(Notification notification) { Object[] args = new Object[]{ notification.getId(), - notification.getCreated(), - notification.getUpdated(), + TimeUtil.toDateFromInstant(notification.getCreated()), + TimeUtil.toDateFromInstant(notification.getUpdated()), notification.getClearingDate(), notification.getSenderId(), notification.getAddresseeId(), notification.getObjectType(), - notification.getObjectId(), + TimeUtil.toDateFromInstant(notification.getObjectId()), notification.getNotificationStatus() }; return args; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/PaymentInstructionMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/PaymentInstructionMapStore.java index fa42fdb6d..47fa2fbcb 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/PaymentInstructionMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/PaymentInstructionMapStore.java @@ -5,6 +5,7 @@ import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.payment.PaymentInstruction; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.base.TemplateMapStore; +import ru.spcex.platform.utils.time.TimeUtil; import java.sql.ResultSet; import java.sql.SQLException; @@ -28,7 +29,9 @@ public class PaymentInstructionMapStore extends TemplateMapStore { protected Object[] objectToField(Session session) { Object[] args = new Object[]{ session.getId(), - session.getCreated(), - session.getUpdated(), - session.getClearingDate(), + TimeUtil.toDateFromInstant(session.getCreated()), + TimeUtil.toDateFromInstant(session.getUpdated()), + TimeUtil.toDateFromLocalDate(session.getClearingDate()), session.getSessionStatus() }; return args; diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java index da87bd596..68991d4be 100644 --- a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java @@ -9,11 +9,11 @@ import ru.clearing.classes.statics.data.company.relation.Relation; import ru.clearing.classes.statics.data.company.relation.RelationHistory; import ru.clearing.classes.statics.data.generated.ClearingMemberCategory; import ru.clearing.classes.statics.data.journal.InDocumentJournal; +import ru.clearing.classes.statics.data.journal.ManagementJournal; import ru.clearing.classes.statics.data.journal.OutDocumentJournal; import ru.clearing.classes.statics.data.messages.ErrorText; -import ru.clearing.classes.statics.data.misc.KeyRate; -import ru.clearing.classes.statics.data.misc.Listing; -import ru.clearing.classes.statics.data.misc.MoneyMarketSecurity; +import ru.clearing.classes.statics.data.misc.*; +import ru.clearing.classes.statics.data.payment.PaymentInstruction; import ru.clearing.classes.statics.data.profile.Contact; import ru.clearing.classes.statics.data.profile.ProfileDocument; import ru.clearing.classes.statics.data.scheduler.*; @@ -63,6 +63,8 @@ public class RunnableMapNamesForTesting { businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Launcher, Launcher.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Listing, Listing.class, new SettingOperation("setLotSize", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("21.11")}))); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ManagementJournal, ManagementJournal.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Market, Market.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Planner, Planner.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_PlannerTemplate, PlannerTemplate.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Relation, Relation.class)); @@ -78,6 +80,7 @@ public class RunnableMapNamesForTesting { dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_AllowedDictionary, AllowedDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_BalanceAccountTypeDictionary, BalanceAccountTypeDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ChargeDirectionDictionary, ChargeDirectionDictionary.class)); + dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ClearingCategoryDictionary, ClearingCategoryDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ClearingStatusDictionary, ClearingStatusDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_CompanyRoleDictionary, CompanyRoleDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_CompanySymbolDictionary, CompanySymbolDictionary.class)); @@ -87,6 +90,7 @@ public class RunnableMapNamesForTesting { dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_CountryCodeDictionary, CountryCodeDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_CourierTypeDictionary, CourierTypeDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.class)); + dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_DayStatusDictionary, DayStatusDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_DocumentTypeDictionary, DocumentTypeDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ErrorCodeDictionary, ErrorCodeDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_InOutDirectionDictionary, InOutDirectionDictionary.class)); @@ -100,17 +104,16 @@ public class RunnableMapNamesForTesting { dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_OperationStatusDictionary, OperationStatusDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_OperationTypeDictionary, OperationTypeDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_OrganizationTypeDictionary, OrganizationTypeDictionary.class)); + dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ParentDictionary, ParentDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ResultStatusDictionary, ResultStatusDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_SectorDictionary, SectorDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ServiceDictionary, ServiceDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ServiceProductDictionary, ServiceProductDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ServiceStatusDictionary, ServiceStatusDictionary.class)); - dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ParentDictionary, ParentDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_StatementTypeDictionary, StatementTypeDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_TaskDictionary, TaskDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_TaskStatusDictionary, TaskStatusDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_TermTypeDictionary, TermTypeDictionary.class)); - dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_DayStatusDictionary, DayStatusDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_UserRoleDictionary, UserRoleDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, WorkflowStatusDictionary.class)); @@ -121,16 +124,19 @@ public class RunnableMapNamesForTesting { businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Contact, Contact.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Currency, Currency.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_InDocumentJournal, InDocumentJournal.class, new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("22.12")}))); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_InformationAccount, InformationAccount.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_KeyRate, KeyRate.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class, new SettingOperation("setNominalValue", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("25.25")}))); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Notification, Notification.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_OutDocumentJournal, OutDocumentJournal.class, new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("28.28")}))); - businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_PlannerAllToday, PlannerAllToday.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf01, SDf01.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf02, SDf02.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf03, SDf03.class)); @@ -145,6 +151,7 @@ public class RunnableMapNamesForTesting { businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf16, SDf16.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf17, SDf17.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf18, SDf18.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Session, Session.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UserRoleSession, UserRoleSession.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UserSettings, UserSettings.class)); } From d28b12f68e94d00f547e042b0f0631f16b231f93 Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 12 Dec 2022 17:08:35 +0300 Subject: [PATCH 019/234] http://jira.mfd.msk:8088/browse/CLS-36 bug fix --- .../importer/logic/stages/DbfImportKafkaMessenger.java | 2 ++ .../dbf/importer/services/DBFImporterService.java | 6 ++++-- .../imdg/iml/hazelcast/adapter/ImdgHazelcast.java | 8 ++++---- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/DbfImportKafkaMessenger.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/DbfImportKafkaMessenger.java index e72cf67f4..2706c2476 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/DbfImportKafkaMessenger.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/DbfImportKafkaMessenger.java @@ -7,6 +7,7 @@ import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; import ru.spcex.clearing.platform.messaging.domain.cud.clearing.Sdf04Request; import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; +import ru.spcex.platform.enumeration.SdfTable; import java.util.HashMap; import java.util.Map; @@ -43,6 +44,7 @@ public class DbfImportKafkaMessenger implements InitializingBean { private void messageDf01(Long groupId) { StatementRequest statementRequest = new StatementRequest(); statementRequest.setGroupId(groupId); + statementRequest.setTable(SdfTable.SDF_01); kafka.get().sendRequestToQueue(Consts.STATEMENT_PROCESS, statementRequest); } diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java index 51eed3b59..fd3b2cdce 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java @@ -45,10 +45,12 @@ public class DBFImporterService { executorService.execute(() -> { log.info("checking new files... {}", specificTable != null ? specificTable.name() : ""); Map> newFiles = fileChecker.checkNewFiles(specificTable); - if (log.isDebugEnabled()) { + if (newFiles.size() > 0 && log.isDebugEnabled()) { log.debug("following files will be processed {}", forLogging(newFiles)); - } else { + } else if (newFiles.size() > 0) { log.info("following files will be processed {}", forLoggingSizeOnly(newFiles)); + } else { + log.info("no files were found"); } for (Map.Entry> newFilesEntry : newFiles.entrySet()) { ETable currTable = newFilesEntry.getKey(); diff --git a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java index 0db5e0b28..b1e431044 100644 --- a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java +++ b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java @@ -90,8 +90,8 @@ public class ImdgHazelcast implements Imdg { predicates[i[0]] = Predicates.equal(key, value); i[0]++; }); - Predicate or = Predicates.or(predicates); - Set> found = map.entrySet(or); + Predicate and = Predicates.and(predicates); + Set> found = map.entrySet(and); Iterator> allFoundByCondition = found.iterator(); if (allFoundByCondition.hasNext()) { return allFoundByCondition.next().getValue(); @@ -122,8 +122,8 @@ public class ImdgHazelcast implements Imdg { predicates[i[0]] = Predicates.equal(key, value); i[0]++; }); - Predicate or = Predicates.or(predicates); - Set ids = map.keySet(or); + Predicate and = Predicates.and(predicates); + Set ids = map.keySet(and); Iterator idIterator = ids.iterator(); Collection searchResult = new ArrayList<>(); while (idIterator.hasNext()) { From 3bc6c83b1c797ea5f9eb76c790e609422aafdaf1 Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 12 Dec 2022 18:54:33 +0300 Subject: [PATCH 020/234] http://jira.mfd.msk:8088/browse/CLS-36 parallel file execution temp fix --- .../importer/services/DBFImporterService.java | 63 +++++++++++++------ 1 file changed, 45 insertions(+), 18 deletions(-) diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java index fd3b2cdce..62a911533 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java @@ -3,7 +3,6 @@ package ru.spcex.clearing.dbf.importer.services; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; @@ -12,9 +11,8 @@ import ru.spcex.clearing.dbf.importer.logic.data.ResultContainer; import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable; import java.io.File; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; +import java.nio.file.Path; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -26,6 +24,7 @@ public class DBFImporterService { private final FileChecker fileChecker; private final ThreadPoolTaskExecutor executorService; private final Processor processor; + private final Set filesCurrentlyInProcess; public DBFImporterService(@Qualifier("fileChecker") FileChecker messageListener, @Qualifier("executor") ThreadPoolTaskExecutor executorService, @@ -33,6 +32,7 @@ public class DBFImporterService { this.fileChecker = messageListener; this.executorService = executorService; this.processor = processor; + this.filesCurrentlyInProcess = new HashSet<>(); } @Scheduled(cron = "${import-dbf-service.scheduler.check-src-dir-cron}") @@ -43,25 +43,52 @@ public class DBFImporterService { public void run(ETable specificTable) { log.info("adding import task {}", specificTable != null ? specificTable.name() : ""); executorService.execute(() -> { - log.info("checking new files... {}", specificTable != null ? specificTable.name() : ""); - Map> newFiles = fileChecker.checkNewFiles(specificTable); - if (newFiles.size() > 0 && log.isDebugEnabled()) { - log.debug("following files will be processed {}", forLogging(newFiles)); - } else if (newFiles.size() > 0) { - log.info("following files will be processed {}", forLoggingSizeOnly(newFiles)); - } else { - log.info("no files were found"); - } - for (Map.Entry> newFilesEntry : newFiles.entrySet()) { - ETable currTable = newFilesEntry.getKey(); - List fileList = newFilesEntry.getValue(); - for (File dbfFile : fileList) { - processor.process(ResultContainer.createNewTask(currTable, dbfFile)); + Map> newFiles = null; + try { + log.info("checking new files... {}", specificTable != null ? specificTable.name() : ""); + newFiles = getFiles(specificTable); + if (newFiles.size() > 0 && log.isDebugEnabled()) { + log.debug("following files will be processed {}", forLogging(newFiles)); + } else if (newFiles.size() > 0) { + log.info("following files will be processed {}", forLoggingSizeOnly(newFiles)); + } else { + log.info("no files were found"); + } + for (Map.Entry> newFilesEntry : newFiles.entrySet()) { + ETable currTable = newFilesEntry.getKey(); + List fileList = newFilesEntry.getValue(); + for (File dbfFile : fileList) { + processor.process(ResultContainer.createNewTask(currTable, dbfFile)); + } + } + } finally { + if (newFiles != null && newFiles.size() > 0) { + cleanFiles(newFiles); } } }); } + private synchronized Map> getFiles(ETable specificTable) { + Map> newFiles = fileChecker.checkNewFiles(specificTable); + Map> newFilesFiltered = newFiles.entrySet() + .stream() + .map(entry -> + new AbstractMap.SimpleEntry<>(entry.getKey(), entry.getValue() + .stream() + .filter(file -> !filesCurrentlyInProcess.contains(file.toPath())) + .collect(Collectors.toList()))) + .collect(Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue)); + newFilesFiltered.forEach((table, files) + -> files.forEach(file -> filesCurrentlyInProcess.add(file.toPath()))); + return newFilesFiltered; + } + + private synchronized void cleanFiles(Map> filesFromTask) { + filesFromTask.forEach((table, files) + -> files.forEach(file -> filesCurrentlyInProcess.remove(file.toPath()))); + } + private static String forLogging(Map> files) { return files .entrySet() From 48f02b2af3ec3f837ab99b39ee80f0e47c5b3b63 Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 12 Dec 2022 18:56:10 +0300 Subject: [PATCH 021/234] http://jira.mfd.msk:8088/browse/CLS-36 --- .../spcex/clearing/dbf/importer/services/DBFImporterService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java index 62a911533..a2f4e64b6 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java @@ -3,6 +3,7 @@ package ru.spcex.clearing.dbf.importer.services; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; From 33193b97464855f6feab4f3aee700187a38fce6f Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 13 Dec 2022 14:22:47 +0300 Subject: [PATCH 022/234] http://jira.mfd.msk:8088/browse/CLS-42 --- .../balance/service/Sdf08Service.java | 36 +++++++--- .../ru/spcex/platform/enumeration/Task.java | 2 +- .../domain/cud/balance/SDf08NewRequest.java | 67 ------------------- 3 files changed, 26 insertions(+), 79 deletions(-) delete mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/SDf08NewRequest.java diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf08Service.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf08Service.java index b7b2143c4..d93076049 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf08Service.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf08Service.java @@ -9,39 +9,53 @@ import ru.clearing.classes.statics.data.sdf.SDf08; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.Consts; -import ru.spcex.clearing.platform.messaging.domain.cud.balance.SDf08NewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.balance.ExportToFileRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; +import ru.spcex.platform.enumeration.Task; import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgId; import ru.spcex.platform.imdg.api.ImdgProvider; +import java.math.BigDecimal; +import java.time.Instant; + @Service public class Sdf08Service extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg sdf8Map; + private final ImdgId idGenerator; + private final KafkaSender kafkaReqProducer; - public Sdf08Service(Consumer kafkaQueue, ImdgProvider imdgProvider) { + public Sdf08Service(Consumer kafkaQueue, ImdgProvider imdgProvider, KafkaSender kafkaReqProducer) { super(kafkaQueue); this.sdf8Map = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf08, SDf08.class); + this.idGenerator = imdgProvider.getImdgIdGenerator(); + this.kafkaReqProducer = kafkaReqProducer; } @Override public void afterPropertiesSet() { - callback(SDf08NewRequest.class) + callback(Object.class) .setConsumer(this::newSDf08) - .forDestination(Consts.DESTINATION_SDF08_NEW, callbacks::put); + .forDestination(Task.getAllBalance.topic(), callbacks::put); init(); } - private void newSDf08(BaseRequest userRequest) { - SDf08NewRequest req = userRequest.getRequestPayload(); - log.debug("SDf08NewRequest received"); + private void newSDf08(BaseRequest userRequest) { + log.debug("getAllBalance request received"); SDf08 sDf08 = new SDf08(); - sDf08.setNumber(req.getNumber()); - sDf08.setDatetime(req.getDatetime()); - sDf08.setGenerationTime(req.getGenerationTime()); - sDf08.setGenerationId(req.getGenerationId()); + sDf08.setNumber(BigDecimal.valueOf(Math.random())); + Instant now = Instant.now(); + sDf08.setDatetime(now); + sDf08.setGenerationTime(now); + sDf08.setGenerationId(idGenerator.nextId()); sdf8Map.insert(sDf08); + ExportToFileRequest exportRequest = new ExportToFileRequest(); + exportRequest.setSdfGroupId(sDf08.getGenerationId()); + exportRequest.setNameOfTable("DF-08"); + kafkaReqProducer.sendRequestToQueue(Consts.EXPORT_PROCESS, exportRequest); log.debug("successfully processed, new id {}", sDf08.getId()); } } diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java index 762af41b4..bf4bbb5fa 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java @@ -3,7 +3,7 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; public enum Task implements IEnumKey { - createOrder("CORD"), createOrderConfirm("CORC"); + createOrder("CORD"), createOrderConfirm("CORC"), getAllBalance("GALB"); private final String key; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/SDf08NewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/SDf08NewRequest.java deleted file mode 100644 index b0038e7f9..000000000 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/SDf08NewRequest.java +++ /dev/null @@ -1,67 +0,0 @@ -package ru.spcex.clearing.platform.messaging.domain.cud.balance; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import ru.spcex.clearing.platform.messaging.domain.json.deserialize.InstantDeserializer; -import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantSerializer; - -import java.math.BigDecimal; -import java.time.Instant; - -public class SDf08NewRequest { - @JsonProperty - private BigDecimal number; - @JsonSerialize(using = InstantSerializer.class) - @JsonDeserialize(using = InstantDeserializer.class) - @JsonProperty - private Instant datetime; - @JsonProperty - private String fileName; - @JsonSerialize(using = InstantSerializer.class) - @JsonDeserialize(using = InstantDeserializer.class) - @JsonProperty - private Instant generationTime; - @JsonProperty - private Long generationId; - - public BigDecimal getNumber() { - return number; - } - - public void setNumber(BigDecimal number) { - this.number = number; - } - - public Instant getDatetime() { - return datetime; - } - - public void setDatetime(Instant datetime) { - this.datetime = datetime; - } - - public String getFileName() { - return fileName; - } - - public void setFileName(String fileName) { - this.fileName = fileName; - } - - public Instant getGenerationTime() { - return generationTime; - } - - public void setGenerationTime(Instant generationTime) { - this.generationTime = generationTime; - } - - public Long getGenerationId() { - return generationId; - } - - public void setGenerationId(Long generationId) { - this.generationId = generationId; - } -} From d7e570fa3925aa5cb65038619c881ebeb92c90de Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 13 Dec 2022 15:15:30 +0300 Subject: [PATCH 023/234] http://jira.mfd.msk:8088/browse/CLS-205 --- .../MoneyMarketSecurityUpdateAction.java | 14 ++++++++++++++ .../MoneyMarketSecurityUpdateRequest.java | 13 +++++++++++++ 2 files changed, 27 insertions(+) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/securities/MoneyMarketSecurityUpdateAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/securities/MoneyMarketSecurityUpdateAction.java index ae0124840..3928e8198 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/securities/MoneyMarketSecurityUpdateAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/securities/MoneyMarketSecurityUpdateAction.java @@ -16,6 +16,11 @@ public class MoneyMarketSecurityUpdateAction implements IAction Date: Tue, 13 Dec 2022 15:16:40 +0300 Subject: [PATCH 024/234] http://jira.mfd.msk:8088/browse/CLS-205 --- .../securities/service/cud/MoneyMarketSecurityService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java index c5d40b200..18029734e 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java @@ -112,6 +112,7 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial log.debug("MoneyMarketSecurityUpdateRequest received id = {}", req.getId()); MoneyMarketSecurity mms = moneyMarketSecurityMap.getSingleObjectByID(req.getId()); mms.setUpdated(Instant.now()); + mms.setStartDate(req.getStartDate()); mms.setEndDate(req.getEndDate()); mms.setNominalValue(req.getNominalValue() != null ? BigDecimal.valueOf(req.getNominalValue()) : null); mms.setNominalCurrency(req.getNominalCurrency()); From ec0a5edd67ca08ed84f6f3f190809913ee36db5a Mon Sep 17 00:00:00 2001 From: psemenkov Date: Tue, 13 Dec 2022 18:46:42 +0300 Subject: [PATCH 025/234] Adding AccountBalanceServiceTest. --- clearing-parent/balance-service/pom.xml | 37 ++++- .../AccountBalanceValidationRule.java | 4 +- .../balance/config/BalanceImdgTestConfig.java | 75 ++++++++++ .../balance/config/KafkaTestConfig.java | 26 ++++ .../balance/service/AbstractServiceTest.java | 19 +++ .../service/AccountBalanceServiceTest.java | 132 ++++++++++++++++++ .../balance/utils/MatcherFactory.java | 38 +++++ 7 files changed, 327 insertions(+), 4 deletions(-) create mode 100644 clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/BalanceImdgTestConfig.java create mode 100644 clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java create mode 100644 clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java create mode 100644 clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java create mode 100644 clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/MatcherFactory.java diff --git a/clearing-parent/balance-service/pom.xml b/clearing-parent/balance-service/pom.xml index 1abc9c32c..4414833e5 100644 --- a/clearing-parent/balance-service/pom.xml +++ b/clearing-parent/balance-service/pom.xml @@ -1,6 +1,6 @@ - clearing-parent @@ -40,6 +40,22 @@ ru.spcex.platform platform-enum + + + org.springframework + spring-test + test + + + org.junit.jupiter + junit-jupiter + test + + + org.assertj + assertj-core + test + @@ -67,6 +83,23 @@ ${project.artifactId} + + org.apache.maven.plugins + maven-surefire-plugin + 2.21.0 + + + org.junit.platform + junit-platform-surefire-provider + 1.2.0-M1 + + + org.junit.jupiter + junit-jupiter-engine + 5.2.0-M1 + + + \ No newline at end of file diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/AccountBalanceValidationRule.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/AccountBalanceValidationRule.java index 7ac689a73..50cac7c02 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/AccountBalanceValidationRule.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/AccountBalanceValidationRule.java @@ -23,7 +23,7 @@ public enum AccountBalanceValidationRule implements IValidationRule companyImdg = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class); Company company = companyImdg.getSingleObjectByID(validatedObject.addresseeId()); if (company == null) { - return of( BalanceError.CompanyNotFound); + return of(BalanceError.CompanyNotFound); } context.storeObject(ValidationStored.Company, company); return empty(); @@ -50,6 +50,6 @@ public enum AccountBalanceValidationRule implements IValidationRule 2) { + pool.setKeepAliveSeconds(60); + pool.setAllowCoreThreadTimeOut(true); + } + pool.setCorePoolSize(maxPoolSz); + pool.setWaitForTasksToCompleteOnShutdown(waitForCompletion); + return pool; + } + + @Bean(name = "taskExecutorHazelcastTestClientInitializer") + public ThreadPoolTaskExecutor taskExecutorHazelcastTestClientInitializer() { + return createThreadPoolTestTaskExecutor(1, true); + } + + @Bean(name = "taskExecutorTestIdGeneratorAwaiter") + public ThreadPoolTaskExecutor taskExecutorTestIdGeneratorAwaiter() { + return createThreadPoolTestTaskExecutor(1, false); + } + + @Autowired + @Bean(name = "hazelcastServiceTest") + public ImdgProvider imdgTestProvider( + @Qualifier("taskExecutorHazelcastTestClientInitializer") ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer, + @Qualifier("taskExecutorTestIdGeneratorAwaiter") ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter, + HazelcastClientParams params) { + Config cfg = new Config(); + cfg.setInstanceName("localhost"); + + NetworkConfig networkConfig = new NetworkConfig(); + JoinConfig joinConfig = new JoinConfig(); + joinConfig.setMulticastConfig(new MulticastConfig().setEnabled(false)); + joinConfig.setTcpIpConfig(new TcpIpConfig().setEnabled(true).setMembers(List.of("127.0.0.1"))); + networkConfig.setJoin(joinConfig); + cfg.setNetworkConfig(networkConfig); + hazelcastInstance = Hazelcast.newHazelcastInstance(cfg); + HazelcastHelper.otcSystem_setStorageState(true, hazelcastInstance); + return new HazelcastService(taskExecutorHazelcastClientInitializer, taskExecutorIdGeneratorAwaiter, params); + } + + @Bean(name = "hazelcastClientParams") + public HazelcastClientParams getHazelcastClientParams() { + HazelcastClientParams params = new HazelcastClientParams(); + params.setLogin("dev"); + params.setPassword("dev-pass"); + params.setClusterMembers("127.0.0.1"); + params.setInstanceName("hzTestClient" + new Random().nextInt()); + params.setNearCacheConfig(new NearCacheConfig()); + return params; + } +} diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java new file mode 100644 index 000000000..33e62153e --- /dev/null +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/config/KafkaTestConfig.java @@ -0,0 +1,26 @@ +package ru.spcex.clearing.balance.config; + +import org.apache.kafka.clients.consumer.Consumer; +import org.apache.kafka.clients.consumer.MockConsumer; +import org.apache.kafka.clients.consumer.OffsetResetStrategy; +import org.apache.kafka.clients.producer.MockProducer; +import org.apache.kafka.clients.producer.Producer; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; + +@Configuration +public class KafkaTestConfig { + + @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) + @Bean + public Consumer createTestConsumer() { + return new MockConsumer<>(OffsetResetStrategy.EARLIEST); + } + + @Bean + public Producer createTestProducer() { + return new MockProducer<>(); + } +} diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java new file mode 100644 index 000000000..29723228e --- /dev/null +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java @@ -0,0 +1,19 @@ +package ru.spcex.clearing.balance.service; + +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import ru.spcex.clearing.balance.config.BalanceImdgTestConfig; +import ru.spcex.clearing.balance.config.KafkaSenderConfig; +import ru.spcex.clearing.balance.config.KafkaTestConfig; +import ru.spcex.clearing.balance.config.ValidationConfig; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = { + AccountBalanceService.class, + ValidationConfig.class, + BalanceImdgTestConfig.class, + KafkaSenderConfig.class, + KafkaTestConfig.class}) +public abstract class AbstractServiceTest { +} diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java new file mode 100644 index 000000000..31a79fe58 --- /dev/null +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java @@ -0,0 +1,132 @@ +package ru.spcex.clearing.balance.service; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import ru.clearing.classes.statics.data.account.Account; +import ru.clearing.classes.statics.data.account.AccountBalance; +import ru.clearing.classes.statics.data.company.Company; +import ru.spcex.clearing.balance.errors.BalanceError; +import ru.spcex.clearing.balance.utils.MatcherFactory.Matcher; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.platform.enumeration.AccountType; +import ru.spcex.platform.enumeration.BalanceAccountType; +import ru.spcex.platform.enumeration.Status; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.utils.enumeration.EnumMessage; + +import javax.annotation.PostConstruct; +import java.math.BigDecimal; + +import static ru.spcex.clearing.balance.utils.MatcherFactory.usingIgnoringFieldsComparator; + + +class AccountBalanceServiceTest extends AbstractServiceTest { + + public static final Matcher ACCOUNT_BALANCE_MATCHER = usingIgnoringFieldsComparator("account.created", "account.updated", "account.clearingDate"); + private final Long id = 0L; + private final Long accountIdNew = 0L; + private final Long addresseeIdNew = 0L; + private final BigDecimal amountNew = new BigDecimal(1000); + private final String cashMovementCurrencyCodeNew = "cash"; + private final Long accountIdUpdate = accountIdNew; + private final Long addresseeIdUpdate = addresseeIdNew; + private final BigDecimal amountUpdate = new BigDecimal(100000); + private final String cashMovementCurrencyCodeUpdate = "cash"; + @Autowired + AccountBalanceService accountBalanceService; + @Autowired + @Qualifier("hazelcastServiceTest") + private ImdgProvider hazelcast; + + private Imdg companyImdg; + private Imdg accountImdg; + + @PostConstruct + void init() { + companyImdg = hazelcast.getImdg(IMDGDistributedNames.Map_Company, Company.class); + accountImdg = hazelcast.getImdg(IMDGDistributedNames.Map_Account, Account.class); + } + + @Test + void createAccountBalance() { + hazelcast.waitAvailable(); + Company company = new Company(); + company.setId(addresseeIdNew); + company.setTradingCode("code"); + company.setShortName("ShortName"); + company.setFullName("FullName"); + companyImdg.insert(company); + Account account = new Account(); + account.setId(accountIdNew); + account.setAccount("123456789"); + account.setAccountType(AccountType.Clrn.getKey()); + account.setAccountStatus(Status.Active.getKey()); + accountImdg.insert(account); + + AccountBalance accountBalanceNew = new AccountBalance(); + accountBalanceNew.setId(id); + accountBalanceNew.setCompanyId(addresseeIdNew); + accountBalanceNew.setAccountId(accountIdNew); + accountBalanceNew.setAccountType(account.getAccountType()); + accountBalanceNew.setAccount(account.getAccount()); + accountBalanceNew.setOpenBalanceAmount(amountNew); + accountBalanceNew.setFreeBalanceAmount(amountNew); + accountBalanceNew.setBalanceAmount(amountNew); + accountBalanceNew.setBalanceAccountType(BalanceAccountType.Active.getKey()); + accountBalanceNew.setCurrencyCode(cashMovementCurrencyCodeNew); + accountBalanceNew.setTradingCode(company.getTradingCode()); + accountBalanceNew.setShortName(company.getShortName()); + accountBalanceNew.setFullName(company.getFullName()); + AccountResult predictableNewResult = new AccountResult(accountBalanceNew); + AccountResult resultNew = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew); + resultNew.getAccount().setId(id); + + AccountBalance accountBalanceUpdate = new AccountBalance(); + accountBalanceUpdate.setId(id); + accountBalanceUpdate.setCompanyId(addresseeIdUpdate); + accountBalanceUpdate.setAccountId(accountIdUpdate); + accountBalanceUpdate.setAccountType(account.getAccountType()); + accountBalanceUpdate.setAccount(account.getAccount()); + accountBalanceUpdate.setOpenBalanceAmount(amountUpdate); + accountBalanceUpdate.setFreeBalanceAmount(amountUpdate); + accountBalanceUpdate.setBalanceAmount(amountUpdate); + accountBalanceUpdate.setBalanceAccountType(BalanceAccountType.Active.getKey()); + accountBalanceUpdate.setCurrencyCode(cashMovementCurrencyCodeUpdate); + accountBalanceUpdate.setTradingCode(company.getTradingCode()); + accountBalanceUpdate.setShortName(company.getShortName()); + accountBalanceUpdate.setFullName(company.getFullName()); + AccountResult resultUpdate = accountBalanceService.createAccountBalance(addresseeIdUpdate, accountIdUpdate, amountUpdate, cashMovementCurrencyCodeUpdate); + resultUpdate.getAccount().setId(id); + AccountResult predictableUpdateResult = new AccountResult(accountBalanceUpdate); + + ACCOUNT_BALANCE_MATCHER.assertMatch(resultNew, predictableNewResult); + ACCOUNT_BALANCE_MATCHER.assertMatch(resultUpdate, predictableUpdateResult); + } + + @Test + void validatedCreateAccountBalance() { + AccountResult predictableResult; + hazelcast.waitAvailable(); + predictableResult = new AccountResult(new EnumMessage(BalanceError.CompanyNotFound)); + + AccountResult result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew); + ACCOUNT_BALANCE_MATCHER.assertMatch(result, predictableResult); + + Company company = new Company(); + company.setId(addresseeIdNew); + companyImdg.insert(company); + + Account account = new Account(); +// account.setId(accountIdNew); + account.setAccountType(AccountType.Clrn.getKey()); + account.setAccountStatus(Status.Active.getKey()); + accountImdg.insert(account); + predictableResult = new AccountResult(new EnumMessage(BalanceError.AccountNotPresent)); + + result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew); + ACCOUNT_BALANCE_MATCHER.assertMatch(result, predictableResult); + + } +} \ No newline at end of file diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/MatcherFactory.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/MatcherFactory.java new file mode 100644 index 000000000..a18ccb4f0 --- /dev/null +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/MatcherFactory.java @@ -0,0 +1,38 @@ +package ru.spcex.clearing.balance.utils; + +import java.util.Arrays; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Factory for creating test matchers. + *

+ * Comparing actual and expected objects via AssertJ + */ +public class MatcherFactory { + + public static Matcher usingIgnoringFieldsComparator(String... fieldsToIgnore) { + return new Matcher<>(fieldsToIgnore); + } + + public static class Matcher { + private final String[] fieldsToIgnore; + + private Matcher(String... fieldsToIgnore) { + this.fieldsToIgnore = fieldsToIgnore; + } + + public void assertMatch(T actual, T expected) { + assertThat(actual).usingRecursiveComparison().ignoringFields(fieldsToIgnore).isEqualTo(expected); + } + + @SafeVarargs + public final void assertMatch(Iterable actual, T... expected) { + assertMatch(actual, Arrays.asList(expected)); + } + + public void assertMatch(Iterable actual, Iterable expected) { + assertThat(actual).usingRecursiveFieldByFieldElementComparatorIgnoringFields(fieldsToIgnore).isEqualTo(expected); + } + } +} From 9830cc88059eedc83dd35db3f9063fc819a95ece Mon Sep 17 00:00:00 2001 From: aalehin Date: Tue, 13 Dec 2022 19:56:41 +0300 Subject: [PATCH 026/234] task manager... --- .../scheduler/enums/IEnumWithLongValue.java | 81 +++++++ .../scheduler/enums/TaskStatuses.java | 31 +++ .../spcex/clearing/scheduler/enums/Tasks.java | 20 ++ .../scheduler/service/TaskManager.java | 219 ++++++++++++++++++ 4 files changed, 351 insertions(+) create mode 100644 clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/IEnumWithLongValue.java create mode 100644 clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/TaskStatuses.java create mode 100644 clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/Tasks.java create mode 100644 clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/IEnumWithLongValue.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/IEnumWithLongValue.java new file mode 100644 index 000000000..3e46ccc59 --- /dev/null +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/IEnumWithLongValue.java @@ -0,0 +1,81 @@ +package ru.spcex.clearing.scheduler.enums; + +import java.io.Serializable; +import java.util.Objects; + +/** + * Удобный интерфейс для enum при использовании TextErrorService. + */ +public interface IEnumWithLongValue extends Serializable { + + + /** + * Проверяет что среди данного набора Enum, присутствует элемент с данным id + * id может быть null + */ + static & IEnumWithLongValue> boolean contains(Long id, T... enumSet) { + for (T e : enumSet) { + if (Objects.equals(id, e.getId())) + return true; + } + return false; + } + + static & IEnumWithLongValue> boolean contains(T e, T... enumSet) { + for (T enumEl : enumSet) { + if (enumEl.equals(e)) + return true; + } + return false; + } + + static & IEnumWithLongValue> Long[] toLongArray(T... enumSet) { + Long[] enumId = new Long[enumSet.length]; + for (int i = 0; i < enumSet.length; i++) + enumId[i] = enumSet[i].getId(); + return enumId; + } + + /** + * Проверяет что среди всех Enum данного класса, присутствует элемент с данным id + * id может быть null + */ + static & IEnumWithLongValue> boolean contains(Class enumClass, Long id) { + for (T e : enumClass.getEnumConstants()) { + if (Objects.equals(id, e.getId())) + return true; + } + return false; + } + + + /** + * Возвращает Enum по id, если в заданном классе такой определен + * id может быть null + * + * @return Enum если нашел, иначе null + */ + static & IEnumWithLongValue> T getEnumById(Class enumClass, Long id) { + for (T e : enumClass.getEnumConstants()) { + if (Objects.equals(id, e.getId())) + return e; + } + return null; + } + + static Long getIdOrNull(IEnumWithLongValue enumVal) { + return enumVal == null ? null : enumVal.getId(); + } + + + /** + * errorCode + **/ + Long getId(); + + default boolean equalsById(Long id) { + return id != null && getId().equals(id); + } + + String elementName(); +} diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/TaskStatuses.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/TaskStatuses.java new file mode 100644 index 000000000..ab2709ba8 --- /dev/null +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/TaskStatuses.java @@ -0,0 +1,31 @@ +package ru.spcex.clearing.scheduler.enums; + +import java.util.Objects; + +public enum TaskStatuses { + ACTIVE("ACTV"), + BLOCKED("CNCL"), + CANCEL("BLKD"); + + private final String name; + + TaskStatuses(String name) { + this.name = name; + } + + static TaskStatuses getEnumById(String name) { + for (TaskStatuses e : TaskStatuses.values()) { + if (Objects.equals(name, e.name())) + return e; + } + return null; + } + + public String getName() { + return this.name; + } + + public String elementName() { + return this.name(); + } +} diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/Tasks.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/Tasks.java new file mode 100644 index 000000000..7a5ec165b --- /dev/null +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/Tasks.java @@ -0,0 +1,20 @@ +package ru.spcex.clearing.scheduler.enums; + +public enum Tasks implements IEnumWithLongValue { + SOME_STATUS(1L);//TODO CLEARIFY + + private final Long id; + + Tasks(Long id) { + this.id = id; + } + + public Long getId() { + return this.id; + } + + public String elementName() { + return this.name(); + } + +} diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java new file mode 100644 index 000000000..7e226ffd5 --- /dev/null +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java @@ -0,0 +1,219 @@ +package ru.spcex.clearing.scheduler.service; + +import com.hazelcast.core.EntryEvent; +import com.hazelcast.core.HazelcastInstance; +import com.hazelcast.core.IMap; +import com.hazelcast.map.listener.EntryAddedListener; +import com.hazelcast.map.listener.EntryRemovedListener; +import com.hazelcast.map.listener.EntryUpdatedListener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.scheduling.TaskScheduler; +import ru.clearing.classes.statics.data.scheduler.PlannerAllToday; +import ru.spcex.clearing.scheduler.enums.Tasks; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.util.Date; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ScheduledFuture; + +import static ru.spcex.clearing.imdg.IMDGDistributedNames.Map_PlannerAllToday; + +/** + * Планировщик задач, расписание берёт из Hazelcast map. + *

+ */ +public abstract class TaskManager implements EntryAddedListener, + EntryUpdatedListener, EntryRemovedListener, + InitializingBean { + private static final Logger log = LoggerFactory.getLogger(TaskManager.class); + + protected HazelcastInstance hazelcastInstance; + protected IMap plannerAllTodayMapStore; + protected TaskScheduler taskScheduler; + + protected ConcurrentHashMap scheduledJobs; + + protected TaskManager(TaskScheduler taskScheduler, HazelcastInstance hazelcastInstance) { + this.taskScheduler = taskScheduler; + this.hazelcastInstance = hazelcastInstance; + } + + private static LocalDateTime dateOldTypeConvert(Date oldDate) { + return LocalDateTime.ofInstant(oldDate.toInstant(), ZoneId.systemDefault()); + } + + private static LocalDate dateTypeConvert(Date oldDate) { + return dateOldTypeConvert(oldDate).toLocalDate(); + } + + private static LocalTime timeTypeConvert(Date oldDate) { + return dateOldTypeConvert(oldDate).toLocalTime(); + } + + @Override + public void afterPropertiesSet() { + plannerAllTodayMapStore = hazelcastInstance.getMap(Map_PlannerAllToday); + scheduledJobs = new ConcurrentHashMap<>(); + updateScheduler(); + } + + // --- Слушатели Hazelcast Map --- + @Override + public void entryAdded(EntryEvent event) { + PlannerAllToday task = event.getValue(); + + + //todo define how to get task status Tasks taskType = getEnumById(Tasks.class, task.getParentId()); +// if (taskType == null) { +// log.warn("Task skipped, {} task type not recognized", task.getTaskId()); +// return; +// } + processTask(task); + } + + @Override + public void entryUpdated(EntryEvent event) { + PlannerAllToday task = event.getValue(); + PlannerAllToday oldTask = event.getOldValue(); + + LocalTime oldTime = oldTask.getTaskTime(); +// todo define TaskStatuses oldStatus + //если таск относится к другому обработчику, пропускаем +// if (!getTaskId().equalsById(task.getTaskId()) && !getTaskId().equalsById(oldTask.getTaskId())) { +// return; +// } +// if (!Objects.equals(task.getTaskId(), oldTask.getTaskId())) { +// throw new IllegalStateException("changed taskId for SchedulerAllToday in core"); +// } +// if (ACTIVE.equalsById(oldTask.getTaskStatusId())) { //&& ACTIVE.equalsById(task.getTaskStatusId()) +// if (!removeTask(oldTime)) { +// log.debug("cannot cancel task with type {}, time {}", getTaskId().name(), oldTime.toString()); +// } else { +// log.debug("task with type {}, time {} execution cancelled, adding altered task...", getTaskId().name(), oldTime.toString()); +// } +// processTask(task); +// } else if (CANCEL.equalsById(oldTask.getTaskStatusId())) { //&& TaskStatuses.CANCEL.equalsById(task.getTaskStatusId()) +// restorePreviouslyRemovedTask(oldTime, oldTask); +// processTask(task); +// } else if (BLOCKED.equalsById(oldTask.getTaskStatusId())) { +// processTask(task); +// } + } + + @Override + public void entryRemoved(EntryEvent event) { + PlannerAllToday taskToRemove = event.getOldValue(); + if (taskToRemove == null) { + log.debug("no task in removed event"); + return; + } + //LocalTime removedTaskTime = timeTypeConvert(taskToRemove.getTaskTime()); + // + //if (ACTIVE.equalsById(taskToRemove.getTaskStatusId())) { + // if (removeTask(removedTaskTime)) + // log.debug("task successfully canceled"); + //} else if (CANCEL.equalsById(taskToRemove.getTaskStatusId())) { + // restorePreviouslyRemovedTask(removedTaskTime, taskToRemove); + //} else if (BLOCKED.equalsById(taskToRemove.getTaskStatusId())) { + // log.debug("BLOCKED task removed; do nothing"); + //} + } + + private void restorePreviouslyRemovedTask(LocalTime oldTime, PlannerAllToday oldTask) { + ScheduledFuture cancelledFuture = scheduledJobs.get(oldTime); + if (cancelledFuture != null && cancelledFuture.isCancelled()) { + PlannerAllToday schedulerAllToday = new PlannerAllToday(); + // schedulerAllToday.setTaskId(getTaskId().getId()); + // schedulerAllToday.setTaskStatusId(ACTIVE.getId()); + schedulerAllToday.setTaskTime(oldTask.getTaskTime()); + log.debug("CANCEL task updated/removed; restoring previously cancelled task"); + processTask(schedulerAllToday); + } + } + + // --- Планирование задач --- + protected void updateScheduler() { + //Collection schedulerAllTodays = plannerAllTodayMapStore.values(); + //Collection sortedSchedulers = + // schedulerAllTodays.stream().sorted((o1, o2) -> (ACTIVE.equalsById(o1.getTaskStatusId()) && CANCEL.equalsById(o2.getTaskStatusId())) ? -1 : 0) + // .collect(Collectors.toCollection(ArrayList::new)); + //for (PlannerAllToday schedulerAllToday : sortedSchedulers) { + // processTask(schedulerAllToday); + //} + } + + // --- Работа с задачами --- + private void processTask(PlannerAllToday task) { + //LocalTime taskTime = task.getTaskTime(); + //Tasks taskType = getEnumById(Tasks.class, task.getTaskId()); + //TaskStatuses taskStatus = getEnumById(TaskStatuses.class, task.getTaskStatusId()); + //if (taskStatus == null) throw new IllegalStateException("task status from core can't be null"); + //if (!getTaskId().equals(taskType)) { + // log.debug("Task skipped - taskTime {}, is not of acceptable type {}", taskTime.toString(), taskType != null ? taskType.name() : ""); + // return; + //} + //if (taskTime.isBefore(LocalTime.now())) { + // log.debug("Task skipped - taskTime {} is before now, taskType {} ok", taskTime, getTaskId().toString()); + // return; + //} + //if (taskStatus.equals(BLOCKED)) { + // log.debug("Task skipped - timeTime {} with status {}", taskTime.toString(), BLOCKED.toString()); + // return; + //} + //{ + // ScheduledFuture future = scheduledJobs.get(taskTime); + // if (future != null) { + // if (TaskStatuses.CANCEL.equals(taskStatus)) { + // //случай когда пришел cancel, пытаемся отменить зарегистрированный ранее таск + // future.cancel(false); + // log.debug("cancelling task time {}", taskTime); + // return; + // } else if (TaskStatuses.ACTIVE.equals(taskStatus)) { + // //случай когда пришел активный таск, и уже был на это время неотмененный + // if (!future.isCancelled()) { + // log.debug("such task time {} has already been registered", taskTime); + // return; + // } + // } + // } + //} + //if (TaskStatuses.CANCEL.equals(taskStatus)) { + // log.debug("task type {} time {} with status CANCEL - no tasks to cancel found", taskType.name(), taskTime); + // return; + //} + ////пришел активный таск + //log.debug("adding task type {}, time {}", taskType.name(), taskTime); + //ScheduledFuture future = taskScheduler.schedule(() -> doJob(task), LocalDateTime.of(LocalDate.now(), taskTime).atZone(ZoneId.systemDefault()).toInstant()); + //ScheduledFuture oldFuture = scheduledJobs.put(taskTime, future); + //if (oldFuture != null && !oldFuture.isCancelled()) { //for synchronization, never + // log.warn("tasks were added simultaneously, cancel former one"); + // boolean success = oldFuture.cancel(false); + // log.warn("cancelling task " + (success ? "success" : "fail")); + //} + } + + private boolean removeTask(LocalTime taskTime) { + ScheduledFuture future = scheduledJobs.remove(taskTime); + if (future == null) { + log.debug("can't cancel task type {}, time {}, not found", getTaskId().name(), taskTime); + return false; + } + return future.cancel(false); + } + + // --- Реализация выполнения задач --- + + /** + * Рабочий тип запланированных задач. + * + * @return идентификатор для фильтра типов планировщика задачь. Планировать задачи только этого типа. + */ + protected abstract Tasks getTaskId(); + + protected abstract void doJob(PlannerAllToday taskInfo); +} From b225e0d3d98462bf55fe8a3c4babc65c927b2d52 Mon Sep 17 00:00:00 2001 From: aalehin Date: Wed, 14 Dec 2022 10:41:37 +0300 Subject: [PATCH 027/234] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-37?= =?UTF-8?q?=20---=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=B5=D1=81=20task=20ma?= =?UTF-8?q?nager?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scheduler/enums/TaskStatuses.java | 6 +- .../spcex/clearing/scheduler/enums/Tasks.java | 28 ++- .../scheduler/service/TaskManager.java | 191 +++++++++--------- 3 files changed, 124 insertions(+), 101 deletions(-) diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/TaskStatuses.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/TaskStatuses.java index ab2709ba8..b4f82ea38 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/TaskStatuses.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/TaskStatuses.java @@ -13,7 +13,7 @@ public enum TaskStatuses { this.name = name; } - static TaskStatuses getEnumById(String name) { + public static TaskStatuses getEnumByName(String name) { for (TaskStatuses e : TaskStatuses.values()) { if (Objects.equals(name, e.name())) return e; @@ -21,6 +21,10 @@ public enum TaskStatuses { return null; } + public Boolean equalsByName(String name) { + return this.name.equalsIgnoreCase(name); + } + public String getName() { return this.name; } diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/Tasks.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/Tasks.java index 7a5ec165b..be73dfe08 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/Tasks.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/Tasks.java @@ -1,16 +1,30 @@ package ru.spcex.clearing.scheduler.enums; -public enum Tasks implements IEnumWithLongValue { - SOME_STATUS(1L);//TODO CLEARIFY +import java.util.Objects; - private final Long id; +public enum Tasks { + SOME_STATUS("STATUS"); - Tasks(Long id) { - this.id = id; + private String name; + + Tasks(String name) { + this.name = name; } - public Long getId() { - return this.id; + public static Tasks getEnumByName(String name) { + for (Tasks e : Tasks.values()) { + if (Objects.equals(name, e.name())) + return e; + } + return null; + } + + public Boolean equalsByName(String name) { + return this.name.equalsIgnoreCase(name); + } + + public String getName() { + return this.name; } public String elementName() { diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java index 7e226ffd5..4bfd70cdb 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java @@ -11,17 +11,23 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.scheduling.TaskScheduler; import ru.clearing.classes.statics.data.scheduler.PlannerAllToday; +import ru.spcex.clearing.scheduler.enums.TaskStatuses; import ru.spcex.clearing.scheduler.enums.Tasks; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; +import java.util.ArrayList; +import java.util.Collection; import java.util.Date; +import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledFuture; +import java.util.stream.Collectors; import static ru.spcex.clearing.imdg.IMDGDistributedNames.Map_PlannerAllToday; +import static ru.spcex.clearing.scheduler.enums.TaskStatuses.*; /** * Планировщик задач, расписание берёт из Hazelcast map. @@ -67,12 +73,11 @@ public abstract class TaskManager implements EntryAddedListener event) { PlannerAllToday task = event.getValue(); - - //todo define how to get task status Tasks taskType = getEnumById(Tasks.class, task.getParentId()); -// if (taskType == null) { -// log.warn("Task skipped, {} task type not recognized", task.getTaskId()); -// return; -// } + Tasks taskType = Tasks.getEnumByName(task.getTask()); + if (taskType == null) { + log.warn("Task skipped, {} task type not recognized", task.getTask()); + return; + } processTask(task); } @@ -82,27 +87,27 @@ public abstract class TaskManager implements EntryAddedListener schedulerAllTodays = plannerAllTodayMapStore.values(); - //Collection sortedSchedulers = - // schedulerAllTodays.stream().sorted((o1, o2) -> (ACTIVE.equalsById(o1.getTaskStatusId()) && CANCEL.equalsById(o2.getTaskStatusId())) ? -1 : 0) - // .collect(Collectors.toCollection(ArrayList::new)); - //for (PlannerAllToday schedulerAllToday : sortedSchedulers) { - // processTask(schedulerAllToday); - //} + Collection schedulerAllTodays = plannerAllTodayMapStore.values(); + Collection sortedSchedulers = + schedulerAllTodays.stream().sorted((o1, o2) -> (ACTIVE.equalsByName(o1.getTaskStatus()) && CANCEL.equalsByName(o2.getTaskStatus())) ? -1 : 0) + .collect(Collectors.toCollection(ArrayList::new)); + for (PlannerAllToday schedulerAllToday : sortedSchedulers) { + processTask(schedulerAllToday); + } } // --- Работа с задачами --- private void processTask(PlannerAllToday task) { - //LocalTime taskTime = task.getTaskTime(); - //Tasks taskType = getEnumById(Tasks.class, task.getTaskId()); - //TaskStatuses taskStatus = getEnumById(TaskStatuses.class, task.getTaskStatusId()); - //if (taskStatus == null) throw new IllegalStateException("task status from core can't be null"); - //if (!getTaskId().equals(taskType)) { - // log.debug("Task skipped - taskTime {}, is not of acceptable type {}", taskTime.toString(), taskType != null ? taskType.name() : ""); - // return; - //} - //if (taskTime.isBefore(LocalTime.now())) { - // log.debug("Task skipped - taskTime {} is before now, taskType {} ok", taskTime, getTaskId().toString()); - // return; - //} - //if (taskStatus.equals(BLOCKED)) { - // log.debug("Task skipped - timeTime {} with status {}", taskTime.toString(), BLOCKED.toString()); - // return; - //} - //{ - // ScheduledFuture future = scheduledJobs.get(taskTime); - // if (future != null) { - // if (TaskStatuses.CANCEL.equals(taskStatus)) { - // //случай когда пришел cancel, пытаемся отменить зарегистрированный ранее таск - // future.cancel(false); - // log.debug("cancelling task time {}", taskTime); - // return; - // } else if (TaskStatuses.ACTIVE.equals(taskStatus)) { - // //случай когда пришел активный таск, и уже был на это время неотмененный - // if (!future.isCancelled()) { - // log.debug("such task time {} has already been registered", taskTime); - // return; - // } - // } - // } - //} - //if (TaskStatuses.CANCEL.equals(taskStatus)) { - // log.debug("task type {} time {} with status CANCEL - no tasks to cancel found", taskType.name(), taskTime); - // return; - //} - ////пришел активный таск - //log.debug("adding task type {}, time {}", taskType.name(), taskTime); - //ScheduledFuture future = taskScheduler.schedule(() -> doJob(task), LocalDateTime.of(LocalDate.now(), taskTime).atZone(ZoneId.systemDefault()).toInstant()); - //ScheduledFuture oldFuture = scheduledJobs.put(taskTime, future); - //if (oldFuture != null && !oldFuture.isCancelled()) { //for synchronization, never - // log.warn("tasks were added simultaneously, cancel former one"); - // boolean success = oldFuture.cancel(false); - // log.warn("cancelling task " + (success ? "success" : "fail")); - //} + LocalTime taskTime = task.getTaskTime(); + Tasks taskType = Tasks.getEnumByName(task.getTask()); + TaskStatuses taskStatus = TaskStatuses.getEnumByName(task.getTaskStatus()); + if (taskStatus == null) throw new IllegalStateException("task status from core can't be null"); + if (!getTask().equals(taskType)) { + log.debug("Task skipped - taskTime {}, is not of acceptable type {}", taskTime.toString(), taskType != null ? taskType.name() : ""); + return; + } + if (taskTime.isBefore(LocalTime.now())) { + log.debug("Task skipped - taskTime {} is before now, taskType {} ok", taskTime, getTask().toString()); + return; + } + if (taskStatus.equals(BLOCKED)) { + log.debug("Task skipped - timeTime {} with status {}", taskTime.toString(), BLOCKED.toString()); + return; + } + { + ScheduledFuture future = scheduledJobs.get(taskTime); + if (future != null) { + if (TaskStatuses.CANCEL.equals(taskStatus)) { + //случай когда пришел cancel, пытаемся отменить зарегистрированный ранее таск + future.cancel(false); + log.debug("cancelling task time {}", taskTime); + return; + } else if (TaskStatuses.ACTIVE.equals(taskStatus)) { + //случай когда пришел активный таск, и уже был на это время неотмененный + if (!future.isCancelled()) { + log.debug("such task time {} has already been registered", taskTime); + return; + } + } + } + } + if (TaskStatuses.CANCEL.equals(taskStatus)) { + log.debug("task type {} time {} with status CANCEL - no tasks to cancel found", taskType.name(), taskTime); + return; + } + //пришел активный таск + log.debug("adding task type {}, time {}", taskType.name(), taskTime); + ScheduledFuture future = taskScheduler.schedule(() -> doJob(task), LocalDateTime.of(LocalDate.now(), taskTime).atZone(ZoneId.systemDefault()).toInstant()); + ScheduledFuture oldFuture = scheduledJobs.put(taskTime, future); + if (oldFuture != null && !oldFuture.isCancelled()) { //for synchronization, never + log.warn("tasks were added simultaneously, cancel former one"); + boolean success = oldFuture.cancel(false); + log.warn("cancelling task " + (success ? "success" : "fail")); + } } private boolean removeTask(LocalTime taskTime) { ScheduledFuture future = scheduledJobs.remove(taskTime); if (future == null) { - log.debug("can't cancel task type {}, time {}, not found", getTaskId().name(), taskTime); + log.debug("can't cancel task type {}, time {}, not found", getTask().name(), taskTime); return false; } return future.cancel(false); @@ -213,7 +218,7 @@ public abstract class TaskManager implements EntryAddedListener Date: Wed, 14 Dec 2022 10:45:22 +0300 Subject: [PATCH 028/234] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-37?= =?UTF-8?q?=20---=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=B7?= =?UTF-8?q?=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B7=D0=B0=D0=B4?= =?UTF-8?q?=D0=B0=D1=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/spcex/clearing/scheduler/enums/Tasks.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/Tasks.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/Tasks.java index be73dfe08..b92b42108 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/Tasks.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/Tasks.java @@ -3,7 +3,18 @@ package ru.spcex.clearing.scheduler.enums; import java.util.Objects; public enum Tasks { - SOME_STATUS("STATUS"); + GBAL("GBAL"),//Зачисление остатков + ABLK("ABLK"),//Блокировка счета + GALB("GALB"),//Запрос остатков по всем счетам + ADBL("ADBL"),//Дозачисление/списание остатков + CORD("CORD"),//Формирование сводного платежного поручения + CORC("CORC"),//Получение подтверждения переводов + GTRD("GTRD"),//Получение сделок из Торговой системы + GVER("GVER"),// Запуск сверки + GBLD("GBLD"),// Поступление средств + SCLR("SCLR"),// Запуск клиринговой сессии + SPRC("SPRC"),// Запуск преклиринга + SPOC("SPOC");// Запуск постклиринга private String name; From a15fae48854320180c768eb160cb7343788d1eca Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 14 Dec 2022 11:46:35 +0300 Subject: [PATCH 029/234] http://jira.mfd.msk:8088/browse/CLS-175 --- .../queue/company/RelationController.java | 44 ++++++++++++++ .../cud/company/RelationUpdateAction.java | 59 +++++++++++++++++++ .../validation/ActionValidationProvider.java | 2 + .../platform/messaging/domain/Consts.java | 1 + .../cud/company/RelationUpdateRequest.java | 36 +++++++++++ 5 files changed, 142 insertions(+) create mode 100644 clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/RelationController.java create mode 100644 clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/company/RelationUpdateAction.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/RelationUpdateRequest.java diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/RelationController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/RelationController.java new file mode 100644 index 000000000..66f581399 --- /dev/null +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/RelationController.java @@ -0,0 +1,44 @@ +package ru.spcex.clearing.backendapi.controller.queue.company; + +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; +import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController; +import ru.spcex.clearing.backendapi.controller.request.cud.company.RelationUpdateAction; +import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; +import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse; +import ru.spcex.clearing.backendapi.service.IOperator; +import ru.spcex.clearing.backendapi.service.IStateLoader; +import ru.spcex.clearing.platform.messaging.domain.Consts; + +import java.util.concurrent.ExecutionException; + +@Controller +@RequestMapping("/relations") +public class RelationController extends AbstractQueueController { + private final IStateLoader stateLoader; + + @Autowired + public RelationController(IOperator operator, IStateLoader stateLoader) { + super(operator); + this.stateLoader = stateLoader; + } + + @ApiOperation(value = "update relation.") + @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)}) + @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE) + @ResponseBody + public CudResponse update( + @ApiParam(value = "Идентификатор изменяего объекта.", required = true, example = "1234") + @PathVariable("id") Long id, + @ApiParam(value = "Новые значения полей объекта.", required = true) + @RequestBody RelationUpdateAction relationUpdateAction) throws ExecutionException, InterruptedException { + relationUpdateAction.setId(id); + return processRequest(Consts.DESTINATION_RELATION_UPDATE, relationUpdateAction); + } +} diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/company/RelationUpdateAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/company/RelationUpdateAction.java new file mode 100644 index 000000000..ae5edb63f --- /dev/null +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/company/RelationUpdateAction.java @@ -0,0 +1,59 @@ +package ru.spcex.clearing.backendapi.controller.request.cud.company; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import ru.spcex.clearing.backendapi.domain.actions.IAction; +import ru.spcex.clearing.platform.messaging.domain.ActionType; +import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationUpdateRequest; +import ru.spcex.platform.classes.base.interfaces.WithId; + +public class RelationUpdateAction implements IAction, WithId { + @ApiModelProperty(hidden = true) + @JsonProperty + public Long id; + @ApiModelProperty(value = "Идентификатор статуса", example = "ABCD") + @JsonProperty + private String serviceStatus; + @ApiModelProperty(value = "Текст причины", example = "Example text") + @JsonProperty + private String comment; + + @Override + public RelationUpdateRequest toRequest() { + RelationUpdateRequest request = new RelationUpdateRequest(); + request.setId(this.id); + request.setServiceStatus(this.serviceStatus); + request.setComment(this.comment); + return request; + } + + @ApiModelProperty(hidden = true) + @Override + public ActionType getActionType() { + return ActionType.UPDATE; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServiceStatus() { + return serviceStatus; + } + + public void setServiceStatus(String serviceStatus) { + this.serviceStatus = serviceStatus; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } +} diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/validation/ActionValidationProvider.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/validation/ActionValidationProvider.java index 8a3005e3d..87152db3e 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/validation/ActionValidationProvider.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/validation/ActionValidationProvider.java @@ -37,9 +37,11 @@ public class ActionValidationProvider implements InitializingBean { public void afterPropertiesSet() { getImdg(IMDGDistributedNames.Map_TaskDictionary, AbstractDictionary.class); getImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, SpcexObjectBase.class); + getImdg(IMDGDistributedNames.Map_Relation, SpcexObjectBase.class); validators.put(Consts.DESTINATION_MONEY_MARKET_SECURITY_UPDATE, idPresent(IMDGDistributedNames.Map_MoneyMarketSecurity)); validators.put(Consts.DESTINATION_MONEY_MARKET_SECURITY_DELETE, idPresent(IMDGDistributedNames.Map_MoneyMarketSecurity)); + validators.put(Consts.DESTINATION_RELATION_UPDATE, idPresent(IMDGDistributedNames.Map_Relation)); validators.put(Consts.LAUNCHER_NEW, taskRunnerNew()); } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index bfc7d89cd..ed7b1d5aa 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -32,6 +32,7 @@ public interface Consts { String DESTINATION_BANK_ACCOUNT_DELETE = "bank-account-delete"; String DESTINATION_BANK_ACCOUNT_UPDATE = "bank-account-update"; String DESTINATION_BANK_ACCOUNT_NEW = "bank-account-new"; + String DESTINATION_RELATION_UPDATE = "relation-update"; String DESTINATION_SDF08_NEW = "s-df-08-new"; String DESTINATION_SDF02_NEW = "s-df-02-new"; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/RelationUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/RelationUpdateRequest.java new file mode 100644 index 000000000..65b541416 --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/RelationUpdateRequest.java @@ -0,0 +1,36 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.company; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class RelationUpdateRequest { + @JsonProperty + public Long id; + @JsonProperty + private String serviceStatus; + @JsonProperty + private String comment; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServiceStatus() { + return serviceStatus; + } + + public void setServiceStatus(String serviceStatus) { + this.serviceStatus = serviceStatus; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } +} From c773017570f881c37b931ba83eb300576e3d191d Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 14 Dec 2022 12:40:09 +0300 Subject: [PATCH 030/234] http://jira.mfd.msk:8088/browse/CLS-178 --- .../company/ProfileDocumentController.java | 25 +++- .../cud/company/ProfileDocumentNewAction.java | 82 +++++++++++ .../platform/messaging/domain/Consts.java | 1 + .../company/ProfileDocumentNewRequest.java | 138 ++++++++++++++++++ 4 files changed, 244 insertions(+), 2 deletions(-) create mode 100644 clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/company/ProfileDocumentNewAction.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/ProfileDocumentNewRequest.java diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/ProfileDocumentController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/ProfileDocumentController.java index 1e1909a53..589051d3c 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/ProfileDocumentController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/ProfileDocumentController.java @@ -1,28 +1,39 @@ package ru.spcex.clearing.backendapi.controller.queue.company; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import ru.clearing.classes.statics.data.profile.ProfileDocument; +import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController; +import ru.spcex.clearing.backendapi.controller.request.cud.company.ProfileDocumentNewAction; +import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; +import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse; import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse; +import ru.spcex.clearing.backendapi.service.IOperator; import ru.spcex.clearing.backendapi.service.IStateLoader; import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.Consts; import java.util.Collection; import java.util.Map; +import java.util.concurrent.ExecutionException; @Controller @RequestMapping("/profile-documents") -public class ProfileDocumentController { +public class ProfileDocumentController extends AbstractQueueController { private final IStateLoader stateLoader; @Autowired - public ProfileDocumentController(IStateLoader stateLoader) { + public ProfileDocumentController(IStateLoader stateLoader, IOperator operator) { + super(operator); this.stateLoader = stateLoader; } @@ -36,4 +47,14 @@ public class ProfileDocumentController { response.fromEntity(all); return response; } + + @ApiOperation(value = "new profile document.") + @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)}) + @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + @ResponseBody + public CudResponse add( + @ApiParam(value = "Параметры команды в JSON формате.", required = true) + @RequestBody ProfileDocumentNewAction profileDocumentNewAction) throws ExecutionException, InterruptedException { + return processRequest(Consts.DESTINATION_PROFILE_DOCUMENT_NEW, profileDocumentNewAction); + } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/company/ProfileDocumentNewAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/company/ProfileDocumentNewAction.java new file mode 100644 index 000000000..be46441b3 --- /dev/null +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/company/ProfileDocumentNewAction.java @@ -0,0 +1,82 @@ +package ru.spcex.clearing.backendapi.controller.request.cud.company; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import io.swagger.annotations.ApiModelProperty; +import ru.spcex.clearing.backendapi.domain.actions.IAction; +import ru.spcex.clearing.platform.messaging.domain.ActionType; +import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer; + +import java.time.LocalDate; + +public class ProfileDocumentNewAction implements IAction { + @ApiModelProperty(value = "Идентификатор Компании", example = "123") + @JsonProperty + private Long companyId; + @ApiModelProperty(value = "Идентификатор типа документа", example = "ABCD") + @JsonProperty + private String documentType; + @ApiModelProperty(value = "Дата выдачи", example = "2022-12-25") + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) + @JsonProperty + private LocalDate issueDate; + @ApiModelProperty(value = "Место выдачи", example = "Example string") + @JsonProperty + private String issuePlace; + @ApiModelProperty(value = "Кем выдан", example = "Example string") + @JsonProperty + private String issuer; + @ApiModelProperty(value = "Код выдавшего органа", example = "Example string") + @JsonProperty + private String issuerCode; + @ApiModelProperty(value = "Наименование", example = "Example string") + @JsonProperty + private String name; + @ApiModelProperty(value = "Номер", example = "Example string") + @JsonProperty + private String number; + @ApiModelProperty(value = "Место", example = "Example string") + @JsonProperty + private String place; + @ApiModelProperty(value = "Дата начала срока действия", example = "2022-12-25") + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) + @JsonProperty + private LocalDate validFromDate; + @ApiModelProperty(value = "Дата окончания срока действия", example = "2022-12-25") + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) + @JsonProperty + private LocalDate validToDate; + @ApiModelProperty(value = "Ссылка на документ", example = "Example string") + @JsonProperty + private String link; + + @Override + public ProfileDocumentNewRequest toRequest() { + ProfileDocumentNewRequest request = new ProfileDocumentNewRequest(); + request.setCompanyId(this.companyId); + request.setDocumentType(this.documentType); + request.setIssueDate(this.issueDate); + request.setIssuePlace(this.issuePlace); + request.setIssuer(this.issuer); + request.setIssuerCode(this.issuerCode); + request.setName(this.name); + request.setNumber(this.number); + request.setPlace(this.place); + request.setValidFromDate(this.validFromDate); + request.setValidToDate(this.validToDate); + request.setLink(this.link); + return request; + } + + @ApiModelProperty(hidden = true) + @Override + public ActionType getActionType() { + return ActionType.NEW; + } +} diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index ed7b1d5aa..0ffbba428 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -33,6 +33,7 @@ public interface Consts { String DESTINATION_BANK_ACCOUNT_UPDATE = "bank-account-update"; String DESTINATION_BANK_ACCOUNT_NEW = "bank-account-new"; String DESTINATION_RELATION_UPDATE = "relation-update"; + String DESTINATION_PROFILE_DOCUMENT_NEW = "profile-document-new"; String DESTINATION_SDF08_NEW = "s-df-08-new"; String DESTINATION_SDF02_NEW = "s-df-02-new"; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/ProfileDocumentNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/ProfileDocumentNewRequest.java new file mode 100644 index 000000000..68fbc0903 --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/ProfileDocumentNewRequest.java @@ -0,0 +1,138 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.company; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer; + +import java.time.LocalDate; + +public class ProfileDocumentNewRequest { + @JsonProperty + private Long companyId; + @JsonProperty + private String documentType; + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) + @JsonProperty + private LocalDate issueDate; + @JsonProperty + private String issuePlace; + @JsonProperty + private String issuer; + @JsonProperty + private String issuerCode; + @JsonProperty + private String name; + @JsonProperty + private String number; + @JsonProperty + private String place; + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) + @JsonProperty + private LocalDate validFromDate; + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) + @JsonProperty + private LocalDate validToDate; + @JsonProperty + private String link; + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } + + public String getDocumentType() { + return documentType; + } + + public void setDocumentType(String documentType) { + this.documentType = documentType; + } + + public LocalDate getIssueDate() { + return issueDate; + } + + public void setIssueDate(LocalDate issueDate) { + this.issueDate = issueDate; + } + + public String getIssuePlace() { + return issuePlace; + } + + public void setIssuePlace(String issuePlace) { + this.issuePlace = issuePlace; + } + + public String getIssuer() { + return issuer; + } + + public void setIssuer(String issuer) { + this.issuer = issuer; + } + + public String getIssuerCode() { + return issuerCode; + } + + public void setIssuerCode(String issuerCode) { + this.issuerCode = issuerCode; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public String getPlace() { + return place; + } + + public void setPlace(String place) { + this.place = place; + } + + public LocalDate getValidFromDate() { + return validFromDate; + } + + public void setValidFromDate(LocalDate validFromDate) { + this.validFromDate = validFromDate; + } + + public LocalDate getValidToDate() { + return validToDate; + } + + public void setValidToDate(LocalDate validToDate) { + this.validToDate = validToDate; + } + + public String getLink() { + return link; + } + + public void setLink(String link) { + this.link = link; + } +} From 74cb4d75c0335eb740ab1e44b661c27be4f82dd3 Mon Sep 17 00:00:00 2001 From: aalehin Date: Wed, 14 Dec 2022 14:12:50 +0300 Subject: [PATCH 031/234] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-37?= =?UTF-8?q?=20---=20=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE=D1=80=20Tas?= =?UTF-8?q?kManager?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scheduler/enums/IEnumWithLongValue.java | 81 ------------------- .../scheduler/enums/TaskStatuses.java | 35 -------- .../spcex/clearing/scheduler/enums/Tasks.java | 45 ----------- .../scheduler/service/TaskManager.java | 45 ++++++----- .../ru/spcex/platform/enumeration/Status.java | 4 +- .../ru/spcex/platform/enumeration/Task.java | 14 +++- 6 files changed, 39 insertions(+), 185 deletions(-) delete mode 100644 clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/IEnumWithLongValue.java delete mode 100644 clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/TaskStatuses.java delete mode 100644 clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/Tasks.java diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/IEnumWithLongValue.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/IEnumWithLongValue.java deleted file mode 100644 index 3e46ccc59..000000000 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/IEnumWithLongValue.java +++ /dev/null @@ -1,81 +0,0 @@ -package ru.spcex.clearing.scheduler.enums; - -import java.io.Serializable; -import java.util.Objects; - -/** - * Удобный интерфейс для enum при использовании TextErrorService. - */ -public interface IEnumWithLongValue extends Serializable { - - - /** - * Проверяет что среди данного набора Enum, присутствует элемент с данным id - * id может быть null - */ - static & IEnumWithLongValue> boolean contains(Long id, T... enumSet) { - for (T e : enumSet) { - if (Objects.equals(id, e.getId())) - return true; - } - return false; - } - - static & IEnumWithLongValue> boolean contains(T e, T... enumSet) { - for (T enumEl : enumSet) { - if (enumEl.equals(e)) - return true; - } - return false; - } - - static & IEnumWithLongValue> Long[] toLongArray(T... enumSet) { - Long[] enumId = new Long[enumSet.length]; - for (int i = 0; i < enumSet.length; i++) - enumId[i] = enumSet[i].getId(); - return enumId; - } - - /** - * Проверяет что среди всех Enum данного класса, присутствует элемент с данным id - * id может быть null - */ - static & IEnumWithLongValue> boolean contains(Class enumClass, Long id) { - for (T e : enumClass.getEnumConstants()) { - if (Objects.equals(id, e.getId())) - return true; - } - return false; - } - - - /** - * Возвращает Enum по id, если в заданном классе такой определен - * id может быть null - * - * @return Enum если нашел, иначе null - */ - static & IEnumWithLongValue> T getEnumById(Class enumClass, Long id) { - for (T e : enumClass.getEnumConstants()) { - if (Objects.equals(id, e.getId())) - return e; - } - return null; - } - - static Long getIdOrNull(IEnumWithLongValue enumVal) { - return enumVal == null ? null : enumVal.getId(); - } - - - /** - * errorCode - **/ - Long getId(); - - default boolean equalsById(Long id) { - return id != null && getId().equals(id); - } - - String elementName(); -} diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/TaskStatuses.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/TaskStatuses.java deleted file mode 100644 index b4f82ea38..000000000 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/TaskStatuses.java +++ /dev/null @@ -1,35 +0,0 @@ -package ru.spcex.clearing.scheduler.enums; - -import java.util.Objects; - -public enum TaskStatuses { - ACTIVE("ACTV"), - BLOCKED("CNCL"), - CANCEL("BLKD"); - - private final String name; - - TaskStatuses(String name) { - this.name = name; - } - - public static TaskStatuses getEnumByName(String name) { - for (TaskStatuses e : TaskStatuses.values()) { - if (Objects.equals(name, e.name())) - return e; - } - return null; - } - - public Boolean equalsByName(String name) { - return this.name.equalsIgnoreCase(name); - } - - public String getName() { - return this.name; - } - - public String elementName() { - return this.name(); - } -} diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/Tasks.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/Tasks.java deleted file mode 100644 index b92b42108..000000000 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/enums/Tasks.java +++ /dev/null @@ -1,45 +0,0 @@ -package ru.spcex.clearing.scheduler.enums; - -import java.util.Objects; - -public enum Tasks { - GBAL("GBAL"),//Зачисление остатков - ABLK("ABLK"),//Блокировка счета - GALB("GALB"),//Запрос остатков по всем счетам - ADBL("ADBL"),//Дозачисление/списание остатков - CORD("CORD"),//Формирование сводного платежного поручения - CORC("CORC"),//Получение подтверждения переводов - GTRD("GTRD"),//Получение сделок из Торговой системы - GVER("GVER"),// Запуск сверки - GBLD("GBLD"),// Поступление средств - SCLR("SCLR"),// Запуск клиринговой сессии - SPRC("SPRC"),// Запуск преклиринга - SPOC("SPOC");// Запуск постклиринга - - private String name; - - Tasks(String name) { - this.name = name; - } - - public static Tasks getEnumByName(String name) { - for (Tasks e : Tasks.values()) { - if (Objects.equals(name, e.name())) - return e; - } - return null; - } - - public Boolean equalsByName(String name) { - return this.name.equalsIgnoreCase(name); - } - - public String getName() { - return this.name; - } - - public String elementName() { - return this.name(); - } - -} diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java index 4bfd70cdb..4db6e99b2 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java @@ -11,8 +11,8 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.scheduling.TaskScheduler; import ru.clearing.classes.statics.data.scheduler.PlannerAllToday; -import ru.spcex.clearing.scheduler.enums.TaskStatuses; -import ru.spcex.clearing.scheduler.enums.Tasks; +import ru.spcex.platform.enumeration.Status; +import ru.spcex.platform.enumeration.Task; import java.time.LocalDate; import java.time.LocalDateTime; @@ -27,7 +27,8 @@ import java.util.concurrent.ScheduledFuture; import java.util.stream.Collectors; import static ru.spcex.clearing.imdg.IMDGDistributedNames.Map_PlannerAllToday; -import static ru.spcex.clearing.scheduler.enums.TaskStatuses.*; +import static ru.spcex.platform.enumeration.Status.*; +import static ru.spcex.platform.utils.enumeration.IEnumKey.getEnumByKey; /** * Планировщик задач, расписание берёт из Hazelcast map. @@ -73,7 +74,7 @@ public abstract class TaskManager implements EntryAddedListener event) { PlannerAllToday task = event.getValue(); - Tasks taskType = Tasks.getEnumByName(task.getTask()); + Task taskType = getEnumByKey(Task.class, task.getTask()); if (taskType == null) { log.warn("Task skipped, {} task type not recognized", task.getTask()); return; @@ -89,23 +90,23 @@ public abstract class TaskManager implements EntryAddedListener schedulerAllTodays = plannerAllTodayMapStore.values(); Collection sortedSchedulers = - schedulerAllTodays.stream().sorted((o1, o2) -> (ACTIVE.equalsByName(o1.getTaskStatus()) && CANCEL.equalsByName(o2.getTaskStatus())) ? -1 : 0) + schedulerAllTodays.stream().sorted((o1, o2) -> (Active.equalsByKey(o1.getTaskStatus()) && Cancel.equalsByKey(o2.getTaskStatus())) ? -1 : 0) .collect(Collectors.toCollection(ArrayList::new)); for (PlannerAllToday schedulerAllToday : sortedSchedulers) { processTask(schedulerAllToday); @@ -155,8 +156,8 @@ public abstract class TaskManager implements EntryAddedListener Date: Wed, 14 Dec 2022 14:24:12 +0300 Subject: [PATCH 032/234] Fixing AccountBalanceServiceTest. And ImdgTransactionalHazelcast.getSingleObjectByFieldValues --- .../service/AccountBalanceServiceTest.java | 28 ++++++++++--------- .../adapter/ImdgTransactionalHazelcast.java | 4 +-- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java index 31a79fe58..abb8f40d4 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java @@ -1,5 +1,6 @@ package ru.spcex.clearing.balance.service; +import com.hazelcast.core.IMap; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -12,8 +13,8 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.platform.enumeration.AccountType; import ru.spcex.platform.enumeration.BalanceAccountType; import ru.spcex.platform.enumeration.Status; -import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.imdg.iml.hazelcast.adapter.ImdgHazelcast; import ru.spcex.platform.utils.enumeration.EnumMessage; import javax.annotation.PostConstruct; @@ -40,30 +41,32 @@ class AccountBalanceServiceTest extends AbstractServiceTest { @Qualifier("hazelcastServiceTest") private ImdgProvider hazelcast; - private Imdg companyImdg; - private Imdg accountImdg; + private IMap companyMap; + private IMap accountMap; @PostConstruct void init() { - companyImdg = hazelcast.getImdg(IMDGDistributedNames.Map_Company, Company.class); - accountImdg = hazelcast.getImdg(IMDGDistributedNames.Map_Account, Account.class); + hazelcast.waitAvailable(); + ImdgHazelcast companyImdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_Company, Company.class); + ImdgHazelcast accountImdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_Account, Account.class); + companyMap = companyImdg.getMap(); + accountMap = accountImdg.getMap(); } @Test void createAccountBalance() { - hazelcast.waitAvailable(); Company company = new Company(); company.setId(addresseeIdNew); company.setTradingCode("code"); company.setShortName("ShortName"); company.setFullName("FullName"); - companyImdg.insert(company); + companyMap.put(id, company); Account account = new Account(); account.setId(accountIdNew); account.setAccount("123456789"); account.setAccountType(AccountType.Clrn.getKey()); account.setAccountStatus(Status.Active.getKey()); - accountImdg.insert(account); + accountMap.put(id, account); AccountBalance accountBalanceNew = new AccountBalance(); accountBalanceNew.setId(id); @@ -108,7 +111,6 @@ class AccountBalanceServiceTest extends AbstractServiceTest { @Test void validatedCreateAccountBalance() { AccountResult predictableResult; - hazelcast.waitAvailable(); predictableResult = new AccountResult(new EnumMessage(BalanceError.CompanyNotFound)); AccountResult result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew); @@ -116,13 +118,13 @@ class AccountBalanceServiceTest extends AbstractServiceTest { Company company = new Company(); company.setId(addresseeIdNew); - companyImdg.insert(company); + companyMap.put(id, company); Account account = new Account(); -// account.setId(accountIdNew); - account.setAccountType(AccountType.Clrn.getKey()); + account.setId(accountIdNew); +// account.setAccountType(AccountType.Clrn.getKey()); account.setAccountStatus(Status.Active.getKey()); - accountImdg.insert(account); + accountMap.put(id, account); predictableResult = new AccountResult(new EnumMessage(BalanceError.AccountNotPresent)); result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew); diff --git a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgTransactionalHazelcast.java b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgTransactionalHazelcast.java index 5f19ae2e6..f58ef3c8b 100644 --- a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgTransactionalHazelcast.java +++ b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgTransactionalHazelcast.java @@ -79,8 +79,8 @@ public class ImdgTransactionalHazelcast implements Im predicates[i[0]] = Predicates.equal(key, value); i[0]++; }); - Predicate or = Predicates.or(predicates); - Set ids = map.keySet(or); + Predicate and = Predicates.and(predicates); + Set ids = map.keySet(and); Iterator idsIterator = ids.iterator(); if (idsIterator.hasNext()) { return map.get(idsIterator.next()); From 6381e251937cbd008ea65db6e1f6e9ad92099682 Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 14 Dec 2022 18:54:04 +0300 Subject: [PATCH 033/234] http://jira.mfd.msk:8088/browse/CLS-218 --- .../queue/misc/ListingController.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/misc/ListingController.java diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/misc/ListingController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/misc/ListingController.java new file mode 100644 index 000000000..583801df2 --- /dev/null +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/misc/ListingController.java @@ -0,0 +1,42 @@ +package ru.spcex.clearing.backendapi.controller.queue.misc; + +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import ru.clearing.classes.statics.data.misc.Listing; +import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController; +import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse; +import ru.spcex.clearing.backendapi.service.IOperator; +import ru.spcex.clearing.backendapi.service.IStateLoader; +import ru.spcex.clearing.imdg.IMDGDistributedNames; + +import java.util.Collection; +import java.util.Map; + +@Controller +@RequestMapping("/listings") +public class ListingController extends AbstractQueueController { + private final IStateLoader stateLoader; + + @Autowired + public ListingController(IOperator operator, IStateLoader stateLoader) { + super(operator); + this.stateLoader = stateLoader; + } + + @ApiOperation(value = "get all listings.") + @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)}) + @RequestMapping(method = RequestMethod.GET) + @ResponseBody + public CommonGetAllResponse getAll() { + Collection> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_Listing, Listing.class); + CommonGetAllResponse response = new CommonGetAllResponse(); + response.fromEntity(all); + return response; + } +} From d3657752b22f7fdb027e05c0a088a5ec1143baa8 Mon Sep 17 00:00:00 2001 From: psemenkov Date: Thu, 15 Dec 2022 11:16:13 +0300 Subject: [PATCH 034/234] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20Sdf01ExecutorTest=20=D0=BF=D0=BE=D0=BA=D0=B0=20=D0=B1?= =?UTF-8?q?=D0=B5=D0=B7=20=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../balance/service/AbstractServiceTest.java | 35 ++++++++-- .../service/AccountBalanceServiceTest.java | 67 ++++++++++++------- .../balance/service/Sdf01ExecutorTest.java | 52 ++++++++++++++ 3 files changed, 127 insertions(+), 27 deletions(-) create mode 100644 clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf01ExecutorTest.java diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java index 29723228e..ec85f8690 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java @@ -1,19 +1,46 @@ package ru.spcex.clearing.balance.service; +import com.hazelcast.core.IMap; import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; -import ru.spcex.clearing.balance.config.BalanceImdgTestConfig; -import ru.spcex.clearing.balance.config.KafkaSenderConfig; -import ru.spcex.clearing.balance.config.KafkaTestConfig; -import ru.spcex.clearing.balance.config.ValidationConfig; +import ru.clearing.classes.statics.data.account.Account; +import ru.clearing.classes.statics.data.company.Company; +import ru.spcex.clearing.balance.config.*; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.imdg.iml.hazelcast.adapter.ImdgHazelcast; + +import javax.annotation.PostConstruct; +import java.util.concurrent.atomic.AtomicLong; @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = { AccountBalanceService.class, + Sdf01Executor.class, + LoggingService.class, + MessagesConfig.class, ValidationConfig.class, BalanceImdgTestConfig.class, KafkaSenderConfig.class, KafkaTestConfig.class}) public abstract class AbstractServiceTest { + protected AtomicLong currentId = new AtomicLong(0L); + protected IMap companyMap; + protected IMap accountMap; + @Autowired + @Qualifier("hazelcastServiceTest") + private ImdgProvider hazelcast; + + @PostConstruct + void init() { + hazelcast.waitAvailable(); + ImdgHazelcast companyImdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_Company, Company.class); + ImdgHazelcast accountImdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_Account, Account.class); + companyMap = companyImdg.getMap(); + accountMap = accountImdg.getMap(); + } + } diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java index abb8f40d4..63968f2db 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java @@ -1,23 +1,17 @@ package ru.spcex.clearing.balance.service; -import com.hazelcast.core.IMap; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.account.AccountBalance; import ru.clearing.classes.statics.data.company.Company; import ru.spcex.clearing.balance.errors.BalanceError; import ru.spcex.clearing.balance.utils.MatcherFactory.Matcher; -import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.platform.enumeration.AccountType; import ru.spcex.platform.enumeration.BalanceAccountType; import ru.spcex.platform.enumeration.Status; -import ru.spcex.platform.imdg.api.ImdgProvider; -import ru.spcex.platform.imdg.iml.hazelcast.adapter.ImdgHazelcast; import ru.spcex.platform.utils.enumeration.EnumMessage; -import javax.annotation.PostConstruct; import java.math.BigDecimal; import static ru.spcex.clearing.balance.utils.MatcherFactory.usingIgnoringFieldsComparator; @@ -37,22 +31,16 @@ class AccountBalanceServiceTest extends AbstractServiceTest { private final String cashMovementCurrencyCodeUpdate = "cash"; @Autowired AccountBalanceService accountBalanceService; - @Autowired - @Qualifier("hazelcastServiceTest") - private ImdgProvider hazelcast; - - private IMap companyMap; - private IMap accountMap; - - @PostConstruct - void init() { - hazelcast.waitAvailable(); - ImdgHazelcast companyImdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_Company, Company.class); - ImdgHazelcast accountImdg = (ImdgHazelcast) hazelcast.getImdg(IMDGDistributedNames.Map_Account, Account.class); - companyMap = companyImdg.getMap(); - accountMap = accountImdg.getMap(); - } + /** + * {@link AccountBalanceService#createAccountBalance(Long addresseeId, Long accountId, BigDecimal amount, String cashMovementCurrencyCode)}
+ * Тест проверяет генерацию сущности {@link AccountResult}
+ * Входные параметры:
+ * addresseeId - {@link Company#id}
+ * accountId - {@link Account#id}
+ * amount - сумма
+ * cashMovementCurrencyCode - код
+ */ @Test void createAccountBalance() { Company company = new Company(); @@ -108,21 +96,30 @@ class AccountBalanceServiceTest extends AbstractServiceTest { ACCOUNT_BALANCE_MATCHER.assertMatch(resultUpdate, predictableUpdateResult); } + /** + * {@link AccountBalanceService#createAccountBalance(Long addresseeId, Long accountId, BigDecimal amount, String cashMovementCurrencyCode)}
+ * Тест проверяет валидацию
+ * Входные параметры:
+ * addresseeId - {@link Company#id}
+ * accountId - {@link Account#id}
+ * amount - сумма
+ * cashMovementCurrencyCode - код
+ */ @Test void validatedCreateAccountBalance() { + //CompanyNotFound AccountResult predictableResult; predictableResult = new AccountResult(new EnumMessage(BalanceError.CompanyNotFound)); AccountResult result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew); ACCOUNT_BALANCE_MATCHER.assertMatch(result, predictableResult); + //AccountNotPresent accountType=null Company company = new Company(); company.setId(addresseeIdNew); companyMap.put(id, company); - Account account = new Account(); account.setId(accountIdNew); -// account.setAccountType(AccountType.Clrn.getKey()); account.setAccountStatus(Status.Active.getKey()); accountMap.put(id, account); predictableResult = new AccountResult(new EnumMessage(BalanceError.AccountNotPresent)); @@ -130,5 +127,29 @@ class AccountBalanceServiceTest extends AbstractServiceTest { result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew); ACCOUNT_BALANCE_MATCHER.assertMatch(result, predictableResult); + //AccountNotPresent id=null + account.setId(null); + account.setAccountType(AccountType.Clrn.getKey()); + account.setAccountStatus(Status.Active.getKey()); + accountMap.put(id, account); + predictableResult = new AccountResult(new EnumMessage(BalanceError.AccountNotPresent)); + + result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew); + ACCOUNT_BALANCE_MATCHER.assertMatch(result, predictableResult); + + //AccountNotActive accountStatus=null + account.setId(accountIdNew); + account.setAccountType(AccountType.Clrn.getKey()); + account.setAccountStatus(null); + accountMap.put(id, account); + predictableResult = new AccountResult(new EnumMessage(BalanceError.AccountNotActive, account.getId())); + + result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCodeNew); + ACCOUNT_BALANCE_MATCHER.assertMatch(result, predictableResult); + + account.setAccountStatus(Status.Active.getKey()); + accountMap.put(id, account); + result = accountBalanceService.createAccountBalance(addresseeIdNew, null, amountNew, cashMovementCurrencyCodeNew); + ACCOUNT_BALANCE_MATCHER.assertMatch(result, predictableResult); } } \ No newline at end of file diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf01ExecutorTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf01ExecutorTest.java new file mode 100644 index 000000000..550765f05 --- /dev/null +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf01ExecutorTest.java @@ -0,0 +1,52 @@ +package ru.spcex.clearing.balance.service; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import ru.clearing.classes.statics.data.account.Account; +import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.sdf.SDf01; +import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; +import ru.spcex.platform.enumeration.AccountType; +import ru.spcex.platform.enumeration.Status; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.Collections; + +class Sdf01ExecutorTest extends AbstractServiceTest { + + private final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy"); + @Autowired + Sdf01Executor sdf01Executor; + private final String deal = "111111111"; + private final String acc = "123456789"; + private final Long id = currentId.getAndIncrement(); + + @Test + void execute() { + SDf01 sDf01 = new SDf01(); + sDf01.setMarket("U");//!"U".equals + sDf01.setDeal(deal);//tradingCode + sDf01.setAccount(acc); + sDf01.setCurr_code("RUR"); + sDf01.setDat(LocalDate.now().format(datFormatter)); + sDf01.setAcc_type("A"); + + Company company = new Company(); + company.setTradingCode(deal); + companyMap.put(id, company); + + Account account = new Account(); + account.setId(id); + account.setAccount(acc); + account.setAccountType(AccountType.Clrn.getKey()); + account.setAccountStatus(Status.Active.getKey()); + accountMap.put(id, account); + + StatementRequest statementRequest = new StatementRequest(); + + Result predictableResult = new Result(); + predictableResult.setGenerationId(id); + Result result = sdf01Executor.execute(Collections.singletonList(sDf01), statementRequest); + } +} \ No newline at end of file From b663824a5a3732ed8a9e4addc00a7539e83539f4 Mon Sep 17 00:00:00 2001 From: akulikov Date: Mon, 12 Dec 2022 21:58:20 +0300 Subject: [PATCH 035/234] docx, search keys from doc --- clearing-parent/reports-service/pom.xml | 12 +++ .../reports/services/DOCXService.java | 90 ++++++++++++++++++ .../reports/services/DOCXServiceTest.java | 31 ++++++ .../src/test/resources/REC.ACTV_TEST.docx | Bin 0 -> 10230 bytes 4 files changed, 133 insertions(+) create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/DOCXService.java create mode 100644 clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/DOCXServiceTest.java create mode 100644 clearing-parent/reports-service/src/test/resources/REC.ACTV_TEST.docx diff --git a/clearing-parent/reports-service/pom.xml b/clearing-parent/reports-service/pom.xml index 4edc035a2..323090060 100644 --- a/clearing-parent/reports-service/pom.xml +++ b/clearing-parent/reports-service/pom.xml @@ -33,11 +33,23 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml + com.thoughtworks.xstream xstream 1.4.19 + + org.apache.poi + poi-ooxml + 5.1.0 + + + + org.junit.jupiter + junit-jupiter + test + diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/DOCXService.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/DOCXService.java new file mode 100644 index 000000000..20012d16f --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/DOCXService.java @@ -0,0 +1,90 @@ +package ru.spcex.clearing.reports.services; + +import org.apache.poi.xwpf.usermodel.*; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Сервис для работы с DOCX файлами + * Читает шаблон .docx и во всех текстовых элементах меняет переданные ключи на соответствующие им значения + */ +public class DOCXService { + /** + * При инициализации сохраняет все имеющиеся ключи (ищет по маске keyPattern), найденные в текстовых элементах документа + */ + private final Map bodyElementForKey = new HashMap<>(); + private final Pattern KEY_PATTERN = Pattern.compile("\\$\\{.*?}"); + private final int MAX_POSITION = 128; + + /** + * Инициализация шаблона + * + * @param templateFile файл шаблона + */ + public void init(File templateFile) throws IOException { + assert templateFile != null && templateFile.exists() && templateFile.isFile(); + try (InputStream inputStream = new FileInputStream(templateFile)) { + XWPFDocument doc = new XWPFDocument(inputStream); + + for (IBodyElement element : doc.getBodyElements()) { + if (element instanceof XWPFTable table) { + collectKeysFromTable(table); + } else if (element instanceof XWPFParagraph paragraph) { + collectKeysFromParagraph(paragraph); + } + } + + System.out.println("hello"); + } + } + + private void collectKeysFromTable(XWPFTable srcTable) { + for (XWPFTableRow row : srcTable.getRows()) { + for (XWPFTableCell cell : row.getTableCells()) { + for (IBodyElement element : cell.getBodyElements()) { + if (element instanceof XWPFTable table) { + collectKeysFromTable(table); + } else if (element instanceof XWPFParagraph paragraph) { + collectKeysFromParagraph(paragraph); + } + } + } + } + } + + private void collectKeysFromParagraph(XWPFParagraph paragraph) { + + for (XWPFRun run : paragraph.getRuns()) { + try { + for (int currPos = 0; currPos < MAX_POSITION; currPos++) { + String currText = run.getText(currPos); + if (currText == null) break; + Matcher matcher = KEY_PATTERN.matcher(currText); + while (matcher.find()) { + String key = matcher.group(); + bodyElementForKey.put(key, new TextPositionOnRun(run, currPos)); + } + } + } catch (IndexOutOfBoundsException ignored) { + // can't get all max text position for XWPFRun + } + } + } + + static class TextPositionOnRun { + XWPFRun run; + int pos; + + public TextPositionOnRun(XWPFRun run, int pos) { + this.run = run; + this.pos = pos; + } + } +} diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/DOCXServiceTest.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/DOCXServiceTest.java new file mode 100644 index 000000000..6aad9d549 --- /dev/null +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/DOCXServiceTest.java @@ -0,0 +1,31 @@ +package ru.spcex.clearing.reports.services; + +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.junit.jupiter.api.Test; + +import java.io.*; + +class DOCXServiceTest { + @Test + public void testREC_ACTV() { + String inputFilename = "REC.ACTV_TEST.docx"; + try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream(inputFilename); + InputStream testStream = getClass().getClassLoader().getResourceAsStream("1.docx"); + OutputStream outputStream = new FileOutputStream("test.docx")) { + XWPFDocument templateDoc = new XWPFDocument(inputStream); + XWPFDocument testDoc = new XWPFDocument(testStream); + testDoc.getParagraphs().get(6).getRuns().get(1).setText("========АОВЛДЫАОЫВЛДОАЛЫВДАОЫВЛДАОЫВ========"); + testDoc.write(outputStream); + System.out.println("h"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Test + public void test() throws IOException { + DOCXService service = new DOCXService(); + service.init(new File(getClass().getClassLoader().getResource("REC.ACTV_TEST.docx").getPath())); + System.out.println("p"); + } +} \ No newline at end of file diff --git a/clearing-parent/reports-service/src/test/resources/REC.ACTV_TEST.docx b/clearing-parent/reports-service/src/test/resources/REC.ACTV_TEST.docx new file mode 100644 index 0000000000000000000000000000000000000000..aca71b0e5e12d13ad03f80660147bd8eb5b4fe23 GIT binary patch literal 10230 zcmai41y~))vc}!r-8r~ha0rs%5FCO-;9$W$xFx~e3GN!)-Ccr1;Nb4^AouRw?B4hG z)qFkQ^z{7I-Bmr^)m^112ML7*1_uWRMiU>d2KE~vK0oW*n|yF!VSc%nOti~FvZ2AO zx~IQSba$>*lQ6Do4jxN>?dkJn=ny7Z{`EJlm1RYQ21WID5{{egZOWV_qK6i@ycl9w z=%NPSP(Q=Hj*QihSJh2HZ|cnT&C7BnPIumy4!rF{kotPgs;h& zPR~tDz8uG@$=K}?*`d4H&e!2~l`nG4{0Pu;PH8ztDVR$-D#j?9b5Exdc|$~?%cLBO z^~JOH{w$%-qe+rs(dqM^;EHmva9j455pVg$4| zVRo_p5TN|#Eg>7$@)Z{45p7x`8r_UBg;EznP9c=<9R4U}!iWoCk-R^W*g1bn5~xW2 z1??;EC->}yx274?7*V)Ko=0a_UT5P?rCEfENj&d^C-nR%(2D85Cm@aYUz0tCQ&{KI zSxm#>WkH*BGQ8T7$C#nJE+l{-upRq~iIK$0C!x{v+ONV?Ls4bP0cp)IKBBO|t~AL& zX5N_}JcYWSyR>~QiXgPv03aY)9S6{)rOzuwfS~SF6h-bZPq|dSAK=QcY(5bWZZe$t z0igPjQ`;UXG}}ZuVp_FaOqyT%h?P!EOcJDS#C)HRmqDSAE0zFZnGv1>rkQI+nfJhQ zw*jeYEECslfkFFV$4{mW8AY|t_juHbt1}~bKznDPzwc@6UA&a5D|MO2 zkw)B7-FjeTuZwOl7Dj;TpcP+?5sjU(e(g~!Z0Sq2gXgrHn;r5{vDPk;8KDis zyY`ZsL%*=r7X?R_6@_PkgMlGK{*!{yepj%et?i3`QvjYdf+l2)6IZOHDl)S{N*C=^^LKI2+heOETkpqlicuyIeLA ze`qtF6M~vSjU=_f@F110cfxVG87_&7bxXx>-YR>Cwogs2ch2iKN>M^t#bM)*mbr*o zwMg$cG zho9I`%mE(wHliszVUbZ>SQ}MsW2d1emo$k84tL{}h&Vp*Z4L+Q9XmU!08MM!Ovf2R_Q^fMquW0G z<&Nt}Ux9(uM$Wd{a9_cD9wA;d@?BRMZ7EZio)Wd4bf#c)r5VT4BsR98_GRA#A>ii_ z%us^`!lz$9+|OD+GUaD|y!po;4)b??7=3hb1X}-6$w&o42P;;<+EO0e{GuxC*NN&d zUIEpsFUz&y4#2)QVV>@keut4kq_5si3O$Gyqs^mRerI8%2V+7;p=AO-q z0L&W-55Aj|U9JZ?6yuen>t!IhyLGmg*&^=CI9r(!cU`s6m9YVa*>LvXlI2`wc0N@ zh{TLrfJ2^JSGOT9b^NBs99#wqQoKZdd`GtJ)k-*S`G6D%MO$Vqq>OM+b8cKux7unsI@uHZ|A`X1{z2yn1wMtw>M~zY* z3YTZaYFa7NZ3dlg0M)8*b_V2qHIF215IrprZkqIHpoX4LJ4ISS48Of7bDppj+Cvt2H%<>6v@VR|hcBtW#7Z1926-s9Nh#HIvoB2dk<~tfA%^uN7A}%^7bV$$6 zN=$$F1s#?fhqUDIqD#se*?eNf_iLjLK?5c zNt{gus!p35)w}2OhsP3+F6xK!{j^xvItg%KIq(PPb_s~k?`ONBv432%Np8ejs5?}s z4-b>`lw}((1>dy>yz1+w?4%5GbTO#`6FG3rf$=b-1~4;M#(=_sjNDa-sAHp91O??W zs*XP^QZZ=D_tL~=Supm)DXADNXNdO1SkQWc>o|lz%5IT>^#~03Ec@&D*+~Wk?n9u5 z`wi2sr1%VA*6CnP=E(Co`qg8P0yAlezr7bOnKO~&pCl4BRSDvh%F8zjo5c_W&!T1r z%^Aa~2&x_v^dkx~eN@nD&K@kr{Gy`hh%F_}s8+-g`+lqfy()R}>4@H_HaGkxEr#vx zE&laIGCMoFkcyO`!p59dh;S4!cI5yrLslV~6V4}P_}54K3*_jx{iPzy>sPfHAN69) zG|1J6lT~ShNAs%{C&K!W?TEO#6%;yx(RRenHZnh*-a^@@LVP@r8^O=7$;jOnffn-o zfl3@;h#o(tuFr_7?y$C%bG2$d!GZ2{`Mr;&MyBU+tQ$1v*-sU5kdq!Uf<}AteINk5 zQp8KdE*L~K(|e=rDAe%vX8TThVSnG35vSmKe;07iiLVoo@!=6;>!I{4QpxKMR)50^ zNLY0b@6BFB%y|R(Xb{)h=NML*Iq+$`m?K@K=4-@$W($VWb^q75Oa|{H*6U@nDLTtz z`yvwrykU(75u^q^DPk1z!g5MIhtcwy-4i@L>E{TgfymzNoL9|vFxbvoJhWM0o1D66Rs>UZeg{bcMYdV>gN>NEmVk`!Qi<`r7Ck@)YBVxHM1E zI-dFr^HC@Io>9bOgcSVbRVyRg!HYwGl&zNkza->CJ zO{wSt02Xu_kV$T4cI9qO^hC*neUS&rPk1{yzVR`AyupGa$Vv>Y)Bl0($W-^ox- zOBzX9mg6%afm1=Dm0GQyNY=NyEaDCApNM^I)llL?mnaoU8+=#n>x}E)n63Rq)()dP zk$A}hb@bJ7s$$!9mUJ=+)(`eP0@-f6E)6QoHzRdf6We z;)9Ds+7()dawxyAC59X}4yKXJHsf;mMD-4MLj)7;g)eVqT9*IE5ID#%8e)VQ{w@U` z631^DecTmYY>Ezx{$cs+?5@{P=@axpng*xG`BUQzl>8+)+5K$F>r#|_M%+nHF8EKs z)?Q|bRu)niFtBF)e_DG{|5#ld99=({IJ~U6&8fro8$IZ~N3IB13jLyTU$f{e2DRdI zmLh5a7F)TSB}74OibRNQWY_OXJcjtL1V!}PVpSQ`oYc}py|R&Dz~C#{(A>sm46V_P zpIAAb4$~|=yv`10+nigDdC}PgNy7CGP>4txCNS5QPF62}K8&oj$tdHv4aJiSlL(#~ zA0H$Odz>Bf%aD4e@eaI_*Apf}jk6$VCPBe;?uU$Pib6-7c1Fa91*nm3G_HLLZ>Ec5 zR=@~AyF1GEbfK|EDaHkY-r;eAIyICL9C{Gh81JN!d<9?0xh9Mt zJgKgnb_X~fedm#z#_j#IBwBHD+4&J*TwEKtW}kyO$k+EV?Y>E*KvIm5qvsWAB=HqEt~r)VcS1Wrq2tQKOX#pd zqS=Xd(60O4zwLqsr352Z@}T2VSwYxTOxeH6XGNS`t`3N?pi?=_xwrBrK*SCMy`gII znAl*Gp@nCaG-ae+U*?Pljkbw5i~w}E&p6AjiN4$7tTU^`zCH>(J4U=xI{~qd4l)w* z8w^bXP(U91KM_fa3e#2ixrwK6$(=g@37FTWU59<|1kZzm$|$0!0%FCh0J=YwDB)80 z4Qv4L_OB=hQE@3i!s>ioe8V2;m=&ewI`UPwvoHjct(;>CkFmZz=PXE;NlM5{GL!@b zQBs@+)Dh-C5T0@f>Yg(;FBw^_C%Z=Ug3-Eo^6bOj!x4`}MXIL6dc;I6u=8}A0i$mt zTw(LNLs_}eq#ZE2`_1VpAR&GpEQf_qiJH<`X8Uh$OdZ8fJ~m_depcO-2xZux>Dttr z9?6{w;`(nO4pP3QC7PU7vza$)Ky&;w>-MYluCAzV4Jv_LZ4Sn)WHs->a5+|MNfDye z+AYzZZ#A@1e=1)Xk8iEak zabcKLg)tsFeZ5L5e0Gy=PT-Oix_bOIzm8TSD2Q`k9!;JdTEqy{{ zHy&_lZa&M#!i+4#hi=#7*OwQ{6pKr$`bho`*y>LQis#XiR3bPoVH%mETB62l;_&ke2q%-OC`L7SXM zqZP+}U1O{a)STh6Fv!^xBAu_Hcf14MBF{XrrxFxD)$l`yo5L%9Qo6whohvxT<-ug1 zav=Yis+#Li^Z`>82{xexu2|e(L~T4ha1n@f*G^E z?8-((rb5ZZDd2snPte=Obij8s=fSB&CJpJky#&x9Mi{ z2W$OURd|9l;ymW|zJ=Z9hjlV#2_RYLIAb`BTdbSUZt4C5xN4sEP{KhY^yhgJOi5D& znv|iK5jzv9YUnxIM@g!P-u!gFr{)GXh|LF??V%e_8Wr0lw;vDRN>MG>uxNf*Z0>&) zwyXJSGPE(rx0HaMdKQU4&Ig`|p344poG3Qxnc4UL@ST*LAvnicKMn|HZBcifTE9!~ zc?9JTm1>{WeDKFz`3$5oAh9XNd>4#zpC2Kx6SScja{l!S0ewd#0FhNEL(KgpC5r@L zy(GsBF(`gTatPvlG+z|eU=i5Dt%YTC8|?fqe!sE|63_4-Ex|~t=ARK&&4HNtU*12b z-wL0r`^6hhH3Pz-=r1f+y$p>1zxtjl_^)~nYa!Rb&s-FyJmm-#zBnO2>|)Fc9Gu~D;O(;JYcPeAu4m$y zMOp)^+uBH4Yl)`aw%&V)+~CyJ)klD{K72<>lmKsS17E{VvUmhYN*q%Y;>autH-(T@ zpoC#5#t%@R3$KhO2*g*nyc6NVELRryi=6^9V&Rg|ltWf>Qts>ujwQe-S6-ww<7k() z^r?s^$STeaq!TDuQw{u8A`YRxn}%75{u`#7Sl#k50|dqE(or7{VJ=O9-AmzR|9q(y`^#Ic+#WT#lIJ4os%J=njHOP^6x9nZs$tvz!@r@w zJ~I6m^!Jbc9}dqoyOlxyf!8zKw1Dlk(E_!`vwa3>y^@4`^Pm!2v)3L4dOT>-tVV(9FgR^o%a0;(BuW)-OW)}sT zfQ2sE(+JuhWJ8mwrf2Tk1=1_;nGEIGV7B5m+Fi1a>Jqm<$F6S;rp{4porIobYm0ie zydGp@B(!u%oQr^SS=Tv%-Ht{|Xpt%KD0tV&v*+x<<&oHG{K37-CN_Ccn@iqV2H3J~ zS1$y!Hyik-kf~-iP>q&*QJ=7O!Pv_>;SzaA_)wYei?$F((P{drVQo=kMWOV3txNRU zOm4wL6%h^K)ueEmm)GspEa-L0a&}3$ZT+E{0Let*2Ooy%BJ*i-PAQ*$pL6Y0?LK$>(BuLr8hBIG(F>@F^gn zWi5lBw2<2+Vn}9*pr)@9*2FiZX~19G*h4qE$E-{k(BOg&Z%+0Nxjr*)YnMND#~zj& zxtTT$P&*gG18l#5Zt!h$DdqE{H;$8;zVfAZAjryOIl^R;TtYgbgz}qM<;!I**B@Kz zk6R9}#8Ii@E-)tIYQS;sx|g0}jKy=S>PCT_7Q&YQ@ohijY!b-DJ?~+OnbxL=Z$1^+ zZ&;TywK;aQ{Aq)2k0t(CAyA*R=@#Ne)+kjW{eb6#Z62t9lJ$R%I2}wJ9W89ker-c* zRN8G8S&^Er7?G9;8zF14MN_llGYI35-%X$z02;{2LLek(9a_D@t1`M__La|RKtiV{ zU#Er-%J2$lW5iOloNLT=0t$>2KouWR8!xtMibBOs(RdB_XaI*!AMH4p5eo^5RO85F zx8@o?S?bMv1fk$%0(gzsi_JnZoML<3j88P{JCy;Pfw$t59)*;O_Kb2jLqtV(iAwzP zmRp<=MW20oNdhwj=76zPN@--(hYk*&euj!I>Ca;!|Au#i0WuAaxEJZxej&}0=e?hK z>D#jEJQ05Dxoi$|wA)^loVWG1Wr&Cc-;WA9=VJxJ^gKP7ZtBpqivk3bqJ6YeAxil` zacL*aH)Y~VmElz(JgUd75XF+;?mMNblG#hq9nlCucfqcYBMm4qJX9U0)UJekjUh@a z*$H62>pisr{=MHvui%!s?;{#6_PCT0Q>Cwve`1&>A;k-mMvB5o9wCVCMb-(qVm?H# z-&?7-{_;euwLzrVKP$}bA3a0ZfBYPd<|fuAEWhq-FJ}h_nv0=}Qg|&#DsW2z{BoBV zz;Y7-i>hS*eH!X`BUiv1!3n%!7w0!{{=;fOEd&dYB&0RaO-U9vX+n|U7GZ<~KvfMA zcci*ut?UJTI}yvMXiw|BdO90^8uiHT?3R;eQ%5n7MVHwvv=i09PJqe@iYhN%UN}-M z+|4~eW%gsjX~$zAN*!ZT)S&DM)J~FuTt?b~X7`6b+Kc9d3D=lZ+{<14;vQ0Ay4z6H z4MtrU<%2gf-R~T&Pt&UKHfHbP6+%XX(Ai4QJ*^?96`XAY?&hbr5iOoxf_#aB$%2U~ zg5GU|qt{Pn->rcL#@>$do+%8lV6$qk96u8sc2a(0z*FoI*ey)+R<*v%;^yi25K&?< z+b^urSRe{C_~~RZmrA%$Yt$I=-Mi|zHPp)8y6#})VG9fm%HwAb!i>dC5|dddwuq$C zdgE3NAlo1JUYqecFxpej#mcu%<2W_4H8>NDAvBVTCJnSm-Bi`q$mpT~to~5uKPrkY z)o%b@B2c+o&Z?&B(C}w~N(cWN=up_I|qmU^Y8dzNF)zw@G zvDrPDm)EQC_OrK;=k@XVbslK0$Vo#4Bh;y^<>~&Y7d58U>+$DwHp`|9!@BsVlnv`CsbvIs_$u$a*k#8iC^)0@ReP+W@hugYQ3@xVn#k!=x2O}mnaRB|uXp&J8h>wtFnQ7m7I&0+>> zp{TYVczZm-qCp_Vi3>dHCx%nG)5DbXCI@uSlZy?9==0$)S4zo=rE0+1p6y`AL3DM{ zvgeYGuaZ6FY00Tx?aJWglTz*M!S-<2g;+Y*$*GVtX8Mg*%V*YQBO@ed^V0Jeg}T|b z2v=%n_SRTDsU}|H7Jo#QFY&Q4<)6{RE-6?yI|**!$Wt3o3fQS)(y@27R&F#oLY-yG z%(=qnml%1#K8%lyCTR)?C%zlsbqiap{(jelqx{t;T0lqu-mshW+_8<)FLBJ)?YIPFCL zawN*JPlLmRBOgm>6l&;m*VINSXBP^&S95e!P;Szyh@Ms5*|4y!5z>T*`dv5)MAv4h ztO3c5eD19jXDF+QIF|3TrQ3aP)MZd;fOS^G{0*EI(IyZCI%58w^mr)wR{Jgc{*__d zOf{gesmzw*z*Ejvot*Nm8_O;+gRY<~5Q2oRm!lHw63yhy{8Etta43ltziHWkEvGPz zqm8v{2=$FNlES?yN77c~mw!pq$W&+iv%(h` zOQUGFOqhE4Q3NetZEFg^SM$-V7lsASf9(gC9mlNc8I!`NEwv)}*+f_Ct&cFE8q=MCv|mvt9eH7^TqNU7;n5xfakhcJppEW39jz{K1^v0r14b6>^?8%40G}>`{*`X??{<$9J*;vp)}hW^ z170&_48hVr)2y5<)k{F?mg?Cm723m=xj!3+Wd|>s)$_IlrnR?6WvDzDQMHJRa1-GT`e3%Y338CGQOiLYe2i|3Fgcia}#fcl|ZK(lwLw> z1{whAEcFa?GY?& zZ*H;^B%|;RSe$t$c>OZk^pYNCK0Mn1Z=V&WCoz)bF7|FA-9IrQhPE{to;- z`#h%HcbD6{xhcH z?+ku-)xU%*{7IJ3{~WyVcTT^%W&SFM;Ae6Fm!tph@ZUEtFTR^U>F4v7<`?`=PtM=L zzgy!k`Dfv23;dVe&foFB8;5^wyA|OdmH%eJ{~iAOB=BNE{z*i{|AznFp8PwD i--qU373o0vzs? Date: Thu, 15 Dec 2022 12:28:46 +0300 Subject: [PATCH 036/234] meta 1.3.2.0 --- .../backend-api/src/main/resources/meta/meta.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/clearing-parent/backend-api/src/main/resources/meta/meta.xml b/clearing-parent/backend-api/src/main/resources/meta/meta.xml index ad76483c8..97923da8c 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/meta.xml +++ b/clearing-parent/backend-api/src/main/resources/meta/meta.xml @@ -1,6 +1,6 @@ - + @@ -623,7 +623,7 @@ - + @@ -693,7 +693,7 @@ - + @@ -705,9 +705,9 @@ - + - + @@ -717,7 +717,7 @@ - + @@ -727,12 +727,12 @@ - + -

+ From 7e70f2ee945dce70b1813470f0810c5cd1e2b4a6 Mon Sep 17 00:00:00 2001 From: aalehin Date: Thu, 15 Dec 2022 19:24:25 +0300 Subject: [PATCH 037/234] http://jira.mfd.msk:8088/browse/CLS-57 --- task manager update and launcher service --- .../scheduler/service/LauncherService.java | 6 ++ .../scheduler/service/TaskManager.java | 100 ++++++++++-------- 2 files changed, 59 insertions(+), 47 deletions(-) diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/LauncherService.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/LauncherService.java index 82e9862af..a41698909 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/LauncherService.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/LauncherService.java @@ -12,11 +12,14 @@ import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.platform.enumeration.Task; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import java.time.Instant; +import static ru.spcex.platform.utils.enumeration.IEnumKey.getEnumByKey; + public class LauncherService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg launcherMap; @@ -41,6 +44,9 @@ public class LauncherService extends QueueConsumer implements InitializingBean { log.debug("LauncherCommandRequest received"); Instant created = Instant.now(); Launcher launcher = new Launcher(); + if (getEnumByKey(Task.class, req.getTaskName()) == null) { + throw new IllegalStateException("Illegal task name:\t" + req.getTaskName()); + } launcher.setTask(req.getTaskName()); launcher.setSenderId(req.getUserId()); launcher.setCreated(created); diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java index 4db6e99b2..ee5b53975 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java @@ -1,23 +1,25 @@ package ru.spcex.clearing.scheduler.service; import com.hazelcast.core.EntryEvent; -import com.hazelcast.core.HazelcastInstance; -import com.hazelcast.core.IMap; import com.hazelcast.map.listener.EntryAddedListener; import com.hazelcast.map.listener.EntryRemovedListener; import com.hazelcast.map.listener.EntryUpdatedListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.lang.NonNull; import org.springframework.scheduling.TaskScheduler; +import org.springframework.stereotype.Service; +import ru.clearing.classes.statics.data.scheduler.Launcher; import ru.clearing.classes.statics.data.scheduler.PlannerAllToday; import ru.spcex.platform.enumeration.Status; import ru.spcex.platform.enumeration.Task; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.ZoneId; +import java.time.*; import java.util.ArrayList; import java.util.Collection; import java.util.Date; @@ -26,6 +28,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledFuture; import java.util.stream.Collectors; +import static ru.spcex.clearing.imdg.IMDGDistributedNames.Map_Launcher; import static ru.spcex.clearing.imdg.IMDGDistributedNames.Map_PlannerAllToday; import static ru.spcex.platform.enumeration.Status.*; import static ru.spcex.platform.utils.enumeration.IEnumKey.getEnumByKey; @@ -34,37 +37,41 @@ import static ru.spcex.platform.utils.enumeration.IEnumKey.getEnumByKey; * Планировщик задач, расписание берёт из Hazelcast map. *

*/ -public abstract class TaskManager implements EntryAddedListener, +@Service("userReportTask") +@Lazy +public class TaskManager implements EntryAddedListener, EntryUpdatedListener, EntryRemovedListener, InitializingBean { private static final Logger log = LoggerFactory.getLogger(TaskManager.class); + private final TaskScheduler taskScheduler; + private final ImdgProvider imdgProvider; + private Imdg launcherMap; + private Imdg plannerAllTodayMap; + private ConcurrentHashMap scheduledJobs; - protected HazelcastInstance hazelcastInstance; - protected IMap plannerAllTodayMapStore; - protected TaskScheduler taskScheduler; - - protected ConcurrentHashMap scheduledJobs; - - protected TaskManager(TaskScheduler taskScheduler, HazelcastInstance hazelcastInstance) { + @Autowired + TaskManager(TaskScheduler taskScheduler, + ImdgProvider imdgProvider) { this.taskScheduler = taskScheduler; - this.hazelcastInstance = hazelcastInstance; + this.imdgProvider = imdgProvider; } - private static LocalDateTime dateOldTypeConvert(Date oldDate) { + private static LocalDateTime dateOldTypeConvert(@NonNull Date oldDate) { return LocalDateTime.ofInstant(oldDate.toInstant(), ZoneId.systemDefault()); } - private static LocalDate dateTypeConvert(Date oldDate) { + private static LocalDate dateTypeConvert(@NonNull Date oldDate) { return dateOldTypeConvert(oldDate).toLocalDate(); } - private static LocalTime timeTypeConvert(Date oldDate) { + private static LocalTime timeTypeConvert(@NonNull Date oldDate) { return dateOldTypeConvert(oldDate).toLocalTime(); } @Override public void afterPropertiesSet() { - plannerAllTodayMapStore = hazelcastInstance.getMap(Map_PlannerAllToday); + this.launcherMap = imdgProvider.getImdg(Map_Launcher, Launcher.class); + this.plannerAllTodayMap = imdgProvider.getImdg(Map_PlannerAllToday, PlannerAllToday.class); scheduledJobs = new ConcurrentHashMap<>(); updateScheduler(); } @@ -88,19 +95,17 @@ public abstract class TaskManager implements EntryAddedListener schedulerAllTodays = plannerAllTodayMapStore.values(); + Collection schedulerAllTodays = plannerAllTodayMap.getAllValues(); Collection sortedSchedulers = schedulerAllTodays.stream().sorted((o1, o2) -> (Active.equalsByKey(o1.getTaskStatus()) && Cancel.equalsByKey(o2.getTaskStatus())) ? -1 : 0) .collect(Collectors.toCollection(ArrayList::new)); @@ -159,16 +164,12 @@ public abstract class TaskManager implements EntryAddedListener doJob(task), LocalDateTime.of(LocalDate.now(), taskTime).atZone(ZoneId.systemDefault()).toInstant()); ScheduledFuture oldFuture = scheduledJobs.put(taskTime, future); if (oldFuture != null && !oldFuture.isCancelled()) { //for synchronization, never @@ -203,10 +204,10 @@ public abstract class TaskManager implements EntryAddedListener Date: Fri, 16 Dec 2022 16:51:34 +0300 Subject: [PATCH 038/234] ActionType fix --- .../request/cud/schedule/ClearingCalendarNewAction.java | 1 + .../request/cud/schedule/ClearingCalendarUpdateAction.java | 1 + .../controller/request/cud/schedule/PlannerNewAction.java | 1 + .../request/cud/schedule/PlannerTemplateNewAction.java | 2 ++ .../request/cud/schedule/PlannerTemplateUpdateAction.java | 1 + .../controller/request/cud/schedule/PlannerUpdateAction.java | 1 + .../ru/spcex/clearing/backendapi/service/impl/OperatorImpl.java | 2 ++ 7 files changed, 9 insertions(+) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/ClearingCalendarNewAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/ClearingCalendarNewAction.java index eec5e9e5c..6d17ee7de 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/ClearingCalendarNewAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/ClearingCalendarNewAction.java @@ -40,6 +40,7 @@ public class ClearingCalendarNewAction implements IAction { return plannerNewRequest; } + @ApiModelProperty(hidden = true) @Override public ActionType getActionType() { return ActionType.NEW; diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerTemplateNewAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerTemplateNewAction.java index 244d4b522..2cb2a797b 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerTemplateNewAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerTemplateNewAction.java @@ -3,6 +3,7 @@ package ru.spcex.clearing.backendapi.controller.request.cud.schedule; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import io.swagger.annotations.ApiModelProperty; import ru.spcex.clearing.backendapi.domain.actions.IAction; import ru.spcex.clearing.backendapi.errors.BackEndError; import ru.spcex.clearing.platform.messaging.domain.ActionType; @@ -36,6 +37,7 @@ public class PlannerTemplateNewAction implements IAction, WithI return plannerUpdateRequest; } + @ApiModelProperty(hidden = true) @Override public ActionType getActionType() { return ActionType.UPDATE; diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/OperatorImpl.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/OperatorImpl.java index a5d1334bf..1f21495fd 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/OperatorImpl.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/OperatorImpl.java @@ -59,10 +59,12 @@ public class OperatorImpl implements IOperator { } private void throwValidate(String destination, IAction iAction) { + //простая валидация - которую можно запилить прямо внутри класса (наличие полей, отношения между датами etc.) Collection validationErrors = iAction.validate(); if (validationErrors.size() > 0) { throw new ActionValidationException(validationErrors); } + //валидация требующая IMDG поиска других сущностей и т.д. IValidator validator = validation.getValidator(destination, iAction); if (validator != null) { validator.tillFirstError().ifPresent(enumMessage -> { From f2b95b373fb85db52d8f439c3b6ad1dba9dd7463 Mon Sep 17 00:00:00 2001 From: ialbert Date: Fri, 16 Dec 2022 18:42:07 +0300 Subject: [PATCH 039/234] swagger fix --- .../controller/request/cud/schedule/PlannerNewAction.java | 2 +- .../request/cud/schedule/PlannerTemplateNewAction.java | 3 +++ .../request/cud/schedule/PlannerTemplateUpdateAction.java | 3 +++ .../controller/request/cud/schedule/PlannerUpdateAction.java | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerNewAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerNewAction.java index 6110e10d3..15e97b017 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerNewAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerNewAction.java @@ -26,7 +26,7 @@ public class PlannerNewAction implements IAction { @JsonProperty private String task; - @ApiModelProperty(value = "Время", example = "16:30:00") + @ApiModelProperty(value = "Время", dataType = "java.lang.String", example = "16:30:00") @JsonSerialize(using = LocalTimeSerializer.class) @JsonDeserialize(using = LocalTimeDeserializer.class) @JsonProperty diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerTemplateNewAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerTemplateNewAction.java index 2cb2a797b..2beafb2ed 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerTemplateNewAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerTemplateNewAction.java @@ -19,12 +19,15 @@ import java.util.Collection; import java.util.List; public class PlannerTemplateNewAction implements IAction { + @ApiModelProperty(value = "Идентификатор задачи", example = "ADBC") @JsonProperty public String task; + @ApiModelProperty(value = "Время задачи", dataType = "java.lang.String", example = "16:30:00") @JsonSerialize(using = LocalTimeSerializer.class) @JsonDeserialize(using = LocalTimeDeserializer.class) @JsonProperty public LocalTime taskTime; + @ApiModelProperty(value = "Статус", example = "ACTV") @JsonProperty public String taskStatus; diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerTemplateUpdateAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerTemplateUpdateAction.java index fc579523e..733b37f73 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerTemplateUpdateAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerTemplateUpdateAction.java @@ -23,12 +23,15 @@ public class PlannerTemplateUpdateAction implements IAction, WithI @JsonProperty private String task; - @ApiModelProperty(value = "Время", example = "16:30:00") + @ApiModelProperty(value = "Время", dataType = "java.lang.String", example = "16:30:00") @JsonSerialize(using = LocalTimeSerializer.class) @JsonDeserialize(using = LocalTimeDeserializer.class) @JsonProperty From b25d9de2bd4acc1c3f61d382d0711ad8c587ada4 Mon Sep 17 00:00:00 2001 From: ialbert Date: Fri, 16 Dec 2022 18:59:06 +0300 Subject: [PATCH 040/234] SDf12 importer Long fix --- .../clearing/dbf/importer/logic/data/tables/SDf12Table.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf12Table.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf12Table.java index f14dcbb46..ed4ea3620 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf12Table.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf12Table.java @@ -22,7 +22,8 @@ public class SDf12Table extends AbstractTable { SDf12 result = new SDf12(); result.setAccount((String) entity[0]); result.setDeal((String) entity[1]); - result.setStatus((Long) entity[2]); + BigDecimal status = (BigDecimal) entity[2]; + result.setStatus(status != null ? status.longValue() : null); result.setFileName(filename); result.setGenerationTime(Instant.now()); result.setGenerationId(fileId); From b67179ec8b7c8482111fd1f1ee16fad65036ea71 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Fri, 16 Dec 2022 19:55:44 +0300 Subject: [PATCH 041/234] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-25?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=BA=D0=BB?= =?UTF-8?q?=D0=B0=D1=81=D1=81=20LiabilitiesClaimsAssets.=20TODO=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF?= =?UTF-8?q?=D0=BE=20CLS-25?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../execution/LiabilitiesClaimsAssets.java | 229 ++++++++++++++++++ .../LiabilitiesClaimsAssetsMapStore.java | 108 +++++++++ clearing-parent/reports-service/pom.xml | 23 ++ .../reports/config/ClearingImdgConfig.java | 47 ++++ .../element/ReportsServiceSettings.java | 42 ++++ .../reports/services/ReportDataCollector.java | 41 ++++ .../reports/services/ReportsService.java | 1 + .../services/collector/Bt17_1_collector.java | 104 ++++++++ .../src/main/resources/application.properties | 6 +- .../services/impl/Bt17_1_collectorTest.java | 24 ++ .../platform/enumeration/ClearingStatus.java | 26 ++ .../clearing/imdg/IMDGDistributedNames.java | 2 + 12 files changed, 652 insertions(+), 1 deletion(-) create mode 100644 clearing-parent/classes/src/main/java/ru/clearing/classes/transaction/data/execution/LiabilitiesClaimsAssets.java create mode 100644 clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/LiabilitiesClaimsAssetsMapStore.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/ClearingImdgConfig.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_collector.java create mode 100644 clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/impl/Bt17_1_collectorTest.java create mode 100644 platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingStatus.java diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/transaction/data/execution/LiabilitiesClaimsAssets.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/transaction/data/execution/LiabilitiesClaimsAssets.java new file mode 100644 index 000000000..00eff76d8 --- /dev/null +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/transaction/data/execution/LiabilitiesClaimsAssets.java @@ -0,0 +1,229 @@ +package ru.clearing.classes.transaction.data.execution; + +import ru.clearing.classes.ConstSerializable; +import ru.clearing.classes.objects.BusinessObject; + +import java.math.BigDecimal; +import java.time.Instant; + +public class LiabilitiesClaimsAssets extends BusinessObject { + private static final long serialVersionUID = ConstSerializable.serialVersionUID; + + private Long companyId; + private Instant clearingDate; + private Long accountId; + private String accountType; + private String account; + private BigDecimal liabilitiesQuantity; + private BigDecimal claimsQuantity; + private String currency; + private Instant settlementDate; + private Instant tradingDate; + private Instant refundDate; + private BigDecimal price; + private Long securityId; + private String tradingCode; + private String clearingCode; + private String shortName; + private String contract; + private String comment; + private String fullName; + private Long parentId; + private Long liabilitiesClaimsMoneyId; + private Long clearingStatus; + private Long paymentId; + private Long refundPaymentId; + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long value) { + this.companyId = value; + } + + public Instant getClearingDate() { + return clearingDate; + } + + public void setClearingDate(Instant value) { + this.clearingDate = value; + } + + public Long getAccountId() { + return accountId; + } + + public void setAccountId(Long value) { + this.accountId = value; + } + + public String getAccountType() { + return accountType; + } + + public void setAccountType(String value) { + this.accountType = value; + } + + public String getAccount() { + return account; + } + + public void setAccount(String value) { + this.account = value; + } + + public BigDecimal getLiabilitiesQuantity() { + return liabilitiesQuantity; + } + + public void setLiabilitiesQuantity(BigDecimal value) { + this.liabilitiesQuantity = value; + } + + public BigDecimal getClaimsQuantity() { + return claimsQuantity; + } + + public void setClaimsQuantity(BigDecimal value) { + this.claimsQuantity = value; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String value) { + this.currency = value; + } + + public Instant getSettlementDate() { + return settlementDate; + } + + public void setSettlementDate(Instant value) { + this.settlementDate = value; + } + + public Instant getTradingDate() { + return tradingDate; + } + + public void setTradingDate(Instant value) { + this.tradingDate = value; + } + + public Instant getRefundDate() { + return refundDate; + } + + public void setRefundDate(Instant value) { + this.refundDate = value; + } + + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal value) { + this.price = value; + } + + public Long getSecurityId() { + return securityId; + } + + public void setSecurityId(Long value) { + this.securityId = value; + } + + public String getTradingCode() { + return tradingCode; + } + + public void setTradingCode(String value) { + this.tradingCode = value; + } + + public String getClearingCode() { + return clearingCode; + } + + public void setClearingCode(String value) { + this.clearingCode = value; + } + + public String getShortName() { + return shortName; + } + + public void setShortName(String value) { + this.shortName = value; + } + + public String getContract() { + return contract; + } + + public void setContract(String value) { + this.contract = value; + } + + public String getComment() { + return comment; + } + + public void setComment(String value) { + this.comment = value; + } + + public String getFullName() { + return fullName; + } + + public void setFullName(String value) { + this.fullName = value; + } + + public Long getParentId() { + return parentId; + } + + public void setParentId(Long value) { + this.parentId = value; + } + + public Long getLiabilitiesClaimsMoneyId() { + return liabilitiesClaimsMoneyId; + } + + public void setLiabilitiesClaimsMoneyId(Long value) { + this.liabilitiesClaimsMoneyId = value; + } + + public Long getClearingStatus() { + return clearingStatus; + } + + public void setClearingStatus(Long value) { + this.clearingStatus = value; + } + + public Long getPaymentId() { + return paymentId; + } + + public void setPaymentId(Long value) { + this.paymentId = value; + } + + public Long getRefundPaymentId() { + return refundPaymentId; + } + + public void setRefundPaymentId(Long value) { + this.refundPaymentId = value; + } + +} diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/LiabilitiesClaimsAssetsMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/LiabilitiesClaimsAssetsMapStore.java new file mode 100644 index 000000000..9976d6db8 --- /dev/null +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/LiabilitiesClaimsAssetsMapStore.java @@ -0,0 +1,108 @@ +package ru.spcex.clearing.imdg.businessobject; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.classes.transaction.data.execution.LiabilitiesClaimsAssets; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.TemplateMapStore; +import ru.spcex.platform.utils.time.TimeUtil; + +import java.math.BigDecimal; +import java.sql.ResultSet; +import java.sql.SQLException; + +@Component +public class LiabilitiesClaimsAssetsMapStore extends TemplateMapStore { + + public LiabilitiesClaimsAssetsMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getMapName() { + return IMDGDistributedNames.Map_LiabilitiesClaimsAssets; + } + + @Override + public String getTableName() { + return "LIABILITIES_CLAIMS_ASSETS"; + } + + @Override + public String[] getFields() { + return new String[]{ + "ID", "COMPANY_ID", "CREATED_AT", "UPDATED_AT", "CLEARING_DATE", "ACCOUNT_ID", "ACCOUNT_TYPE", "ACCOUNT", + "LIABILITIES_QUANTITY", "CLAIMS_QUANTITY", "CURRENCY", "SETTLEMENT_DATE", "TRADING_DATE", "REFUND_DATE", + "PRICE", "SECURITY_ID", "TRADING_CODE", "CLEARING_CODE", "SHORT_NAME", "CONTRACT", "COMMENT", "FULL_NAME", + "PARENT_ID", "LIABILITIES_CLAIMS_MONEY_ID", "CLEARING_STATUS", "PAYMENT_ID", "REFUND_PAYMENT_ID" + }; + } + + @Override + public LiabilitiesClaimsAssets objectReader(ResultSet resultSet) throws SQLException { + LiabilitiesClaimsAssets object = new LiabilitiesClaimsAssets(); + object.setId(resultSet.getObject("ID", Long.class)); + object.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class)); + object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT")); + object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT")); + object.setClearingDate(getInstantFromTimestamp(resultSet, "CLEARING_DATE")); + object.setAccountId(resultSet.getObject("ACCOUNT_ID", Long.class)); + object.setAccountType(resultSet.getObject("ACCOUNT_TYPE", String.class)); + object.setAccount(resultSet.getObject("ACCOUNT", String.class)); + object.setLiabilitiesQuantity(resultSet.getObject("LIABILITIES_QUANTITY", BigDecimal.class)); + object.setClaimsQuantity(resultSet.getObject("CLAIMS_QUANTITY", BigDecimal.class)); + object.setCurrency(resultSet.getObject("CURRENCY", String.class)); + object.setSettlementDate(getInstantFromTimestamp(resultSet, "SETTLEMENT_DATE")); + object.setTradingDate(getInstantFromTimestamp(resultSet, "TRADING_DATE")); + object.setRefundDate(getInstantFromTimestamp(resultSet, "REFUND_DATE")); + object.setPrice(resultSet.getObject("PRICE", BigDecimal.class)); + object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class)); + object.setTradingCode(resultSet.getObject("TRADING_CODE", String.class)); + object.setClearingCode(resultSet.getObject("CLEARING_CODE", String.class)); + object.setShortName(resultSet.getObject("SHORT_NAME", String.class)); + object.setContract(resultSet.getObject("CONTRACT", String.class)); + object.setComment(resultSet.getObject("COMMENT", String.class)); + object.setFullName(resultSet.getObject("FULL_NAME", String.class)); + object.setParentId(resultSet.getObject("PARENT_ID", Long.class)); + object.setLiabilitiesClaimsMoneyId(resultSet.getObject("LIABILITIES_CLAIMS_MONEY_ID", Long.class)); + object.setClearingStatus(resultSet.getObject("CLEARING_STATUS", Long.class)); + object.setPaymentId(resultSet.getObject("PAYMENT_ID", Long.class)); + object.setRefundPaymentId(resultSet.getObject("REFUND_PAYMENT_ID", Long.class)); + return object; + } + + @Override + public Object[] objectToField(LiabilitiesClaimsAssets object) { + Object[] args = new Object[]{ + object.getId(), + object.getCompanyId(), + TimeUtil.toDateFromInstant(object.getCreated()), + TimeUtil.toDateFromInstant(object.getUpdated()), + TimeUtil.toDateFromInstant(object.getClearingDate()), + object.getAccountId(), + object.getAccountType(), + object.getAccount(), + object.getLiabilitiesQuantity(), + object.getClaimsQuantity(), + object.getCurrency(), + TimeUtil.toDateFromInstant(object.getSettlementDate()), + TimeUtil.toDateFromInstant(object.getTradingDate()), + TimeUtil.toDateFromInstant(object.getRefundDate()), + object.getPrice(), + object.getSecurityId(), + object.getTradingCode(), + object.getClearingCode(), + object.getShortName(), + object.getContract(), + object.getComment(), + object.getFullName(), + object.getParentId(), + object.getLiabilitiesClaimsMoneyId(), + object.getClearingStatus(), + object.getPaymentId(), + object.getRefundPaymentId() + }; + return args; + } + +} \ No newline at end of file diff --git a/clearing-parent/reports-service/pom.xml b/clearing-parent/reports-service/pom.xml index 323090060..54846a228 100644 --- a/clearing-parent/reports-service/pom.xml +++ b/clearing-parent/reports-service/pom.xml @@ -45,11 +45,34 @@ 5.1.0 + + + ru.spcex.clearing + classes + + + ru.spcex.platform + platform-enum + + + ru.spcex.clearing + dictionary + + + ru.spcex.platform + platform-imdg-api-hazelcast-impl + + org.junit.jupiter junit-jupiter test + + org.mockito + mockito-core + test + diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/ClearingImdgConfig.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/ClearingImdgConfig.java new file mode 100644 index 000000000..95f1bb7a9 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/ClearingImdgConfig.java @@ -0,0 +1,47 @@ +package ru.spcex.clearing.reports.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import ru.spcex.clearing.reports.config.element.ReportsServiceSettings; +import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; + +@Configuration +public class ClearingImdgConfig { + private static ThreadPoolTaskExecutor createThreadPoolTaskExecutor(int maxPoolSz, boolean waitForCompletion) { + ThreadPoolTaskExecutor pool = new ThreadPoolTaskExecutor(); + if (maxPoolSz > 2) { + pool.setKeepAliveSeconds(60); + pool.setAllowCoreThreadTimeOut(true); + } + pool.setCorePoolSize(maxPoolSz); + pool.setWaitForTasksToCompleteOnShutdown(waitForCompletion); + return pool; + } + + @Bean(name = "taskExecutorHazelcastClientInitializer") + public ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer() { + return createThreadPoolTaskExecutor(1, true); + } + + @Bean(name = "taskExecutorIdGeneratorAwaiter") + public ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter() { + return createThreadPoolTaskExecutor(1, false); + } + + @Autowired + @Bean + public ImdgProvider imdgProvider( + @Qualifier("taskExecutorHazelcastClientInitializer") ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer, + @Qualifier("taskExecutorIdGeneratorAwaiter") ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter, + ReportsServiceSettings settings + ) { + return new HazelcastService(taskExecutorHazelcastClientInitializer, + taskExecutorIdGeneratorAwaiter, + settings.getHazelcast()); + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java new file mode 100644 index 000000000..7cb550e10 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java @@ -0,0 +1,42 @@ +package ru.spcex.clearing.reports.config.element; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.PropertySource; +import org.springframework.stereotype.Component; +//import ru.spcex.clearing.platform.messaging.config.element.KafkaConsumerSettings; +//import ru.spcex.clearing.platform.messaging.config.element.KafkaProducerSettings; +import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams; + +@Component +@PropertySource("file:${spring.config.location}/application.properties") +//todo for test @PropertySource("classpath:application.properties") +@ConfigurationProperties("reports-service") +public class ReportsServiceSettings { + private HazelcastClientParams hazelcast; +// private KafkaConsumerSettings kafkaConsumer; +// private KafkaProducerSettings kafkaProducer; + + public HazelcastClientParams getHazelcast() { + return hazelcast; + } + + public void setHazelcast(HazelcastClientParams hazelcast) { + this.hazelcast = hazelcast; + } + +// public KafkaConsumerSettings getKafkaConsumer() { +// return kafkaConsumer; +// } +// +// public void setKafkaConsumer(KafkaConsumerSettings kafkaConsumer) { +// this.kafkaConsumer = kafkaConsumer; +// } +// +// public KafkaProducerSettings getKafkaProducer() { +// return kafkaProducer; +// } +// +// public void setKafkaProducer(KafkaProducerSettings kafkaProducer) { +// this.kafkaProducer = kafkaProducer; +// } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java new file mode 100644 index 000000000..a3d5683e0 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java @@ -0,0 +1,41 @@ +package ru.spcex.clearing.reports.services; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ru.spcex.clearing.reports.reports.AbstractReport; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.List; + +public abstract class ReportDataCollector { + public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy"); + public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy'T'HH:mm:ss"); + + protected final Logger log = LoggerFactory.getLogger(getClass()); + + + /** + * T extends ReportWithPeriod + * @return + */ + abstract public List collectReportWithPeriod(LocalDate startDate, LocalDate endDate); + + /** + * T extends ReportWithClearingStatus + * @param startDate + * @param endDate + * @return + */ + abstract public List collectReportWithClearingStatus(LocalDate startDate, LocalDate endDate, String clearingStatus); + + /** + * + * @param startDate + * @param endDate + * @param dateTimeNow LocalDateTime.now() + * @return + */ + abstract public String getFileName(LocalDate startDate, LocalDate endDate, LocalDateTime dateTimeNow); +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportsService.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportsService.java index eb81e8c85..54f5b2277 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportsService.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportsService.java @@ -52,6 +52,7 @@ public class ReportsService { /* ========= БТ 17.1 ========== */ + // todo see ReportDataCollector ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(LocalDate.now(), LocalDate.now(), "BR", diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_collector.java new file mode 100644 index 000000000..e3d323dac --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_collector.java @@ -0,0 +1,104 @@ +package ru.spcex.clearing.reports.services.collector; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.generated.ClearingMemberCategory; +import ru.clearing.classes.statics.data.misc.Listing; +import ru.clearing.classes.transaction.data.execution.LiabilitiesClaimsAssets; +import ru.clearing.platform.dictionary.ClearingStatusDictionary; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.reports.reports.bt_17_1.ReportBR_0420315_P1; +import ru.spcex.clearing.reports.services.ReportDataCollector; +import ru.spcex.platform.enumeration.ClearingStatus; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.*; + +@Component +public class Bt17_1_collector extends ReportDataCollector { + private Imdg companyImdg; + private Imdg liabilitiesClaimsAssetsImdg; + private Imdg clearingMemberCategoryImdg; + private Imdg clearingStatusDictionaryImdg; + private Imdg

listingImdg; + + @Autowired + public Bt17_1_collector(ImdgProvider imdgProvider) { + companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); + liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); + clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); + clearingStatusDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingStatusDictionary, ClearingStatusDictionary.class); + listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class); + } + + @Override + public List collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { + if (startDate.isAfter(endDate)) { + throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")"); + } + List result = new ArrayList<>(); + + String ql = String.format("'%s' <= refundDate and refundDate <= '%s'", startDate, endDate); + Collection liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql); + for (LiabilitiesClaimsAssets liability : liabilities) { + final Long companyId = liability.getCompanyId(); + Company company = companyImdg.getSingleObjectByID(companyId); + if (company != null) { + ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId)); + if (cmc == null || !Arrays.asList("I", "V", "I,V").contains(cmc.getClearingMemberCategory())) { + //todo уточнить фильтр need filter by I, V? + log.trace("Filtered ClearingMemberCategory[{}].ClearingMemberCategory={}", + cmc == null ? null : cmc.getId(), cmc == null ? null : cmc.getClearingMemberCategory()); + continue; + } + ClearingStatusDictionary clearingStatus = clearingStatusDictionaryImdg.getSingleObjectByID(liability.getClearingStatus()); + if (clearingStatus == null || !ClearingStatus.OK.getKey().equals(clearingStatus.getCode())) { + continue; + } + ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(startDate, endDate, + "BR", + cmc.getClearingMemberCategory(), + clearingStatus.getCode()); + + Listing listing; + { + Map qParam = new HashMap<>(); + qParam.put("market", "MKRS"); // todo use const + qParam.put("securityId", liability.getSecurityId()); + listing = listingImdg.getSingleObjectByFieldValues(qParam); + } +// liability.getPrice()// todo как там с учётом валют это делать? + Integer contractorQty = StringUtils.isEmpty(liability.getContract()) ? 0 : 1; // todo то суммировать надо. Связь похоже много к 1. // liability.getContract() В данное поле необходимо записать общее количество исполненных договоров, шт. элемент contract из бизнес-объекта liabilitiesClaimsAssets + BigDecimal liabilitiesAmount = liability.getPrice() == null ? BigDecimal.ZERO : liability.getPrice(); // todo как правильно считать? + ReportBR_0420315_P1.Info_0420315_P1 info_0420315_p1 = new ReportBR_0420315_P1.Info_0420315_P1("companyId", + company.getFullName(), + listing == null ? null : listing.getMarket(), + contractorQty.toString(), + liabilitiesAmount.toString()); + reportBR_0420315_p1.getRows().add(info_0420315_p1); + + result.add(reportBR_0420315_p1); + } + } + + return result; + } + + @Override + public List collectReportWithClearingStatus(LocalDate startDate, LocalDate endDate, String clearingStatus) { + throw new IllegalStateException("clearingStatus not supported by this class"); + } + + + @Override + public String getFileName(LocalDate startDate, LocalDate endDate, LocalDateTime dateTimeNow) { + return String.format("REPBR.0420315.P1.%s-%s.%s", DATE_FORMATTER.format(startDate), DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(dateTimeNow)); + } +} diff --git a/clearing-parent/reports-service/src/main/resources/application.properties b/clearing-parent/reports-service/src/main/resources/application.properties index fdc884583..514eaa82e 100644 --- a/clearing-parent/reports-service/src/main/resources/application.properties +++ b/clearing-parent/reports-service/src/main/resources/application.properties @@ -1,3 +1,7 @@ server.port=8080 server.servlet.context-path=/reports_service -spring.main.web-application-type=servlet \ No newline at end of file +spring.main.web-application-type=servlet + +reports-service.hazelcast.cluster-members=127.0.0.1:5701 +reports-service.hazelcast.login=dev +reports-service.hazelcast.password=dev-pass diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/impl/Bt17_1_collectorTest.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/impl/Bt17_1_collectorTest.java new file mode 100644 index 000000000..6b023cc50 --- /dev/null +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/impl/Bt17_1_collectorTest.java @@ -0,0 +1,24 @@ +package ru.spcex.clearing.reports.services.impl; + +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; +import ru.spcex.clearing.reports.services.collector.Bt17_1_collector; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +import static org.junit.jupiter.api.Assertions.*; + +class Bt17_1_collectorTest { + + @Test + void getFileName() { + Bt17_1_collector collector = Mockito.mock(Bt17_1_collector.class); + Mockito.when(collector.getFileName(Mockito.any(),Mockito.any(),Mockito.any())).thenCallRealMethod(); + + String str = collector.getFileName(LocalDate.of(2020,1,1), + LocalDate.of(2020,1,31), + LocalDateTime.of(2021,4,20,12,20,44)); + assertEquals("REPBR.0420315.P1.01.01.2020-31.01.2020.20.04.2021T12:20:44", str); + } +} \ No newline at end of file diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingStatus.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingStatus.java new file mode 100644 index 000000000..8bd22f9ff --- /dev/null +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingStatus.java @@ -0,0 +1,26 @@ +package ru.spcex.platform.enumeration; + +import ru.spcex.platform.utils.enumeration.IEnumKey; + +public enum ClearingStatus implements IEnumKey { + OK("OK"), + FAIL("FAIL"), + MNG("MNG"), + PROC("PROC"); + + ClearingStatus(String key) { + this.key = key; + } + + private String key; + + @Override + public String getKey() { + return this.key; + } + + @Override + public boolean equalsByKey(String key) { + return IEnumKey.super.equalsByKey(key); + } +} diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java index b6bf66373..5d5225e73 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java @@ -108,6 +108,8 @@ public final class IMDGDistributedNames { public static final String Map_PaymentInstruction = "Map_PaymentInstruction"; public static final String Map_Session = "Map_Session"; public static final String Map_Notification = "Map_Notification"; + public static final String Map_LiabilitiesClaimsAssets = "Map_LiabilitiesClaimsAssets"; + public static final String MAP_SEQUENCE_NAME = "MAP_SEQUENCE_NAME"; // todo вынести idGenerator отдельно и завернуть в метод, чтобы не напрямую обращаться. private IMDGDistributedNames() { From c4149935a00024803969eb2f8923751a677c4a44 Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 19 Dec 2022 13:26:04 +0300 Subject: [PATCH 042/234] dbf-importer added error directory --- .../dbf/importer/config/settings/Store.java | 9 +++++++++ .../dbf/importer/logic/Processor.java | 13 +++++++----- .../importer/logic/data/ResultContainer.java | 10 ++++++++++ .../logic/stages/ChangeDirOfFileStage.java | 20 ++++++++++++++++--- .../dbf/importer/logic/stages/Stage.java | 4 ++++ .../src/main/resources/application.properties | 1 + 6 files changed, 49 insertions(+), 8 deletions(-) diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/settings/Store.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/settings/Store.java index c4d563268..cc456f796 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/settings/Store.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/settings/Store.java @@ -4,6 +4,7 @@ public class Store { private String srcDir; private String outDir; + private String outDirError; private boolean deleteSrcFiles = true; public String getSrcDir() { @@ -29,4 +30,12 @@ public class Store { public void setDeleteSrcFiles(boolean deleteSrcFiles) { this.deleteSrcFiles = deleteSrcFiles; } + + public String getOutDirError() { + return outDirError; + } + + public void setOutDirError(String outDirError) { + this.outDirError = outDirError; + } } diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/Processor.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/Processor.java index 86340fc6f..f5a50fc3e 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/Processor.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/Processor.java @@ -22,18 +22,21 @@ public class Processor { public void process(ResultContainer task) { log.info("uuid {}. Task started", task.getUuid()); - StageResult result = null; long startMills = System.currentTimeMillis(); for (Stage currStage : pipeline) { + if (statusIsFinal(task.getLastStageStatus()) && currStage.skipCompleted()) {continue;} log.info("uuid {}. Stage: {}", task.getUuid(), currStage.getClass().getSimpleName()); - result = currStage.process(task); - log.info("uuid {}. Stage {} finished", task.getUuid(), currStage.getClass().getSimpleName()); - if (Arrays.asList(StageResult.ERROR, StageResult.COMPLETE).contains(result)) break; + task.setLastStageStatus(currStage.process(task)); + log.info("uuid {}. Stage {} finished with status {}", task.getUuid(), currStage.getClass().getSimpleName(), task.getLastStageStatus()); } long endMills = System.currentTimeMillis(); log.info("uuid {}. Task completed, result: {}, time working: {} ms", task.getUuid(), - result, + task, endMills - startMills); } + + private boolean statusIsFinal(StageResult previousStageStatus) { + return Arrays.asList(StageResult.ERROR, StageResult.COMPLETE).contains(previousStageStatus); + } } diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/ResultContainer.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/ResultContainer.java index d022f674b..fc5b7b7f2 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/ResultContainer.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/ResultContainer.java @@ -1,6 +1,7 @@ package ru.spcex.clearing.dbf.importer.logic.data; import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable; +import ru.spcex.clearing.dbf.importer.logic.data.enums.StageResult; import java.io.File; import java.util.UUID; @@ -12,6 +13,7 @@ public class ResultContainer { private UUID uuid; private ETable dbfTable; private File dbfFile; + private StageResult lastStageStatus; private byte[] dbfSource; @@ -57,4 +59,12 @@ public class ResultContainer { public void setUuid(UUID uuid) { this.uuid = uuid; } + + public StageResult getLastStageStatus() { + return lastStageStatus; + } + + public void setLastStageStatus(StageResult lastStageRes) { + this.lastStageStatus = lastStageRes; + } } diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ChangeDirOfFileStage.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ChangeDirOfFileStage.java index 6c30f8b30..411b37214 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ChangeDirOfFileStage.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ChangeDirOfFileStage.java @@ -27,11 +27,21 @@ public class ChangeDirOfFileStage extends Stage { this.settings = settings; } + @Override + public boolean skipCompleted() { + return false; + } @Override public StageResult process(ResultContainer resultContainer) { File srcDir = new File(settings.getStore().getSrcDir()); - File outDir = new File(settings.getStore().getOutDir()); + File outDir; + if (resultContainer.getLastStageStatus().equals(StageResult.ERROR)) { + outDir = new File(settings.getStore().getOutDirError()); + + } else { + outDir = new File(settings.getStore().getOutDir()); + } File dbfFile = resultContainer.getDbfFile(); if (!srcDir.exists()) { @@ -39,7 +49,7 @@ public class ChangeDirOfFileStage extends Stage { return StageResult.ERROR; } if (!outDir.exists()) { - log.warn("SettlementHouse_DocIn does not exists! Trying to made new!"); + log.warn("ouput directory {} does not exists! Trying to made new!", outDir.getAbsolutePath()); if (outDir.mkdir()) { log.error("Made dir {} successfully!", outDir.getName()); } else { @@ -60,6 +70,10 @@ public class ChangeDirOfFileStage extends Stage { return StageResult.ERROR; } - return StageResult.COMPLETE; + if (resultContainer.getLastStageStatus().equals(StageResult.ERROR)) { + return StageResult.ERROR; + } else { + return StageResult.COMPLETE; + } } } diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/Stage.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/Stage.java index ee41691dd..084b6e8d1 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/Stage.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/Stage.java @@ -9,4 +9,8 @@ public abstract class Stage { protected Logger log = LoggerFactory.getLogger(getClass()); public abstract StageResult process(ResultContainer resultContainer); + + public boolean skipCompleted() { + return true; + } } diff --git a/clearing-parent/dbf-importer/src/main/resources/application.properties b/clearing-parent/dbf-importer/src/main/resources/application.properties index c1c2a3fe0..2d3916b1d 100644 --- a/clearing-parent/dbf-importer/src/main/resources/application.properties +++ b/clearing-parent/dbf-importer/src/main/resources/application.properties @@ -7,6 +7,7 @@ import-dbf-service.scheduler.check-src-dir-cron=* * * * 1 ? import-dbf-service.store.delete-src-files=false import-dbf-service.store.src-dir=/opt/clearing/file/importer/ import-dbf-service.store.out-dir=/opt/clearing/file/importer/loaded/ +import-dbf-service.store.out-dir-error=/opt/clearing/file/importer/error/ import-dbf-service.common.encoding-source=cp866 import-dbf-service.common.insert-batch-size=100 From 2474be998b4e87c9df36bee41a845594b89b48ac Mon Sep 17 00:00:00 2001 From: aalehin Date: Mon, 19 Dec 2022 14:28:48 +0300 Subject: [PATCH 043/234] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-63?= =?UTF-8?q?=20---=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB=20UserAuthA?= =?UTF-8?q?ction?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/queue/user/UserController.java | 4 +- .../request/cud/utilities/UserAuthAction.java | 40 +++++++++++++------ 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/user/UserController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/user/UserController.java index 4263f3661..9c676f3f0 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/user/UserController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/user/UserController.java @@ -37,7 +37,9 @@ public class UserController extends AbstractQueueController { private final Imdg userImdg; @Autowired - public UserController(IOperator operator, IStateLoader stateLoader, ImdgProvider imdgProvider) { + public UserController(IOperator operator, + IStateLoader stateLoader, + ImdgProvider imdgProvider) { super(operator); this.stateLoader = stateLoader; this.userImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_User, User.class); diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/UserAuthAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/UserAuthAction.java index 260c7b901..b5559e8dd 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/UserAuthAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/UserAuthAction.java @@ -1,31 +1,41 @@ package ru.spcex.clearing.backendapi.controller.request.cud.utilities; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import ru.spcex.clearing.backendapi.domain.actions.IAction; import ru.spcex.clearing.backendapi.errors.BackEndError; import ru.spcex.clearing.platform.messaging.domain.ActionType; import ru.spcex.clearing.platform.messaging.domain.cud.utilities.UserAuthRequest; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.InstantDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantSerializer; import ru.spcex.platform.utils.enumeration.EnumMessage; +import java.time.Instant; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; public class UserAuthAction implements IAction { - private final UserAuthRequest authRequest; - - public UserAuthAction() { - this.authRequest = new UserAuthRequest(); - } - - public UserAuthRequest getAuthRequest() { - return authRequest; - } + @JsonProperty + private String username; + @JsonProperty + private List roles = new ArrayList<>(); + @JsonSerialize(using = InstantSerializer.class) + @JsonDeserialize(using = InstantDeserializer.class) + @JsonProperty + private Instant time; + @JsonProperty + private String serverIp; + @JsonProperty + private String clientIp; @Override public Collection validate() { - long count = authRequest.getRoles().stream().distinct().count(); - if (count != authRequest.getRoles().size()) { + long count = roles.stream().distinct().count(); + if (count != roles.size()) { return List.of(new EnumMessage(BackEndError.KeycloakRepeatedRoles)); } return Collections.emptyList(); @@ -33,7 +43,13 @@ public class UserAuthAction implements IAction { @Override public UserAuthRequest toRequest() { - return authRequest; + UserAuthRequest userAuthRequest = new UserAuthRequest(); + userAuthRequest.setServerIp(serverIp); + userAuthRequest.setUsername(username); + userAuthRequest.setRoles(roles); + userAuthRequest.setTime(time); + return userAuthRequest; + } @Override From 0b7c73b0d00b7c42f35d748310507c66f066056e Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 19 Dec 2022 15:38:16 +0300 Subject: [PATCH 044/234] SDF16 import fix --- .../importer/logic/data/tables/SDf16Table.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf16Table.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf16Table.java index aaeda1047..7719b1e95 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf16Table.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf16Table.java @@ -21,14 +21,14 @@ public class SDf16Table extends AbstractTable { public SDf16 getEntity(Object[] entity) { SDf16 result = new SDf16(); // result.setDate(TimeUtil.strToInstant((String) entity[0])); - result.setAccount((String) entity[1]); - result.setSum((BigDecimal) entity[2]); - result.setMarket((String) entity[3]); - result.setType((String) entity[4]); - result.setInn((BigDecimal) entity[5]); - result.setBic((BigDecimal) entity[6]); - result.setSpec((String) entity[7]); - result.setNumber((BigDecimal) entity[8]); + result.setAccount((String) entity[0]); + result.setSum((BigDecimal) entity[1]); + result.setMarket((String) entity[2]); + result.setType((String) entity[3]); + result.setInn((BigDecimal) entity[4]); + result.setBic((BigDecimal) entity[5]); + result.setSpec((String) entity[6]); + result.setNumber((BigDecimal) entity[7]); result.setFileName(filename); result.setGenerationTime(Instant.now()); result.setGenerationId(fileId); From 9464b209de18813e2afd28d28ddd264b169f6d42 Mon Sep 17 00:00:00 2001 From: aalehin Date: Mon, 19 Dec 2022 16:15:10 +0300 Subject: [PATCH 045/234] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-63?= =?UTF-8?q?=20---=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spcex/clearing/backendapi/service/UserAuthProcessor.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/UserAuthProcessor.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/UserAuthProcessor.java index 32615128f..975b75dee 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/UserAuthProcessor.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/UserAuthProcessor.java @@ -35,7 +35,7 @@ public class UserAuthProcessor { public void sendAuthSuccessEvent(String identifier, Collection roles, String userIp, String serverIp) { UserAuthAction authEvent = new UserAuthAction(); - UserAuthRequest requestData = authEvent.getAuthRequest(); + UserAuthRequest requestData = authEvent.toRequest(); requestData.setUsername(identifier); requestData.setTime(Instant.now()); requestData.setRoles(new ArrayList<>(roles)); @@ -69,7 +69,7 @@ public class UserAuthProcessor { while (networkInterfaces.hasMoreElements()) { NetworkInterface networkInterface = networkInterfaces.nextElement(); Enumeration inetAddresses = networkInterface.getInetAddresses(); - while(inetAddresses.hasMoreElements()) { + while (inetAddresses.hasMoreElements()) { InetAddress inetAddress = inetAddresses.nextElement(); if (inetAddress != null) { serverAddress = inetAddress.getHostAddress(); From 8d6b5ef9be517eb930b4e1bec913e798d0dfed99 Mon Sep 17 00:00:00 2001 From: aalehin Date: Mon, 19 Dec 2022 16:33:55 +0300 Subject: [PATCH 046/234] http://jira.mfd.msk:8088/browse/CLS-63 --- fix up --- .../request/cud/utilities/UserAuthAction.java | 40 +++++++++++++++++++ .../backendapi/service/UserAuthProcessor.java | 6 +-- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/UserAuthAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/UserAuthAction.java index b5559e8dd..f7f55519d 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/UserAuthAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/UserAuthAction.java @@ -56,4 +56,44 @@ public class UserAuthAction implements IAction { public ActionType getActionType() { return ActionType.SYSTEM; } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public List getRoles() { + return roles; + } + + public void setRoles(List roles) { + this.roles = roles; + } + + public Instant getTime() { + return time; + } + + public void setTime(Instant time) { + this.time = time; + } + + public String getServerIp() { + return serverIp; + } + + public void setServerIp(String serverIp) { + this.serverIp = serverIp; + } + + public String getClientIp() { + return clientIp; + } + + public void setClientIp(String clientIp) { + this.clientIp = clientIp; + } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/UserAuthProcessor.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/UserAuthProcessor.java index 975b75dee..97f35a7a6 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/UserAuthProcessor.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/UserAuthProcessor.java @@ -8,7 +8,6 @@ import org.springframework.stereotype.Service; import ru.spcex.clearing.backendapi.controller.request.cud.utilities.UserAuthAction; import ru.spcex.clearing.backendapi.controller.request.cud.utilities.UserLogoutAction; import ru.spcex.clearing.platform.messaging.domain.Consts; -import ru.spcex.clearing.platform.messaging.domain.cud.utilities.UserAuthRequest; import ru.spcex.clearing.platform.messaging.domain.cud.utilities.UserLogoutRequest; import ru.spcex.platform.utils.log.ExceptionUtils; @@ -34,15 +33,14 @@ public class UserAuthProcessor { } public void sendAuthSuccessEvent(String identifier, Collection roles, String userIp, String serverIp) { - UserAuthAction authEvent = new UserAuthAction(); - UserAuthRequest requestData = authEvent.toRequest(); + UserAuthAction requestData = new UserAuthAction(); requestData.setUsername(identifier); requestData.setTime(Instant.now()); requestData.setRoles(new ArrayList<>(roles)); requestData.setServerIp(serverIp + ":" + serverPort); //getServerAddress() + ":" + serverPort requestData.setClientIp(userIp); try { - operator.sendRequestToQueue(Consts.USER_AUTH_SUCCESS, authEvent); + operator.sendRequestToQueue(Consts.USER_AUTH_SUCCESS, requestData); } catch (Throwable e) { //ExecutionException | InterruptedException log.error(ExceptionUtils.getStackTrace(e)); } From 52a9f6e00d6dcbbea05481a63113598a9b6770b1 Mon Sep 17 00:00:00 2001 From: akulikov Date: Mon, 19 Dec 2022 17:47:38 +0300 Subject: [PATCH 047/234] insert values in docx (raw) --- .../reports/services/DOCXService.java | 146 +++++++++++++++--- .../reports/services/DOCXServiceTest.java | 42 ++--- .../src/test/resources/REC.ACTV_TEST.docx | Bin 10230 -> 10290 bytes 3 files changed, 150 insertions(+), 38 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/DOCXService.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/DOCXService.java index 20012d16f..ac1a078ea 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/DOCXService.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/DOCXService.java @@ -1,15 +1,16 @@ package ru.spcex.clearing.reports.services; import org.apache.poi.xwpf.usermodel.*; +import org.slf4j.Logger; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; +import java.io.*; +import java.util.LinkedList; +import java.util.List; import java.util.Map; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Collectors; /** * Сервис для работы с DOCX файлами @@ -19,18 +20,61 @@ public class DOCXService { /** * При инициализации сохраняет все имеющиеся ключи (ищет по маске keyPattern), найденные в текстовых элементах документа */ - private final Map bodyElementForKey = new HashMap<>(); - private final Pattern KEY_PATTERN = Pattern.compile("\\$\\{.*?}"); - private final int MAX_POSITION = 128; + private List keyPositions = new LinkedList<>(); /** - * Инициализация шаблона - * - * @param templateFile файл шаблона + * Паттерн поиска ключей в файле */ - public void init(File templateFile) throws IOException { + private Pattern KEY_PATTERN = Pattern.compile("\\$\\{.*?}"); + + /** + * (ре)Инициализация сервиса + */ + public void init(String keyPattern) { + KEY_PATTERN = Pattern.compile(keyPattern); + keyPositions = new LinkedList<>(); + } + + /** + * Вставка значений в шаблон. Шаблон может содержать любое количество ключей, при этом эти ключи должны содержаться в + * valuesMap. + * + * @param templateFile Файл шаблона + * @param outputFile Выходной файл. Должен быть либо файлом (будет перезаписан), либо отсутствовать + * @param valuesMap Мапа значений. В файле шаблона будут искаться ключи этой мапы и заменяться на соответствующие значения. + * @param log Если будет передан null, то метод будет выбрасывать исключения. В противном случае будет записан лог и возвращено false + * @param checkKeys True - строгий режим, где будет проверено наличие всех ключей из файла в valuesMap. + * False - мягкий режим, отсутствующие ключи будут пропущены + * + * @return true - если вставка прошла успешно + */ + public boolean insertValues(File templateFile, + File outputFile, + Map valuesMap, + Logger log, + boolean checkKeys) throws Exception { assert templateFile != null && templateFile.exists() && templateFile.isFile(); - try (InputStream inputStream = new FileInputStream(templateFile)) { + + if (outputFile == null || outputFile.isDirectory()) { + String logMsg = "Can't open output file. Output file: %s".formatted(outputFile == null ? "null" : outputFile.getAbsolutePath()); + if (log == null) throw new Exception(logMsg); + log.error(logMsg); + return false; + } + + if (outputFile.exists()) { + if (log != null) log.warn("Output file {} exist and will be overwritten", outputFile.getAbsolutePath()); + boolean deleteOk = outputFile.delete(); + if (!deleteOk) { + String logMsg = "Can't delete file %s".formatted(outputFile.getAbsolutePath()); + if (log == null) throw new Exception(logMsg); + log.error(logMsg); + return false; + } + } + + try (InputStream inputStream = new FileInputStream(templateFile); + OutputStream outputStream = new FileOutputStream(outputFile)) { XWPFDocument doc = new XWPFDocument(inputStream); for (IBodyElement element : doc.getBodyElements()) { @@ -41,10 +85,70 @@ public class DOCXService { } } - System.out.println("hello"); + if (checkKeys) { + List notPresentInMap = new LinkedList<>(); + boolean checkOk = checkIntersection(valuesMap, notPresentInMap); + if (!checkOk) { + String logMsg = "Can't insert values in file %s. Keys not in map: %s." + .formatted(templateFile.getAbsolutePath(), + String.join(", ", notPresentInMap)); + if (log == null) throw new Exception(logMsg); + log.error(logMsg); + return false; + } + } + + insertValues(valuesMap); + + doc.write(outputStream); + } + + return true; + } + + /** + * Проверка прочтённых ключей (keyPositions) и переданных (valuesMap.keySet()) на соответствие. + * Для успешной вставки мапа должна содержать все ключи, имеющиеся в файле. + * Метод вызывается для проверки только в строгом режиме + */ + private boolean checkIntersection(Map valuesMap, List notPresentInMap) { + Set keysFromMap = valuesMap.keySet(); + Set keysFromFile = keyPositions.stream().map(keyPosition -> keyPosition.key).collect(Collectors.toSet()); + List intersection = keysFromMap.stream() + .filter(keysFromFile::contains) + .collect(Collectors.toList()); + if (intersection.size() == keysFromFile.size()) return true; + + List notPresent = new LinkedList<>(keysFromFile); + notPresent.removeAll(intersection); + if (notPresentInMap != null) notPresentInMap.addAll(notPresent); + + return false; + } + + /** + * Вставка значений в элементы XWPFRun + */ + private void insertValues(Map valuesMap) { + for (KeyPositionInDoc keyPosition : keyPositions) { + String key = keyPosition.key; + + String valueFromMap = valuesMap.get(key); + if (valueFromMap == null) continue; + + XWPFRun xwpfRun = keyPosition.run; + int pos = keyPosition.pos; + do { + String srcText = xwpfRun.getText(pos); + xwpfRun.setText(srcText.replace(key, valueFromMap), pos); + } while (xwpfRun.getText(pos).contains(key)); } } + /** + * Сбор ключей из таблицы. + * Ячейка таблицы может являться как параграфом, так и таблицей, поэтому метод работает рекурсивно + */ private void collectKeysFromTable(XWPFTable srcTable) { for (XWPFTableRow row : srcTable.getRows()) { for (XWPFTableCell cell : row.getTableCells()) { @@ -59,17 +163,20 @@ public class DOCXService { } } + /** + * Сбор ключей из параграфа + */ private void collectKeysFromParagraph(XWPFParagraph paragraph) { - for (XWPFRun run : paragraph.getRuns()) { try { + int MAX_POSITION = 128; for (int currPos = 0; currPos < MAX_POSITION; currPos++) { String currText = run.getText(currPos); if (currText == null) break; Matcher matcher = KEY_PATTERN.matcher(currText); while (matcher.find()) { String key = matcher.group(); - bodyElementForKey.put(key, new TextPositionOnRun(run, currPos)); + keyPositions.add(new KeyPositionInDoc(key, run, currPos)); } } } catch (IndexOutOfBoundsException ignored) { @@ -78,13 +185,16 @@ public class DOCXService { } } - static class TextPositionOnRun { + static class KeyPositionInDoc { + String key; XWPFRun run; int pos; - public TextPositionOnRun(XWPFRun run, int pos) { + public KeyPositionInDoc(String key, XWPFRun run, int pos) { + this.key = key; this.run = run; this.pos = pos; } } + } diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/DOCXServiceTest.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/DOCXServiceTest.java index 6aad9d549..528d64be2 100644 --- a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/DOCXServiceTest.java +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/DOCXServiceTest.java @@ -1,31 +1,33 @@ package ru.spcex.clearing.reports.services; -import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.junit.jupiter.api.Test; -import java.io.*; +import java.io.File; +import java.util.HashMap; +import java.util.Map; class DOCXServiceTest { - @Test - public void testREC_ACTV() { - String inputFilename = "REC.ACTV_TEST.docx"; - try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream(inputFilename); - InputStream testStream = getClass().getClassLoader().getResourceAsStream("1.docx"); - OutputStream outputStream = new FileOutputStream("test.docx")) { - XWPFDocument templateDoc = new XWPFDocument(inputStream); - XWPFDocument testDoc = new XWPFDocument(testStream); - testDoc.getParagraphs().get(6).getRuns().get(1).setText("========АОВЛДЫАОЫВЛДОАЛЫВДАОЫВЛДАОЫВ========"); - testDoc.write(outputStream); - System.out.println("h"); - } catch (IOException e) { - e.printStackTrace(); - } - } @Test - public void test() throws IOException { + public void test() throws Exception { + Map valuesMap = new HashMap<>(); + valuesMap.put("${company.fullName}", "======== COMPANY FULL NAME ========="); + valuesMap.put("${count}", "======== COUNT ========="); + valuesMap.put("${profileDocument.issueDate}", "======== ISSUE DATE ========="); + valuesMap.put("${test1}", "======== TEST 1 ========="); + valuesMap.put("${test2}", "======== TEST 2 ========="); + valuesMap.put("${test3}", "======== TEST 3 ========="); + DOCXService service = new DOCXService(); - service.init(new File(getClass().getClassLoader().getResource("REC.ACTV_TEST.docx").getPath())); - System.out.println("p"); + service.insertValues(new File(getClass().getClassLoader().getResource("REC.ACTV_TEST.docx").getPath()), + new File("output.docx"), + valuesMap, + null, + false); + + File file = new File("output.docx"); + System.out.println("test"); + file.delete(); } + } \ No newline at end of file diff --git a/clearing-parent/reports-service/src/test/resources/REC.ACTV_TEST.docx b/clearing-parent/reports-service/src/test/resources/REC.ACTV_TEST.docx index aca71b0e5e12d13ad03f80660147bd8eb5b4fe23..66865e6cc84f29bf58bd91c27bc67c825725a9f6 100644 GIT binary patch delta 2850 zcmZ8j2{aVk7oRbfiN;pev1IH9BT?2COKKQPmW+KFB1E!Gs2Q>^4KtLVLjdy>s4q@AvM#@1FO2=bqo)G^sI#m>Pl@j{?A8Fn}SFR1FaU zg7#OEA`pSwG$OK=V_?8;)&kaulHteM_np#Lts8XdcZGvX-st<{In!XUjl)Yx|6W%% zmq|%(!7hj9v~FqgkEZDdu)U8(vYQQv$uK-Gv!lP`%rc>^io_?nDPPf-bdJ5})F-o} zG7-OqZ0EC=?X$wiwIr*gmWeghSeYe4S|f<$yH{`*L^G|LFoVq@(LB?qyqVP`XHF&v-Re?rAQz+m-8?*ZfvVcP#J1>AgktYY4zaa(G;6a(73n>r?PeC2 z!u4wF0N&BF8ynKw3(r^49;&=GB0MaqkcKEzN;sM>jyQX2{sCQoYsEwPJQ_KmVtm1< ziG(XK3B84+e+2ApwepS(r@b68*_yG!Esb_-H;*sL`j0m*y{{18YKJ039GeZc;7X!b zpKOLIq}`dcky&WWj+%hB?J$vQA3K^A&8^Pg%&jwhvKt`~I`s-8ckGOHNRqJiYu(44 zr-dSLJ0wg_kU27>GP(~O`9koT{;di$G5S<_h2wpn*>Otv2b4+0v=7`H2z_*XJj-vB z&(x3wj2fo-6aWDLb`SvY#~+e7K#DlEL#PK96gcBlBp|NOzpP=i;W*N}=Vak`?Q8Id znX8^xf`Vw910SoGAA)S8>uoyFL>iYICCXw)f45%?RjTGMl8QHm+jU3>tP)52PL)Ay z5dHepbC2~$LVRZ<)y7;n6c73EXlVL`t^nU__cv$FY?piuCUlduP=*l(1ROFqJ)Nrb zRO2PbkJcic_4V%~rRwB~E{{7;=G(+W)lGup`koeJoILZj1Cka~EG;Kk^p=z6C0Imn z$7uIdbPgE`ktNYY>93z{_JUMyJk*@uZlg-gUv4I+zz1fQa`6tu( zWS=VnbM+-_KJ0jNB+Yql<}D^rK^{(2$xN6ab zFupw~mfBz@=&!0tV?Kd1)&cXfN9fr}oaH+7*;U1X@L8c*v+UhGd3-Wr_LM9oVqozKm@m{_t9Mw{u zZA@;8)=rr5sZ4)cX_OZ3;|nzcF(T;67t_UK%-@(LKXACzy}Pz{#a>$E^1S}lsJ<4HxTre-p-BxSCBYjJelbIvU*3)U%T}{J_?+E>NWqe-t zdX@KXO&%A8J*XAVuq>Q}6b`iK6j?UE+KiT7>#A3tOAyJEnQPMn97A~&6R39dlrYN? z^vk$wB$beK7fTkev={RJH5!5gNhN!>pYGUcomL66h%vxfZ2(oy#Js^Tm#249neHiN zZLP)kF1CTbu$3UY<;8dw)iX_Er-!dA!V39TgK1pcJgPo-gL3D@-$Sg^U4#fso6Xhb0}$#yiqr~GxYxoH5;d0V(ynRXhiuiv?r z^kHv7*0rG^@v&idx_0s5un?4h0GT2yzBK2Dspt?jCV8zWFC)IpY^IsII z-za+NSyG={=%ve~9o)_49p%gw)93C8=deO0YGG4m8l zJRdZmn}4F?qWooYn*lFSKo0>_SbFYirwg?+wtEBegzEBCr{q%%_l_w6!^Vi{jSi~;bccoDfdxW8$p&CmU^_YY?eq5+( z^IdOj5gD6an2Z36`+0`hf~HRHL2u($6&_L6G!Bn3WI|ADEo^-48DXR$m8Y@{HgnKP z$T8p5%l>M)(FqSGVw?jxHw9zMTBLAF&zfzp>-4}JV#H^O{U9b+Xo%oOW zf+~p)32v>1R4Gy`0Im9IY$7mu9M&@EF73#p#>ODMD_af359OM%tn^l@D%D9jJ!_sM z_|vVhnk|yn&LbM*hjGb9w{+l>NcEz;!6s%;xC$1+==?3?G%n z@Nv*Hv-J|KcWFx93HezXLEMgb2&Cuo&B&_AhYpG-V>^`-Vp9qXac;pjo;H3!ZGwX4 zYWVgk7b5qd80@h8gDP2TuOkR`^MUzH*j$|C*ovxg$0K|@D zm1?n2%CC*Aum$r^6JEUhmtY|zPeS$;%<{ixg5)o$Y=3a_yXtZNmH+@?+;2EAzOJVJ zzJ50l&VGK1SRZdwLmVj$e}6w}b$=fDBRZ7?l!6^Q$Pk1n^?9>zyT7li zLVx&pGm)a1MBsm4`a1($e+0yn5~YqEyo^*S1!aIiNH3&>f5OFms3}M~B>l@OFAW72 llP>%pdF>->QjE03PgjaGl%Z0bL=fj8O-OSx+esc|_#etw_cH(h delta 2789 zcmZ9OcT^L~5{DBKkQNg{Ge9H(lF*URK_wud6eZFHucBBeB1S*~fk;t0PYG9=(vh0b zivmWa7>ZP>Do9a^p$TFrhKJmD?$NjZ?4I43`R&f0Ip0(e*DWDLa}Zbvz|GAKz$V3( zLk^m1K1uKzzmdxMV#zL`Ur92B{-3GW1WOKTz z%OCx00UwlQ6^Ze*-{^TL2v0qvV`SfYBDDO9J<-lQw$QM=g z1sCTr|Hj4oBzXh1mOPS^is7>4%MD>+N}4~(aO_#_4KeYu znuvh7AZ_qY>lrgHJ(&eM!cYN*SE!p{JH~u`P^IA=G!PI#f^?QR&P!Yszb^0ain_5F z8bc?V@8gayEso6w0ss&Y0Px2TQUpNCkqaCytt!SOh)%IE2)T`BfAHSN%DDXMg(+VyZ))_cLq_i`b%CV{a9AURnoPcY{@GW_%F zQ}^fER=&a59`bS8T{GwFy~KZNf4xx!0#8HVq#eVaJb*}fUZMuPe=3fVhF!-s)2PVA zyD)OZcrmr<&A4_&=eH6@^lEiqU*P6jCu^^He2S^&ioudBhg)VzQB6YCb&|cUd1^l& zkbC1+3SV#g(_s;S10E06!_w0)4ZdEL&so{#Wd|^M)@S{@7=_LrQ@Jy?ZyALbwT@`R z(DVMLP9|6UTB)|P8A_3^rw4s#sj8}-uf{?aj(GhiN-)}aRD1{cE74zSLQz(`i9X5k z|B2255Bw^XN`FrAe`+R)OO1?0gZcIuNGZcJBg5BK#g^h1lg*}1qG>SBR%Cze+vrKrv54e98q=>%LG^RCvhI2OV3 zKa!^E3)vDWN756ARJtBZi1k-LK#!X!uaM4_P7w7q*#o`qU0Ayoa?{a%z$>V?OsRcA z1|Jo_PSl>(5y7D4D$p^0I#!ChBJq*|od&A`DdniE2UM-^gNOGyJ|sd_UHcNU9I!5D zS`GRoG-PiHfP$JT1jBho&#G*Ar>DghuS-{(6(EThCk}y+`_U4}>jQHZemZhpU6x!UHo~oK(8(Ca7V*A-GTD0MWgwG~(19Ev5)=0^GoEL|h zDZ(FEs>V}EZg$?~c5mOJwMug?e2mxS;N(-tgvsJ;G0i4 zeAgazAquK9^JWN~M}j^;k@qeLB=y*xSAg1iPkhe(@yWGMP2kr0GlojFX)C*@Wo|gA zO(t$3HzTeKhFf{oeh*kd2quss=OhN-Y*_gmdH!%?X6yJUlNq8QQpjS?D{iYJ&fd$s z#)g0XNv5sFpAO#IcYeylOT2QMhm0>qs&9bU&X4E}pO}iQ_ORX(wG8X(hjGlT7x2@p zwuh&boE?lN>&$Ybn#%rW#3$>K_qlZNnsfw7C0gdkYhJR?4n z!?Z7CjWH!eg}Lm$1S?sW)Ghi?PZWD1Scu_za@xiZw%e85ua%be7w=%K`8+M#x5zT} zI<`u~A6zy=#G+6uGuubW4Dv(=QIQ;0n;#gZ|Bh9`^|NE!zHZTA9A5>WPryd#g9e4! z$>Reo7Z&Ind3(;|k-8Qo;v zN!aY6lHS__MfnZ;JCZnGAU{S0e-YoV<{AqpPzj2Qt9Kl$81@^wfm<~j9%GS<%imoM z!UgKoUr>Rhv>nLM`9QwK;s#(?E#T@g%3-hUmRa5LY2P@n=)0OM6CVh}Y5ShU{(|0Y zEbD>;D7+CoDPPJLJ6j|2m;Mb*W-fWQZjNN#%G1P~Zp43nK>Yw0H*=W@+HsSTFa5B5dIi@o!jm} zZI@P#q)h+a9e7Icp@`Q zvU=9hM^G#+%C^kGRA#`~#n`pH__P=zi}HbTU^Aed+e6bp(uPg!B%F zl91b?;q^IA56npLmK5YiH)!|K+%U6Gz0 z?i(o8--pK(Oyd1n;EX=Gh%?Sw-mmZ8WH~olS&nc2xN~YC&b+LXi`}vPWxwZ8EM0{ zchn$V@(*Y{Fq)8E^4R{{1W;%gyyUN)-)RK{{607+I~d8m)((vo=STok%D}=3L~|gA z5a8eL&-T`(BF}fbUP-&Klla{m;7$p~D(p%8{sw_RY$7QPENV~U>#oEXehN1ZiTZV` z{gqK|in|Qe0s{c>KU{VY6k{A}FYd%kj>k85jRJN%nm^-uP{RLbgPqG)723^TnHT^d c{6`=ON)t|IPkSCG4)msQ$zr)sm|rIU1&UzQU;qFB From bfcf9c919dcdd6397d984ccf4f7fc99a74e014ba Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 20 Dec 2022 13:18:51 +0300 Subject: [PATCH 048/234] =?UTF-8?q?url=20=D0=B0=D0=BA=D1=82=D1=83=D0=B0?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D0=BE=D0=B9=20=D1=82=D0=B5=D1=81=D1=82=D0=BE?= =?UTF-8?q?=D0=B2=D0=BE=D0=B9=20=D0=B1=D0=B0=D0=B7=D1=8B=20=D0=B2=20imdg/a?= =?UTF-8?q?pplication.properties?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- clearing-parent/imdg/src/main/resources/application.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clearing-parent/imdg/src/main/resources/application.properties b/clearing-parent/imdg/src/main/resources/application.properties index da3db7cf0..4d9532d8e 100644 --- a/clearing-parent/imdg/src/main/resources/application.properties +++ b/clearing-parent/imdg/src/main/resources/application.properties @@ -4,4 +4,4 @@ imdg.hazelcast.password=dev-pass imdg.hazelcast.cluster-members[0]=127.0.0.1 imdg.database.login=clearing imdg.database.password=Aa111111 -imdg.database.url=jdbc:postgresql://10.200.200.133:5432/postgres?currentSchema=clearing_prod \ No newline at end of file +imdg.database.url=jdbc:postgresql://10.200.200.133:5432/clearing?currentSchema=clearing_prod \ No newline at end of file From c4734252df808bc8fd245768cd4b922f8ed10461 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Tue, 20 Dec 2022 15:04:24 +0300 Subject: [PATCH 049/234] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-25?= =?UTF-8?q?=20http://jira.mfd.msk:8088/browse/CLS-26=20=D0=BD=D0=B0=D1=87?= =?UTF-8?q?=D0=B0=D0=BB=D0=BE=20http://jira.mfd.msk:8088/browse/CLS-29=20-?= =?UTF-8?q?=20=D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BB=20=D0=B2=D1=8B?= =?UTF-8?q?=D0=B1=D0=BE=D1=80=D0=BA=D1=83=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B?= =?UTF-8?q?=D1=85=20=D0=B4=D0=BB=D1=8F=20=D1=84=D0=BE=D1=80=D0=BC=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=87=D0=B0=D1=81?= =?UTF-8?q?=D1=82=D0=B5=D0=B9=20=D0=BE=D1=82=D1=87=D1=91=D1=82=D0=B0.=20TO?= =?UTF-8?q?=20DO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reports/services/ReportDataCollector.java | 30 +++++--- ...ollector.java => Bt17_1_P1_collector.java} | 74 ++++++++++++------ .../collector/Bt17_1_P2_collector.java | 62 +++++++++++++++ .../services/collector/Bt17_2_collector.java | 76 +++++++++++++++++++ .../collector/Bt17_5_P1_collector.java | 64 ++++++++++++++++ .../reports/services/collector/MapUtil.java | 33 ++++++++ .../services/impl/Bt17_1_collectorTest.java | 4 +- .../enumeration/ClearingCategory.java | 27 +++++++ .../ru/spcex/platform/enumeration/Market.java | 18 +++++ 9 files changed, 354 insertions(+), 34 deletions(-) rename clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/{Bt17_1_collector.java => Bt17_1_P1_collector.java} (53%) create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/MapUtil.java create mode 100644 platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingCategory.java create mode 100644 platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Market.java diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java index a3d5683e0..e2e2ea972 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java @@ -4,12 +4,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ru.spcex.clearing.reports.reports.AbstractReport; +import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; -public abstract class ReportDataCollector { +public abstract class ReportDataCollector { public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy"); public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy'T'HH:mm:ss"); @@ -20,15 +21,15 @@ public abstract class ReportDataCollector { * T extends ReportWithPeriod * @return */ - abstract public List collectReportWithPeriod(LocalDate startDate, LocalDate endDate); + abstract public R collectReportWithPeriod(LocalDate startDate, LocalDate endDate); - /** - * T extends ReportWithClearingStatus - * @param startDate - * @param endDate - * @return - */ - abstract public List collectReportWithClearingStatus(LocalDate startDate, LocalDate endDate, String clearingStatus); +// /** +// * T extends ReportWithClearingStatus +// * @param startDate +// * @param endDate +// * @return +// */ +// abstract public List collectReportWithClearingStatus(LocalDate startDate, LocalDate endDate, String clearingStatus); /** * @@ -38,4 +39,15 @@ public abstract class ReportDataCollector { * @return */ abstract public String getFileName(LocalDate startDate, LocalDate endDate, LocalDateTime dateTimeNow); + + + protected String toString(Long val) { + if (val == null) return null; + return val.toString(); + } + + protected String toString(Instant val) { + if (val == null) return null; + return DATE_TIME_FORMATTER.format(val);//todo проверить работает ли - юниттест. + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java similarity index 53% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_collector.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java index e3d323dac..f704921f3 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java @@ -11,17 +11,22 @@ import ru.clearing.platform.dictionary.ClearingStatusDictionary; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.reports.reports.bt_17_1.ReportBR_0420315_P1; import ru.spcex.clearing.reports.services.ReportDataCollector; +import ru.spcex.platform.enumeration.ClearingCategory; import ru.spcex.platform.enumeration.ClearingStatus; +import ru.spcex.platform.enumeration.Market; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; -import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; +import java.util.stream.Collectors; @Component -public class Bt17_1_collector extends ReportDataCollector { +public class Bt17_1_P1_collector extends ReportDataCollector> { + protected static final List ALLOW_CLEARING_MEMBER_CATEGORY = Arrays.asList(ClearingCategory.I.getKey(), ClearingCategory.V.getKey()); + protected static final String ALLOW_CLEARING_STATUS = ClearingStatus.OK.getKey(); + private Imdg companyImdg; private Imdg liabilitiesClaimsAssetsImdg; private Imdg clearingMemberCategoryImdg; @@ -29,7 +34,7 @@ public class Bt17_1_collector extends ReportDataCollector { private Imdg listingImdg; @Autowired - public Bt17_1_collector(ImdgProvider imdgProvider) { + public Bt17_1_P1_collector(ImdgProvider imdgProvider) { companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); @@ -46,41 +51,69 @@ public class Bt17_1_collector extends ReportDataCollector { String ql = String.format("'%s' <= refundDate and refundDate <= '%s'", startDate, endDate); Collection liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql); - for (LiabilitiesClaimsAssets liability : liabilities) { + + ClearingStatusDictionary allowClearingStatus = clearingStatusDictionaryImdg.getSingleObjectByFieldValues(Map.of("code", ALLOW_CLEARING_STATUS)); + if (allowClearingStatus == null) { + throw new IllegalStateException("ClearingStatusDictionary with code=\"" + ALLOW_CLEARING_STATUS + "\" not fount"); + } + final Long allowClearingStatusId = allowClearingStatus.getId(); // "OK" + Collection filteredLiabilities = liabilities.stream() + .filter(liability -> allowClearingStatusId.equals(liability.getClearingStatus())) + .collect(Collectors.toList()); + Map> indexByCompany = MapUtil.indexList(filteredLiabilities, LiabilitiesClaimsAssets::getCompanyId); + + for (LiabilitiesClaimsAssets liability : filteredLiabilities) { final Long companyId = liability.getCompanyId(); Company company = companyImdg.getSingleObjectByID(companyId); if (company != null) { ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId)); - if (cmc == null || !Arrays.asList("I", "V", "I,V").contains(cmc.getClearingMemberCategory())) { - //todo уточнить фильтр need filter by I, V? + String checkCategory = cmc == null? null : cmc.getClearingMemberCategory(); + if (!ALLOW_CLEARING_MEMBER_CATEGORY.contains(cmc.getClearingMemberCategory())) { + // фильтруются <> I, V log.trace("Filtered ClearingMemberCategory[{}].ClearingMemberCategory={}", cmc == null ? null : cmc.getId(), cmc == null ? null : cmc.getClearingMemberCategory()); continue; } - ClearingStatusDictionary clearingStatus = clearingStatusDictionaryImdg.getSingleObjectByID(liability.getClearingStatus()); - if (clearingStatus == null || !ClearingStatus.OK.getKey().equals(clearingStatus.getCode())) { - continue; - } +// ClearingStatusDictionary clearingStatus = clearingStatusDictionaryImdg.getSingleObjectByID(liability.getClearingStatus()); +// if (clearingStatus == null || !ALLOW_CLEARING_STATUS.contains(clearingStatus.getCode())) { +// // фильтруются <> "OK" уже была, never +// log.warn("Found after filter LiabilitiesClaimsAssets[{}].getClearingStatus={}", liability.getId(), liability.getClearingStatus()); +// continue; +// } ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(startDate, endDate, "BR", cmc.getClearingMemberCategory(), - clearingStatus.getCode()); + ALLOW_CLEARING_STATUS //clearingStatus.getCode() "OK" + ); Listing listing; { Map qParam = new HashMap<>(); - qParam.put("market", "MKRS"); // todo use const + qParam.put("market", Market.MKRS.getKey()); qParam.put("securityId", liability.getSecurityId()); listing = listingImdg.getSingleObjectByFieldValues(qParam); } -// liability.getPrice()// todo как там с учётом валют это делать? - Integer contractorQty = StringUtils.isEmpty(liability.getContract()) ? 0 : 1; // todo то суммировать надо. Связь похоже много к 1. // liability.getContract() В данное поле необходимо записать общее количество исполненных договоров, шт. элемент contract из бизнес-объекта liabilitiesClaimsAssets - BigDecimal liabilitiesAmount = liability.getPrice() == null ? BigDecimal.ZERO : liability.getPrice(); // todo как правильно считать? - ReportBR_0420315_P1.Info_0420315_P1 info_0420315_p1 = new ReportBR_0420315_P1.Info_0420315_P1("companyId", + + + List allContract = indexByCompany.get(companyId); + long contractorQty; + double liabilitiesAmount = 0; + { + HashSet collectedToSumm = new HashSet<>(); // чтобы дважды не посчитать 1 и тот же контракт + for (LiabilitiesClaimsAssets lContract : allContract) { + if (lContract.getPrice()!=null && StringUtils.isNotEmpty(lContract.getContract()) + && !collectedToSumm.contains(lContract.getContract())) { + collectedToSumm.add(lContract.getContract()); + liabilitiesAmount += lContract.getLiabilitiesQuantity().doubleValue(); + } + } + contractorQty = collectedToSumm.size(); + } + ReportBR_0420315_P1.Info_0420315_P1 info_0420315_p1 = new ReportBR_0420315_P1.Info_0420315_P1(company.getId().toString(), company.getFullName(), listing == null ? null : listing.getMarket(), - contractorQty.toString(), - liabilitiesAmount.toString()); + String.valueOf(contractorQty), + String.valueOf(liabilitiesAmount)); reportBR_0420315_p1.getRows().add(info_0420315_p1); result.add(reportBR_0420315_p1); @@ -90,11 +123,6 @@ public class Bt17_1_collector extends ReportDataCollector { return result; } - @Override - public List collectReportWithClearingStatus(LocalDate startDate, LocalDate endDate, String clearingStatus) { - throw new IllegalStateException("clearingStatus not supported by this class"); - } - @Override public String getFileName(LocalDate startDate, LocalDate endDate, LocalDateTime dateTimeNow) { diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java new file mode 100644 index 000000000..2fd59d0f0 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java @@ -0,0 +1,62 @@ +package ru.spcex.clearing.reports.services.collector; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.transaction.data.execution.LiabilitiesClaimsAssets; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.reports.reports.bt_17_1.ReportBR_0420315_P2; +import ru.spcex.clearing.reports.services.ReportDataCollector; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.*; + +@Component +public class Bt17_1_P2_collector extends ReportDataCollector { + private Imdg liabilitiesClaimsAssetsImdg; + + @Autowired + public Bt17_1_P2_collector(ImdgProvider imdgProvider) { + liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); + } + + @Override + public ReportBR_0420315_P2 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { + if (startDate.isAfter(endDate)) { + throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")"); + } + String ql = String.format("'%s' <= refundDate and refundDate <= '%s'", startDate, endDate); + Collection liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql); + + long contractorQty; + double liabilitiesAmount = 0; + { + HashSet collectedToSumm = new HashSet<>(); + for (LiabilitiesClaimsAssets lContract : liabilities) { + if (lContract.getPrice() != null && StringUtils.isNotEmpty(lContract.getContract()) + && !collectedToSumm.contains(lContract.getContract())) { + collectedToSumm.add(lContract.getContract()); + liabilitiesAmount += lContract.getLiabilitiesQuantity().doubleValue(); + } + } + contractorQty = collectedToSumm.size(); + } + + ReportBR_0420315_P2 reportBR_0420315_p2 = new ReportBR_0420315_P2(startDate, endDate, + "BR", + String.valueOf(contractorQty), + String.valueOf(liabilitiesAmount)); + + return reportBR_0420315_p2; + } + + @Override + public String getFileName(LocalDate startDate, LocalDate endDate, LocalDateTime dateTimeNow) { + return String.format("REPBR.0420315.P2.%s-%s.%s", DATE_FORMATTER.format(startDate), DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(dateTimeNow)); + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java new file mode 100644 index 000000000..f9377c2fb --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java @@ -0,0 +1,76 @@ +package ru.spcex.clearing.reports.services.collector; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.company.CompanySymbols; +import ru.clearing.classes.statics.data.company.relation.Relation; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.reports.reports.bt_17_2.ReportBR_0420317; +import ru.spcex.clearing.reports.services.ReportDataCollector; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.*; + +@Component +public class Bt17_2_collector extends ReportDataCollector { + private Imdg companyImdg; + private Imdg relationImdg; + private Imdg companySymbolsImdg; + + @Autowired + public Bt17_2_collector(ImdgProvider imdgProvider) { + companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); + relationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class); + companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + } + + @Override + public ReportBR_0420317 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { + if (startDate.isAfter(endDate)) { + throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")"); + } + + String ql = String.format("'%s' <= updated and updated <= '%s' and service='MKR'", startDate, endDate); + // todo обговорить про updatedAt updated, todo enum MKR + Collection relations = relationImdg.getCollectionObjectsBySQL(ql); + + ReportBR_0420317 reportBR_0420317 = new ReportBR_0420317(startDate, endDate, "BR"); + for (Relation relation: relations) { + Company company = relation.getConsumerId() == null ? null : companyImdg.getSingleObjectByID(relation.getConsumerId()); + if (company == null) { + log.warn("Company.id={} not found for relation.id={}", relation.getConsumerId(), relation.getId()); + continue; + } + CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of( + "companySymbol", "INN",//todo use enum, todo ИНН или TIN участника клиринга + "companyId", company.getId() + )); + ReportBR_0420317.Info_0420317 info_0420317 = new ReportBR_0420317.Info_0420317( + company.getClearingCode(), + toString(relation.getSupplierId()), + relation.getService(), // todo "relationServiceId", + relation.getServiceStatus(), + toString(relation.getUpdated()), + company.getFullName(), + companySymbol == null ? null : companySymbol.getCompanySymbolValue(), + company.getProfile().getCountryCode(), + relation.getComment() + ); + reportBR_0420317.getRows().add(info_0420317); + } + + return reportBR_0420317; + } + + + @Override + public String getFileName(LocalDate startDate, LocalDate endDate, LocalDateTime dateTimeNow) { + return String.format("REPBR.0420317.%s-%s.%s", DATE_FORMATTER.format(startDate), DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(dateTimeNow)); + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java new file mode 100644 index 000000000..fcf6c50a5 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java @@ -0,0 +1,64 @@ +package ru.spcex.clearing.reports.services.collector; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.company.CompanySymbols; +import ru.clearing.classes.statics.data.company.relation.Relation; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.reports.reports.bt_17_2.ReportBR_0420317; +import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P1; +import ru.spcex.clearing.reports.services.ReportDataCollector; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Collection; +import java.util.Map; + +@Component +public class Bt17_5_P1_collector extends ReportDataCollector { + private Imdg companyImdg; + private Imdg relationImdg; + private Imdg companySymbolsImdg; + + @Autowired + public Bt17_5_P1_collector(ImdgProvider imdgProvider) { + companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); + relationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class); + companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + } + + @Override + public ReportBR_0420312_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { + if (startDate.isAfter(endDate)) { + throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")"); + } + + // TODO ВСЁ по CLS-29... + String ql = String.format("'%s' <= updated and updated <= '%s' and service='MKR'", startDate, endDate); + // todo обговорить про updatedAt updated, todo enum MKR + Collection relations = relationImdg.getCollectionObjectsBySQL(ql); + + ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(LocalDate.now(), + LocalDate.now(), + "companyClearingCode", + "BR", + "liabilitesClaimsAssetsCompanyId", + "liabilitesClaimsAssetsFullName", + "companySymbolCode", + "companySymbolValue", + "companyInfoCountryCode", + "clearingMemberCategory"); + + return reportBR_0420312P1; + } + + + @Override + public String getFileName(LocalDate startDate, LocalDate endDate, LocalDateTime dateTimeNow) { + return String.format("REPBR.0420312_р1-1.%s-%s.%s", DATE_FORMATTER.format(startDate), DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(dateTimeNow)); + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/MapUtil.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/MapUtil.java new file mode 100644 index 000000000..2b9216819 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/MapUtil.java @@ -0,0 +1,33 @@ +package ru.spcex.clearing.reports.services.collector; + +import ru.spcex.platform.classes.base.interfaces.WithId; + +import java.util.*; +import java.util.function.Function; + +public class MapUtil { + + public static Map index(Collection from, Function indexFieldExtractor) { + Map index = new HashMap<>(); + for (V obj : from) { + K key = indexFieldExtractor.apply(obj); + V exist = index.put(key, obj); + if (exist != null) { + throw new IllegalStateException(String.format("%s with id=%s,%s has duplicate key=\"{}\"", + exist.getClass().getSimpleName(), exist.getId(), obj.getId(), key + )); + } + } + return index; + } + + public static Map> indexList(Collection from, Function indexFieldExtractor) { + Map> index = new HashMap<>(); + for (V obj : from) { + K key = indexFieldExtractor.apply(obj); + List lst = index.computeIfAbsent(key, (_key_) -> new ArrayList<>()); + lst.add(obj); + } + return index; + } +} diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/impl/Bt17_1_collectorTest.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/impl/Bt17_1_collectorTest.java index 6b023cc50..cef49c50c 100644 --- a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/impl/Bt17_1_collectorTest.java +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/impl/Bt17_1_collectorTest.java @@ -2,7 +2,7 @@ package ru.spcex.clearing.reports.services.impl; import org.junit.jupiter.api.Test; import org.mockito.Mockito; -import ru.spcex.clearing.reports.services.collector.Bt17_1_collector; +import ru.spcex.clearing.reports.services.collector.Bt17_1_P1_collector; import java.time.LocalDate; import java.time.LocalDateTime; @@ -13,7 +13,7 @@ class Bt17_1_collectorTest { @Test void getFileName() { - Bt17_1_collector collector = Mockito.mock(Bt17_1_collector.class); + Bt17_1_P1_collector collector = Mockito.mock(Bt17_1_P1_collector.class); Mockito.when(collector.getFileName(Mockito.any(),Mockito.any(),Mockito.any())).thenCallRealMethod(); String str = collector.getFileName(LocalDate.of(2020,1,1), diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingCategory.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingCategory.java new file mode 100644 index 000000000..6bab3d4ca --- /dev/null +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingCategory.java @@ -0,0 +1,27 @@ +package ru.spcex.platform.enumeration; + +import ru.spcex.platform.utils.enumeration.IEnumKey; + +/** + * CLEARING_CATEGORY_DICTIONARY + */ +public enum ClearingCategory implements IEnumKey { + C("C"), // Категория «Ц» - Банк России + B("B"), // Категория «Б» - Кредитная организация ДР + F("F"), // Категория «Ф» - Участник рынка РЦБ + I("I"), // Категория «И» - Инициатор по ТБС + V("V"), // Категория «В» - Инициатор по ТКС + T("T"), // Категория «Т» - Участник товарного рынка + K("K"); // Категория «К» - Участник клиринга - Контроллер + + private final String key; + + ClearingCategory(String key) { + this.key = key; + } + + @Override + public String getKey() { + return key; + } +} diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Market.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Market.java new file mode 100644 index 000000000..a135f0ee6 --- /dev/null +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Market.java @@ -0,0 +1,18 @@ +package ru.spcex.platform.enumeration; + +import ru.spcex.platform.utils.enumeration.IEnumKey; + +public enum Market implements IEnumKey { + MKRS("MKRS"); // Денежный рынок МКР + + private final String key; + + Market(String key) { + this.key = key; + } + + @Override + public String getKey() { + return key; + } +} From fd7ee9a9896ef769629106fa0b84540998ed3b7a Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 20 Dec 2022 17:57:00 +0300 Subject: [PATCH 050/234] http://jira.mfd.msk:8088/browse/CLS-16 --- .../MoneyMarketSecurityNewAction.java | 24 +++- .../MoneyMarketSecurityUpdateAction.java | 27 +++++ .../system/RequestStatusController.java | 1 + .../service/RequestInfoAccepter.java | 1 + .../validation/ActionValidationProvider.java | 26 +++-- .../service/validation/rules/PresentById.java | 28 ----- .../config/MessageResolverConfig.java | 8 +- .../securities/component/ListingBuilder.java | 24 ++++ .../config/ErrorResolverConfig.java | 14 +++ .../securities/errors/SecuritiesError.java | 21 ++++ .../cud/MoneyMarketSecurityService.java | 105 +++++++++++++++--- .../validation/ValidationProvider.java | 66 +++++++++++ .../validation/rule/EndDtAfterStartDt.java | 28 +++++ .../validation/rule/MmsNewValidationRule.java | 37 ++++++ .../rule/MmsUpdateValidationRule.java | 32 ++++++ .../MoneyMarketSecurityServiceDisabled.java | 5 +- .../classes/base/interfaces/WithEndDt.java | 7 ++ .../base/interfaces/WithSecuritySymbol.java | 5 + .../classes/base/interfaces/WithStartDt.java | 7 ++ .../ru/spcex/platform/enumeration/Market.java | 18 +++ .../iml/hazelcast/adapter/ImdgHazelcast.java | 1 + .../java/ru/spcex/platform/imdg/api/Imdg.java | 4 + .../validation/ImdgValidationContext.java | 3 + .../platform/imdg/validation/Stored.java | 11 ++ .../imdg/validation/rule/PresentById.java | 43 +++++++ .../MoneyMarketSecurityNewRequest.java | 4 +- .../MoneyMarketSecurityUpdateRequest.java | 4 +- .../messaging/service/RequestInfoUpdate.java | 24 +++- .../enumeration/SimpleMessageResolver.java | 11 ++ 29 files changed, 524 insertions(+), 65 deletions(-) delete mode 100644 clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/validation/rules/PresentById.java create mode 100644 clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/component/ListingBuilder.java create mode 100644 clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/config/ErrorResolverConfig.java create mode 100644 clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/errors/SecuritiesError.java create mode 100644 clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/ValidationProvider.java create mode 100644 clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/EndDtAfterStartDt.java create mode 100644 clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/MmsNewValidationRule.java create mode 100644 clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/MmsUpdateValidationRule.java create mode 100644 platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithEndDt.java create mode 100644 platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithSecuritySymbol.java create mode 100644 platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithStartDt.java create mode 100644 platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Market.java create mode 100644 platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/Stored.java create mode 100644 platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/rule/PresentById.java create mode 100644 platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/SimpleMessageResolver.java diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/securities/MoneyMarketSecurityNewAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/securities/MoneyMarketSecurityNewAction.java index 69059d4d1..f96db5e09 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/securities/MoneyMarketSecurityNewAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/securities/MoneyMarketSecurityNewAction.java @@ -9,14 +9,17 @@ import ru.spcex.clearing.backendapi.errors.BackEndError; import ru.spcex.clearing.platform.messaging.domain.ActionType; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest; import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer; +import ru.spcex.platform.classes.base.interfaces.WithSecuritySymbol; import ru.spcex.platform.utils.enumeration.EnumMessage; +import ru.spcex.platform.utils.text.TextUtil; import java.time.LocalDate; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; -public class MoneyMarketSecurityNewAction implements IAction { +public class MoneyMarketSecurityNewAction implements IAction, WithSecuritySymbol { @ApiModelProperty(value = "Дата начала действия", example = "2022-01-20") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "Europe/Moscow") @JsonDeserialize(using = LocalDateDeserializer.class) @@ -48,9 +51,24 @@ public class MoneyMarketSecurityNewAction implements IAction validate() { + List errors = new ArrayList<>(); if (this.startDate == null) - return List.of(new EnumMessage(BackEndError.ValidationError, "startDate")); - else return Collections.emptyList(); + errors.add(new EnumMessage(BackEndError.ValidationError, "startDate")); + if (this.endDate == null) + errors.add(new EnumMessage(BackEndError.ValidationError, "endDate")); + if (this.nominalValue == null) + errors.add(new EnumMessage(BackEndError.ValidationError, "nominalValue")); + if (TextUtil.isEmpty(nominalCurrency)) + errors.add(new EnumMessage(BackEndError.ValidationError, "nominalCurrency")); + if (TextUtil.isEmpty(instrumentType)) + errors.add(new EnumMessage(BackEndError.ValidationError, "instrumentType")); + if (TextUtil.isEmpty(fullName)) + errors.add(new EnumMessage(BackEndError.ValidationError, "fullName")); + if (TextUtil.isEmpty(securitySymbol)) + errors.add(new EnumMessage(BackEndError.ValidationError, "securitySymbol")); + if (this.lotSize == null) + errors.add(new EnumMessage(BackEndError.ValidationError, "lotSize")); + return errors.size() > 0 ? errors : Collections.emptyList(); } @Override diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/securities/MoneyMarketSecurityUpdateAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/securities/MoneyMarketSecurityUpdateAction.java index 3928e8198..cc1eb8461 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/securities/MoneyMarketSecurityUpdateAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/securities/MoneyMarketSecurityUpdateAction.java @@ -5,12 +5,19 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.swagger.annotations.ApiModelProperty; import ru.spcex.clearing.backendapi.domain.actions.IAction; +import ru.spcex.clearing.backendapi.errors.BackEndError; import ru.spcex.clearing.platform.messaging.domain.ActionType; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityUpdateRequest; import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer; import ru.spcex.platform.classes.base.interfaces.WithId; +import ru.spcex.platform.utils.enumeration.EnumMessage; +import ru.spcex.platform.utils.text.TextUtil; import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; public class MoneyMarketSecurityUpdateAction implements IAction, WithId { @ApiModelProperty(hidden = true) @@ -56,6 +63,26 @@ public class MoneyMarketSecurityUpdateAction implements IAction validate() { + List errors = new ArrayList<>(); + if (this.startDate == null) + errors.add(new EnumMessage(BackEndError.ValidationError, "startDate")); + if (this.endDate == null) + errors.add(new EnumMessage(BackEndError.ValidationError, "endDate")); + if (this.nominalValue == null) + errors.add(new EnumMessage(BackEndError.ValidationError, "nominalValue")); + if (TextUtil.isEmpty(nominalCurrency)) + errors.add(new EnumMessage(BackEndError.ValidationError, "nominalCurrency")); + if (TextUtil.isEmpty(instrumentType)) + errors.add(new EnumMessage(BackEndError.ValidationError, "instrumentType")); + if (TextUtil.isEmpty(fullName)) + errors.add(new EnumMessage(BackEndError.ValidationError, "fullName")); + if (this.lotSize == null) + errors.add(new EnumMessage(BackEndError.ValidationError, "lotSize")); + return errors.size() > 0 ? errors : Collections.emptyList(); + } + @ApiModelProperty(hidden = true) @Override public ActionType getActionType() { diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/system/RequestStatusController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/system/RequestStatusController.java index cebfc2d57..31cfce2c9 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/system/RequestStatusController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/system/RequestStatusController.java @@ -43,6 +43,7 @@ public class RequestStatusController { } RequestInfoResponse response = new RequestInfoResponse(); response.setStatus(singleObjectByID.getStatus()); + response.setMessage(singleObjectByID.getMessage()); return response; } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/RequestInfoAccepter.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/RequestInfoAccepter.java index a1eaff115..698d281a6 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/RequestInfoAccepter.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/RequestInfoAccepter.java @@ -43,6 +43,7 @@ public class RequestInfoAccepter extends QueueConsumer implements InitializingBe return; } requestInfo.setStatus(statusInfo.getStatus()); + requestInfo.setMessage(statusInfo.getMessage()); requestInfoImdg.update(requestInfo); } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/validation/ActionValidationProvider.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/validation/ActionValidationProvider.java index 87152db3e..d0a6cf9a5 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/validation/ActionValidationProvider.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/validation/ActionValidationProvider.java @@ -5,8 +5,8 @@ import org.springframework.stereotype.Component; import ru.clearing.platform.dictionary.AbstractDictionary; import ru.spcex.clearing.backendapi.controller.request.cud.schedule.LauncherNew; import ru.spcex.clearing.backendapi.domain.actions.IAction; +import ru.spcex.clearing.backendapi.errors.BackEndError; import ru.spcex.clearing.backendapi.service.validation.rules.LauncherNewValidationRule; -import ru.spcex.clearing.backendapi.service.validation.rules.PresentById; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.platform.classes.base.SpcexObjectBase; @@ -14,9 +14,11 @@ import ru.spcex.platform.classes.base.interfaces.WithId; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.validation.ImdgValidationContext; +import ru.spcex.platform.imdg.validation.rule.PresentById; import ru.spcex.platform.utils.validation.IValidator; import ru.spcex.platform.utils.validation.ValidatorImpl; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.function.Function; @@ -35,10 +37,6 @@ public class ActionValidationProvider implements InitializingBean { @Override public void afterPropertiesSet() { - getImdg(IMDGDistributedNames.Map_TaskDictionary, AbstractDictionary.class); - getImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, SpcexObjectBase.class); - getImdg(IMDGDistributedNames.Map_Relation, SpcexObjectBase.class); - validators.put(Consts.DESTINATION_MONEY_MARKET_SECURITY_UPDATE, idPresent(IMDGDistributedNames.Map_MoneyMarketSecurity)); validators.put(Consts.DESTINATION_MONEY_MARKET_SECURITY_DELETE, idPresent(IMDGDistributedNames.Map_MoneyMarketSecurity)); validators.put(Consts.DESTINATION_RELATION_UPDATE, idPresent(IMDGDistributedNames.Map_Relation)); @@ -53,21 +51,35 @@ public class ActionValidationProvider implements InitializingBean { return null; } + + + private > Function defaultConstructor(Class clazz, Imdg... imdgs) { + return iAcc -> { + ImdgValidationContext ctx = new ImdgValidationContext<>(); + ctx.setValidatedObject(iAcc); + Arrays.stream(imdgs).forEach(imdg -> ctx.addImdg(imdg.getMapName(), imdg)); + return new ValidatorImpl<>(ctx); + }; + } + private & WithId> Function idPresent(String mapName) { + Imdg targetMap = getImdg(mapName, SpcexObjectBase.class); return iAction -> { ImdgValidationContext ctx = new ImdgValidationContext<>(); ctx.setValidatedObject(iAction); + ctx.addImdg(mapName, targetMap); ValidatorImpl> iValidator = new ValidatorImpl<>(ctx); - iValidator.addRule(new PresentById(getImdg(mapName, SpcexObjectBase.class))); + iValidator.addRule(new PresentById(mapName, BackEndError.ResourceNotFound)); return iValidator; }; } private Function taskRunnerNew() { + Imdg tskDctnrImdg = getImdg(IMDGDistributedNames.Map_TaskDictionary, AbstractDictionary.class); return taskRunnerNew -> { ImdgValidationContext ctx = new ImdgValidationContext<>(); ctx.setValidatedObject(taskRunnerNew); - ctx.addImdg(IMDGDistributedNames.Map_TaskDictionary, getImdg(IMDGDistributedNames.Map_TaskDictionary, AbstractDictionary.class)); + ctx.addImdg(IMDGDistributedNames.Map_TaskDictionary, tskDctnrImdg); ValidatorImpl> iValidator = new ValidatorImpl<>(ctx); iValidator.addRule(LauncherNewValidationRule.knownTaskDictionary); return iValidator; diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/validation/rules/PresentById.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/validation/rules/PresentById.java deleted file mode 100644 index 032767967..000000000 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/validation/rules/PresentById.java +++ /dev/null @@ -1,28 +0,0 @@ -package ru.spcex.clearing.backendapi.service.validation.rules; -import ru.spcex.clearing.backendapi.errors.BackEndError; -import ru.spcex.platform.classes.base.SpcexObjectBase; -import ru.spcex.platform.classes.base.interfaces.WithId; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.validation.ImdgValidationContext; -import ru.spcex.platform.utils.enumeration.EnumMessage; -import ru.spcex.platform.utils.validation.IValidationRule; - -import java.util.Optional; - -public class PresentById implements IValidationRule> { - private final Imdg map; - - public PresentById(Imdg map) { - this.map = map; - } - - @Override - public Optional validate(ImdgValidationContext context) { - WithId actionById = context.getValidatedObject(); - if (map.getSingleObjectByID(actionById.getId()) == null) { - return of(BackEndError.ResourceNotFound, actionById.getId()); - } else { - return empty(); - } - } -} diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/MessageResolverConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/MessageResolverConfig.java index 09157e14d..6ef39cec8 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/MessageResolverConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/MessageResolverConfig.java @@ -3,16 +3,12 @@ package ru.spcex.clearing.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import ru.spcex.platform.utils.enumeration.IMessageResolver; - -import java.util.Arrays; +import ru.spcex.platform.utils.enumeration.SimpleMessageResolver; @Configuration public class MessageResolverConfig { @Bean public IMessageResolver messageResolver() { - return errorMessage -> { - if (errorMessage == null) return "null"; - return String.format("(%d) args %s", errorMessage.getSubject().getId(), Arrays.toString(errorMessage.getArgs())); - }; + return new SimpleMessageResolver(); } } diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/component/ListingBuilder.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/component/ListingBuilder.java new file mode 100644 index 000000000..812556ee3 --- /dev/null +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/component/ListingBuilder.java @@ -0,0 +1,24 @@ +package ru.spcex.clearing.securities.component; + +import ru.clearing.classes.statics.data.misc.Listing; +import ru.clearing.classes.statics.data.misc.MoneyMarketSecurity; +import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest; +import ru.spcex.platform.enumeration.Market; +import ru.spcex.platform.enumeration.Status; + +import java.math.BigDecimal; + +public class ListingBuilder { + public Listing byNewMms(MoneyMarketSecurity mms, MoneyMarketSecurityNewRequest mmsReq) { + Listing listing = new Listing(); + listing.setCreated(mms.getCreated()); + listing.setSecurityId(mms.getId()); + listing.setLotSize(BigDecimal.valueOf(mmsReq.getLotSize())); + listing.setMarket(Market.mkrs.getKey()); + listing.setSymbolCode(mms.getSecuritySymbol()); + listing.setSymbolName(mms.getFullName()); + listing.setTradingCurrency(mms.getNominalCurrency()); + listing.setWorkflowStatus(Status.Active.getKey()); + return listing; + } +} diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/config/ErrorResolverConfig.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/config/ErrorResolverConfig.java new file mode 100644 index 000000000..38d1bdd66 --- /dev/null +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/config/ErrorResolverConfig.java @@ -0,0 +1,14 @@ +package ru.spcex.clearing.securities.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import ru.spcex.platform.utils.enumeration.IMessageResolver; +import ru.spcex.platform.utils.enumeration.SimpleMessageResolver; + +@Configuration +public class ErrorResolverConfig { + @Bean + public IMessageResolver messageResolver() { + return new SimpleMessageResolver(); + } +} diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/errors/SecuritiesError.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/errors/SecuritiesError.java new file mode 100644 index 000000000..5b26bbe62 --- /dev/null +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/errors/SecuritiesError.java @@ -0,0 +1,21 @@ +package ru.spcex.clearing.securities.errors; + +import ru.spcex.platform.utils.enumeration.IEnumId; + +public enum SecuritiesError implements IEnumId { + WrongFieldValue(1004L), + InstrumentAlreadyExists(1010L), + InstrumentNotActive(1012L), + InstrumentNotFound(1011L), + ; + private final Long id; + + SecuritiesError(Long id) { + this.id = id; + } + + @Override + public Long getId() { + return id; + } +} diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java index 18029734e..37b92222a 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java @@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import ru.clearing.classes.statics.data.misc.Listing; import ru.clearing.classes.statics.data.misc.MoneyMarketSecurity; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; @@ -16,29 +17,48 @@ import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSe import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityUpdateRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.RequestInfo; +import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; import ru.spcex.clearing.platform.messaging.service.Status; +import ru.spcex.clearing.securities.component.ListingBuilder; +import ru.spcex.clearing.securities.validation.ValidationProvider; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgId; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgTransaction; +import ru.spcex.platform.imdg.validation.Stored; +import ru.spcex.platform.utils.enumeration.EnumMessage; +import ru.spcex.platform.utils.enumeration.IMessageResolver; +import ru.spcex.platform.utils.validation.IValidator; import java.math.BigDecimal; import java.time.Instant; +import java.util.Map; +import java.util.Optional; @Service public class MoneyMarketSecurityService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg moneyMarketSecurityMap; + private final Imdg listingImdg; private final ImdgProvider imdgProvider; private final ImdgId idGenerator; + private final ValidationProvider validation; + private final IMessageResolver messageResolver; + private final ListingBuilder listingBuilder = new ListingBuilder(); @Autowired - public MoneyMarketSecurityService(Consumer kafkaQueue, Producer kafkaProducer, - ImdgProvider imdgProvider) { + public MoneyMarketSecurityService(Consumer kafkaQueue, + Producer kafkaProducer, + ImdgProvider imdgProvider, + ValidationProvider validation, + IMessageResolver messageResolver) { super(kafkaQueue, kafkaProducer); + this.validation = validation; this.moneyMarketSecurityMap = imdgProvider.getImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class); + this.listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class); this.imdgProvider = imdgProvider; this.idGenerator = imdgProvider.getImdgIdGenerator(); + this.messageResolver = messageResolver; } @Override @@ -59,23 +79,32 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial @Override public void afterPropertiesSet() { callback(MoneyMarketSecurityNewRequest.class) - .setConsumer(this::newMoneyMarket) + .setFunction(this::newMoneyMarket) .forDestination(Consts.DESTINATION_MONEY_MARKET_SECURITY_NEW, callbacks::put); callback(MoneyMarketSecurityUpdateRequest.class) - .setConsumer(this::updateMoneyMarket) + .setFunction(this::updateMoneyMarket) .forDestination(Consts.DESTINATION_MONEY_MARKET_SECURITY_UPDATE, callbacks::put); callback(CommonDeleteRequest.class) - .setConsumer(this::deleteMoneyMarket) + .setFunction(this::deleteMoneyMarket) .forDestination(Consts.DESTINATION_MONEY_MARKET_SECURITY_DELETE, callbacks::put); imdgProvider.waitAvailable(); init(); } - private void newMoneyMarket(BaseRequest userRequest) { -// Imdg requestInfoImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_RequestInfo, RequestInfo.class); -// RequestInfo reqInfo = requestInfoImdg.getSingleObjectByID(userRequest.getId()); + private RequestInfoUpdate newMoneyMarket(BaseRequest userRequest) { ImdgTransaction transaction = imdgProvider.newTransaction(); MoneyMarketSecurityNewRequest req = userRequest.getRequestPayload(); + Optional validationError = validation.mmsNewValidator() + .apply(req) + .tillFirstError(); + if (validationError.isPresent()) { + String errorMsg = messageResolver.resolve(validationError.get()); + log.error("cannot process MoneyMarketSecurityNewRequest id={}: {}", userRequest.getId(), errorMsg); + return new RequestInfoUpdate() + .setId(userRequest.getId()) + .setStatus(Status.Error) + .setMessage(errorMsg); + } log.debug("MoneyMarketSecurityNewRequest received"); MoneyMarketSecurity mms = new MoneyMarketSecurity(); mms.setId(idGenerator.nextId()); @@ -92,10 +121,11 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial try { transaction.beginTransaction(); Imdg moneyMarketSecurityMap = transaction.getImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class); - Imdg reqInfoMap = transaction.getImdg(IMDGDistributedNames.Map_RequestInfo, RequestInfo.class); + Imdg listingMap = transaction.getImdg(IMDGDistributedNames.Map_Listing, Listing.class); //одним скопом выполняем реквест moneyMarketSecurityMap.insert(mms); -// RequestInfo.update(reqInfo, Status.Success, "success"); + Listing listing = listingBuilder.byNewMms(mms, req); + listingMap.insert(listing); //и сохраняем обновленный // reqInfoMap.insert(reqInfo); transaction.commitTransaction(); @@ -105,13 +135,25 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial // requestInfoImdg.insert(reqInfo); } log.debug("successfully processed, request id {}, new object id {}", userRequest.getId(), mms.getId()); + return null; // default success } - private void updateMoneyMarket(BaseRequest userRequest) { + private RequestInfoUpdate updateMoneyMarket(BaseRequest userRequest) { MoneyMarketSecurityUpdateRequest req = userRequest.getRequestPayload(); log.debug("MoneyMarketSecurityUpdateRequest received id = {}", req.getId()); - MoneyMarketSecurity mms = moneyMarketSecurityMap.getSingleObjectByID(req.getId()); - mms.setUpdated(Instant.now()); + IValidator validator = validation.mmsUpdateValidator().apply(req); + Optional validationError = validator.tillFirstError(); + if (validationError.isPresent()) { + String errorMsg = messageResolver.resolve(validationError.get()); + log.error("cannot process MoneyMarketSecurityUpdateRequest id={}: {}", userRequest.getId(), errorMsg); + return new RequestInfoUpdate() + .setId(userRequest.getId()) + .setStatus(Status.Error) + .setMessage(errorMsg); + } + MoneyMarketSecurity mms = validator.getStored(Stored.PresentById); + Instant updateTime = Instant.now(); + mms.setUpdated(updateTime); mms.setStartDate(req.getStartDate()); mms.setEndDate(req.getEndDate()); mms.setNominalValue(req.getNominalValue() != null ? BigDecimal.valueOf(req.getNominalValue()) : null); @@ -119,12 +161,43 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial mms.setInstrumentType(req.getInstrumentType()); mms.setFullName(req.getFullName()); moneyMarketSecurityMap.update(mms); + Listing listing = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", mms.getId())); + if (listing == null) { + log.error("MoneyMarketSecurityUpdateRequest id {} couldn't find listing with securityId {}", req.getId(), mms.getId()); + return null; + } + listing.setLotSize(BigDecimal.valueOf(req.getLotSize())); + listing.setUpdated(updateTime); + listingImdg.update(listing); + return null; } - private void deleteMoneyMarket(BaseRequest userRequest) { + private RequestInfoUpdate deleteMoneyMarket(BaseRequest userRequest) { CommonDeleteRequest req = userRequest.getRequestPayload(); log.debug("CommonDeleteRequest received id = {}", req.getId()); - MoneyMarketSecurity mms = moneyMarketSecurityMap.getSingleObjectByID(req.getId()); - moneyMarketSecurityMap.delete(mms); + IValidator validator = validation.mmsDeleteValidator().apply(req); + Optional validationError = validator.tillFirstError(); + if (validationError.isPresent()) { + String errorMsg = messageResolver.resolve(validationError.get()); + log.error("cannot process CommonDeleteRequest id={}: {}", userRequest.getId(), errorMsg); + return new RequestInfoUpdate() + .setId(userRequest.getId()) + .setStatus(Status.Error) + .setMessage(errorMsg); + } + MoneyMarketSecurity mms = validator.getStored(Stored.PresentById); + mms.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey()); + Instant.now(); + mms.setUpdated(Instant.now()); + moneyMarketSecurityMap.update(mms); + Listing listing = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", mms.getId())); + if (listing == null) { + log.error("CommonDeleteRequest id {} couldn't find listing with securityId {}", req.getId(), mms.getId()); + return null; + } + listing.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey()); + listing.setUpdated(Instant.now()); + listingImdg.update(listing); + return null; } } diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/ValidationProvider.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/ValidationProvider.java new file mode 100644 index 000000000..1f6ca6675 --- /dev/null +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/ValidationProvider.java @@ -0,0 +1,66 @@ +package ru.spcex.clearing.securities.validation; + +import org.springframework.stereotype.Component; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityUpdateRequest; +import ru.spcex.clearing.securities.errors.SecuritiesError; +import ru.spcex.clearing.securities.validation.rule.EndDtAfterStartDt; +import ru.spcex.clearing.securities.validation.rule.MmsNewValidationRule; +import ru.spcex.clearing.securities.validation.rule.MmsUpdateValidationRule; +import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.imdg.validation.ImdgValidationContext; +import ru.spcex.platform.imdg.validation.rule.PresentById; +import ru.spcex.platform.utils.validation.IValidator; +import ru.spcex.platform.utils.validation.ValidatorImpl; + +import java.util.function.Function; + +@Component +public class ValidationProvider { + private final Imdg mmsMap; + + + public ValidationProvider(ImdgProvider imdgProvider) { + this.mmsMap = imdgProvider.getImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, SpcexObjectBase.class); + } + + public Function mmsNewValidator() { + return mmsRequest -> { + ImdgValidationContext context = new ImdgValidationContext<>(); + context.setValidatedObject(mmsRequest); + context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, mmsMap); + return new ValidatorImpl<>(context, + EndDtAfterStartDt.instance(MoneyMarketSecurityNewRequest.class), + MmsNewValidationRule.SecuritySymbolUniq + ); + }; + } + + public Function mmsUpdateValidator() { + return mmsRequest -> { + ImdgValidationContext context = new ImdgValidationContext<>(); + context.setValidatedObject(mmsRequest); + context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, mmsMap); + return new ValidatorImpl<>(context, + EndDtAfterStartDt.instance(MoneyMarketSecurityUpdateRequest.class), + new PresentById(IMDGDistributedNames.Map_MoneyMarketSecurity, SecuritiesError.InstrumentNotFound, true), + MmsUpdateValidationRule.StatusIsActive + ); + }; + } + + public Function mmsDeleteValidator() { + return mmsRequest -> { + ImdgValidationContext context = new ImdgValidationContext<>(); + context.setValidatedObject(mmsRequest); + context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, mmsMap); + return new ValidatorImpl<>(context, + new PresentById(IMDGDistributedNames.Map_MoneyMarketSecurity, SecuritiesError.InstrumentNotFound, true) + ); + }; + } +} diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/EndDtAfterStartDt.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/EndDtAfterStartDt.java new file mode 100644 index 000000000..c565f5f83 --- /dev/null +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/EndDtAfterStartDt.java @@ -0,0 +1,28 @@ +package ru.spcex.clearing.securities.validation.rule; + +import ru.spcex.clearing.securities.errors.SecuritiesError; +import ru.spcex.platform.classes.base.interfaces.WithEndDt; +import ru.spcex.platform.classes.base.interfaces.WithStartDt; +import ru.spcex.platform.imdg.validation.ImdgValidationContext; +import ru.spcex.platform.utils.enumeration.EnumMessage; +import ru.spcex.platform.utils.validation.IValidationRule; + +import java.util.Optional; + +public class EndDtAfterStartDt implements IValidationRule> { + + public EndDtAfterStartDt() {} + + public static EndDtAfterStartDt instance(Class clazz) { + return new EndDtAfterStartDt<>(); + } + + @Override + public Optional validate(ImdgValidationContext context) { + T validatedObject = context.getValidatedObject(); + if (validatedObject.getEndDate().isBefore(validatedObject.getStartDate())) { + return of(SecuritiesError.WrongFieldValue, "endDate"); + } + return empty(); + } +} diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/MmsNewValidationRule.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/MmsNewValidationRule.java new file mode 100644 index 000000000..550491385 --- /dev/null +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/MmsNewValidationRule.java @@ -0,0 +1,37 @@ +package ru.spcex.clearing.securities.validation.rule; + +import ru.clearing.classes.statics.data.misc.MoneyMarketSecurity; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest; +import ru.spcex.clearing.securities.errors.SecuritiesError; +import ru.spcex.platform.enumeration.Status; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.validation.ImdgValidationContext; +import ru.spcex.platform.utils.enumeration.EnumMessage; +import ru.spcex.platform.utils.validation.IValidationRule; + +import java.util.Map; +import java.util.Optional; + +public enum MmsNewValidationRule implements IValidationRule> { + SecuritySymbolUniq() { + @Override + public Optional validate(ImdgValidationContext context) { + MoneyMarketSecurityNewRequest action = context.getValidatedObject(); + Imdg mmsImdg = context.obtainMap(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class); + MoneyMarketSecurity mms = mmsImdg.getSingleObjectByFieldValues(Map.of( + "securitySymbol", action.getSecuritySymbol(), + "workflowStatus", Status.Active.getKey())); + if (mms != null) { + return of(SecuritiesError.InstrumentAlreadyExists); + } else { + return empty(); + } + } + }; + + @Override + public String ruleName() { + return "MmsNewValidationRule." + name(); + } +} diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/MmsUpdateValidationRule.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/MmsUpdateValidationRule.java new file mode 100644 index 000000000..2bf92e6c4 --- /dev/null +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/MmsUpdateValidationRule.java @@ -0,0 +1,32 @@ +package ru.spcex.clearing.securities.validation.rule; + +import ru.clearing.classes.statics.data.misc.MoneyMarketSecurity; +import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityUpdateRequest; +import ru.spcex.clearing.securities.errors.SecuritiesError; +import ru.spcex.platform.enumeration.Status; +import ru.spcex.platform.imdg.validation.ImdgValidationContext; +import ru.spcex.platform.imdg.validation.Stored; +import ru.spcex.platform.utils.enumeration.EnumMessage; +import ru.spcex.platform.utils.validation.IValidationRule; + +import java.util.Optional; + +public enum MmsUpdateValidationRule implements IValidationRule> { + StatusIsActive() { + @Override + public Optional validate(ImdgValidationContext context) { + MoneyMarketSecurity mms = context.getStoredObject(Stored.PresentById); + //проверка только если PresentById найдет объект и сохранит его + if (mms != null && !Status.Active.getKey().equals(mms.getWorkflowStatus())) { + return of(SecuritiesError.InstrumentNotActive); + } else { + return empty(); + } + } + }; + + @Override + public String ruleName() { + return "MmsNewValidationRule." + name(); + } +} diff --git a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/MoneyMarketSecurityServiceDisabled.java b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/MoneyMarketSecurityServiceDisabled.java index e35e6b816..971c65732 100644 --- a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/MoneyMarketSecurityServiceDisabled.java +++ b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/MoneyMarketSecurityServiceDisabled.java @@ -29,7 +29,9 @@ import ru.spcex.clearing.securities.config.HazelcastInstanceTestConfiguration; import ru.spcex.clearing.securities.config.HazelcastServiceTestConfiguration; import ru.spcex.clearing.securities.service.cud.MoneyMarketSecurityService; import ru.spcex.clearing.securities.utils.MatcherFactory; +import ru.spcex.clearing.securities.validation.ValidationProvider; import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; +import ru.spcex.platform.utils.enumeration.SimpleMessageResolver; import java.math.BigDecimal; import java.time.LocalDate; @@ -84,7 +86,8 @@ public class MoneyMarketSecurityServiceDisabled { private void startService() throws InterruptedException { MoneyMarketSecurityService keyRateService = - new MoneyMarketSecurityService(kafkaMockQueue, mockProducer, hazelcastService); + new MoneyMarketSecurityService(kafkaMockQueue, mockProducer, hazelcastService, + new ValidationProvider(hazelcastService), new SimpleMessageResolver()); keyRateService.afterPropertiesSet(); } diff --git a/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithEndDt.java b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithEndDt.java new file mode 100644 index 000000000..411e55415 --- /dev/null +++ b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithEndDt.java @@ -0,0 +1,7 @@ +package ru.spcex.platform.classes.base.interfaces; + +import java.time.LocalDate; + +public interface WithEndDt { + LocalDate getEndDate(); +} diff --git a/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithSecuritySymbol.java b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithSecuritySymbol.java new file mode 100644 index 000000000..d9a9cbe82 --- /dev/null +++ b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithSecuritySymbol.java @@ -0,0 +1,5 @@ +package ru.spcex.platform.classes.base.interfaces; + +public interface WithSecuritySymbol { + String getSecuritySymbol(); +} diff --git a/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithStartDt.java b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithStartDt.java new file mode 100644 index 000000000..990e36b68 --- /dev/null +++ b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithStartDt.java @@ -0,0 +1,7 @@ +package ru.spcex.platform.classes.base.interfaces; + +import java.time.LocalDate; + +public interface WithStartDt { + LocalDate getStartDate(); +} diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Market.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Market.java new file mode 100644 index 000000000..79d820bb0 --- /dev/null +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Market.java @@ -0,0 +1,18 @@ +package ru.spcex.platform.enumeration; + +import ru.spcex.platform.utils.enumeration.IEnumKey; + +public enum Market implements IEnumKey { + mkrs("MKRS"); + + private final String key; + + Market(String key) { + this.key = key; + } + + @Override + public String getKey() { + return key; + } +} diff --git a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java index b1e431044..ac3b60fa3 100644 --- a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java +++ b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java @@ -164,6 +164,7 @@ public class ImdgHazelcast implements Imdg { this.hzInstance = hzInstance; } + @Override public String getMapName() { return mapName; } diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/Imdg.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/Imdg.java index ca765d5b5..2784cc2dd 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/Imdg.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/Imdg.java @@ -6,6 +6,10 @@ import java.util.Collection; import java.util.Map; public interface Imdg { + default String getMapName() { + throw new UnsupportedOperationException("not implemented name"); + } + default void insert(T paramT) { throw new UnsupportedOperationException("not implemented insert"); } diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/ImdgValidationContext.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/ImdgValidationContext.java index 3d853cff4..2e7242a0f 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/ImdgValidationContext.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/ImdgValidationContext.java @@ -29,6 +29,9 @@ public class ImdgValidationContext implements IValidatorContext { return validatedObject; } + /** + * !!!не использовать один Enum в разных местах + */ public void storeObject(Enum storedObject, Object anyObject) { storedObjects.put(storedObject, anyObject); } diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/Stored.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/Stored.java new file mode 100644 index 000000000..c9f6ff542 --- /dev/null +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/Stored.java @@ -0,0 +1,11 @@ +package ru.spcex.platform.imdg.validation; + +/** + * !!!не использовать один Enum в разных местах - по энуму на один класс IValidationRule. + */ +public enum Stored { + /** + * если выполняется проверка наличия объекта по Id (см. ru.spcex.platform.imdg.validation.rule.PresentById) + */ + PresentById +} diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/rule/PresentById.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/rule/PresentById.java new file mode 100644 index 000000000..a69cab7b9 --- /dev/null +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/rule/PresentById.java @@ -0,0 +1,43 @@ +package ru.spcex.platform.imdg.validation.rule; +import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.classes.base.interfaces.WithId; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.validation.ImdgValidationContext; +import ru.spcex.platform.imdg.validation.Stored; +import ru.spcex.platform.utils.enumeration.EnumMessage; +import ru.spcex.platform.utils.enumeration.IEnumId; +import ru.spcex.platform.utils.validation.IValidationRule; + +import java.util.Optional; + +public class PresentById implements IValidationRule> { + private final String mapName; + private final IEnumId errorEnum; + private boolean storeEnabled = false; + + public PresentById(String mapName, IEnumId errorEnum) { + this.mapName = mapName; + this.errorEnum = errorEnum; + } + public PresentById(String mapName, IEnumId errorEnum, Boolean storeEnabled) { + this.mapName = mapName; + this.errorEnum = errorEnum; + this.storeEnabled = storeEnabled; + } + + + @Override + public Optional validate(ImdgValidationContext context) { + WithId actionById = context.getValidatedObject(); + Imdg targetMap = context.obtainMap(mapName, SpcexObjectBase.class); + SpcexObjectBase obj = targetMap.getSingleObjectByID(actionById.getId()); + if (obj == null) { + return of(errorEnum, actionById.getId()); + } else { + if (storeEnabled) { + context.storeObject(Stored.PresentById, obj); + } + return empty(); + } + } +} diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/MoneyMarketSecurityNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/MoneyMarketSecurityNewRequest.java index 979f8b28e..0527de865 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/MoneyMarketSecurityNewRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/MoneyMarketSecurityNewRequest.java @@ -5,10 +5,12 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer; import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer; +import ru.spcex.platform.classes.base.interfaces.WithEndDt; +import ru.spcex.platform.classes.base.interfaces.WithStartDt; import java.time.LocalDate; -public class MoneyMarketSecurityNewRequest { +public class MoneyMarketSecurityNewRequest implements WithStartDt, WithEndDt { @JsonProperty @JsonSerialize(using = LocalDateSerializer.class) @JsonDeserialize(using = LocalDateDeserializer.class) diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/MoneyMarketSecurityUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/MoneyMarketSecurityUpdateRequest.java index 220e52c8a..6af0bbbd6 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/MoneyMarketSecurityUpdateRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/MoneyMarketSecurityUpdateRequest.java @@ -6,10 +6,12 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer; import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer; +import ru.spcex.platform.classes.base.interfaces.WithEndDt; +import ru.spcex.platform.classes.base.interfaces.WithStartDt; import java.time.LocalDate; -public class MoneyMarketSecurityUpdateRequest { +public class MoneyMarketSecurityUpdateRequest implements WithStartDt, WithEndDt { @JsonProperty public Long id; @JsonFormat(pattern = "yyyy-MM-dd", timezone = "Europe/Moscow") diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/service/RequestInfoUpdate.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/service/RequestInfoUpdate.java index d83b8e9c1..24e8a1562 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/service/RequestInfoUpdate.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/service/RequestInfoUpdate.java @@ -3,20 +3,40 @@ package ru.spcex.clearing.platform.messaging.service; public class RequestInfoUpdate { private Long id; private Status status; + private String message; + + public RequestInfoUpdate() {} + + public RequestInfoUpdate(Long id, Status status, Long errorId, String message) { + this.id = id; + this.status = status; + this.message = message; + } public Long getId() { return id; } - public void setId(Long id) { + public RequestInfoUpdate setId(Long id) { this.id = id; + return this; } public Status getStatus() { return status; } - public void setStatus(Status status) { + public RequestInfoUpdate setStatus(Status status) { this.status = status; + return this; + } + + public String getMessage() { + return message; + } + + public RequestInfoUpdate setMessage(String message) { + this.message = message; + return this; } } diff --git a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/SimpleMessageResolver.java b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/SimpleMessageResolver.java new file mode 100644 index 000000000..38d9a81fc --- /dev/null +++ b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/SimpleMessageResolver.java @@ -0,0 +1,11 @@ +package ru.spcex.platform.utils.enumeration; + +import java.util.Arrays; + +public class SimpleMessageResolver implements IMessageResolver { + @Override + public String resolve(EnumMessage errorMessage) { + if (errorMessage == null) return "null"; + return String.format("(%d) args %s", errorMessage.getSubject().getId(), Arrays.toString(errorMessage.getArgs())); + } +} From b4c3388e06c5bea5bd51895541c988c883e00e87 Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 21 Dec 2022 12:09:52 +0300 Subject: [PATCH 051/234] dbf-importer log fix --- .../dbf/importer/services/DBFImporterService.java | 10 +++++++--- .../dbf-importer/src/main/resources/logback.xml | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java index a2f4e64b6..358604067 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java @@ -42,18 +42,22 @@ public class DBFImporterService { } public void run(ETable specificTable) { - log.info("adding import task {}", specificTable != null ? specificTable.name() : ""); + if (specificTable == null) { + log.trace("adding import task"); + } else { + log.info("adding import task {}", specificTable); + } executorService.execute(() -> { Map> newFiles = null; try { - log.info("checking new files... {}", specificTable != null ? specificTable.name() : ""); + log.trace("checking new files... {}", specificTable != null ? specificTable.name() : ""); newFiles = getFiles(specificTable); if (newFiles.size() > 0 && log.isDebugEnabled()) { log.debug("following files will be processed {}", forLogging(newFiles)); } else if (newFiles.size() > 0) { log.info("following files will be processed {}", forLoggingSizeOnly(newFiles)); } else { - log.info("no files were found"); + log.trace("no files were found"); } for (Map.Entry> newFilesEntry : newFiles.entrySet()) { ETable currTable = newFilesEntry.getKey(); diff --git a/clearing-parent/dbf-importer/src/main/resources/logback.xml b/clearing-parent/dbf-importer/src/main/resources/logback.xml index 0d5d9d875..fa546aee5 100644 --- a/clearing-parent/dbf-importer/src/main/resources/logback.xml +++ b/clearing-parent/dbf-importer/src/main/resources/logback.xml @@ -3,7 +3,7 @@ UTF-8 - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + %date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n From dd117b09b17519a9510ad57c0e5d8820fab859da Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 21 Dec 2022 12:33:38 +0300 Subject: [PATCH 052/234] balance-service fix --- .../spcex/clearing/balance/config/SdfExecutorsConfig.java | 8 +++++++- .../importer/logic/stages/DbfImportKafkaMessenger.java | 8 +++++--- .../main/java/ru/spcex/platform/enumeration/SdfTable.java | 4 ++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/SdfExecutorsConfig.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/SdfExecutorsConfig.java index b36d68aa9..9cf397465 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/SdfExecutorsConfig.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/SdfExecutorsConfig.java @@ -4,6 +4,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import ru.spcex.clearing.balance.service.AbstractExecutor; import ru.spcex.clearing.balance.service.Sdf01Executor; +import ru.spcex.clearing.balance.service.Sdf09Executor; +import ru.spcex.clearing.balance.service.Sdf16Executor; import ru.spcex.platform.classes.base.interfaces.WithAccount; import ru.spcex.platform.enumeration.SdfTable; @@ -14,9 +16,13 @@ import java.util.Map; public class SdfExecutorsConfig { @Bean("sdfExecutors") - public Map> executorsMap(Sdf01Executor sdf01Executor) { + public Map> executorsMap(Sdf01Executor sdf01Executor, + Sdf09Executor sdf09Executor, + Sdf16Executor sdf16Executor) { Map> executors = new HashMap<>(); executors.put(SdfTable.SDF_01, sdf01Executor); + executors.put(SdfTable.SDF_09, sdf09Executor); + executors.put(SdfTable.SDF_16, sdf16Executor); return executors; } } diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/DbfImportKafkaMessenger.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/DbfImportKafkaMessenger.java index 2706c2476..fffcfcab0 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/DbfImportKafkaMessenger.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/DbfImportKafkaMessenger.java @@ -26,7 +26,9 @@ public class DbfImportKafkaMessenger implements InitializingBean { @Override public void afterPropertiesSet() { - messengers.put(ETable.DF_01, this::messageDf01); + messengers.put(ETable.DF_01, groupId -> messageBalance(groupId, SdfTable.SDF_01)); + messengers.put(ETable.DF_09, groupId -> messageBalance(groupId, SdfTable.SDF_09)); + messengers.put(ETable.DF_16, groupId -> messageBalance(groupId, SdfTable.SDF_16)); messengers.put(ETable.DF_04, this::messageDf04); } @@ -41,10 +43,10 @@ public class DbfImportKafkaMessenger implements InitializingBean { } } - private void messageDf01(Long groupId) { + private void messageBalance(Long groupId, SdfTable table) { StatementRequest statementRequest = new StatementRequest(); statementRequest.setGroupId(groupId); - statementRequest.setTable(SdfTable.SDF_01); + statementRequest.setTable(table); kafka.get().sendRequestToQueue(Consts.STATEMENT_PROCESS, statementRequest); } diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/SdfTable.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/SdfTable.java index 8cb3a01d2..988f55a0c 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/SdfTable.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/SdfTable.java @@ -3,13 +3,13 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; public enum SdfTable implements IEnumKey { - SDF_01("SDF_01"); + SDF_01("SDF_01"), SDF_09("SDF_09"), SDF_16("SDF_16"); SdfTable(String key) { this.key = key; } - private String key; + private final String key; @Override public String getKey() { From dfbc350ed23eb031dbd266df47acc507cf65f7e7 Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 21 Dec 2022 12:41:01 +0300 Subject: [PATCH 053/234] scheduler-service build fix --- pom.xml | 1 + z-distr/pom.xml | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/pom.xml b/pom.xml index 3f2009995..3474338bf 100644 --- a/pom.xml +++ b/pom.xml @@ -42,6 +42,7 @@ ${folder_root_clearing}/clearing-parent/company-service ${folder_root_clearing}/clearing-parent/reports-service ${folder_root_clearing}/clearing-parent/utility-service + ${folder_root_clearing}/clearing-parent/scheduler-service 3.12.4 1.7.33 diff --git a/z-distr/pom.xml b/z-distr/pom.xml index 92a874b5a..0a1d961e8 100644 --- a/z-distr/pom.xml +++ b/z-distr/pom.xml @@ -248,6 +248,25 @@ + + copy-scheduler-service-bin + prepare-package + + copy + + + + + ${folder_root_scheduler-service}/target/scheduler-service.jar + ${folder.clearing.distr.modules}/scheduler-service/scheduler-service.jar + + + ${folder_root_scheduler-service}/src/main/resources/application.properties + ${folder.clearing.distr.modules}/scheduler-service/application.properties + + + + copy-reports-service-bin prepare-package From b6c25744d2e90fb0317456c82f2f0b09ae26df1c Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 21 Dec 2022 13:03:07 +0300 Subject: [PATCH 054/234] scheduler-service logs fix --- .../scheduler-service/src/main/resources/logback.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clearing-parent/scheduler-service/src/main/resources/logback.xml b/clearing-parent/scheduler-service/src/main/resources/logback.xml index a7a54b222..57cf31d6a 100644 --- a/clearing-parent/scheduler-service/src/main/resources/logback.xml +++ b/clearing-parent/scheduler-service/src/main/resources/logback.xml @@ -8,7 +8,7 @@ - ./logs/utility-service.log + ./logs/scheduler-service.log %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %class{0}:%msg%n @@ -16,7 +16,7 @@ - ./logs/utility-service.%i.log + ./logs/scheduler-service.%i.log 1 10 From 292675e92b6d608f793ae7d123c24e2df9a1908d Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 21 Dec 2022 15:45:15 +0300 Subject: [PATCH 055/234] backend-api LocalTime meta parsing fix --- .../ru/spcex/clearing/backendapi/meta/GetResponseFactory.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/GetResponseFactory.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/GetResponseFactory.java index 11299df70..86f3cb2c1 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/GetResponseFactory.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/GetResponseFactory.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.time.Instant; +import java.time.LocalTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.*; @@ -17,6 +18,7 @@ import java.util.stream.Collectors; public class GetResponseFactory { private final Logger log = LoggerFactory.getLogger(getClass()); private final MetaServer meta; + private static final DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss"); @Autowired public GetResponseFactory(MetaServer meta) { @@ -71,6 +73,8 @@ public class GetResponseFactory { data = sdf.format(value); } else if (value instanceof Instant) { data = dateTimeFormatter.format((Instant) value); + } else if (value instanceof LocalTime) { + data = timeFormatter.format((LocalTime) value); } else { data = value; } From bbc10ca13b9f1eab3994bd5f4e74f28ce0733805 Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 21 Dec 2022 16:46:19 +0300 Subject: [PATCH 056/234] balance-service fix --- .../clearing/balance/config/ValidationConfig.java | 1 + .../balance/service/StatementService.java | 15 +++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java index 161f536ca..baf8ebc54 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java @@ -71,6 +71,7 @@ public class ValidationConfig { Consumer addImdg = (s) -> context.addImdg(s, getImdg(s)); addImdg.accept(IMDGDistributedNames.Map_Account); addImdg.accept(IMDGDistributedNames.Map_Company); + addImdg.accept(IMDGDistributedNames.Map_CompanySymbols); return new ValidatorImpl<>(context, Sdf16ValidationRule.CompanyPresent, ExistClrnAccountValidationRule.AccountPresent, diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java index f74047b3f..1cc0e0575 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java @@ -8,6 +8,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import ru.clearing.classes.statics.data.sdf.SDf01; +import ru.clearing.classes.statics.data.sdf.SDf09; +import ru.clearing.classes.statics.data.sdf.SDf16; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.Consts; @@ -23,6 +25,7 @@ import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import java.util.Collection; +import java.util.EnumMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -33,7 +36,7 @@ public class StatementService extends QueueConsumer implements InitializingBean private final ImdgProvider imdgProvider; private final KafkaSender kafkaReqProducer; - private final Imdg sdf01Imdg; + private final Map> sdfImdgs; private final Map> executorsMap; @Autowired @@ -43,9 +46,12 @@ public class StatementService extends QueueConsumer implements InitializingBean @Qualifier("sdfExecutors") Map> executorsMap) { super(kafkaQueue); this.imdgProvider = imdgProvider; - this.sdf01Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf01, SDf01.class); + this.sdfImdgs = new EnumMap<>(SdfTable.class); this.kafkaReqProducer = kafkaReqProducer; this.executorsMap = executorsMap; + this.sdfImdgs.put(SdfTable.SDF_01, imdgProvider.getImdg(IMDGDistributedNames.Map_SDf01, SDf01.class)); + this.sdfImdgs.put(SdfTable.SDF_09, imdgProvider.getImdg(IMDGDistributedNames.Map_SDf09, SDf09.class)); + this.sdfImdgs.put(SdfTable.SDF_16, imdgProvider.getImdg(IMDGDistributedNames.Map_SDf16, SDf16.class)); } @Override @@ -61,13 +67,14 @@ public class StatementService extends QueueConsumer implements InitializingBean Collection sdfGroup; SdfTable table = statementRequest.getTable(); //map = getMapByTable(table) + Imdg sdfImdg = sdfImdgs.get(table); if (statementRequest.getAccountCreationResults().size() == 0) { - sdfGroup = sdf01Imdg.getCollectionObjectsByFieldValues(Map.of("generationId", statementRequest.getGroupId())); + sdfGroup = sdfImdg.getCollectionObjectsByFieldValues(Map.of("generationId", statementRequest.getGroupId())); } else { sdfGroup = statementRequest.getAccountCreationResults() .stream() .filter(part -> part.getErrorCode() == null) //fixme эти случае должны попадать в ошибочный sdf02 - .map(part -> sdf01Imdg.getSingleObjectByID(part.getSdfId())) + .map(part -> sdfImdg.getSingleObjectByID(part.getSdfId())) .collect(Collectors.toList()); } // sdf01Group = sdf01Group From 9b0acaeb7a8be93fe2168aa855ad8126122d6427 Mon Sep 17 00:00:00 2001 From: ialbert Date: Thu, 22 Dec 2022 11:44:56 +0300 Subject: [PATCH 057/234] http://jira.mfd.msk:8088/browse/CLS-198 --- .../schedule/PlannerTemplateNewAction.java | 24 ++++++++++++++ .../schedule/PlannerTemplateUpdateAction.java | 24 ++++++++++++++ .../data/scheduler/PlannerTemplate.java | 17 ++++++++++ .../statics/data/user/UserConnect.java | 20 ++++++------ .../dictionary/InterestStatusDictionary.java | 12 ------- .../UserConnectHistoryMapStore.java | 6 ++-- .../PlannerTemplateMapStore.java | 8 +++-- .../businessobject/UserConnectMapStore.java | 10 +++--- .../InterestStatusDictionaryMapStore.java | 31 ------------------- .../service/PlannerTemplateService.java | 4 +++ .../clearing/utility/service/UserService.java | 4 +-- .../clearing/imdg/IMDGDistributedNames.java | 1 - .../schedule/PlannerTemplateNewRequest.java | 20 ++++++++++++ .../PlannerTemplateUpdateRequest.java | 20 ++++++++++++ 14 files changed, 135 insertions(+), 66 deletions(-) delete mode 100644 clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/InterestStatusDictionary.java delete mode 100644 clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/InterestStatusDictionaryMapStore.java diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerTemplateNewAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerTemplateNewAction.java index 2beafb2ed..6ab3eb845 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerTemplateNewAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerTemplateNewAction.java @@ -30,6 +30,12 @@ public class PlannerTemplateNewAction implements IAction - * Dictionary DB table: INTEREST_STATUS_DICTIONARY - **/ -public class InterestStatusDictionary extends AbstractDictionary { - private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; - - -} \ No newline at end of file diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/UserConnectHistoryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/UserConnectHistoryMapStore.java index 4f0bbab9e..e2f79fd69 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/UserConnectHistoryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/UserConnectHistoryMapStore.java @@ -28,7 +28,7 @@ public class UserConnectHistoryMapStore extends TemplateEventMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "CREATED_AT", "UPDATED_AT", "TASK", "TASK_TIME", "TASK_STATUS" + "ID", "CREATED_AT", "UPDATED_AT", "TASK", "TASK_TIME", "TASK_STATUS", "COMPANY_ID", "SECURITY_ID" }; } @@ -43,6 +43,8 @@ public class PlannerTemplateMapStore extends TemplateMapStore { object.setTask(resultSet.getObject("TASK", String.class)); object.setTaskTime(getLocalTimeFromSqlTime(resultSet, "TASK_TIME")); object.setTaskStatus(resultSet.getObject("TASK_STATUS", String.class)); + object.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class)); + object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class)); return object; } @@ -54,7 +56,9 @@ public class PlannerTemplateMapStore extends TemplateMapStore { TimeUtil.toDateFromInstant(object.getUpdated()), object.getTask(), TimeUtil.toDateFromLocalTime(object.getTaskTime()), - object.getTaskStatus() + object.getTaskStatus(), + object.getCompanyId(), + object.getSecurityId() }; return args; } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/UserConnectMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/UserConnectMapStore.java index fe5f61fab..60e6267f1 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/UserConnectMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/UserConnectMapStore.java @@ -30,7 +30,7 @@ public class UserConnectMapStore extends TemplateMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "CREATED_AT", "UPDATED_AT", "USER_ID", "CONNECTION_TIME", "DISCONNECTION_TIME", "SERVER_I_P", "CLIENT_I_P", "CONNECTION_STATE", "CLEARING_DATE", "ERROR_CODE", "ERROR_TEXT" + "ID", "CREATED_AT", "UPDATED_AT", "USER_ID", "CONNECTION_TIME", "DISCONNECTION_TIME", "SERVER_IP", "CLIENT_IP", "CONNECTION_STATE", "CLEARING_DATE", "ERROR_CODE", "ERROR_TEXT" }; } @@ -43,8 +43,8 @@ public class UserConnectMapStore extends TemplateMapStore { object.setUserId(resultSet.getObject("USER_ID", Long.class)); object.setConnectionTime(getInstantFromTimestamp(resultSet, "CONNECTION_TIME")); object.setDisconnectionTime(getInstantFromTimestamp(resultSet, "DISCONNECTION_TIME")); - object.setServerIP(resultSet.getObject("SERVER_I_P", String.class)); - object.setClientIP(resultSet.getObject("CLIENT_I_P", String.class)); + object.setServerIp(resultSet.getObject("SERVER_IP", String.class)); + object.setClientIp(resultSet.getObject("CLIENT_IP", String.class)); object.setConnectionState(resultSet.getObject("CONNECTION_STATE", String.class)); object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE")); object.setErrorCode(resultSet.getObject("ERROR_CODE", Long.class)); @@ -61,8 +61,8 @@ public class UserConnectMapStore extends TemplateMapStore { object.getUserId(), TimeUtil.toDateFromInstant(object.getConnectionTime()), TimeUtil.toDateFromInstant(object.getDisconnectionTime()), - object.getServerIP(), - object.getClientIP(), + object.getServerIp(), + object.getClientIp(), object.getConnectionState(), TimeUtil.toDateFromLocalDate(object.getClearingDate()), object.getErrorCode(), diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/InterestStatusDictionaryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/InterestStatusDictionaryMapStore.java deleted file mode 100644 index af6609e62..000000000 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/InterestStatusDictionaryMapStore.java +++ /dev/null @@ -1,31 +0,0 @@ -package ru.spcex.clearing.imdg.dictionary; - -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.stereotype.Component; -import ru.clearing.platform.dictionary.InterestStatusDictionary; -import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.imdg.base.DictionaryTMapStore; - -@Component -public class InterestStatusDictionaryMapStore extends DictionaryTMapStore { - - public InterestStatusDictionaryMapStore(JdbcTemplate jdbcTemplate) { - super(jdbcTemplate); - } - - @Override - public String getMapName() { - return IMDGDistributedNames.Map_InterestStatusDictionary; - } - - @Override - public String getTableName() { - return "INTEREST_STATUS_DICTIONARY"; - } - - @Override - public InterestStatusDictionary getDictionaryObject() { - return new InterestStatusDictionary(); - } - -} \ No newline at end of file diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerTemplateService.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerTemplateService.java index 0fceaa2d4..e39a6e48c 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerTemplateService.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerTemplateService.java @@ -51,6 +51,8 @@ public class PlannerTemplateService extends QueueConsumer implements Initializin plannerTemplate.setTask(req.getTask()); plannerTemplate.setTaskTime(req.getTaskTime()); plannerTemplate.setTaskStatus(req.getTaskStatus()); + plannerTemplate.setCompanyId(req.getCompanyId()); + plannerTemplate.setSecurityId(req.getSecurityId()); plannerTemplateMap.insert(plannerTemplate); log.debug("successfully processed, new id {}", plannerTemplate.getId()); } @@ -62,6 +64,8 @@ public class PlannerTemplateService extends QueueConsumer implements Initializin plannerTemplate.setTask(req.getTask()); plannerTemplate.setTaskTime(req.getTaskTime()); plannerTemplate.setTaskStatus(req.getTaskStatus()); + plannerTemplate.setCompanyId(req.getCompanyId()); + plannerTemplate.setSecurityId(req.getSecurityId()); plannerTemplateMap.update(plannerTemplate); log.debug("successfully processed, new id {}", plannerTemplate.getId()); } diff --git a/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/UserService.java b/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/UserService.java index 6856fe3d7..7490e5b30 100644 --- a/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/UserService.java +++ b/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/UserService.java @@ -184,8 +184,8 @@ public class UserService extends QueueConsumer implements InitializingBean { userConnect.setUpdated(time); } userConnect.setConnectionTime(time); - userConnect.setServerIP(serverIp); - userConnect.setClientIP(clientIp); + userConnect.setServerIp(serverIp); + userConnect.setClientIp(clientIp); userConnect.setConnectionState(ConnectionState.Connected.getKey()); userConnect.setClearingDate(LocalDate.now()); if (isNew) { diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java index 5d5225e73..0b9a7a970 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java @@ -58,7 +58,6 @@ public final class IMDGDistributedNames { public static final String Map_SDf09 = "Map_SDf09"; public static final String Map_SDf12 = "Map_SDf12"; public static final String Map_SDf18 = "Map_SDf18"; - public static final String Map_InterestStatusDictionary = "Map_InterestStatusDictionary"; public static final String Map_AllowedDictionary = "Map_AllowedDictionary"; public static final String Map_ClearingCategoryDictionary = "Map_ClearingMemberCategoryDictionary"; public static final String Map_CompanyRoleDictionary = "Map_CompanyRoleDictionary"; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/PlannerTemplateNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/PlannerTemplateNewRequest.java index 7bafd0953..4705b5c4d 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/PlannerTemplateNewRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/PlannerTemplateNewRequest.java @@ -18,6 +18,10 @@ public class PlannerTemplateNewRequest { public LocalTime taskTime; @JsonProperty public String taskStatus; + @JsonProperty + public Long companyId; + @JsonProperty + public Long securityId; public String getTask() { return task; @@ -42,4 +46,20 @@ public class PlannerTemplateNewRequest { public void setTaskStatus(String taskStatus) { this.taskStatus = taskStatus; } + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } + + public Long getSecurityId() { + return securityId; + } + + public void setSecurityId(Long securityId) { + this.securityId = securityId; + } } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/PlannerTemplateUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/PlannerTemplateUpdateRequest.java index 6f1748334..0c22d6520 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/PlannerTemplateUpdateRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/PlannerTemplateUpdateRequest.java @@ -21,6 +21,10 @@ public class PlannerTemplateUpdateRequest { public LocalTime taskTime; @JsonProperty public String taskStatus; + @JsonProperty + public Long companyId; + @JsonProperty + public Long securityId; public String getTask() { return task; @@ -53,4 +57,20 @@ public class PlannerTemplateUpdateRequest { public void setId(Long id) { this.id = id; } + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } + + public Long getSecurityId() { + return securityId; + } + + public void setSecurityId(Long securityId) { + this.securityId = securityId; + } } From 148bd3a95a61388183939bc0fe35598ed490f996 Mon Sep 17 00:00:00 2001 From: ialbert Date: Thu, 22 Dec 2022 12:55:51 +0300 Subject: [PATCH 058/234] dbf-exporter Sdf17 fix --- .../spcex/clearing/balance/service/Sdf16Executor.java | 11 +++++------ .../ru/clearing/classes/statics/data/sdf/SDf17.java | 6 +++--- .../services/converters/S_DF17_Converter.java | 2 +- .../ru/spcex/clearing/imdg/object/SDf17MapStore.java | 2 +- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java index a91db0fb6..62bb4b64d 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java @@ -24,7 +24,6 @@ import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.validation.IValidator; -import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; import java.time.format.DateTimeFormatter; @@ -201,15 +200,15 @@ public class Sdf16Executor extends AbstractExecutor { successSdf.setGenerationId(generationIdForGroup); successSdf.setGenerationTime(Instant.now()); successSdf.setInSDf16Id(sdf.getId()); - successSdf.setResult(BigDecimal.ZERO); + successSdf.setResult(0); return successSdf; } - private BigDecimal obtainResultNum(EnumMessage error){ + private Integer obtainResultNum(EnumMessage error){ if (BalanceError.AccountNotPresent.equalsById(error.getSubject().getId())) - return BigDecimal.ONE; + return 1; if (BalanceError.BalanceNotEnough.equalsById(error.getSubject().getId())) - return BigDecimal.ONE; - return BigDecimal.valueOf(9); + return 1; + return 9; } } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java index cc19fb3f5..fd3ee5f18 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java @@ -23,7 +23,7 @@ public class SDf17 extends SpcexObjectBase implements WithAccount { private BigDecimal BIC; private String SPEC; private BigDecimal number; - private BigDecimal result; + private Integer result; private Instant generationTime; private Long generationId; private Long inSDf16Id; @@ -93,11 +93,11 @@ public class SDf17 extends SpcexObjectBase implements WithAccount { this.number = value; } - public BigDecimal getResult() { + public Integer getResult() { return result; } - public void setResult(BigDecimal value) { + public void setResult(Integer value) { this.result = value; } diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF17_Converter.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF17_Converter.java index 206f8d84a..efbb3e5af 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF17_Converter.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF17_Converter.java @@ -36,7 +36,7 @@ public class S_DF17_Converter extends DFConverter { dbfFields.add(new DBFField("_B_I_C", DBFDataType.NUMERIC, 32, 18)); dbfFields.add(new DBFField("_S_P_E_C", DBFDataType.NUMERIC, 32, 18)); dbfFields.add(new DBFField("NUMBER", DBFDataType.NUMERIC, 32, 18)); - dbfFields.add(new DBFField("RESULT", DBFDataType.CHARACTER, 3)); + dbfFields.add(new DBFField("RESULT", DBFDataType.NUMERIC, 1)); return dbfFields.toArray(DBFField[]::new); } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf17MapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf17MapStore.java index ad1f57bea..8f3b60e9a 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf17MapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf17MapStore.java @@ -47,7 +47,7 @@ public class SDf17MapStore extends TemplateMapStore { object.setBIC(resultSet.getObject("_B_I_C", BigDecimal.class)); object.setSPEC(resultSet.getObject("_S_P_E_C", String.class)); object.setNumber(resultSet.getObject("NUMBER", BigDecimal.class)); - object.setResult(resultSet.getObject("RESULT", BigDecimal.class)); + object.setResult(resultSet.getObject("RESULT", Integer.class)); object.setGenerationTime(getInstantFromTimestamp(resultSet, "GENERATION_TIME")); object.setGenerationId(resultSet.getObject("GENERATION_ID", Long.class)); object.setInSDf16Id(resultSet.getObject("IN_S_DF16_ID", Long.class)); From 5b89f57456474f6018d6311d420fcd803f898447 Mon Sep 17 00:00:00 2001 From: ialbert Date: Thu, 22 Dec 2022 12:57:04 +0300 Subject: [PATCH 059/234] dbf-exporter Sdf17 fix --- .../dbf/exporter/services/converters/S_DF17_Converter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF17_Converter.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF17_Converter.java index efbb3e5af..5a43a2255 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF17_Converter.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF17_Converter.java @@ -34,7 +34,7 @@ public class S_DF17_Converter extends DFConverter { dbfFields.add(new DBFField("TYPE", DBFDataType.CHARACTER, 1)); dbfFields.add(new DBFField("_I_N_N", DBFDataType.NUMERIC, 32, 18)); dbfFields.add(new DBFField("_B_I_C", DBFDataType.NUMERIC, 32, 18)); - dbfFields.add(new DBFField("_S_P_E_C", DBFDataType.NUMERIC, 32, 18)); + dbfFields.add(new DBFField("_S_P_E_C", DBFDataType.CHARACTER, 254)); dbfFields.add(new DBFField("NUMBER", DBFDataType.NUMERIC, 32, 18)); dbfFields.add(new DBFField("RESULT", DBFDataType.NUMERIC, 1)); return dbfFields.toArray(DBFField[]::new); From 64d889566db6d744e13e5239b8a9fcf1f9d39a1a Mon Sep 17 00:00:00 2001 From: ialbert Date: Thu, 22 Dec 2022 15:04:39 +0300 Subject: [PATCH 060/234] http://jira.mfd.msk:8088/browse/CLS-198 --- .../request/cud/schedule/PlannerNewAction.java | 5 +++++ .../request/cud/schedule/PlannerUpdateAction.java | 13 +++++++++++++ .../classes/statics/data/scheduler/Planner.java | 8 ++++++++ .../imdg/businessobject/PlannerMapStore.java | 4 +++- .../clearing/scheduler/service/PlannerService.java | 2 ++ .../domain/cud/schedule/PlannerNewRequest.java | 11 +++++++++++ .../domain/cud/schedule/PlannerUpdateRequest.java | 10 ++++++++++ 7 files changed, 52 insertions(+), 1 deletion(-) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerNewAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerNewAction.java index 15e97b017..6bba90535 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerNewAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerNewAction.java @@ -46,6 +46,10 @@ public class PlannerNewAction implements IAction { @JsonProperty public String taskStatus; + @ApiModelProperty(value = "Компания", example = "1000") + @JsonProperty + public Long companyId; + @ApiModelProperty(value = "Инструмент", example = "1000") @JsonProperty public Long securityId; @@ -58,6 +62,7 @@ public class PlannerNewAction implements IAction { plannerNewRequest.setClearingDate(clearingDate); plannerNewRequest.setMarket(market); plannerNewRequest.setTaskStatus(taskStatus); + plannerNewRequest.setCompanyId(companyId); plannerNewRequest.setSecurityId(securityId); return plannerNewRequest; } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerUpdateAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerUpdateAction.java index da30c5a02..6c4de9a31 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerUpdateAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/PlannerUpdateAction.java @@ -51,6 +51,10 @@ public class PlannerUpdateAction implements IAction, WithI @JsonProperty public String taskStatus; + @ApiModelProperty(value = "Компания", example = "1000") + @JsonProperty + public Long companyId; + @ApiModelProperty(value = "Инструмент", example = "1000") @JsonProperty public Long securityId; @@ -64,6 +68,7 @@ public class PlannerUpdateAction implements IAction, WithI plannerUpdateRequest.setClearingDate(clearingDate); plannerUpdateRequest.setMarket(market); plannerUpdateRequest.setTaskStatus(taskStatus); + plannerUpdateRequest.setCompanyId(companyId); plannerUpdateRequest.setSecurityId(securityId); return plannerUpdateRequest; } @@ -151,4 +156,12 @@ public class PlannerUpdateAction implements IAction, WithI public void setSecurityId(Long securityId) { this.securityId = securityId; } + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Planner.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Planner.java index a4125225c..d29b579d0 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Planner.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Planner.java @@ -19,6 +19,7 @@ public class Planner extends BusinessObject { private LocalDate clearingDate; private String market; private String taskStatus; + private Long companyId; private Long securityId; @@ -70,4 +71,11 @@ public class Planner extends BusinessObject { this.securityId = value; } + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/PlannerMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/PlannerMapStore.java index 1de186ecd..e4d8e01b0 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/PlannerMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/PlannerMapStore.java @@ -30,7 +30,7 @@ public class PlannerMapStore extends TemplateMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "CREATED_AT", "UPDATED_AT", "TASK", "TASK_TIME", "CLEARING_DATE", "MARKET", "TASK_STATUS", "SECURITY_ID" + "ID", "CREATED_AT", "UPDATED_AT", "TASK", "TASK_TIME", "CLEARING_DATE", "MARKET", "TASK_STATUS", "COMPANY_ID", "SECURITY_ID" }; } @@ -45,6 +45,7 @@ public class PlannerMapStore extends TemplateMapStore { object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE")); object.setMarket(resultSet.getObject("MARKET", String.class)); object.setTaskStatus(resultSet.getObject("TASK_STATUS", String.class)); + object.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class)); object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class)); return object; } @@ -60,6 +61,7 @@ public class PlannerMapStore extends TemplateMapStore { TimeUtil.toDateFromLocalDate(object.getClearingDate()), object.getMarket(), object.getTaskStatus(), + object.getCompanyId(), object.getSecurityId() }; return args; diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerService.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerService.java index dcef9b26e..79361ca59 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerService.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerService.java @@ -53,6 +53,7 @@ public class PlannerService extends QueueConsumer implements InitializingBean { planner.setClearingDate(req.getClearingDate()); planner.setMarket(req.getMarket()); planner.setTaskStatus(req.getTaskStatus()); + planner.setCompanyId(req.getCompanyId()); planner.setSecurityId(req.getSecurityId()); plannerMap.insert(planner); log.debug("successfully processed, new id {}", planner.getId()); @@ -67,6 +68,7 @@ public class PlannerService extends QueueConsumer implements InitializingBean { planner.setClearingDate(req.getClearingDate()); planner.setMarket(req.getMarket()); planner.setTaskStatus(req.getTaskStatus()); + planner.setCompanyId(req.getCompanyId()); planner.setSecurityId(req.getSecurityId()); plannerMap.update(planner); } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/PlannerNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/PlannerNewRequest.java index c26568aab..104469fbc 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/PlannerNewRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/PlannerNewRequest.java @@ -32,6 +32,9 @@ public class PlannerNewRequest { @JsonProperty public String taskStatus; + @JsonProperty + public Long companyId; + @JsonProperty public Long securityId; @@ -82,4 +85,12 @@ public class PlannerNewRequest { public void setSecurityId(Long securityId) { this.securityId = securityId; } + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/PlannerUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/PlannerUpdateRequest.java index cfe58c797..3c186a7a5 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/PlannerUpdateRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/PlannerUpdateRequest.java @@ -30,6 +30,8 @@ public class PlannerUpdateRequest { @JsonProperty public String taskStatus; @JsonProperty + public Long companyId; + @JsonProperty public Long securityId; public Long getId() { @@ -87,4 +89,12 @@ public class PlannerUpdateRequest { public void setSecurityId(Long securityId) { this.securityId = securityId; } + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } } From 487752def2ecf6f6643ce2efd971b08921bbd117 Mon Sep 17 00:00:00 2001 From: ialbert Date: Thu, 22 Dec 2022 17:27:07 +0300 Subject: [PATCH 061/234] http://jira.mfd.msk:8088/browse/CLS-198 --- .../account/service/AccountService.java | 2 +- .../account/service/BankAccountService.java | 2 + .../cud/account/BankAccountNewAction.java | 37 ++++++++++++++----- .../cud/account/BankAccountUpdateAction.java | 10 +++++ .../balance/service/Sdf08Service.java | 5 +-- .../balance/service/Sdf09Executor.java | 2 +- .../balance/service/Sdf16Executor.java | 12 +++--- .../classes/statics/data/account/Account.java | 9 +++++ .../statics/data/account/BankAccount.java | 18 +++++++++ .../data/account/InformationAccount.java | 8 ++++ .../data/payment/PaymentInstruction.java | 20 +++++----- .../data/scheduler/PlannerAllToday.java | 8 ++++ .../classes/statics/data/sdf/SDf08.java | 13 +++---- .../classes/statics/data/sdf/SDf10.java | 10 ++--- .../classes/statics/data/sdf/SDf17.java | 30 +++++++-------- .../services/converters/S_DF10_Converter.java | 2 +- .../services/converters/S_DF17_Converter.java | 6 +-- .../InformationAccountHistoryMapStore.java | 5 ++- .../imdg/businessobject/AccountMapStore.java | 6 ++- .../imdg/object/BankAccountMapStore.java | 6 ++- .../object/InformationAccountMapStore.java | 6 ++- .../object/PaymentInstructionMapStore.java | 10 ++--- .../imdg/object/PlannerAllTodayMapStore.java | 4 +- .../clearing/imdg/object/SDf08MapStore.java | 7 ++-- .../clearing/imdg/object/SDf09MapStore.java | 4 +- .../clearing/imdg/object/SDf10MapStore.java | 6 +-- .../clearing/imdg/object/SDf16MapStore.java | 8 ++-- .../clearing/imdg/object/SDf17MapStore.java | 14 +++---- .../ru/spcex/clearing/imdg/util/Util.java | 1 + 29 files changed, 176 insertions(+), 95 deletions(-) diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java index 358390a8e..ec596586e 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java @@ -50,7 +50,7 @@ public class AccountService extends QueueConsumer implements InitializingBean { for (AccountSdfRequestPart accountReq : req.getAccounts()) { Account account = new Account(); account.setAccount(accountReq.getAccount()); - //fixme account.setCompany(); + account.setCompanyId(accountReq.getCompanyId()); accountMap.insert(account); AccountSdfToStatementRequestPart responsePart = responsePart(accountReq.getSdfId()); accountToStatement.add(responsePart); diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java index a853bd6c3..3c1ad9ed6 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java @@ -55,6 +55,7 @@ public class BankAccountService extends QueueConsumer implements InitializingBea bankAccount.setDestination(req.getDestination()); bankAccount.setTaxpayerIdentificationNumber(req.getTaxpayerIdentificationNumber()); bankAccount.setTaxRegistrationReasonCode(req.getTaxRegistrationReasonCode()); + bankAccount.setAccount(req.getAccount()); bankAccountMap.insert(bankAccount); log.debug("successfully processed, new id {}", bankAccount.getId()); @@ -72,6 +73,7 @@ public class BankAccountService extends QueueConsumer implements InitializingBea bankAccount.setDestination(req.getDestination()); bankAccount.setTaxpayerIdentificationNumber(req.getTaxpayerIdentificationNumber()); bankAccount.setTaxRegistrationReasonCode(req.getTaxRegistrationReasonCode()); + bankAccount.setAccount(req.getAccount()); bankAccountMap.update(bankAccount); log.debug("successfully update, existing bankAccount with id {}", bankAccount.getId()); diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/account/BankAccountNewAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/account/BankAccountNewAction.java index cd1e9d170..4eb28f6c3 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/account/BankAccountNewAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/account/BankAccountNewAction.java @@ -8,7 +8,9 @@ import ru.spcex.clearing.backendapi.errors.BackEndError; import ru.spcex.clearing.platform.messaging.domain.ActionType; import ru.spcex.clearing.platform.messaging.domain.cud.account.BankAccountNewRequest; import ru.spcex.platform.utils.enumeration.EnumMessage; +import ru.spcex.platform.utils.text.TextUtil; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -39,33 +41,39 @@ public class BankAccountNewAction implements IAction { @ApiModelProperty(value = "Код причины постановки (КПП)", example = "01") @JsonProperty private String taxRegistrationReasonCode; + @ApiModelProperty(value = "Номер счета", example = "1234567") + @JsonProperty + private String account; @Override public Collection validate() { + List errors = new ArrayList<>(); if (!StringUtils.hasLength(this.bankIdentificationCode)) - return List.of(new EnumMessage(BackEndError.ValidationError, "bankIdentificationCode")); + errors.add(new EnumMessage(BackEndError.ValidationError, "bankIdentificationCode")); if (!StringUtils.hasLength(this.bankName)) - return List.of(new EnumMessage(BackEndError.ValidationError, "bankIdentificationCode")); + errors.add(new EnumMessage(BackEndError.ValidationError, "bankIdentificationCode")); if ("RUB".equalsIgnoreCase(this.currency) && !StringUtils.hasLength(correspondentAccount)) { - return List.of(new EnumMessage(BackEndError.ValidationError, "correspondentAccount")); + errors.add(new EnumMessage(BackEndError.ValidationError, "correspondentAccount")); } if ("RUB".equalsIgnoreCase(this.currency) && !StringUtils.hasLength(correspondentAccountName)) { - return List.of(new EnumMessage(BackEndError.ValidationError, "correspondentAccountName")); + errors.add(new EnumMessage(BackEndError.ValidationError, "correspondentAccountName")); } if (!StringUtils.hasLength(currency)) { - return List.of(new EnumMessage(BackEndError.ValidationError, "currency")); + errors.add(new EnumMessage(BackEndError.ValidationError, "currency")); } if (!StringUtils.hasLength(destination)) { - return List.of(new EnumMessage(BackEndError.ValidationError, "destination")); + errors.add(new EnumMessage(BackEndError.ValidationError, "destination")); } if ("RUB".equalsIgnoreCase(this.currency) && !StringUtils.hasLength(taxpayerIdentificationNumber)) { - return List.of(new EnumMessage(BackEndError.ValidationError, "taxpayerIdentificationNumber")); + errors.add(new EnumMessage(BackEndError.ValidationError, "taxpayerIdentificationNumber")); } if ("RUB".equalsIgnoreCase(this.currency) && !StringUtils.hasLength(taxRegistrationReasonCode)) { - return List.of(new EnumMessage(BackEndError.ValidationError, "taxRegistrationReasonCode")); + errors.add(new EnumMessage(BackEndError.ValidationError, "taxRegistrationReasonCode")); } - - return Collections.emptyList(); + if (TextUtil.isEmpty(account)) { + errors.add(new EnumMessage(BackEndError.ValidationError, "account")); + } + return errors.isEmpty() ? Collections.emptyList() : errors; } @Override @@ -79,6 +87,7 @@ public class BankAccountNewAction implements IAction { req.setDestination(this.destination); req.setTaxpayerIdentificationNumber(this.taxpayerIdentificationNumber); req.setTaxRegistrationReasonCode(this.taxRegistrationReasonCode); + req.setAccount(this.account); return req; } @@ -151,4 +160,12 @@ public class BankAccountNewAction implements IAction { public void setTaxRegistrationReasonCode(String taxRegistrationReasonCode) { this.taxRegistrationReasonCode = taxRegistrationReasonCode; } + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/account/BankAccountUpdateAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/account/BankAccountUpdateAction.java index 8fddae1b0..326bfed47 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/account/BankAccountUpdateAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/account/BankAccountUpdateAction.java @@ -40,6 +40,7 @@ public class BankAccountUpdateAction implements IAction validate() { @@ -58,6 +59,7 @@ public class BankAccountUpdateAction implements IAction userRequest) { log.debug("getAllBalance request received"); SDf08 sDf08 = new SDf08(); - sDf08.setNumber(BigDecimal.valueOf(Math.random())); + sDf08.setNumber(idGenerator.nextId().toString()); Instant now = Instant.now(); - sDf08.setDatetime(now); + sDf08.setDatetime(String.valueOf(now.toEpochMilli())); sDf08.setGenerationTime(now); sDf08.setGenerationId(idGenerator.nextId()); sdf8Map.insert(sDf08); diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf09Executor.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf09Executor.java index 20193293f..96e8608bc 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf09Executor.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf09Executor.java @@ -162,7 +162,7 @@ public class Sdf09Executor extends AbstractExecutor { sDf10.setMarket(sdf09.getMarket()); sDf10.setType(sdf09.getType()); sDf10.setNumber(sdf09.getNumber()); - sDf10.setINN(sdf09.getInn()); + sDf10.setInn(sdf09.getInn()); sDf10.setResult("OK"); sDf10.setGenerationId(generationIdForGroup); sDf10.setGenerationTime(Instant.now()); diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java index 62bb4b64d..373a4e0b1 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java @@ -176,9 +176,9 @@ public class Sdf16Executor extends AbstractExecutor { errorSdf.setSum(sdf.getSum()); errorSdf.setMarket(sdf.getMarket()); errorSdf.setType(sdf.getType()); - errorSdf.setINN(sdf.getInn()); - errorSdf.setBIC(sdf.getBic()); - errorSdf.setSPEC(sdf.getSpec()); + errorSdf.setInn(sdf.getInn()); + errorSdf.setBic(sdf.getBic()); + errorSdf.setSpec(sdf.getSpec()); errorSdf.setNumber(sdf.getNumber()); errorSdf.setResult(obtainResultNum(error)); errorSdf.setGenerationId(generationIdForGroup); @@ -193,9 +193,9 @@ public class Sdf16Executor extends AbstractExecutor { successSdf.setSum(sdf.getSum()); successSdf.setMarket(sdf.getMarket()); successSdf.setType(sdf.getType()); - successSdf.setINN(sdf.getInn()); - successSdf.setBIC(sdf.getBic()); - successSdf.setSPEC(sdf.getSpec()); + successSdf.setInn(sdf.getInn()); + successSdf.setBic(sdf.getBic()); + successSdf.setSpec(sdf.getSpec()); successSdf.setNumber(sdf.getNumber()); successSdf.setGenerationId(generationIdForGroup); successSdf.setGenerationTime(Instant.now()); diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/Account.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/Account.java index 766b9e6ba..7bc84b00c 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/Account.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/Account.java @@ -16,6 +16,7 @@ public class Account extends BusinessObject { private Long relationId; private String accountStatus; private String processingSign; + private Long companyId; public String getAccount() { return account; @@ -56,4 +57,12 @@ public class Account extends BusinessObject { public void setProcessingSign(String processingSign) { this.processingSign = processingSign; } + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } } \ No newline at end of file diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/BankAccount.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/BankAccount.java index 6a1bc2cef..57df0c509 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/BankAccount.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/BankAccount.java @@ -23,6 +23,8 @@ public class BankAccount extends SpcexObjectBase { private String swiftCode; private String taxpayerIdentificationNumber; private String taxRegistrationReasonCode; + private String account; + private Long companyId; public Long getAccountId() { return accountId; @@ -119,4 +121,20 @@ public class BankAccount extends SpcexObjectBase { public void setTaxRegistrationReasonCode(String value) { this.taxRegistrationReasonCode = value; } + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } } \ No newline at end of file diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/InformationAccount.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/InformationAccount.java index fda71b035..0c369fc5c 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/InformationAccount.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/InformationAccount.java @@ -13,6 +13,7 @@ public class InformationAccount extends SpcexObjectBase { private Long accountId; private Long clearingAccountId; + private Long companyId; public Long getAccountId() { return accountId; @@ -30,4 +31,11 @@ public class InformationAccount extends SpcexObjectBase { this.clearingAccountId = value; } + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } } \ No newline at end of file diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/payment/PaymentInstruction.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/payment/PaymentInstruction.java index 8837e3ff7..d9e54e5e4 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/payment/PaymentInstruction.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/payment/PaymentInstruction.java @@ -10,9 +10,9 @@ public class PaymentInstruction extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private Long senderId; // type="1" private Long addresseeId; // type="1" - private String adresseeBIC; // type="2" + private String adresseeBic; // type="2" private String payeeBankName; // type="2" - private String payeeBIC; // type="2" + private String payeeBic; // type="2" private String addresseeBankName; // type="2" private Instant paymentDate; // type="4" private String paymentPurpose; // type="2" @@ -49,12 +49,12 @@ public class PaymentInstruction extends BusinessObject { this.addresseeId = addresseeId; } - public String getAdresseeBIC() { - return adresseeBIC; + public String getAdresseeBic() { + return adresseeBic; } - public void setAdresseeBIC(String adresseeBIC) { - this.adresseeBIC = adresseeBIC; + public void setAdresseeBic(String adresseeBic) { + this.adresseeBic = adresseeBic; } public String getPayeeBankName() { @@ -65,12 +65,12 @@ public class PaymentInstruction extends BusinessObject { this.payeeBankName = payeeBankName; } - public String getPayeeBIC() { - return payeeBIC; + public String getPayeeBic() { + return payeeBic; } - public void setPayeeBIC(String payeeBIC) { - this.payeeBIC = payeeBIC; + public void setPayeeBic(String payeeBic) { + this.payeeBic = payeeBic; } public String getAddresseeBankName() { diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/PlannerAllToday.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/PlannerAllToday.java index 5c75befcc..80da5dc2e 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/PlannerAllToday.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/PlannerAllToday.java @@ -19,6 +19,7 @@ public class PlannerAllToday extends SpcexObjectBase { private LocalDate clearingDate; private String market; private String taskStatus; + private Long companyId; private Long securityId; private String parent; private Long parentId; @@ -87,4 +88,11 @@ public class PlannerAllToday extends SpcexObjectBase { this.parentId = value; } + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } } \ No newline at end of file diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf08.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf08.java index 862fcb57b..ea7f7ad24 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf08.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf08.java @@ -3,7 +3,6 @@ package ru.clearing.classes.statics.data.sdf; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; -import java.math.BigDecimal; import java.time.Instant; /** @@ -14,24 +13,24 @@ import java.time.Instant; public class SDf08 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; - private BigDecimal number; - private Instant datetime; + private String number; + private String datetime; private Instant generationTime; private Long generationId; - public BigDecimal getNumber() { + public String getNumber() { return number; } - public void setNumber(BigDecimal value) { + public void setNumber(String value) { this.number = value; } - public Instant getDatetime() { + public String getDatetime() { return datetime; } - public void setDatetime(Instant value) { + public void setDatetime(String value) { this.datetime = value; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf10.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf10.java index 8ebf871ba..d8a2575b0 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf10.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf10.java @@ -20,7 +20,7 @@ public class SDf10 extends SpcexObjectBase implements WithAccount { private String market; private String type; private BigDecimal number; - private BigDecimal INN; + private BigDecimal inn; private String result; private Instant generationTime; private Long generationId; @@ -67,12 +67,12 @@ public class SDf10 extends SpcexObjectBase implements WithAccount { this.number = number; } - public BigDecimal getINN() { - return INN; + public BigDecimal getInn() { + return inn; } - public void setINN(BigDecimal INN) { - this.INN = INN; + public void setInn(BigDecimal inn) { + this.inn = inn; } public String getResult() { diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java index fd3ee5f18..d55f50c5b 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java @@ -19,9 +19,9 @@ public class SDf17 extends SpcexObjectBase implements WithAccount { private BigDecimal sum; private String market; private String type; - private BigDecimal INN; - private BigDecimal BIC; - private String SPEC; + private BigDecimal inn; + private BigDecimal bic; + private String spec; private BigDecimal number; private Integer result; private Instant generationTime; @@ -61,28 +61,28 @@ public class SDf17 extends SpcexObjectBase implements WithAccount { this.type = value; } - public BigDecimal getINN() { - return INN; + public BigDecimal getInn() { + return inn; } - public void setINN(BigDecimal value) { - this.INN = value; + public void setInn(BigDecimal value) { + this.inn = value; } - public BigDecimal getBIC() { - return BIC; + public BigDecimal getBic() { + return bic; } - public void setBIC(BigDecimal value) { - this.BIC = value; + public void setBic(BigDecimal value) { + this.bic = value; } - public String getSPEC() { - return SPEC; + public String getSpec() { + return spec; } - public void setSPEC(String value) { - this.SPEC = value; + public void setSpec(String value) { + this.spec = value; } public BigDecimal getNumber() { diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF10_Converter.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF10_Converter.java index 3a9f71749..ce0204280 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF10_Converter.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF10_Converter.java @@ -18,7 +18,7 @@ public class S_DF10_Converter extends DFConverter { values.add(typeMatch(entity.getMarket())); values.add(typeMatch(entity.getType())); values.add(typeMatch(entity.getNumber())); - values.add(typeMatch(entity.getINN())); + values.add(typeMatch(entity.getInn())); values.add(typeMatch(entity.getResult())); return values.toArray(Object[]::new); } diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF17_Converter.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF17_Converter.java index 5a43a2255..0b00658b2 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF17_Converter.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF17_Converter.java @@ -17,9 +17,9 @@ public class S_DF17_Converter extends DFConverter { values.add(typeMatch(entity.getSum())); values.add(typeMatch(entity.getMarket())); values.add(typeMatch(entity.getType())); - values.add(typeMatch(entity.getINN())); - values.add(typeMatch(entity.getBIC())); - values.add(typeMatch(entity.getSPEC())); + values.add(typeMatch(entity.getInn())); + values.add(typeMatch(entity.getBic())); + values.add(typeMatch(entity.getSpec())); values.add(typeMatch(entity.getNumber())); values.add(typeMatch(entity.getResult())); return values.toArray(Object[]::new); diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/InformationAccountHistoryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/InformationAccountHistoryMapStore.java index 8d768ae20..2cc1fb804 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/InformationAccountHistoryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/InformationAccountHistoryMapStore.java @@ -28,7 +28,7 @@ public class InformationAccountHistoryMapStore extends TemplateEventMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "CREATED_AT", "UPDATED_AT", "ACCOUNT", "ACCOUNT_TYPE", "RELATION_ID", "ACCOUNT_STATUS", "PROCESSING_SIGN" + "ID", "CREATED_AT", "UPDATED_AT", "ACCOUNT", "ACCOUNT_TYPE", "RELATION_ID", "ACCOUNT_STATUS", "PROCESSING_SIGN", "COMPANY_ID" }; } @@ -45,6 +45,7 @@ public class AccountMapStore extends TemplateMapStore { object.setRelationId(resultSet.getObject("RELATION_ID", Long.class)); object.setAccountStatus(resultSet.getObject("ACCOUNT_STATUS", String.class)); object.setProcessingSign(resultSet.getObject("PROCESSING_SIGN", String.class)); + object.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class)); return object; } @@ -58,7 +59,8 @@ public class AccountMapStore extends TemplateMapStore { object.getAccountType(), object.getRelationId(), object.getAccountStatus(), - object.getProcessingSign() + object.getProcessingSign(), + object.getCompanyId() }; return args; } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/BankAccountMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/BankAccountMapStore.java index 4b28cc7d2..ba5f4d398 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/BankAccountMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/BankAccountMapStore.java @@ -29,7 +29,7 @@ public class BankAccountMapStore extends TemplateMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "ACCOUNT_ID", "BANK_IDENTIFICATION_CODE", "BANK_NAME", "CORRESPONDENT_ACCOUNT", "CORRESPONDENT_ACCOUNT_NAME", "CURRENCY", "DESTINATION", "IBAN", "INTERNATIONAL_TRANSFER_SIGN", "SWIFT_CODE", "TAXPAYER_IDENTIFICATION_NUMBER", "TAX_REGISTRATION_REASON_CODE" + "ID", "ACCOUNT_ID", "BANK_IDENTIFICATION_CODE", "BANK_NAME", "CORRESPONDENT_ACCOUNT", "CORRESPONDENT_ACCOUNT_NAME", "CURRENCY", "DESTINATION", "IBAN", "INTERNATIONAL_TRANSFER_SIGN", "SWIFT_CODE", "TAXPAYER_IDENTIFICATION_NUMBER", "TAX_REGISTRATION_REASON_CODE", "ACCOUNT", "COMPANY_ID" }; } @@ -49,6 +49,8 @@ public class BankAccountMapStore extends TemplateMapStore { object.setSwiftCode(resultSet.getObject("SWIFT_CODE", String.class)); object.setTaxpayerIdentificationNumber(resultSet.getObject("TAXPAYER_IDENTIFICATION_NUMBER", String.class)); object.setTaxRegistrationReasonCode(resultSet.getObject("TAX_REGISTRATION_REASON_CODE", String.class)); + object.setAccount(resultSet.getObject("ACCOUNT", String.class)); + object.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class)); return object; } @@ -68,6 +70,8 @@ public class BankAccountMapStore extends TemplateMapStore { object.getSwiftCode(), object.getTaxpayerIdentificationNumber(), object.getTaxRegistrationReasonCode(), + object.getAccount(), + object.getCompanyId(), }; return args; } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/InformationAccountMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/InformationAccountMapStore.java index 835d4681a..86d20cb6c 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/InformationAccountMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/InformationAccountMapStore.java @@ -29,7 +29,7 @@ public class InformationAccountMapStore extends TemplateMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "TASK", "TASK_TIME", "CLEARING_DATE", "MARKET", "TASK_STATUS", "SECURITY_ID", "PARENT", "PARENT_ID" + "ID", "TASK", "TASK_TIME", "CLEARING_DATE", "MARKET", "TASK_STATUS", "COMPANY_ID", "SECURITY_ID", "PARENT", "PARENT_ID" }; } @@ -43,6 +43,7 @@ public class PlannerAllTodayMapStore extends TemplateMapStore { object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE")); object.setMarket(resultSet.getObject("MARKET", String.class)); object.setTaskStatus(resultSet.getObject("TASK_STATUS", String.class)); + object.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class)); object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class)); object.setParent(resultSet.getObject("PARENT", String.class)); object.setParentId(resultSet.getObject("PARENT_ID", Long.class)); @@ -58,6 +59,7 @@ public class PlannerAllTodayMapStore extends TemplateMapStore { TimeUtil.toDateFromLocalDate(object.getClearingDate()), object.getMarket(), object.getTaskStatus(), + object.getCompanyId(), object.getSecurityId(), object.getParent(), object.getParentId() diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf08MapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf08MapStore.java index 6681bef28..b81be7113 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf08MapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf08MapStore.java @@ -7,7 +7,6 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.base.TemplateMapStore; import ru.spcex.platform.utils.time.TimeUtil; -import java.math.BigDecimal; import java.sql.ResultSet; import java.sql.SQLException; @@ -39,8 +38,8 @@ public class SDf08MapStore extends TemplateMapStore { public SDf08 objectReader(ResultSet resultSet) throws SQLException { SDf08 object = new SDf08(); object.setId(resultSet.getObject("ID", Long.class)); - object.setNumber(resultSet.getObject("NUMBER", BigDecimal.class)); - object.setDatetime(getInstantFromTimestamp(resultSet, "DATETIME")); + object.setNumber(resultSet.getObject("NUMBER", String.class)); + object.setDatetime(resultSet.getObject("DATETIME", String.class)); object.setGenerationTime(getInstantFromTimestamp(resultSet, "GENERATION_TIME")); object.setGenerationId(resultSet.getObject("GENERATION_ID", Long.class)); return object; @@ -51,7 +50,7 @@ public class SDf08MapStore extends TemplateMapStore { Object[] args = new Object[]{ object.getId(), object.getNumber(), - TimeUtil.toDateFromInstant(object.getDatetime()), + object.getDatetime(), TimeUtil.toDateFromInstant(object.getGenerationTime()), object.getGenerationId() }; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf09MapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf09MapStore.java index 34a9269b3..2cc841e7d 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf09MapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf09MapStore.java @@ -31,7 +31,7 @@ public class SDf09MapStore extends TemplateMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "ACCOUNT", "SUM", "MARKET", "TYPE", "NUMBER", "_I_N_N", "FILE_NAME", "GENERATION_TIME", + "ID", "ACCOUNT", "SUM", "MARKET", "TYPE", "NUMBER", "INN", "FILE_NAME", "GENERATION_TIME", "GENERATION_ID" }; } @@ -45,7 +45,7 @@ public class SDf09MapStore extends TemplateMapStore { object.setMarket(resultSet.getString("MARKET")); object.setType(resultSet.getString("TYPE")); object.setNumber(resultSet.getObject("NUMBER", BigDecimal.class)); - object.setInn(resultSet.getObject("_I_N_N", BigDecimal.class)); + object.setInn(resultSet.getObject("INN", BigDecimal.class)); object.setFileName(resultSet.getString("FILE_NAME")); object.setGenerationTime(getInstantFromTimestamp(resultSet, "GENERATION_TIME")); object.setGenerationId(resultSet.getObject("GENERATION_ID", Long.class)); diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf10MapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf10MapStore.java index 98120f165..fab361ee3 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf10MapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf10MapStore.java @@ -31,7 +31,7 @@ public class SDf10MapStore extends TemplateMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "ACCOUNT", "SUM", "MARKET", "TYPE", "NUMBER", "_I_N_N", + "ID", "ACCOUNT", "SUM", "MARKET", "TYPE", "NUMBER", "INN", "RESULT", "GENERATION_TIME", "GENERATION_ID", "IN_S_DF09_ID" }; } @@ -45,7 +45,7 @@ public class SDf10MapStore extends TemplateMapStore { object.setMarket(resultSet.getObject("MARKET", String.class)); object.setType(resultSet.getObject("TYPE", String.class)); object.setNumber(resultSet.getObject("NUMBER", BigDecimal.class)); - object.setINN(resultSet.getObject("_I_N_N", BigDecimal.class)); + object.setInn(resultSet.getObject("INN", BigDecimal.class)); object.setResult(resultSet.getObject("RESULT", String.class)); object.setGenerationTime(getInstantFromTimestamp(resultSet, "GENERATION_TIME")); object.setGenerationId(resultSet.getObject("GENERATION_ID", Long.class)); @@ -62,7 +62,7 @@ public class SDf10MapStore extends TemplateMapStore { object.getMarket(), object.getType(), object.getNumber(), - object.getINN(), + object.getInn(), object.getResult(), TimeUtil.toDateFromInstant(object.getGenerationTime()), object.getGenerationId(), diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf16MapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf16MapStore.java index 23dbfe7c0..ca6190d50 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf16MapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf16MapStore.java @@ -31,7 +31,7 @@ public class SDf16MapStore extends TemplateMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "ACCOUNT", "SUM", "MARKET", "TYPE", "_I_N_N", "_B_I_C", "_S_P_E_C", "NUMBER", "FILE_NAME", "GENERATION_TIME", "GENERATION_ID" + "ID", "ACCOUNT", "SUM", "MARKET", "TYPE", "INN", "BIC", "SPEC", "NUMBER", "FILE_NAME", "GENERATION_TIME", "GENERATION_ID" }; } @@ -43,9 +43,9 @@ public class SDf16MapStore extends TemplateMapStore { object.setSum(resultSet.getObject("SUM", BigDecimal.class)); object.setMarket(resultSet.getObject("MARKET", String.class)); object.setType(resultSet.getObject("TYPE", String.class)); - object.setInn(resultSet.getObject("_I_N_N", BigDecimal.class)); - object.setBic(resultSet.getObject("_B_I_C", BigDecimal.class)); - object.setSpec(resultSet.getObject("_S_P_E_C", String.class)); + object.setInn(resultSet.getObject("INN", BigDecimal.class)); + object.setBic(resultSet.getObject("BIC", BigDecimal.class)); + object.setSpec(resultSet.getObject("SPEC", String.class)); object.setNumber(resultSet.getObject("NUMBER", BigDecimal.class)); object.setFileName(resultSet.getObject("FILE_NAME", String.class)); object.setGenerationTime(getInstantFromTimestamp(resultSet, "GENERATION_TIME")); diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf17MapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf17MapStore.java index 8f3b60e9a..b20011140 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf17MapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf17MapStore.java @@ -31,7 +31,7 @@ public class SDf17MapStore extends TemplateMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "ACCOUNT", "SUM", "MARKET", "TYPE", "_I_N_N", "_B_I_C", "_S_P_E_C", "NUMBER", "RESULT", "GENERATION_TIME", "GENERATION_ID", "IN_S_DF16_ID" + "ID", "ACCOUNT", "SUM", "MARKET", "TYPE", "INN", "BIC", "SPEC", "NUMBER", "RESULT", "GENERATION_TIME", "GENERATION_ID", "IN_S_DF16_ID" }; } @@ -43,9 +43,9 @@ public class SDf17MapStore extends TemplateMapStore { object.setSum(resultSet.getObject("SUM", BigDecimal.class)); object.setMarket(resultSet.getObject("MARKET", String.class)); object.setType(resultSet.getObject("TYPE", String.class)); - object.setINN(resultSet.getObject("_I_N_N", BigDecimal.class)); - object.setBIC(resultSet.getObject("_B_I_C", BigDecimal.class)); - object.setSPEC(resultSet.getObject("_S_P_E_C", String.class)); + object.setInn(resultSet.getObject("INN", BigDecimal.class)); + object.setBic(resultSet.getObject("BIC", BigDecimal.class)); + object.setSpec(resultSet.getObject("SPEC", String.class)); object.setNumber(resultSet.getObject("NUMBER", BigDecimal.class)); object.setResult(resultSet.getObject("RESULT", Integer.class)); object.setGenerationTime(getInstantFromTimestamp(resultSet, "GENERATION_TIME")); @@ -62,9 +62,9 @@ public class SDf17MapStore extends TemplateMapStore { object.getSum(), object.getMarket(), object.getType(), - object.getINN(), - object.getBIC(), - object.getSPEC(), + object.getInn(), + object.getBic(), + object.getSpec(), object.getNumber(), object.getResult(), TimeUtil.toDateFromInstant(object.getGenerationTime()), diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/util/Util.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/util/Util.java index 8e75d85fc..9ad1d2551 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/util/Util.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/util/Util.java @@ -93,6 +93,7 @@ public class Util { res.setClearingDate(planner.getClearingDate()); res.setMarket(planner.getMarket()); res.setTaskStatus(planner.getTaskStatus()); + res.setCompanyId(planner.getCompanyId()); res.setSecurityId(planner.getSecurityId()); res.setParent("PLNR"); res.setParentId(planner.getId()); From 0015f651a070fd77e860d99dc954ed1fc8add9ec Mon Sep 17 00:00:00 2001 From: ialbert Date: Thu, 22 Dec 2022 18:15:26 +0300 Subject: [PATCH 062/234] http://jira.mfd.msk:8088/browse/CLS-198 --- .../src/main/resources/meta/data.xml | 69 +- .../src/main/resources/meta/meta.xml | 843 +- .../db-scripts/src/main/resources/db/DATA.sql | 298 +- .../db-scripts/src/main/resources/db/DDL.sql | 7489 ++++++++--------- .../structure/RunnableMapNamesForTesting.java | 1 - 5 files changed, 4016 insertions(+), 4684 deletions(-) diff --git a/clearing-parent/backend-api/src/main/resources/meta/data.xml b/clearing-parent/backend-api/src/main/resources/meta/data.xml index 5fe2fbea7..fb7903874 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/data.xml +++ b/clearing-parent/backend-api/src/main/resources/meta/data.xml @@ -6,17 +6,27 @@ - - - + + + + + + + + + + + + - - + + + @@ -38,9 +48,6 @@ - - - @@ -85,7 +92,7 @@ - + @@ -143,12 +150,14 @@ - - + + + + @@ -160,17 +169,19 @@ + + - - + + @@ -183,8 +194,8 @@ - - + + @@ -192,8 +203,8 @@ - - + + @@ -208,13 +219,14 @@ + - - + + - - + + @@ -226,8 +238,8 @@ - - + + @@ -241,8 +253,8 @@ - - + + @@ -263,8 +275,8 @@ - - + + @@ -277,6 +289,9 @@ + + + diff --git a/clearing-parent/backend-api/src/main/resources/meta/meta.xml b/clearing-parent/backend-api/src/main/resources/meta/meta.xml index 97923da8c..ce5377bf7 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/meta.xml +++ b/clearing-parent/backend-api/src/main/resources/meta/meta.xml @@ -1,6 +1,6 @@ - + @@ -19,11 +19,6 @@ - - - - - @@ -247,32 +242,32 @@ - + - + - - + + - + - + @@ -286,148 +281,170 @@ - - + + - - - - - - - + + + + + + + + + - - - + + + + + - + - - + + + + - + - - - - - - - + + + + + + + - + - + - + - + - + - - - - - - - + + + + - + + + + + - - - - + + + + - + + - + - - - + + + - + + - + - - + - + + - + + - - + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - + - - + + + + + - + - - - - - - - - - - + + + + + + + + + @@ -435,16 +452,17 @@ + - + - - + + - - - + + + @@ -452,317 +470,318 @@ - - - - + + + + - - - + + + - + - + - + - - - - + + + + - + - + - - - - + + + - + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - + + + + - + - + - - - - + - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + +
- - - + + + + + + - - - - + + + - + + - - + + - + - + - + - - - + + + - - - - + - - - + + + - - + - - - - - + + + + + + + + + + - + - - + + - - - + + - - + + + + + - + + - - + - + - - + + - + - - - - + + + + + - + - + - - - - - - + + + - - - + + + + + + + + - - - - + - + - + + - - + + + + - - - - + + - - + + + - - - + + - + - - - - + - - - - + + +
+ - + - - - + - - + + + + - + @@ -778,11 +797,11 @@ - - - - + + + + @@ -793,39 +812,29 @@ - - - - - + + + + + + + - - + + - + - - - - - - - - - - - - + - - + @@ -840,9 +849,9 @@ + - - + @@ -856,16 +865,13 @@ + - - + - - - - + @@ -875,7 +881,7 @@ - + @@ -886,13 +892,13 @@ - - - - - - + + + + + + @@ -903,7 +909,7 @@ - + @@ -911,13 +917,13 @@ - + + + + + - - - - - + @@ -932,12 +938,12 @@ + + + + - - - - - + @@ -952,12 +958,12 @@ + + + + - - - - - + @@ -972,30 +978,31 @@ - - - - - + + + + + + + + + - - - - + - - + + @@ -1004,33 +1011,30 @@ + + + - + + + + + + + + + - - - - - - - - - - - - - - - - + + + + - + - - @@ -1038,16 +1042,16 @@ - - - - + + + + - + @@ -1055,31 +1059,30 @@ - + - + - - - - - - + + + + + - - + + @@ -1087,9 +1090,13 @@ - - + + + + + + @@ -1115,37 +1122,37 @@ - - - - - - - + + + + - + - + - - - - - - + + + + + + - - + + + + + - + @@ -1163,7 +1170,7 @@ - + @@ -1175,8 +1182,8 @@ - - + + @@ -1188,7 +1195,7 @@ - + @@ -1200,10 +1207,10 @@ - + - - + + @@ -1363,8 +1370,8 @@ - - + + @@ -1375,7 +1382,7 @@ - + @@ -1387,7 +1394,7 @@ - + @@ -1509,9 +1516,9 @@ - - - + + + @@ -1523,9 +1530,9 @@ - - - + + + @@ -1564,7 +1571,7 @@ - + @@ -1575,12 +1582,26 @@ - - + + + + + + + + + + + + + + + + @@ -1592,8 +1613,8 @@ - - + + @@ -1639,7 +1660,7 @@ - + @@ -1651,7 +1672,7 @@ - + @@ -1685,30 +1706,30 @@ - + - + - + - + - + - + - + @@ -1717,11 +1738,19 @@ - + + + + + + + + + diff --git a/clearing-parent/db-scripts/src/main/resources/db/DATA.sql b/clearing-parent/db-scripts/src/main/resources/db/DATA.sql index c43d959c5..52040548d 100644 --- a/clearing-parent/db-scripts/src/main/resources/db/DATA.sql +++ b/clearing-parent/db-scripts/src/main/resources/db/DATA.sql @@ -1,5 +1,5 @@ --- DB version: 0.0.0.6 --- DATA version: 0.0.0.0 +-- DB version: 2.4.0.0 +-- DATA version: 1.2.0.0 /* Dictionaries */ INSERT INTO COURIER_TYPE_DICTIONARY(ID, CODE, NAME) values (1, 'STHS', 'ЭДО с Расчетной Организацией'); @@ -12,23 +12,47 @@ INSERT INTO TERM_TYPE_DICTIONARY(ID, CODE, NAME) values (3, 'V', 'До вост INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (1, 'GBAL', 'Зачисление остатков'); -INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (2, 'GBLC', 'Подтверждение зачисления остатков'); - INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (3, 'ABLK', 'Блокировка счета'); INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (4, 'GALB', 'Запрос остатков по всем счетам'); INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (5, 'ADBL', 'Дозачисление/списание остатков'); -INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (6, 'ADBC', 'Подтверждение дозачисления/списания остатков'); - INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (7, 'CORD', 'Формирование сводного платежного поручения'); INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (8, 'CORC', 'Получение подтверждения переводов'); +INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (9, 'GVER', 'Запуск сверки'); + +INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (11, 'STCP', 'Формирование уведомления о завершении расчетов'); + +INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (12, 'CMBA', 'Формирование распоряжения на перевод с ТБС'); + +INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (14, 'GCMR', 'Формирование реестра участников клиринга'); + +INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (15, 'GBRR', 'Формирование реестра остатков денежных средств '); + +INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (16, 'GORR', 'Формирование реестра распоряжений, направленных расчетной организации'); + +INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (17, 'GETR', 'Формирование отчетности'); + +INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (21, 'GSRR', 'Формирование реестра отправленных отчетов'); + +INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (25, 'GERP', 'Получение сделок из Торговой системы'); + +INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (26, 'VICR', 'Сверка обеспеченности Инициатора'); + +INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (32, 'GACA', 'Создание файла остатков CSV по клиринговым счетам'); + +INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (33, 'GAIA', 'Создание файла остатков CSV по внутренним информационным счетам'); + INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (34, 'GBLD', 'Поступление средств'); -INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (35, 'GBDC', 'Подтверждение поступления средств'); +INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (35, 'SCLR', 'Запуск клиринговой сессии'); + +INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (36, 'SPRC', 'Запуск преклиринга'); + +INSERT INTO TASK_DICTIONARY(ID, CODE, NAME) values (37, 'SPOC', 'Запуск постклиринга'); INSERT INTO TASK_STATUS_DICTIONARY(ID, CODE, NAME) values (1, 'ACTV', 'Активна'); @@ -36,13 +60,27 @@ INSERT INTO TASK_STATUS_DICTIONARY(ID, CODE, NAME) values (2, 'BLKD', 'Не ак INSERT INTO TASK_STATUS_DICTIONARY(ID, CODE, NAME) values (3, 'CNCL', 'Отмена расписания'); -INSERT INTO TRADING_STATUS_DICTIONARY(ID, CODE, NAME) values (1, 'TRAD', 'Торговый'); +INSERT INTO DAY_STATUS_DICTIONARY(ID, CODE, NAME) values (1, 'BDAY', 'Рабочий'); -INSERT INTO TRADING_STATUS_DICTIONARY(ID, CODE, NAME) values (2, 'NTRD', 'Неторговый'); +INSERT INTO DAY_STATUS_DICTIONARY(ID, CODE, NAME) values (2, 'DOFF', 'Нерабочий'); -INSERT INTO SOURCE_DICTIONARY(ID, CODE, NAME) values (1, 'TIMT', 'Расписание'); +INSERT INTO TRANSACTION_STATUS_DICTIONARY(ID, CODE, NAME) values (1, 'STLD', 'Рассчитан'); -INSERT INTO SOURCE_DICTIONARY(ID, CODE, NAME) values (2, 'SCHD', 'Планировщик'); +INSERT INTO TRANSACTION_STATUS_DICTIONARY(ID, CODE, NAME) values (2, 'SENT', 'Отправлен в ПРЦ'); + +INSERT INTO TRANSACTION_STATUS_DICTIONARY(ID, CODE, NAME) values (3, 'OK', 'Обработан ПРЦ'); + +INSERT INTO TRANSACTION_STATUS_DICTIONARY(ID, CODE, NAME) values (4, 'FAIL', 'Ошибка ПРЦ'); + +INSERT INTO TRANSACTION_STATUS_DICTIONARY(ID, CODE, NAME) values (5, 'CHER', 'Ошибка КС'); + +INSERT INTO TRANSACTION_STATUS_DICTIONARY(ID, CODE, NAME) values (6, 'NSNT', 'Не отправлен в ПРЦ'); + +INSERT INTO PARENT_DICTIONARY(ID, CODE, NAME) values (1, 'TMPL', 'Шаблон'); + +INSERT INTO PARENT_DICTIONARY(ID, CODE, NAME) values (2, 'PLNR', 'Расписание'); + +INSERT INTO PARENT_DICTIONARY(ID, CODE, NAME) values (3, 'CLND', 'Календарь'); INSERT INTO CHARGE_TYPE_DICTIONARY(ID, CODE, NAME) values (1, 'PRCT', 'Процент'); @@ -58,12 +96,6 @@ INSERT INTO CLEARING_STATUS_DICTIONARY(ID, CODE, NAME) values (3, 'MNG', 'Не INSERT INTO CLEARING_STATUS_DICTIONARY(ID, CODE, NAME) values (4, 'PROC', 'К клирингу'); -INSERT INTO INTEREST_STATUS_DICTIONARY(ID, CODE, NAME) values (1, 'FREE', 'Не требуется'); - -INSERT INTO INTEREST_STATUS_DICTIONARY(ID, CODE, NAME) values (2, 'RTND', 'Возвращены'); - -INSERT INTO INTEREST_STATUS_DICTIONARY(ID, CODE, NAME) values (3, 'DFLT', 'Не возвращены'); - INSERT INTO WORKFLOW_STATUS_DICTIONARY(ID, CODE, NAME) values (1, 'ACTV', 'Активен'); INSERT INTO WORKFLOW_STATUS_DICTIONARY(ID, CODE, NAME) values (2, 'BLKD', 'Не активен'); @@ -98,6 +130,8 @@ INSERT INTO SERVICE_STATUS_DICTIONARY(ID, CODE, NAME) values (4, 'CLOS', 'Зак INSERT INTO SERVICE_STATUS_DICTIONARY(ID, CODE, NAME) values (5, 'ROPN', 'Возобновлен'); +INSERT INTO STATEMENT_TYPE_DICTIONARY(ID, CODE, NAME) values (1, 'FULL', 'Установка суммы'); + INSERT INTO STATEMENT_TYPE_DICTIONARY(ID, CODE, NAME) values (2, 'INCR', 'Изменение суммы'); INSERT INTO OPERATION_TYPE_DICTIONARY(ID, CODE, NAME) values (1, 'STMT', 'Расчетные операции'); @@ -150,7 +184,7 @@ INSERT INTO MANAGEMENT_JOURNAL_PURPOSE_DICTIONARY(ID, CODE, NAME) values (2, 'NO INSERT INTO MANAGEMENT_JOURNAL_PURPOSE_DICTIONARY(ID, CODE, NAME) values (3, 'DEL', 'Удалена'); -INSERT INTO CONTACT_TYPE_DICTIONARY(ID, CODE, NAME) values (1, 'ADRS', 'Адрес местонахождения'); +INSERT INTO CONTACT_TYPE_DICTIONARY(ID, CODE, NAME) values (1, 'ADRS', 'Адрес'); INSERT INTO CONTACT_TYPE_DICTIONARY(ID, CODE, NAME) values (2, 'POST', 'Почтовый адрес'); @@ -266,9 +300,9 @@ INSERT INTO USER_ROLE_DICTIONARY(ID, CODE, NAME) values (2, 'SPVS', 'Супер INSERT INTO USER_ROLE_DICTIONARY(ID, CODE, NAME) values (3, 'SCRT', 'Администратор безопасности Клиринга МКР'); -INSERT INTO ACCOUNT_TYPE_DICTIONARY(ID, CODE, NAME) values (1, 'CLRN', 'Торговый клиринговый счет'); +INSERT INTO ACCOUNT_TYPE_DICTIONARY(ID, CODE, NAME) values (1, 'CLRN', 'Клиринговый счет'); -INSERT INTO ACCOUNT_TYPE_DICTIONARY(ID, CODE, NAME) values (2, 'BANK', 'Текущий банковский счет'); +INSERT INTO ACCOUNT_TYPE_DICTIONARY(ID, CODE, NAME) values (2, 'BANK', 'Банковский счет'); INSERT INTO ACCOUNT_TYPE_DICTIONARY(ID, CODE, NAME) values (3, 'USPD', 'Счет невыясненных поступлений'); @@ -278,6 +312,10 @@ INSERT INTO ACCOUNT_TYPE_DICTIONARY(ID, CODE, NAME) values (5, 'INFO', 'Инфо INSERT INTO ACCOUNT_TYPE_DICTIONARY(ID, CODE, NAME) values (6, 'PYER', 'Счет плательщика'); +INSERT INTO ACCOUNT_TYPE_DICTIONARY(ID, CODE, NAME) values (7, 'ANLT', 'Аналитический счет'); + +INSERT INTO ACCOUNT_TYPE_DICTIONARY(ID, CODE, NAME) values (8, 'TRAN', 'Транзакционный счет'); + INSERT INTO INSTRUMENT_TYPE_DICTIONARY(ID, CODE, NAME) values (1, 'RATE', 'Инструмент Денежного рынка'); INSERT INTO INSTRUMENT_TYPE_DICTIONARY(ID, CODE, NAME) values (2, 'CRNC', 'Валюты'); @@ -292,189 +330,227 @@ INSERT INTO IN_OUT_S_DF_TYPE_DICTIONARY(ID, CODE, NAME) values (2, '1617', 'Вх INSERT INTO IN_OUT_S_DF_TYPE_DICTIONARY(ID, CODE, NAME) values (3, '0910', 'Входящий ДФ-09/Исходящий ДФ-10'); +INSERT INTO SESSION_STATUS_DICTIONARY(ID, CODE, NAME) values (1, 'ACTV', 'Сессия активна'); + +INSERT INTO SESSION_STATUS_DICTIONARY(ID, CODE, NAME) values (2, 'CLRN', 'Идет клиринг'); + +INSERT INTO SESSION_STATUS_DICTIONARY(ID, CODE, NAME) values (3, 'CLOS', 'Клиринг завершен'); + +INSERT INTO OBJECT_TYPE_DICTIONARY(ID, CODE, NAME) values (1, 'STMT', 'STATEMENT'); + +INSERT INTO OBJECT_TYPE_DICTIONARY(ID, CODE, NAME) values (2, 'VFRS', 'verificationResult'); + +INSERT INTO NOTIFICATION_STATUS_DICTIONARY(ID, CODE, NAME) values (1, 'PEND', 'В ожидании'); + +INSERT INTO NOTIFICATION_STATUS_DICTIONARY(ID, CODE, NAME) values (2, 'CNCL', 'Отменено'); + +INSERT INTO NOTIFICATION_STATUS_DICTIONARY(ID, CODE, NAME) values (3, 'ACPT', 'Принято'); + +INSERT INTO NOTIFICATION_STATUS_DICTIONARY(ID, CODE, NAME) values (4, 'READ', 'Прочтено'); + +INSERT INTO EVENT_TYPE_DICTIONARY(ID, CODE, NAME) values (1, 'CRET', 'Создание'); + +INSERT INTO EVENT_TYPE_DICTIONARY(ID, CODE, NAME) values (2, 'UPDT', 'Обновление'); + +INSERT INTO EVENT_TYPE_DICTIONARY(ID, CODE, NAME) values (3, 'DELT', 'Удаление'); + INSERT INTO CURRENCY_CODE_DICTIONARY(ID, CODE, NAME) values (643, 'RUB', 'Российский рубль'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1000, '1000', 'Общая ошибка модуля securities_services.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1000, 'SECR', 'Общая ошибка модуля securities-service.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1001, '1001', 'Нет прав на проведение данной операции.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1001, 'SECR', 'Нет прав на проведение данной операции.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1002, '1002', 'Не заданы обязательные поля.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1002, 'SECR', 'Не заданы обязательные поля.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1003, '1003', 'Запись с указанным идентификатором в справочнике %s не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1003, 'SECR', 'Запись с указанным идентификатором в справочнике %s не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1004, '1004', 'Неверное значение поля %s.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1004, 'SECR', 'Неверное значение поля %s.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1005, '1005', 'Такая запись уже существует.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1005, 'SECR', 'Такая запись уже существует.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1006, '1006', 'Запись не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1006, 'SECR', 'Запись не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1007, '1007', 'Пользователь не найден.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1007, 'SECR', 'Пользователь не найден.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1008, '1008', 'Пользователь неактивен.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1008, 'SECR', 'Пользователь неактивен.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1010, '1010', 'Такой Инструмент уже существует.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1010, 'SECR', 'Такой Инструмент уже существует.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1011, '1011', 'Инструмент не найден.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1011, 'SECR', 'Инструмент не найден.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1012, '1012', 'Инструмент неактивен.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (1012, 'SECR', 'Инструмент неактивен.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (2000, '2000', 'Общая ошибка модуля utility_service'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (2000, 'UTIL', 'Общая ошибка модуля utility-service.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (2001, '2001', 'Нет прав на проведение данной операции.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (2001, 'UTIL', 'Нет прав на проведение данной операции.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (2002, '2002', 'Не заданы обязательные поля.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (2002, 'UTIL', 'Не заданы обязательные поля.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (2003, '2003', 'Запись с указанным идентификатором в справочнике %s не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (2003, 'UTIL', 'Запись с указанным идентификатором в справочнике %s не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (2004, '2004', 'Неверное значение поля %s.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (2004, 'UTIL', 'Неверное значение поля %s.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (2005, '2005', 'Такая запись уже существует.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (2005, 'UTIL', 'Такая запись уже существует.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (2006, '2006', 'Запись не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (2006, 'UTIL', 'Запись не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3000, '3000', 'Общая ошибка модуля company_services'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3000, 'CMPN', 'Общая ошибка модуля company-service.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3001, '3001', 'Нет прав на проведение данной операции.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3001, 'CMPN', 'Нет прав на проведение данной операции.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3002, '3002', 'Не заданы обязательные поля.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3002, 'CMPN', 'Не заданы обязательные поля.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3003, '3003', 'Запись с указанным идентификатором в справочнике %s не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3003, 'CMPN', 'Запись с указанным идентификатором в справочнике %s не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3004, '3004', 'Неверное значение поля %s.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3004, 'CMPN', 'Неверное значение поля %s.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3005, '3005', 'Такая запись уже существует.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3005, 'CMPN', 'Такая запись уже существует.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3006, '3006', 'Запись не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3006, 'CMPN', 'Запись не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3010, '3010', 'Такая Компания уже существует'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3010, 'CMPN', 'Такая Компания уже существует'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3011, '3011', 'Компания не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3011, 'CMPN', 'Компания не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3012, '3012', 'Компания неактивна.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3012, 'CMPN', 'Компания неактивна.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3013, '3013', 'Профиль Компании не найден.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3013, 'CMPN', 'Профиль Компании не найден.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3014, '3014', 'Реквизит Компании не найден.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3014, 'CMPN', 'Реквизит Компании не найден.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3015, '3015', 'Контакт Компании не найден.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3015, 'CMPN', 'Контакт Компании не найден.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3016, '3016', 'Категория Компании не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3016, 'CMPN', 'Категория Компании не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3017, '3017', 'Компании уже присвоена Категория %s.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3017, 'CMPN', 'Компании уже присвоена Категория %s.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (4000, '4000', 'Общая ошибка модуля report_serivces'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3018, 'CMPN', 'У компании присутствуют обязательства'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5000, '5000', 'Общая ошибка модуля account_services'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (4000, 'RPRT', 'Общая ошибка модуля report-serivce.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5001, '5001', 'Нет прав на проведение данной операции.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5000, 'ACNT', 'Общая ошибка модуля account-service.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5002, '5002', 'Не заданы обязательные поля.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5001, 'ACNT', 'Нет прав на проведение данной операции.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5003, '5003', 'Запись с указанным идентификатором в справочнике %s не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5002, 'ACNT', 'Не заданы обязательные поля.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5004, '5004', 'Неверное значение поля %s.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5003, 'ACNT', 'Запись с указанным идентификатором в справочнике %s не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5005, '5005', 'Такая запись уже существует.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5004, 'ACNT', 'Неверное значение поля %s.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5006, '5006', 'Запись не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5005, 'ACNT', 'Такая запись уже существует.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5010, '5010', 'Счет %s уже существует.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5006, 'ACNT', 'Запись не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5011, '5011', 'Счет %s не найден.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5010, 'ACNT', 'Счет %s уже существует.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5012, '5012', 'Счет %s неактивен.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5011, 'ACNT', 'Счет %s не найден.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5013, '5013', 'Компания не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5012, 'ACNT', 'Счет %s неактивен.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5014, '5014', 'Компания неактивна.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5013, 'ACNT', 'Компания не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5200, '5200', 'Общая ошибка модуля balance_services'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5014, 'ACNT', 'Компания неактивна.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5210, '5210', 'Клиринговая сессия неактивна.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5200, 'BLNC', 'Общая ошибка модуля balance-service.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5211, '5211', 'Компания не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5210, 'BLNC', 'Клиринговая сессия неактивна.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5212, '5212', 'Компания неактивна.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5211, 'BLNC', 'Компания не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5213, '5213', 'Валюта не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5212, 'BLNC', 'Компания неактивна.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5214, '5214', 'Загрузка остатков возможна только на текущую дату.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5213, 'BLNC', 'Валюта не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5215, '5215', 'Загрузка остатков возможна только по рынку МКР.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5214, 'BLNC', 'Загрузка остатков возможна только на текущую дату.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5216, '5216', 'Загрузка остатков возможна только по собственным счетам.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5215, 'BLNC', 'Загрузка остатков возможна только по рынку МКР.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5217, '5217', 'Счет %s не найден.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5216, 'BLNC', 'Загрузка остатков возможна только по собственным счетам.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5218, '5218', 'Счет %s неактивен.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5217, 'BLNC', 'Счет %s не найден.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5219, '5219', 'Дозачисления/списания возможны только по рынку МКР.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5218, 'BLNC', 'Счет %s неактивен.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5220, '5220', 'Сумма списания превышает сумму средств на счете.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5219, 'BLNC', 'Дозачисления/списания возможны только по рынку МКР.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5221, '5221', 'Поступление средств возможно только по рынку МКР.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5220, 'BLNC', 'Сумма списания превышает сумму средств на счете.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5222, '5222', 'Сумма списания превышает сумму средств на счете.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5221, 'BLNC', 'Поступление средств возможно только по рынку МКР.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5400, '5400', 'Общая ошибка модуля проведения расчетов'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5222, 'BLNC', 'Сумма списания превышает сумму средств на счете.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5600, '5600', 'Общая ошибка модуля dbf-loader'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5400, 'CLRN', 'Общая ошибка модуля clearing-service.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5800, '5800', 'Общая ошибка модуля dbf-export'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5401, 'CLRN', 'Нет прав на проведение данной операции.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (6000, '6000', 'Общая ошибка модуля api-lk-company'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5402, 'CLRN', 'Не заданы обязательные поля.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7000, '7000', 'Общая ошибка модуля scheduler_service'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5403, 'CLRN', 'Запись с указанным идентификатором в справочнике %s не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7001, '7001', 'Нет прав на проведение данной операции.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5404, 'CLRN', 'Неверное значение поля %s.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7002, '7002', 'Не заданы обязательные поля.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5405, 'CLRN', 'Такая запись уже существует.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7003, '7003', 'Запись с указанным идентификатором в справочнике %s не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5406, 'CLRN', 'Запись не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7004, '7004', 'Неверное значение поля %s.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5407, 'CLRN', 'Пользователь не найден.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7005, '7005', 'Такая запись уже существует.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5408, 'CLRN', 'Пользователь неактивен.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7006, '7006', 'Запись не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5410, 'CLRN', 'Компания не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7010, '7010', 'Невозможно добавить задачу на прошедшую дату.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5411, 'CLRN', 'Компания неактивна.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7011, '7011', 'Невозможно добавить задачу на прошедшее время.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5412, 'CLRN', 'У компании %s не сошлась сумма кредит-проводок.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7012, '7012', 'Указанный в задаче нструмент не найден.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5413, 'CLRN', 'У компании %s не сошлась сумма дебет-проводок.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7013, '7013', 'Указанный инструмент неактивен.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5600, 'DBFI', 'Общая ошибка модуля dbf-importer.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7014, '7014', 'Указанная в задаче компания не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5800, 'DBFE', 'Общая ошибка модуля dbf-exporter.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7015, '7015', 'Указанная компания неактивна.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (6000, 'APIC', 'Общая ошибка модуля api-lk-company.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (8000, '8000', 'Общая ошибка модуля utility_service'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7000, 'SCHD', 'Общая ошибка модуля scheduler-service.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (8001, '8001', 'Нет прав на проведение данной операции.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7001, 'SCHD', 'Нет прав на проведение данной операции.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (8002, '8002', 'Не заданы обязательные поля.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7002, 'SCHD', 'Не заданы обязательные поля.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (8003, '8003', 'Запись с указанным идентификатором в справочнике %s не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7003, 'SCHD', 'Запись с указанным идентификатором в справочнике %s не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (8004, '8004', 'Неверное значение поля %s.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7004, 'SCHD', 'Неверное значение поля %s.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (8005, '8005', 'Такая запись уже существует.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7005, 'SCHD', 'Такая запись уже существует.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (8006, '8006', 'Запись не найдена.'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7006, 'SCHD', 'Запись не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (9000, '9000', 'Ошибка проверки поля %s'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7010, 'SCHD', 'Невозможно добавить задачу на прошедшую дату.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (9001, '9001', 'Неопознанное значение json свойства %s'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7011, 'SCHD', 'Невозможно добавить задачу на прошедшее время.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (9002, '9002', 'Не удалось обработать http сообщение'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7012, 'SCHD', 'Указанный в задаче нструмент не найден.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (9003, '9003', 'Keycloak роли содержат дубликаты'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7013, 'SCHD', 'Указанный инструмент неактивен.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (9004, '9004', 'Не может обнаружитьт словарь %s'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7014, 'SCHD', 'Указанная в задаче компания не найдена.'); -INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (9005, '9005', 'Не найдено ресурс %s'); +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (7015, 'SCHD', 'Указанная компания неактивна.'); + +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (8000, 'CNTR', 'Общая ошибка модуля control-service.'); + +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (9000, 'BAPI', 'Ошибка проверки поля %s.'); + +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (9001, 'BAPI', 'Неопознанное значение json свойства %s.'); + +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (9002, 'BAPI', 'Не удалось обработать http сообщение.'); + +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (9003, 'BAPI', 'Keycloak роли содержат дубликаты.'); + +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (9004, 'BAPI', 'Не может обнаружитьт словарь %s.'); + +INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (9005, 'BAPI', 'Не найдено ресурс %s.'); /* Business objects */ diff --git a/clearing-parent/db-scripts/src/main/resources/db/DDL.sql b/clearing-parent/db-scripts/src/main/resources/db/DDL.sql index ef2757380..300ec3a34 100644 --- a/clearing-parent/db-scripts/src/main/resources/db/DDL.sql +++ b/clearing-parent/db-scripts/src/main/resources/db/DDL.sql @@ -1,4139 +1,3352 @@ --- DB version: 0.0.0.6 -/* Dictionaries */ - --- chargeDirection - Направление начисления комиссии -CREATE TABLE IF NOT EXISTS CHARGE_DIRECTION_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE CHARGE_DIRECTION_DICTIONARY IS 'Направление начисления комиссии'; - -COMMENT ON COLUMN CHARGE_DIRECTION_DICTIONARY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN CHARGE_DIRECTION_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN CHARGE_DIRECTION_DICTIONARY.NAME IS 'Направление комиссии'; - --- chargeType - Справочник типов комиссий -CREATE TABLE IF NOT EXISTS CHARGE_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE CHARGE_TYPE_DICTIONARY IS 'Справочник типов комиссий'; - -COMMENT ON COLUMN CHARGE_TYPE_DICTIONARY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN CHARGE_TYPE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN CHARGE_TYPE_DICTIONARY.NAME IS 'Тип комиссии'; - --- courierType - Способ доставки документа -CREATE TABLE IF NOT EXISTS COURIER_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE COURIER_TYPE_DICTIONARY IS 'Способ доставки документа'; - -COMMENT ON COLUMN COURIER_TYPE_DICTIONARY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN COURIER_TYPE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN COURIER_TYPE_DICTIONARY.NAME IS 'Способ доставки'; - --- interestStatus - Справочник статусов возвращения процентов -CREATE TABLE IF NOT EXISTS INTEREST_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE INTEREST_STATUS_DICTIONARY IS 'Справочник статусов возвращения процентов'; - -COMMENT ON COLUMN INTEREST_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN INTEREST_STATUS_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN INTEREST_STATUS_DICTIONARY.NAME IS 'Наименование'; - --- termType - Справочник видов инструментов денежного рынка -CREATE TABLE IF NOT EXISTS TERM_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE TERM_TYPE_DICTIONARY IS 'Справочник видов инструментов денежного рынка'; - -COMMENT ON COLUMN TERM_TYPE_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN TERM_TYPE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN TERM_TYPE_DICTIONARY.NAME IS 'Наименование'; - --- task - Справочник задач -CREATE TABLE IF NOT EXISTS TASK_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(150)); -COMMENT ON TABLE TASK_DICTIONARY IS 'Справочник задач'; - -COMMENT ON COLUMN TASK_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN TASK_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN TASK_DICTIONARY.NAME IS 'Задача'; - --- taskStatus - Справочник статусов задач -CREATE TABLE IF NOT EXISTS TASK_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE TASK_STATUS_DICTIONARY IS 'Справочник статусов задач'; - -COMMENT ON COLUMN TASK_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN TASK_STATUS_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN TASK_STATUS_DICTIONARY.NAME IS 'Статус'; - --- tradingStatus - Справочник торговых статусов -CREATE TABLE IF NOT EXISTS TRADING_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE TRADING_STATUS_DICTIONARY IS 'Справочник торговых статусов'; - -COMMENT ON COLUMN TRADING_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN TRADING_STATUS_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN TRADING_STATUS_DICTIONARY.NAME IS 'Торговый статус'; - --- transactionStatus - Справочник статусов транзакций -CREATE TABLE IF NOT EXISTS TRANSACTION_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE TRANSACTION_STATUS_DICTIONARY IS 'Справочник статусов транзакций'; - -COMMENT ON COLUMN TRANSACTION_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN TRANSACTION_STATUS_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN TRANSACTION_STATUS_DICTIONARY.NAME IS 'Статус транзакции'; - --- source - Справочник источников -CREATE TABLE IF NOT EXISTS SOURCE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE SOURCE_DICTIONARY IS 'Справочник источников'; - -COMMENT ON COLUMN SOURCE_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN SOURCE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN SOURCE_DICTIONARY.NAME IS 'Наименование'; - --- clearingStatus - Справочник результатов клиринга -CREATE TABLE IF NOT EXISTS CLEARING_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE CLEARING_STATUS_DICTIONARY IS 'Справочник результатов клиринга'; - -COMMENT ON COLUMN CLEARING_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN CLEARING_STATUS_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN CLEARING_STATUS_DICTIONARY.NAME IS 'Наименование'; - --- workflowStatus - Справочник статусов бизнес-процессов -CREATE TABLE IF NOT EXISTS WORKFLOW_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE WORKFLOW_STATUS_DICTIONARY IS 'Справочник статусов бизнес-процессов'; - -COMMENT ON COLUMN WORKFLOW_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN WORKFLOW_STATUS_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN WORKFLOW_STATUS_DICTIONARY.NAME IS 'Наименование'; - --- accountStatus - Справочник статусов счетов -CREATE TABLE IF NOT EXISTS ACCOUNT_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE ACCOUNT_STATUS_DICTIONARY IS 'Справочник статусов счетов'; - -COMMENT ON COLUMN ACCOUNT_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN ACCOUNT_STATUS_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN ACCOUNT_STATUS_DICTIONARY.NAME IS 'Наименование'; - --- allowed - Справочник признаков допустимости использования объектов -CREATE TABLE IF NOT EXISTS ALLOWED_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE ALLOWED_DICTIONARY IS 'Справочник признаков допустимости использования объектов'; - -COMMENT ON COLUMN ALLOWED_DICTIONARY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN ALLOWED_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN ALLOWED_DICTIONARY.NAME IS 'Признак допустимости'; - --- moneyFlowSide - Направление заявки -CREATE TABLE IF NOT EXISTS MONEY_FLOW_SIDE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE MONEY_FLOW_SIDE_DICTIONARY IS 'Направление заявки'; - -COMMENT ON COLUMN MONEY_FLOW_SIDE_DICTIONARY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN MONEY_FLOW_SIDE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN MONEY_FLOW_SIDE_DICTIONARY.NAME IS 'Значение'; - --- inOutDirection - Справочник значений направления денежного потока -CREATE TABLE IF NOT EXISTS IN_OUT_DIRECTION_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE IN_OUT_DIRECTION_DICTIONARY IS 'Справочник значений направления денежного потока'; - -COMMENT ON COLUMN IN_OUT_DIRECTION_DICTIONARY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN IN_OUT_DIRECTION_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN IN_OUT_DIRECTION_DICTIONARY.NAME IS 'Значение'; - --- statementType - Справочник типов поступлений/списаний от ПРЦ -CREATE TABLE IF NOT EXISTS STATEMENT_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE STATEMENT_TYPE_DICTIONARY IS 'Справочник типов поступлений/списаний от ПРЦ'; - -COMMENT ON COLUMN STATEMENT_TYPE_DICTIONARY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN STATEMENT_TYPE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN STATEMENT_TYPE_DICTIONARY.NAME IS 'Значение'; - --- operationType - Справочник типов операций -CREATE TABLE IF NOT EXISTS OPERATION_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE OPERATION_TYPE_DICTIONARY IS 'Справочник типов операций'; - -COMMENT ON COLUMN OPERATION_TYPE_DICTIONARY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN OPERATION_TYPE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN OPERATION_TYPE_DICTIONARY.NAME IS 'Значение'; - --- operationStatus - Справочник статусов операций -CREATE TABLE IF NOT EXISTS OPERATION_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE OPERATION_STATUS_DICTIONARY IS 'Справочник статусов операций'; - -COMMENT ON COLUMN OPERATION_STATUS_DICTIONARY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN OPERATION_STATUS_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN OPERATION_STATUS_DICTIONARY.NAME IS 'Значение'; - --- balanceAccountType - Справочник типов лимитов -CREATE TABLE IF NOT EXISTS BALANCE_ACCOUNT_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE BALANCE_ACCOUNT_TYPE_DICTIONARY IS 'Справочник типов лимитов'; - -COMMENT ON COLUMN BALANCE_ACCOUNT_TYPE_DICTIONARY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN BALANCE_ACCOUNT_TYPE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN BALANCE_ACCOUNT_TYPE_DICTIONARY.NAME IS 'Тип лимитов'; - --- countryCode - Справочник кодов стран -CREATE TABLE IF NOT EXISTS COUNTRY_CODE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE COUNTRY_CODE_DICTIONARY IS 'Справочник кодов стран'; - -COMMENT ON COLUMN COUNTRY_CODE_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN COUNTRY_CODE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN COUNTRY_CODE_DICTIONARY.NAME IS 'Наименование'; - --- clearingCategory - Справочник категорий участника клиринга -CREATE TABLE IF NOT EXISTS CLEARING_CATEGORY_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE CLEARING_CATEGORY_DICTIONARY IS 'Справочник категорий участника клиринга'; - -COMMENT ON COLUMN CLEARING_CATEGORY_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN CLEARING_CATEGORY_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN CLEARING_CATEGORY_DICTIONARY.NAME IS 'Наименование'; - --- contactType - Справочник типов контактов Компании -CREATE TABLE IF NOT EXISTS CONTACT_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE CONTACT_TYPE_DICTIONARY IS 'Справочник типов контактов Компании'; - -COMMENT ON COLUMN CONTACT_TYPE_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN CONTACT_TYPE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN CONTACT_TYPE_DICTIONARY.NAME IS 'Наименование'; - --- corporationSoleType - Единоличный исполнительный орган -CREATE TABLE IF NOT EXISTS CORPORATION_SOLE_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE CORPORATION_SOLE_TYPE_DICTIONARY IS 'Единоличный исполнительный орган'; - -COMMENT ON COLUMN CORPORATION_SOLE_TYPE_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN CORPORATION_SOLE_TYPE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN CORPORATION_SOLE_TYPE_DICTIONARY.NAME IS 'Наименование'; - --- connectionState - Справочник состояний соединений -CREATE TABLE IF NOT EXISTS CONNECTION_STATE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE CONNECTION_STATE_DICTIONARY IS 'Справочник состояний соединений'; - -COMMENT ON COLUMN CONNECTION_STATE_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN CONNECTION_STATE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN CONNECTION_STATE_DICTIONARY.NAME IS 'Наименование'; - --- documentType - Справочник типов документов -CREATE TABLE IF NOT EXISTS DOCUMENT_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE DOCUMENT_TYPE_DICTIONARY IS 'Справочник типов документов'; - -COMMENT ON COLUMN DOCUMENT_TYPE_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN DOCUMENT_TYPE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN DOCUMENT_TYPE_DICTIONARY.NAME IS 'Наименование'; - --- legalKind - Справочник видов субъекта -CREATE TABLE IF NOT EXISTS LEGAL_KIND_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE LEGAL_KIND_DICTIONARY IS 'Справочник видов субъекта'; - -COMMENT ON COLUMN LEGAL_KIND_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN LEGAL_KIND_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN LEGAL_KIND_DICTIONARY.NAME IS 'Наименование'; - --- organizationType - Справочник типов организаций -CREATE TABLE IF NOT EXISTS ORGANIZATION_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE ORGANIZATION_TYPE_DICTIONARY IS 'Справочник типов организаций'; - -COMMENT ON COLUMN ORGANIZATION_TYPE_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN ORGANIZATION_TYPE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN ORGANIZATION_TYPE_DICTIONARY.NAME IS 'Наименование'; - --- companySymbol - Справочник имен Компании -CREATE TABLE IF NOT EXISTS COMPANY_SYMBOL_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255), SHORTNAME varchar(255)); -COMMENT ON TABLE COMPANY_SYMBOL_DICTIONARY IS 'Справочник имен Компании'; - -COMMENT ON COLUMN COMPANY_SYMBOL_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN COMPANY_SYMBOL_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN COMPANY_SYMBOL_DICTIONARY.NAME IS 'Наименование'; - -COMMENT ON COLUMN COMPANY_SYMBOL_DICTIONARY.SHORTNAME IS 'Краткое наименование'; - --- companyRole - Справочник ролей Компаний -CREATE TABLE IF NOT EXISTS COMPANY_ROLE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE COMPANY_ROLE_DICTIONARY IS 'Справочник ролей Компаний'; - -COMMENT ON COLUMN COMPANY_ROLE_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN COMPANY_ROLE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN COMPANY_ROLE_DICTIONARY.NAME IS 'Роль Участника'; - --- userRole - Роли пользователей -CREATE TABLE IF NOT EXISTS USER_ROLE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE USER_ROLE_DICTIONARY IS 'Роли пользователей'; - -COMMENT ON COLUMN USER_ROLE_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN USER_ROLE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN USER_ROLE_DICTIONARY.NAME IS 'Роль пользователя'; - --- accountType - Справочник типов счетов -CREATE TABLE IF NOT EXISTS ACCOUNT_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE ACCOUNT_TYPE_DICTIONARY IS 'Справочник типов счетов'; - -COMMENT ON COLUMN ACCOUNT_TYPE_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN ACCOUNT_TYPE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN ACCOUNT_TYPE_DICTIONARY.NAME IS 'Наименование'; - --- instrumentType - Справочник типов инструмента -CREATE TABLE IF NOT EXISTS INSTRUMENT_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE INSTRUMENT_TYPE_DICTIONARY IS 'Справочник типов инструмента'; - -COMMENT ON COLUMN INSTRUMENT_TYPE_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN INSTRUMENT_TYPE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN INSTRUMENT_TYPE_DICTIONARY.NAME IS 'Наименование'; - --- currencyCode - Справочник кодов валют -CREATE TABLE IF NOT EXISTS CURRENCY_CODE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE CURRENCY_CODE_DICTIONARY IS 'Справочник кодов валют'; - -COMMENT ON COLUMN CURRENCY_CODE_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN CURRENCY_CODE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN CURRENCY_CODE_DICTIONARY.NAME IS 'Наименование'; - --- serviceStatus - Справочник услуги -CREATE TABLE IF NOT EXISTS SERVICE_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE SERVICE_STATUS_DICTIONARY IS 'Справочник услуги'; - -COMMENT ON COLUMN SERVICE_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN SERVICE_STATUS_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN SERVICE_STATUS_DICTIONARY.NAME IS 'Наименование'; - --- service - Справочник услуги -CREATE TABLE IF NOT EXISTS SERVICE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE SERVICE_DICTIONARY IS 'Справочник услуги'; - -COMMENT ON COLUMN SERVICE_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN SERVICE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN SERVICE_DICTIONARY.NAME IS 'Наименование'; - --- serviceProduct - Справочник продукта для услуги -CREATE TABLE IF NOT EXISTS SERVICE_PRODUCT_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE SERVICE_PRODUCT_DICTIONARY IS 'Справочник продукта для услуги'; - -COMMENT ON COLUMN SERVICE_PRODUCT_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN SERVICE_PRODUCT_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN SERVICE_PRODUCT_DICTIONARY.NAME IS 'Наименование'; - --- sector - Справочник секций -CREATE TABLE IF NOT EXISTS SECTOR_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE SECTOR_DICTIONARY IS 'Справочник секций'; - -COMMENT ON COLUMN SECTOR_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN SECTOR_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN SECTOR_DICTIONARY.NAME IS 'Наименование'; - --- resultStatus - Статус обработки -CREATE TABLE IF NOT EXISTS RESULT_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE RESULT_STATUS_DICTIONARY IS 'Статус обработки'; - -COMMENT ON COLUMN RESULT_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN RESULT_STATUS_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN RESULT_STATUS_DICTIONARY.NAME IS 'Статус обработки'; - --- errorCode - Коды ошибок -CREATE TABLE IF NOT EXISTS ERROR_CODE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(255)); -COMMENT ON TABLE ERROR_CODE_DICTIONARY IS 'Коды ошибок'; - -COMMENT ON COLUMN ERROR_CODE_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN ERROR_CODE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN ERROR_CODE_DICTIONARY.NAME IS 'Текст ошибки'; - --- managementJournalStatus - Справочник статусов журнала мониторинга и контроля -CREATE TABLE IF NOT EXISTS MANAGEMENT_JOURNAL_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE MANAGEMENT_JOURNAL_STATUS_DICTIONARY IS 'Справочник статусов журнала мониторинга и контроля'; - -COMMENT ON COLUMN MANAGEMENT_JOURNAL_STATUS_DICTIONARY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN MANAGEMENT_JOURNAL_STATUS_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN MANAGEMENT_JOURNAL_STATUS_DICTIONARY.NAME IS 'Статус сообщения'; - --- managementJournalType - Справочник типов записей в журнале мониторинга и контроля -CREATE TABLE IF NOT EXISTS MANAGEMENT_JOURNAL_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE MANAGEMENT_JOURNAL_TYPE_DICTIONARY IS 'Справочник типов записей в журнале мониторинга и контроля'; - -COMMENT ON COLUMN MANAGEMENT_JOURNAL_TYPE_DICTIONARY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN MANAGEMENT_JOURNAL_TYPE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN MANAGEMENT_JOURNAL_TYPE_DICTIONARY.NAME IS 'Тип записи'; - --- managementJournalPurpose - Справочник целей записей в журнале мониторинга и контроля -CREATE TABLE IF NOT EXISTS MANAGEMENT_JOURNAL_PURPOSE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE MANAGEMENT_JOURNAL_PURPOSE_DICTIONARY IS 'Справочник целей записей в журнале мониторинга и контроля'; - -COMMENT ON COLUMN MANAGEMENT_JOURNAL_PURPOSE_DICTIONARY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN MANAGEMENT_JOURNAL_PURPOSE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN MANAGEMENT_JOURNAL_PURPOSE_DICTIONARY.NAME IS 'Тип записи'; - --- inOutSDfType - Справочник типов входящих и исходящих записей -CREATE TABLE IF NOT EXISTS IN_OUT_S_DF_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE IN_OUT_S_DF_TYPE_DICTIONARY IS 'Справочник типов входящих и исходящих записей'; - -COMMENT ON COLUMN IN_OUT_S_DF_TYPE_DICTIONARY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN IN_OUT_S_DF_TYPE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN IN_OUT_S_DF_TYPE_DICTIONARY.NAME IS 'Тип записи'; - --- sessionStatus - Справочник статусов клиринговой сессии -CREATE TABLE IF NOT EXISTS SESSION_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE SESSION_STATUS_DICTIONARY IS 'Справочник статусов клиринговой сессии'; - -COMMENT ON COLUMN SESSION_STATUS_DICTIONARY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN SESSION_STATUS_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN SESSION_STATUS_DICTIONARY.NAME IS 'Наименование'; - --- objectType - Справочник типов объектов -CREATE TABLE IF NOT EXISTS OBJECT_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE OBJECT_TYPE_DICTIONARY IS 'Справочник типов объектов'; - -COMMENT ON COLUMN OBJECT_TYPE_DICTIONARY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN OBJECT_TYPE_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN OBJECT_TYPE_DICTIONARY.NAME IS 'Наименование'; - --- notificationStatus - Справочник статусов сообщений -CREATE TABLE IF NOT EXISTS NOTIFICATION_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE char(4), NAME varchar(50)); -COMMENT ON TABLE NOTIFICATION_STATUS_DICTIONARY IS 'Справочник статусов сообщений'; - -COMMENT ON COLUMN NOTIFICATION_STATUS_DICTIONARY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN NOTIFICATION_STATUS_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN NOTIFICATION_STATUS_DICTIONARY.NAME IS 'Наименование'; - -/* Business objects */ - --- userCls - Пользователь -CREATE TABLE IF NOT EXISTS USER_CLS(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, IDENTIFIER varchar(250)); -COMMENT ON TABLE USER_CLS IS 'Пользователь'; - - -COMMENT ON COLUMN USER_CLS.ID IS 'Идентификатор'; - - -COMMENT ON COLUMN USER_CLS.CREATED_AT IS 'Создано'; - - -COMMENT ON COLUMN USER_CLS.UPDATED_AT IS 'Изменено'; - - -COMMENT ON COLUMN USER_CLS.IDENTIFIER IS 'Внешний идентификатор'; - - --- History log of userCls - Пользователь -CREATE TABLE IF NOT EXISTS USER_CLS_HISTORY(USER_CLS_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, IDENTIFIER varchar(250)); -COMMENT ON TABLE USER_CLS_HISTORY IS 'История изменений таблицы userCls'; -COMMENT ON COLUMN USER_CLS_HISTORY.USER_CLS_ID IS 'Идентификатор записи в таблице USER_CLS'; -COMMENT ON COLUMN USER_CLS_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN USER_CLS_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN USER_CLS_HISTORY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN USER_CLS_HISTORY.CREATED_AT IS 'Создано'; - -COMMENT ON COLUMN USER_CLS_HISTORY.UPDATED_AT IS 'Изменено'; - -COMMENT ON COLUMN USER_CLS_HISTORY.IDENTIFIER IS 'Внешний идентификатор'; - --- userRoleSession - Набор ролей -CREATE TABLE IF NOT EXISTS USER_ROLE_SESSION(ID bigint PRIMARY KEY, USER_ID bigint, USER_ROLE char(4), COMPANY_ID bigint, STATUS char(4)); -COMMENT ON TABLE USER_ROLE_SESSION IS 'Набор ролей'; - - -COMMENT ON COLUMN USER_ROLE_SESSION.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN USER_ROLE_SESSION.USER_ID IS 'Идентификатор пользователя (linked to userCls)'; - - -COMMENT ON COLUMN USER_ROLE_SESSION.USER_ROLE IS 'Идентификатор роли (linked to userRole)'; - - -COMMENT ON COLUMN USER_ROLE_SESSION.COMPANY_ID IS 'Идентификатор компании (linked to company)'; - - -COMMENT ON COLUMN USER_ROLE_SESSION.STATUS IS 'Статус (linked to workflowStatus)'; - --- userSettings - Настройки пользователя -CREATE TABLE IF NOT EXISTS USER_SETTINGS(ID bigint PRIMARY KEY, USER_ID bigint, VERSION varchar(50), JSON varchar(200000)); -COMMENT ON TABLE USER_SETTINGS IS 'Настройки пользователя'; - - -COMMENT ON COLUMN USER_SETTINGS.ID IS 'Идентификатор'; - - -COMMENT ON COLUMN USER_SETTINGS.USER_ID IS 'Пользователь (linked to userCls)'; - - -COMMENT ON COLUMN USER_SETTINGS.VERSION IS 'Версия настроек пользователя'; - - -COMMENT ON COLUMN USER_SETTINGS.JSON IS 'Данные конфигурации'; - --- userConnect - Активность пользователей в системе -CREATE TABLE IF NOT EXISTS USER_CONNECT(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, USER_ID bigint, CONNECTION_TIME timestamp, DISCONNECTION_TIME timestamp, SERVER_I_P varchar(250), CLIENT_I_P varchar(250), CONNECTION_STATE char(4), CLEARING_DATE date, ERROR_CODE bigint, ERROR_TEXT char(4)); -COMMENT ON TABLE USER_CONNECT IS 'Активность пользователей в системе'; - - -COMMENT ON COLUMN USER_CONNECT.ID IS 'Идентификатор'; - - -COMMENT ON COLUMN USER_CONNECT.CREATED_AT IS 'Создано'; - - -COMMENT ON COLUMN USER_CONNECT.UPDATED_AT IS 'Изменено'; - - -COMMENT ON COLUMN USER_CONNECT.USER_ID IS 'Пользователь (linked to userCls)'; - - -COMMENT ON COLUMN USER_CONNECT.CONNECTION_TIME IS 'Последнее соединение'; - - -COMMENT ON COLUMN USER_CONNECT.DISCONNECTION_TIME IS 'Разрыв соединения'; - - -COMMENT ON COLUMN USER_CONNECT.SERVER_I_P IS 'IP адрес сервера'; - - -COMMENT ON COLUMN USER_CONNECT.CLIENT_I_P IS 'IP адрес клиента'; - - -COMMENT ON COLUMN USER_CONNECT.CONNECTION_STATE IS 'Статус соединения (linked to connectionState)'; - - -COMMENT ON COLUMN USER_CONNECT.CLEARING_DATE IS 'Дата'; - - -COMMENT ON COLUMN USER_CONNECT.ERROR_CODE IS 'Код ошибки (linked to errorCode)'; - - -COMMENT ON COLUMN USER_CONNECT.ERROR_TEXT IS 'Полный текст ошибки (linked to errorText)'; - - --- History log of userConnect - Активность пользователей в системе -CREATE TABLE IF NOT EXISTS USER_CONNECT_HISTORY(USER_CONNECT_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, USER_ID bigint, CONNECTION_TIME timestamp, DISCONNECTION_TIME timestamp, SERVER_I_P varchar(250), CLIENT_I_P varchar(250), CONNECTION_STATE char(4), CLEARING_DATE date, ERROR_CODE bigint, ERROR_TEXT char(4)); -COMMENT ON TABLE USER_CONNECT_HISTORY IS 'История изменений таблицы userConnect'; -COMMENT ON COLUMN USER_CONNECT_HISTORY.USER_CONNECT_ID IS 'Идентификатор записи в таблице USER_CONNECT'; -COMMENT ON COLUMN USER_CONNECT_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN USER_CONNECT_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN USER_CONNECT_HISTORY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN USER_CONNECT_HISTORY.CREATED_AT IS 'Создано'; - -COMMENT ON COLUMN USER_CONNECT_HISTORY.UPDATED_AT IS 'Изменено'; - -COMMENT ON COLUMN USER_CONNECT_HISTORY.USER_ID IS 'Пользователь (linked to userCls)'; - -COMMENT ON COLUMN USER_CONNECT_HISTORY.CONNECTION_TIME IS 'Последнее соединение'; - -COMMENT ON COLUMN USER_CONNECT_HISTORY.DISCONNECTION_TIME IS 'Разрыв соединения'; - -COMMENT ON COLUMN USER_CONNECT_HISTORY.SERVER_I_P IS 'IP адрес сервера'; - -COMMENT ON COLUMN USER_CONNECT_HISTORY.CLIENT_I_P IS 'IP адрес клиента'; - -COMMENT ON COLUMN USER_CONNECT_HISTORY.CONNECTION_STATE IS 'Статус соединения (linked to connectionState)'; - -COMMENT ON COLUMN USER_CONNECT_HISTORY.CLEARING_DATE IS 'Дата'; - -COMMENT ON COLUMN USER_CONNECT_HISTORY.ERROR_CODE IS 'Код ошибки (linked to errorCode)'; - -COMMENT ON COLUMN USER_CONNECT_HISTORY.ERROR_TEXT IS 'Полный текст ошибки (linked to errorText)'; - --- timetable - Постоянное расписание операционного дня -CREATE TABLE IF NOT EXISTS TIMETABLE(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, TASK char(4), TASK_TIME time, TASK_STATUS char(4)); -COMMENT ON TABLE TIMETABLE IS 'Постоянное расписание операционного дня'; - - -COMMENT ON COLUMN TIMETABLE.ID IS 'Идентификатор'; - - -COMMENT ON COLUMN TIMETABLE.CREATED_AT IS 'Создано'; - - -COMMENT ON COLUMN TIMETABLE.UPDATED_AT IS 'Изменено'; - - -COMMENT ON COLUMN TIMETABLE.TASK IS 'Идентификатор задачи (linked to task)'; - - -COMMENT ON COLUMN TIMETABLE.TASK_TIME IS 'Время задачи'; - - -COMMENT ON COLUMN TIMETABLE.TASK_STATUS IS 'Статус (linked to taskStatus)'; - --- tradingCalendar - Торговые и неторговые дни -CREATE TABLE IF NOT EXISTS TRADING_CALENDAR(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, COMPANY_ID bigint, TRADING_STATUS char(4)); -COMMENT ON TABLE TRADING_CALENDAR IS 'Торговые и неторговые дни'; - - -COMMENT ON COLUMN TRADING_CALENDAR.ID IS 'Идентификатор'; - - -COMMENT ON COLUMN TRADING_CALENDAR.CREATED_AT IS 'Создано'; - - -COMMENT ON COLUMN TRADING_CALENDAR.UPDATED_AT IS 'Изменено'; - - -COMMENT ON COLUMN TRADING_CALENDAR.CLEARING_DATE IS 'Дата'; - - -COMMENT ON COLUMN TRADING_CALENDAR.COMPANY_ID IS 'Компания (linked to company)'; - - -COMMENT ON COLUMN TRADING_CALENDAR.TRADING_STATUS IS 'Статус (linked to tradingStatus)'; - --- scheduler - Расписание планировщика -CREATE TABLE IF NOT EXISTS SCHEDULER(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, TASK char(4), TASK_TIME time, CLEARING_DATE date, MARKET char(4), TASK_STATUS char(4), SECURITY_ID bigint); -COMMENT ON TABLE SCHEDULER IS 'Расписание планировщика'; - - -COMMENT ON COLUMN SCHEDULER.ID IS 'Идентификатор'; - - -COMMENT ON COLUMN SCHEDULER.CREATED_AT IS 'Создано'; - - -COMMENT ON COLUMN SCHEDULER.UPDATED_AT IS 'Изменено'; - - -COMMENT ON COLUMN SCHEDULER.TASK IS 'Идентификатор задачи (linked to task)'; - - -COMMENT ON COLUMN SCHEDULER.TASK_TIME IS 'Время'; - - -COMMENT ON COLUMN SCHEDULER.CLEARING_DATE IS 'Дата'; - - -COMMENT ON COLUMN SCHEDULER.MARKET IS 'Секция (linked to market)'; - - -COMMENT ON COLUMN SCHEDULER.TASK_STATUS IS 'Статус (linked to taskStatus)'; - - -COMMENT ON COLUMN SCHEDULER.SECURITY_ID IS 'Инструмент (linked to security)'; - --- schedulerAllToday - Расписание на текущий день -CREATE TABLE IF NOT EXISTS SCHEDULER_ALL_TODAY(ID bigint PRIMARY KEY, TASK char(4), TASK_TIME time, CLEARING_DATE date, MARKET char(4), TASK_STATUS char(4), SECURITY_ID bigint, SOURCE char(4), ORIG_ID bigint); -COMMENT ON TABLE SCHEDULER_ALL_TODAY IS 'Расписание на текущий день'; - - -COMMENT ON COLUMN SCHEDULER_ALL_TODAY.ID IS 'Идентификатор'; - - -COMMENT ON COLUMN SCHEDULER_ALL_TODAY.TASK IS 'Идентификатор задачи (linked to task)'; - - -COMMENT ON COLUMN SCHEDULER_ALL_TODAY.TASK_TIME IS 'Время'; - - -COMMENT ON COLUMN SCHEDULER_ALL_TODAY.CLEARING_DATE IS 'Дата'; - - -COMMENT ON COLUMN SCHEDULER_ALL_TODAY.MARKET IS 'Секция (linked to market)'; - - -COMMENT ON COLUMN SCHEDULER_ALL_TODAY.TASK_STATUS IS 'Статус (linked to taskStatus)'; - - -COMMENT ON COLUMN SCHEDULER_ALL_TODAY.SECURITY_ID IS 'Инструмент (linked to security)'; - - -COMMENT ON COLUMN SCHEDULER_ALL_TODAY.SOURCE IS 'Источник записи расписания (linked to source)'; - - -COMMENT ON COLUMN SCHEDULER_ALL_TODAY.ORIG_ID IS 'Идентификатор источника'; - --- taskRunner - Запуск задачи -CREATE TABLE IF NOT EXISTS TASK_RUNNER(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, SENDER_ID bigint, TASK char(4)); -COMMENT ON TABLE TASK_RUNNER IS 'Запуск задачи'; - - -COMMENT ON COLUMN TASK_RUNNER.ID IS 'Идентификатор'; - - -COMMENT ON COLUMN TASK_RUNNER.CREATED_AT IS 'Создано'; - - -COMMENT ON COLUMN TASK_RUNNER.UPDATED_AT IS 'Изменено'; - - -COMMENT ON COLUMN TASK_RUNNER.SENDER_ID IS 'Отправитель (linked to userCls)'; - - -COMMENT ON COLUMN TASK_RUNNER.TASK IS 'Задача (linked to task)'; - --- company - Участник -CREATE TABLE IF NOT EXISTS COMPANY(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, TRADING_CODE varchar(255), CLEARING_CODE varchar(255), REGISTRATION_CODE varchar(255), WORKFLOW_STATUS char(4), SHORT_NAME varchar(255), FULL_NAME varchar(255)); -COMMENT ON TABLE COMPANY IS 'Участник'; - - -COMMENT ON COLUMN COMPANY.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN COMPANY.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN COMPANY.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN COMPANY.TRADING_CODE IS 'Код участника торгов'; - - -COMMENT ON COLUMN COMPANY.CLEARING_CODE IS 'Код участника клиринга'; - - -COMMENT ON COLUMN COMPANY.REGISTRATION_CODE IS 'Регистрационный код участника'; - - -COMMENT ON COLUMN COMPANY.WORKFLOW_STATUS IS 'Статус (linked to workflowStatus)'; - - -COMMENT ON COLUMN COMPANY.SHORT_NAME IS 'Краткое наименование Компании'; - - -COMMENT ON COLUMN COMPANY.FULL_NAME IS 'Полное наименование Компании'; - - --- History log of company - Участник -CREATE TABLE IF NOT EXISTS COMPANY_HISTORY(COMPANY_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, TRADING_CODE varchar(255), CLEARING_CODE varchar(255), REGISTRATION_CODE varchar(255), WORKFLOW_STATUS char(4), SHORT_NAME varchar(255), FULL_NAME varchar(255)); -COMMENT ON TABLE COMPANY_HISTORY IS 'История изменений таблицы company'; -COMMENT ON COLUMN COMPANY_HISTORY.COMPANY_ID IS 'Идентификатор записи в таблице COMPANY'; -COMMENT ON COLUMN COMPANY_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN COMPANY_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN COMPANY_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN COMPANY_HISTORY.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN COMPANY_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN COMPANY_HISTORY.TRADING_CODE IS 'Код участника торгов'; - -COMMENT ON COLUMN COMPANY_HISTORY.CLEARING_CODE IS 'Код участника клиринга'; - -COMMENT ON COLUMN COMPANY_HISTORY.REGISTRATION_CODE IS 'Регистрационный код участника'; - -COMMENT ON COLUMN COMPANY_HISTORY.WORKFLOW_STATUS IS 'Статус (linked to workflowStatus)'; - -COMMENT ON COLUMN COMPANY_HISTORY.SHORT_NAME IS 'Краткое наименование Компании'; - -COMMENT ON COLUMN COMPANY_HISTORY.FULL_NAME IS 'Полное наименование Компании'; - --- companyInfo - Профиль Компании -CREATE TABLE IF NOT EXISTS COMPANY_INFO(ID bigint PRIMARY KEY, COMPANY_ID bigint, CORPORATION_SOLE_TYPE char(4), COUNTRY_CODE char(4), DESCRIPTION varchar(255), PROFESSIONAL_SIGN char(4), LEGAL_KIND char(4), ORGANIZATION_TYPE char(4), RESIDENCE char(4), SHORT_NAME_ENG varchar(255), FULL_NAME_ENG varchar(255)); -COMMENT ON TABLE COMPANY_INFO IS 'Профиль Компании'; - - -COMMENT ON COLUMN COMPANY_INFO.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN COMPANY_INFO.COMPANY_ID IS 'Идентификатор Компании (linked to company)'; - - -COMMENT ON COLUMN COMPANY_INFO.CORPORATION_SOLE_TYPE IS 'Идентификатор единоличного исполнительного органа (linked to corporationSoleType)'; - - -COMMENT ON COLUMN COMPANY_INFO.COUNTRY_CODE IS 'Идентификатор кода страны (linked to countryCode)'; - - -COMMENT ON COLUMN COMPANY_INFO.DESCRIPTION IS 'Описание'; - - -COMMENT ON COLUMN COMPANY_INFO.PROFESSIONAL_SIGN IS 'Признак проф. Участника (linked to allowed)'; - - -COMMENT ON COLUMN COMPANY_INFO.LEGAL_KIND IS 'Идентификатор вида субъекта (linked to legalKind)'; - - -COMMENT ON COLUMN COMPANY_INFO.ORGANIZATION_TYPE IS 'Идентификатор типа организации (linked to organizationType)'; - - -COMMENT ON COLUMN COMPANY_INFO.RESIDENCE IS 'Идентификатор кода страны (linked to countryCode)'; - - -COMMENT ON COLUMN COMPANY_INFO.SHORT_NAME_ENG IS 'Краткое наименование Компании на английском'; - - -COMMENT ON COLUMN COMPANY_INFO.FULL_NAME_ENG IS 'Полное наименование Компании на английском'; - - --- History log of companyInfo - Профиль Компании -CREATE TABLE IF NOT EXISTS COMPANY_INFO_HISTORY(COMPANY_INFO_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, COMPANY_ID bigint, CORPORATION_SOLE_TYPE char(4), COUNTRY_CODE char(4), DESCRIPTION varchar(255), PROFESSIONAL_SIGN char(4), LEGAL_KIND char(4), ORGANIZATION_TYPE char(4), RESIDENCE char(4), SHORT_NAME_ENG varchar(255), FULL_NAME_ENG varchar(255)); -COMMENT ON TABLE COMPANY_INFO_HISTORY IS 'История изменений таблицы companyInfo'; -COMMENT ON COLUMN COMPANY_INFO_HISTORY.COMPANY_INFO_ID IS 'Идентификатор записи в таблице COMPANY_INFO'; -COMMENT ON COLUMN COMPANY_INFO_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN COMPANY_INFO_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN COMPANY_INFO_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN COMPANY_INFO_HISTORY.COMPANY_ID IS 'Идентификатор Компании (linked to company)'; - -COMMENT ON COLUMN COMPANY_INFO_HISTORY.CORPORATION_SOLE_TYPE IS 'Идентификатор единоличного исполнительного органа (linked to corporationSoleType)'; - -COMMENT ON COLUMN COMPANY_INFO_HISTORY.COUNTRY_CODE IS 'Идентификатор кода страны (linked to countryCode)'; - -COMMENT ON COLUMN COMPANY_INFO_HISTORY.DESCRIPTION IS 'Описание'; - -COMMENT ON COLUMN COMPANY_INFO_HISTORY.PROFESSIONAL_SIGN IS 'Признак проф. Участника (linked to allowed)'; - -COMMENT ON COLUMN COMPANY_INFO_HISTORY.LEGAL_KIND IS 'Идентификатор вида субъекта (linked to legalKind)'; - -COMMENT ON COLUMN COMPANY_INFO_HISTORY.ORGANIZATION_TYPE IS 'Идентификатор типа организации (linked to organizationType)'; - -COMMENT ON COLUMN COMPANY_INFO_HISTORY.RESIDENCE IS 'Идентификатор кода страны (linked to countryCode)'; - -COMMENT ON COLUMN COMPANY_INFO_HISTORY.SHORT_NAME_ENG IS 'Краткое наименование Компании на английском'; - -COMMENT ON COLUMN COMPANY_INFO_HISTORY.FULL_NAME_ENG IS 'Полное наименование Компании на английском'; - --- clearingMemberCategory - Категории Участника клиринга -CREATE TABLE IF NOT EXISTS CLEARING_MEMBER_CATEGORY(ID bigint PRIMARY KEY, COMPANY_ID bigint, CLEARING_MEMBER_CATEGORY char(4)); -COMMENT ON TABLE CLEARING_MEMBER_CATEGORY IS 'Категории Участника клиринга'; - - -COMMENT ON COLUMN CLEARING_MEMBER_CATEGORY.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN CLEARING_MEMBER_CATEGORY.COMPANY_ID IS 'Идентификатор Компании (linked to company)'; - - -COMMENT ON COLUMN CLEARING_MEMBER_CATEGORY.CLEARING_MEMBER_CATEGORY IS 'Идентификатор категории участника клиринга (linked to clearingCategory)'; - --- contact - Контакты Компании -CREATE TABLE IF NOT EXISTS CONTACT(ID bigint PRIMARY KEY, COMPANY_ID bigint, CONTACT_TYPE char(4), CONTACT_VALUE varchar(255)); -COMMENT ON TABLE CONTACT IS 'Контакты Компании'; - - -COMMENT ON COLUMN CONTACT.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN CONTACT.COMPANY_ID IS 'Идентификатор Компании (linked to company)'; - - -COMMENT ON COLUMN CONTACT.CONTACT_TYPE IS 'Идентификатор справочника (linked to contactType)'; - - -COMMENT ON COLUMN CONTACT.CONTACT_VALUE IS 'Значение справочника'; - --- profileDocument - Досье Компании -CREATE TABLE IF NOT EXISTS PROFILE_DOCUMENT(ID bigint PRIMARY KEY, COMPANY_ID bigint, DOCUMENT_TYPE char(4), ISSUE_DATE date, ISSUE_PLACE varchar(255), ISSUER varchar(255), ISSUER_CODE varchar(255), NAME varchar(255), NUMBER varchar(255), PLACE varchar(255), VALID_FROM_DATE date, VALID_TO_DATE date, LINK varchar(255)); -COMMENT ON TABLE PROFILE_DOCUMENT IS 'Досье Компании'; - - -COMMENT ON COLUMN PROFILE_DOCUMENT.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN PROFILE_DOCUMENT.COMPANY_ID IS 'Идентификатор Компании (linked to company)'; - - -COMMENT ON COLUMN PROFILE_DOCUMENT.DOCUMENT_TYPE IS 'Идентификатор типа документа (linked to documentType)'; - - -COMMENT ON COLUMN PROFILE_DOCUMENT.ISSUE_DATE IS 'Дата выдачи'; - - -COMMENT ON COLUMN PROFILE_DOCUMENT.ISSUE_PLACE IS 'Место выдачи'; - - -COMMENT ON COLUMN PROFILE_DOCUMENT.ISSUER IS 'Кем выдан'; - - -COMMENT ON COLUMN PROFILE_DOCUMENT.ISSUER_CODE IS 'Код выдавшего органа'; - - -COMMENT ON COLUMN PROFILE_DOCUMENT.NAME IS 'Наименование'; - - -COMMENT ON COLUMN PROFILE_DOCUMENT.NUMBER IS 'Номер'; - - -COMMENT ON COLUMN PROFILE_DOCUMENT.PLACE IS 'Место'; - - -COMMENT ON COLUMN PROFILE_DOCUMENT.VALID_FROM_DATE IS 'Дата начала срока действия'; - - -COMMENT ON COLUMN PROFILE_DOCUMENT.VALID_TO_DATE IS 'Дата окончания срока действия'; - - -COMMENT ON COLUMN PROFILE_DOCUMENT.LINK IS 'Ссылка на документ'; - --- companySymbols - Реквизиты Компании -CREATE TABLE IF NOT EXISTS COMPANY_SYMBOLS(ID bigint PRIMARY KEY, COMPANY_ID bigint, COMPANY_SYMBOL char(4), COMPANY_SYMBOL_VALUE varchar(255)); -COMMENT ON TABLE COMPANY_SYMBOLS IS 'Реквизиты Компании'; - - -COMMENT ON COLUMN COMPANY_SYMBOLS.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN COMPANY_SYMBOLS.COMPANY_ID IS 'Идентификатор Компании (linked to company)'; - - -COMMENT ON COLUMN COMPANY_SYMBOLS.COMPANY_SYMBOL IS 'Идентификатор справочника (linked to companySymbol)'; - - -COMMENT ON COLUMN COMPANY_SYMBOLS.COMPANY_SYMBOL_VALUE IS 'Значение справочника'; - --- clearmemberRegistry - Реестр участников клиринга -CREATE TABLE IF NOT EXISTS CLEARMEMBER_REGISTRY(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, TRADING_CODE varchar(255), CLEARING_CODE varchar(255), FULL_NAME varchar(255), SHORT_NAME varchar(255), CATEGORY_LIST char(4), CORPORATION_SOLE char(4), ACCOUNT varchar(50), BANK bigint, BANK_NAME varchar(255), INN varchar(255), BIC varchar(255), OGRN varchar(255), CPP varchar(255), OCPO varchar(255), CONTRACT_NUMBER varchar(255), CONTRACT_DATE date, REGISTRATION_DATE date, SYSTEM_DATE date, ACCESS_DATE timestamp, SUSPENTION_DATE timestamp, REOPENING_DATE timestamp, CLOSE_DATE timestamp, EXCLUSION_DATE timestamp, ADDRESS varchar(255), EMAIL varchar(255)); -COMMENT ON TABLE CLEARMEMBER_REGISTRY IS 'Реестр участников клиринга'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.TRADING_CODE IS 'Код участника торгов'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.CLEARING_CODE IS 'Код участника клиринга'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.FULL_NAME IS 'Полное наименование участника клиринга'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.SHORT_NAME IS 'Краткое наименование участника клиринга'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.CATEGORY_LIST IS 'Идентификатор категории участника клиринга (linked to clearingCategory)'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.CORPORATION_SOLE IS 'Идентификатор единоличного исполнительного органа (linked to corporationSoleType)'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.ACCOUNT IS 'Cчета'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.BANK IS 'Банк (linked to bankAccount)'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.BANK_NAME IS 'Наименование банка'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.INN IS 'Идентификационный номер налогоплательщика (ИНН)'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.BIC IS 'Банковский идентификационный код (БИК)'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.OGRN IS 'Основной государственный регистрационный номер'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.CPP IS 'Код причины постановки (КПП)'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.OCPO IS 'Код в Общероссийском классификаторе предприятий'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.CONTRACT_NUMBER IS 'Номер договора'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.CONTRACT_DATE IS 'Дата выдачи'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.REGISTRATION_DATE IS 'Дата регистрации'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.SYSTEM_DATE IS 'Системная дата'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.ACCESS_DATE IS 'Дата допуска к КО'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.SUSPENTION_DATE IS 'Дата приостановления'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.REOPENING_DATE IS 'Дата возобновления'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.CLOSE_DATE IS 'Дата прекращения'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.EXCLUSION_DATE IS 'Дата исключения из реестра'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.ADDRESS IS 'Адрес местонахождения'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.EMAIL IS 'Электронная почта'; - --- clearmemberRegistryChange - Журнал изменений информации участников клиринга -CREATE TABLE IF NOT EXISTS CLEARMEMBER_REGISTRY_CHANGE(DATE timestamp, CLEARING_CODE varchar(255), COMMENT varchar(255)); -COMMENT ON TABLE CLEARMEMBER_REGISTRY_CHANGE IS 'Журнал изменений информации участников клиринга'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY_CHANGE.DATE IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY_CHANGE.CLEARING_CODE IS 'Код участника клиринга'; - - -COMMENT ON COLUMN CLEARMEMBER_REGISTRY_CHANGE.COMMENT IS 'Комментарий'; - --- keyRate - Ключевая ставка ЦБ -CREATE TABLE IF NOT EXISTS KEY_RATE(ID bigint PRIMARY KEY, RATE numeric(72,18), START_DATE date, END_DATE date, DOCUMENT varchar(255), WORKFLOW_STATUS char(4)); -COMMENT ON TABLE KEY_RATE IS 'Ключевая ставка ЦБ'; - - -COMMENT ON COLUMN KEY_RATE.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN KEY_RATE.RATE IS 'Ключевая ставка ЦБ РФ'; - - -COMMENT ON COLUMN KEY_RATE.START_DATE IS 'Дата начала действия ключевой ставки'; - - -COMMENT ON COLUMN KEY_RATE.END_DATE IS 'Дата окончания действия ключевой ставки'; - - -COMMENT ON COLUMN KEY_RATE.DOCUMENT IS 'Документ ЦБ РФ, регламентирующий установку величины ключевой ставки'; - - -COMMENT ON COLUMN KEY_RATE.WORKFLOW_STATUS IS 'Статус (linked to workflowStatus)'; - --- companyRoleSet - Таблица ролей Компании -CREATE TABLE IF NOT EXISTS COMPANY_ROLE_SET(ID bigint PRIMARY KEY, COMPANY_ID bigint, ROLE_ID bigint); -COMMENT ON TABLE COMPANY_ROLE_SET IS 'Таблица ролей Компании'; - - -COMMENT ON COLUMN COMPANY_ROLE_SET.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN COMPANY_ROLE_SET.COMPANY_ID IS 'Идентификатор списка ролей Компании (linked to company)'; - - -COMMENT ON COLUMN COMPANY_ROLE_SET.ROLE_ID IS 'Значение справочника (linked to companyRole)'; - --- account - Счета -CREATE TABLE IF NOT EXISTS ACCOUNT(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, ACCOUNT varchar(50), ACCOUNT_TYPE char(4), RELATION_ID bigint, ACCOUNT_STATUS char(4), PROCESSING_SIGN char(4)); -COMMENT ON TABLE ACCOUNT IS 'Счета'; - - -COMMENT ON COLUMN ACCOUNT.ID IS 'Идентификатор'; - - -COMMENT ON COLUMN ACCOUNT.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN ACCOUNT.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN ACCOUNT.ACCOUNT IS 'Номер счета'; - - -COMMENT ON COLUMN ACCOUNT.ACCOUNT_TYPE IS 'Идентификатор типа счета (linked to accountType)'; - - -COMMENT ON COLUMN ACCOUNT.RELATION_ID IS 'Идентификатор договорных отношений (linked to relation)'; - - -COMMENT ON COLUMN ACCOUNT.ACCOUNT_STATUS IS 'Идентификатор статуса (linked to accountStatus)'; - - -COMMENT ON COLUMN ACCOUNT.PROCESSING_SIGN IS 'Признак обработки счета (linked to allowed)'; - - --- History log of account - Счета -CREATE TABLE IF NOT EXISTS ACCOUNT_HISTORY(ACCOUNT_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, ACCOUNT varchar(50), ACCOUNT_TYPE char(4), RELATION_ID bigint, ACCOUNT_STATUS char(4), PROCESSING_SIGN char(4)); -COMMENT ON TABLE ACCOUNT_HISTORY IS 'История изменений таблицы account'; -COMMENT ON COLUMN ACCOUNT_HISTORY.ACCOUNT_ID IS 'Идентификатор записи в таблице ACCOUNT'; -COMMENT ON COLUMN ACCOUNT_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN ACCOUNT_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN ACCOUNT_HISTORY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN ACCOUNT_HISTORY.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN ACCOUNT_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN ACCOUNT_HISTORY.ACCOUNT IS 'Номер счета'; - -COMMENT ON COLUMN ACCOUNT_HISTORY.ACCOUNT_TYPE IS 'Идентификатор типа счета (linked to accountType)'; - -COMMENT ON COLUMN ACCOUNT_HISTORY.RELATION_ID IS 'Идентификатор договорных отношений (linked to relation)'; - -COMMENT ON COLUMN ACCOUNT_HISTORY.ACCOUNT_STATUS IS 'Идентификатор статуса (linked to accountStatus)'; - -COMMENT ON COLUMN ACCOUNT_HISTORY.PROCESSING_SIGN IS 'Признак обработки счета (linked to allowed)'; - --- relation - Договорные отношения -CREATE TABLE IF NOT EXISTS RELATION(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CONSUMER_ID bigint, SUPPLIER_ID bigint, SERVICE_STATUS char(4), SERVICE char(4), SERVICE_PRODUCT char(4), COMMENT varchar(255)); -COMMENT ON TABLE RELATION IS 'Договорные отношения'; - - -COMMENT ON COLUMN RELATION.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN RELATION.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN RELATION.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN RELATION.CONSUMER_ID IS 'Идентификатор Компании пользователя услуги (linked to company)'; - - -COMMENT ON COLUMN RELATION.SUPPLIER_ID IS 'Идентификатор Компании поставщика услуги (linked to company)'; - - -COMMENT ON COLUMN RELATION.SERVICE_STATUS IS 'Идентификатор статуса (linked to workflowStatus)'; - - -COMMENT ON COLUMN RELATION.SERVICE IS 'Идентификатор сервиса (linked to service)'; - - -COMMENT ON COLUMN RELATION.SERVICE_PRODUCT IS 'Идентификатор продукта (linked to serviceProduct)'; - - -COMMENT ON COLUMN RELATION.COMMENT IS 'Текст причины'; - - --- History log of relation - Договорные отношения -CREATE TABLE IF NOT EXISTS RELATION_HISTORY(RELATION_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CONSUMER_ID bigint, SUPPLIER_ID bigint, SERVICE_STATUS char(4), SERVICE char(4), SERVICE_PRODUCT char(4), COMMENT varchar(255)); -COMMENT ON TABLE RELATION_HISTORY IS 'История изменений таблицы relation'; -COMMENT ON COLUMN RELATION_HISTORY.RELATION_ID IS 'Идентификатор записи в таблице RELATION'; -COMMENT ON COLUMN RELATION_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN RELATION_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN RELATION_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN RELATION_HISTORY.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN RELATION_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN RELATION_HISTORY.CONSUMER_ID IS 'Идентификатор Компании пользователя услуги (linked to company)'; - -COMMENT ON COLUMN RELATION_HISTORY.SUPPLIER_ID IS 'Идентификатор Компании поставщика услуги (linked to company)'; - -COMMENT ON COLUMN RELATION_HISTORY.SERVICE_STATUS IS 'Идентификатор статуса (linked to workflowStatus)'; - -COMMENT ON COLUMN RELATION_HISTORY.SERVICE IS 'Идентификатор сервиса (linked to service)'; - -COMMENT ON COLUMN RELATION_HISTORY.SERVICE_PRODUCT IS 'Идентификатор продукта (linked to serviceProduct)'; - -COMMENT ON COLUMN RELATION_HISTORY.COMMENT IS 'Текст причины'; - --- bankAccount - Банковские реквизиты для перечисления денежных средств -CREATE TABLE IF NOT EXISTS BANK_ACCOUNT(ID bigint PRIMARY KEY, ACCOUNT_ID bigint, BANK_IDENTIFICATION_CODE varchar(255), BANK_NAME varchar(255), CORRESPONDENT_ACCOUNT varchar(255), CORRESPONDENT_ACCOUNT_NAME varchar(255), CURRENCY char(4), DESTINATION varchar(255), IBAN varchar(255), INTERNATIONAL_TRANSFER_SIGN char(4), SWIFT_CODE varchar(255), TAXPAYER_IDENTIFICATION_NUMBER varchar(255), TAX_REGISTRATION_REASON_CODE varchar(255)); -COMMENT ON TABLE BANK_ACCOUNT IS 'Банковские реквизиты для перечисления денежных средств'; - - -COMMENT ON COLUMN BANK_ACCOUNT.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN BANK_ACCOUNT.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; - - -COMMENT ON COLUMN BANK_ACCOUNT.BANK_IDENTIFICATION_CODE IS 'Банковский идентификационный код (БИК)'; - - -COMMENT ON COLUMN BANK_ACCOUNT.BANK_NAME IS 'Наименование банка'; - - -COMMENT ON COLUMN BANK_ACCOUNT.CORRESPONDENT_ACCOUNT IS 'Корреспондентский счет'; - - -COMMENT ON COLUMN BANK_ACCOUNT.CORRESPONDENT_ACCOUNT_NAME IS 'Наименование корреспондентского счета'; - - -COMMENT ON COLUMN BANK_ACCOUNT.CURRENCY IS 'Идентификатор валюты (linked to currencyCode)'; - - -COMMENT ON COLUMN BANK_ACCOUNT.DESTINATION IS 'Назначение'; - - -COMMENT ON COLUMN BANK_ACCOUNT.IBAN IS 'Международный номер банковского счета'; - - -COMMENT ON COLUMN BANK_ACCOUNT.INTERNATIONAL_TRANSFER_SIGN IS 'Доступность международных переводов (linked to allowed)'; - - -COMMENT ON COLUMN BANK_ACCOUNT.SWIFT_CODE IS 'Код SWIFT'; - - -COMMENT ON COLUMN BANK_ACCOUNT.TAXPAYER_IDENTIFICATION_NUMBER IS 'Идентификационный номер налогоплательщика (ИНН)'; - - -COMMENT ON COLUMN BANK_ACCOUNT.TAX_REGISTRATION_REASON_CODE IS 'Код причины постановки (КПП)'; - - --- History log of bankAccount - Банковские реквизиты для перечисления денежных средств -CREATE TABLE IF NOT EXISTS BANK_ACCOUNT_HISTORY(BANK_ACCOUNT_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, ACCOUNT_ID bigint, BANK_IDENTIFICATION_CODE varchar(255), BANK_NAME varchar(255), CORRESPONDENT_ACCOUNT varchar(255), CORRESPONDENT_ACCOUNT_NAME varchar(255), CURRENCY char(4), DESTINATION varchar(255), IBAN varchar(255), INTERNATIONAL_TRANSFER_SIGN char(4), SWIFT_CODE varchar(255), TAXPAYER_IDENTIFICATION_NUMBER varchar(255), TAX_REGISTRATION_REASON_CODE varchar(255)); -COMMENT ON TABLE BANK_ACCOUNT_HISTORY IS 'История изменений таблицы bankAccount'; -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.BANK_ACCOUNT_ID IS 'Идентификатор записи в таблице BANK_ACCOUNT'; -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; - -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.BANK_IDENTIFICATION_CODE IS 'Банковский идентификационный код (БИК)'; - -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.BANK_NAME IS 'Наименование банка'; - -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.CORRESPONDENT_ACCOUNT IS 'Корреспондентский счет'; - -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.CORRESPONDENT_ACCOUNT_NAME IS 'Наименование корреспондентского счета'; - -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.CURRENCY IS 'Идентификатор валюты (linked to currencyCode)'; - -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.DESTINATION IS 'Назначение'; - -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.IBAN IS 'Международный номер банковского счета'; - -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.INTERNATIONAL_TRANSFER_SIGN IS 'Доступность международных переводов (linked to allowed)'; - -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.SWIFT_CODE IS 'Код SWIFT'; - -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.TAXPAYER_IDENTIFICATION_NUMBER IS 'Идентификационный номер налогоплательщика (ИНН)'; - -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.TAX_REGISTRATION_REASON_CODE IS 'Код причины постановки (КПП)'; - --- informationAccount - Информационные счета -CREATE TABLE IF NOT EXISTS INFORMATION_ACCOUNT(ID bigint PRIMARY KEY, ACCOUNT_ID bigint, CLEARING_ACCOUNT_ID bigint); -COMMENT ON TABLE INFORMATION_ACCOUNT IS 'Информационные счета'; - - -COMMENT ON COLUMN INFORMATION_ACCOUNT.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN INFORMATION_ACCOUNT.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; - - -COMMENT ON COLUMN INFORMATION_ACCOUNT.CLEARING_ACCOUNT_ID IS 'Идентификатор клирингового счета (linked to account)'; - - --- History log of informationAccount - Информационные счета -CREATE TABLE IF NOT EXISTS INFORMATION_ACCOUNT_HISTORY(INFORMATION_ACCOUNT_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, ACCOUNT_ID bigint, CLEARING_ACCOUNT_ID bigint); -COMMENT ON TABLE INFORMATION_ACCOUNT_HISTORY IS 'История изменений таблицы informationAccount'; -COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.INFORMATION_ACCOUNT_ID IS 'Идентификатор записи в таблице INFORMATION_ACCOUNT'; -COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; - -COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.CLEARING_ACCOUNT_ID IS 'Идентификатор клирингового счета (linked to account)'; - --- accountRouting - Маршрутизация счета -CREATE TABLE IF NOT EXISTS ACCOUNT_ROUTING(ID bigint PRIMARY KEY, DESTINATION_ID bigint, RELATION_ID bigint, SOURCE_ID bigint); -COMMENT ON TABLE ACCOUNT_ROUTING IS 'Маршрутизация счета'; - - -COMMENT ON COLUMN ACCOUNT_ROUTING.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN ACCOUNT_ROUTING.DESTINATION_ID IS 'Счет-назначение (зачисления) (linked to account)'; - - -COMMENT ON COLUMN ACCOUNT_ROUTING.RELATION_ID IS 'Идентификатор договорных отношений (linked to relation)'; - - -COMMENT ON COLUMN ACCOUNT_ROUTING.SOURCE_ID IS 'Счет-источник (списания) (linked to account)'; - - --- History log of accountRouting - Маршрутизация счета -CREATE TABLE IF NOT EXISTS ACCOUNT_ROUTING_HISTORY(ACCOUNT_ROUTING_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, DESTINATION_ID bigint, RELATION_ID bigint, SOURCE_ID bigint); -COMMENT ON TABLE ACCOUNT_ROUTING_HISTORY IS 'История изменений таблицы accountRouting'; -COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.ACCOUNT_ROUTING_ID IS 'Идентификатор записи в таблице ACCOUNT_ROUTING'; -COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.DESTINATION_ID IS 'Счет-назначение (зачисления) (linked to account)'; - -COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.RELATION_ID IS 'Идентификатор договорных отношений (linked to relation)'; - -COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.SOURCE_ID IS 'Счет-источник (списания) (linked to account)'; - --- security - Инструменты -CREATE TABLE IF NOT EXISTS SECURITY(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, INSTRUMENT_TYPE char(4), ISSUER_ID bigint, SHORT_NAME varchar(255), FULL_NAME varchar(255), SHORT_NAME_ENG varchar(255), FULL_NAME_ENG varchar(255), SECURITY_SYMBOL varchar(255), WORKFLOW_STATUS char(4)); -COMMENT ON TABLE SECURITY IS 'Инструменты'; - - -COMMENT ON COLUMN SECURITY.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN SECURITY.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN SECURITY.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN SECURITY.INSTRUMENT_TYPE IS 'Идентификатор типа инструмента (linked to instrumentType)'; - - -COMMENT ON COLUMN SECURITY.ISSUER_ID IS 'Идентификатор эмитента (linked to company)'; - - -COMMENT ON COLUMN SECURITY.SHORT_NAME IS 'Краткое наименование инструмента'; - - -COMMENT ON COLUMN SECURITY.FULL_NAME IS 'Полное наименование инструмента'; - - -COMMENT ON COLUMN SECURITY.SHORT_NAME_ENG IS 'Краткое наименование инструмента на английском'; - - -COMMENT ON COLUMN SECURITY.FULL_NAME_ENG IS 'Полное наименование инструмента на английском'; - - -COMMENT ON COLUMN SECURITY.SECURITY_SYMBOL IS 'Код инструмента'; - - -COMMENT ON COLUMN SECURITY.WORKFLOW_STATUS IS 'Идентификатор статуса (linked to workflowStatus)'; - - --- History log of security - Инструменты -CREATE TABLE IF NOT EXISTS SECURITY_HISTORY(SECURITY_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, INSTRUMENT_TYPE char(4), ISSUER_ID bigint, SHORT_NAME varchar(255), FULL_NAME varchar(255), SHORT_NAME_ENG varchar(255), FULL_NAME_ENG varchar(255), SECURITY_SYMBOL varchar(255), WORKFLOW_STATUS char(4)); -COMMENT ON TABLE SECURITY_HISTORY IS 'История изменений таблицы security'; -COMMENT ON COLUMN SECURITY_HISTORY.SECURITY_ID IS 'Идентификатор записи в таблице SECURITY'; -COMMENT ON COLUMN SECURITY_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN SECURITY_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN SECURITY_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN SECURITY_HISTORY.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN SECURITY_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN SECURITY_HISTORY.INSTRUMENT_TYPE IS 'Идентификатор типа инструмента (linked to instrumentType)'; - -COMMENT ON COLUMN SECURITY_HISTORY.ISSUER_ID IS 'Идентификатор эмитента (linked to company)'; - -COMMENT ON COLUMN SECURITY_HISTORY.SHORT_NAME IS 'Краткое наименование инструмента'; - -COMMENT ON COLUMN SECURITY_HISTORY.FULL_NAME IS 'Полное наименование инструмента'; - -COMMENT ON COLUMN SECURITY_HISTORY.SHORT_NAME_ENG IS 'Краткое наименование инструмента на английском'; - -COMMENT ON COLUMN SECURITY_HISTORY.FULL_NAME_ENG IS 'Полное наименование инструмента на английском'; - -COMMENT ON COLUMN SECURITY_HISTORY.SECURITY_SYMBOL IS 'Код инструмента'; - -COMMENT ON COLUMN SECURITY_HISTORY.WORKFLOW_STATUS IS 'Идентификатор статуса (linked to workflowStatus)'; - --- currency - Инструменты Валюты -CREATE TABLE IF NOT EXISTS CURRENCY(ID bigint PRIMARY KEY, COUNTRY_CODE char(4), CURRENCY_CODE char(4)); -COMMENT ON TABLE CURRENCY IS 'Инструменты Валюты'; - - -COMMENT ON COLUMN CURRENCY.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN CURRENCY.COUNTRY_CODE IS 'Идентификатор кода страны (linked to countryCode)'; - - -COMMENT ON COLUMN CURRENCY.CURRENCY_CODE IS 'Идентификатор кода валюты (linked to currencyCode)'; - - --- History log of currency - Инструменты Валюты -CREATE TABLE IF NOT EXISTS CURRENCY_HISTORY(CURRENCY_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, COUNTRY_CODE char(4), CURRENCY_CODE char(4)); -COMMENT ON TABLE CURRENCY_HISTORY IS 'История изменений таблицы currency'; -COMMENT ON COLUMN CURRENCY_HISTORY.CURRENCY_ID IS 'Идентификатор записи в таблице CURRENCY'; -COMMENT ON COLUMN CURRENCY_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN CURRENCY_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN CURRENCY_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN CURRENCY_HISTORY.COUNTRY_CODE IS 'Идентификатор кода страны (linked to countryCode)'; - -COMMENT ON COLUMN CURRENCY_HISTORY.CURRENCY_CODE IS 'Идентификатор кода валюты (linked to currencyCode)'; - --- moneyMarketSecurity - Инструменты Денежного рынка -CREATE TABLE IF NOT EXISTS MONEY_MARKET_SECURITY(ID bigint PRIMARY KEY, SECURITY_ID bigint, DESCRIPTION varchar(255), START_DATE date, END_DATE date, NOMINAL_VALUE numeric(72,2), NOMINAL_CURRENCY bigint, TERM_TYPE char(4)); -COMMENT ON TABLE MONEY_MARKET_SECURITY IS 'Инструменты Денежного рынка'; - - -COMMENT ON COLUMN MONEY_MARKET_SECURITY.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN MONEY_MARKET_SECURITY.SECURITY_ID IS 'Идентификатор инструмента (linked to security)'; - - -COMMENT ON COLUMN MONEY_MARKET_SECURITY.DESCRIPTION IS 'Описание'; - - -COMMENT ON COLUMN MONEY_MARKET_SECURITY.START_DATE IS 'Дата начала действия'; - - -COMMENT ON COLUMN MONEY_MARKET_SECURITY.END_DATE IS 'Дата окончания действия'; - - -COMMENT ON COLUMN MONEY_MARKET_SECURITY.NOMINAL_VALUE IS 'Номинал'; - - -COMMENT ON COLUMN MONEY_MARKET_SECURITY.NOMINAL_CURRENCY IS 'Валюта номинала (linked to currencyCode)'; - - -COMMENT ON COLUMN MONEY_MARKET_SECURITY.TERM_TYPE IS 'Идентификатор вида инструмента (linked to termType)'; - - --- History log of moneyMarketSecurity - Инструменты Денежного рынка -CREATE TABLE IF NOT EXISTS MONEY_MARKET_SECURITY_HISTORY(MONEY_MARKET_SECURITY_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, SECURITY_ID bigint, DESCRIPTION varchar(255), START_DATE date, END_DATE date, NOMINAL_VALUE numeric(72,2), NOMINAL_CURRENCY bigint, TERM_TYPE char(4)); -COMMENT ON TABLE MONEY_MARKET_SECURITY_HISTORY IS 'История изменений таблицы moneyMarketSecurity'; -COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.MONEY_MARKET_SECURITY_ID IS 'Идентификатор записи в таблице MONEY_MARKET_SECURITY'; -COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.SECURITY_ID IS 'Идентификатор инструмента (linked to security)'; - -COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.DESCRIPTION IS 'Описание'; - -COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.START_DATE IS 'Дата начала действия'; - -COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.END_DATE IS 'Дата окончания действия'; - -COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.NOMINAL_VALUE IS 'Номинал'; - -COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.NOMINAL_CURRENCY IS 'Валюта номинала (linked to currencyCode)'; - -COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.TERM_TYPE IS 'Идентификатор вида инструмента (linked to termType)'; - --- listing - Листинг инструментов -CREATE TABLE IF NOT EXISTS LISTING(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, SECURITY_ID bigint, LOT_SIZE numeric(72,2), MARKET char(4), SYMBOL_CODE varchar(255), SYMBOL_NAME varchar(255), TRADING_CURRENCY char(4), WORKFLOW_STATUS char(4)); -COMMENT ON TABLE LISTING IS 'Листинг инструментов'; - - -COMMENT ON COLUMN LISTING.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN LISTING.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN LISTING.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN LISTING.SECURITY_ID IS 'Идентификатор инструмента (linked to security)'; - - -COMMENT ON COLUMN LISTING.LOT_SIZE IS 'Размер лота'; - - -COMMENT ON COLUMN LISTING.MARKET IS 'Секция (linked to market)'; - - -COMMENT ON COLUMN LISTING.SYMBOL_CODE IS 'Код инструмента на торговой площадке'; - - -COMMENT ON COLUMN LISTING.SYMBOL_NAME IS 'Название инструмента на торговой площадке'; - - -COMMENT ON COLUMN LISTING.TRADING_CURRENCY IS 'Идентификатор кода валюты расчета (linked to currency)'; - - -COMMENT ON COLUMN LISTING.WORKFLOW_STATUS IS 'Идентификатор статуса листинга в системе (linked to workflowStatus)'; - - --- History log of listing - Листинг инструментов -CREATE TABLE IF NOT EXISTS LISTING_HISTORY(LISTING_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, SECURITY_ID bigint, LOT_SIZE numeric(72,2), MARKET char(4), SYMBOL_CODE varchar(255), SYMBOL_NAME varchar(255), TRADING_CURRENCY char(4), WORKFLOW_STATUS char(4)); -COMMENT ON TABLE LISTING_HISTORY IS 'История изменений таблицы listing'; -COMMENT ON COLUMN LISTING_HISTORY.LISTING_ID IS 'Идентификатор записи в таблице LISTING'; -COMMENT ON COLUMN LISTING_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN LISTING_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN LISTING_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN LISTING_HISTORY.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN LISTING_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN LISTING_HISTORY.SECURITY_ID IS 'Идентификатор инструмента (linked to security)'; - -COMMENT ON COLUMN LISTING_HISTORY.LOT_SIZE IS 'Размер лота'; - -COMMENT ON COLUMN LISTING_HISTORY.MARKET IS 'Секция (linked to market)'; - -COMMENT ON COLUMN LISTING_HISTORY.SYMBOL_CODE IS 'Код инструмента на торговой площадке'; - -COMMENT ON COLUMN LISTING_HISTORY.SYMBOL_NAME IS 'Название инструмента на торговой площадке'; - -COMMENT ON COLUMN LISTING_HISTORY.TRADING_CURRENCY IS 'Идентификатор кода валюты расчета (linked to currency)'; - -COMMENT ON COLUMN LISTING_HISTORY.WORKFLOW_STATUS IS 'Идентификатор статуса листинга в системе (linked to workflowStatus)'; - --- market - Торговые секции -CREATE TABLE IF NOT EXISTS MARKET(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, DESCRIPTION varchar(255), EXCHANGE_ID bigint, NAME varchar(255), CODE char(4), SETTLEMENT_CURRENCY char(4), SECTOR char(4)); -COMMENT ON TABLE MARKET IS 'Торговые секции'; - - -COMMENT ON COLUMN MARKET.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN MARKET.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN MARKET.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN MARKET.DESCRIPTION IS 'Описание'; - - -COMMENT ON COLUMN MARKET.EXCHANGE_ID IS 'Идентификатор площадки (linked to company)'; - - -COMMENT ON COLUMN MARKET.NAME IS 'Наименование'; - - -COMMENT ON COLUMN MARKET.CODE IS 'Секция'; - - -COMMENT ON COLUMN MARKET.SETTLEMENT_CURRENCY IS 'Валютный код расчетов (linked to currency)'; - - -COMMENT ON COLUMN MARKET.SECTOR IS 'Идентификатор секции (linked to sector)'; - - --- History log of market - Торговые секции -CREATE TABLE IF NOT EXISTS MARKET_HISTORY(MARKET_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, DESCRIPTION varchar(255), EXCHANGE_ID bigint, NAME varchar(255), CODE char(4), SETTLEMENT_CURRENCY char(4), SECTOR char(4)); -COMMENT ON TABLE MARKET_HISTORY IS 'История изменений таблицы market'; -COMMENT ON COLUMN MARKET_HISTORY.MARKET_ID IS 'Идентификатор записи в таблице MARKET'; -COMMENT ON COLUMN MARKET_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN MARKET_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN MARKET_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN MARKET_HISTORY.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN MARKET_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN MARKET_HISTORY.DESCRIPTION IS 'Описание'; - -COMMENT ON COLUMN MARKET_HISTORY.EXCHANGE_ID IS 'Идентификатор площадки (linked to company)'; - -COMMENT ON COLUMN MARKET_HISTORY.NAME IS 'Наименование'; - -COMMENT ON COLUMN MARKET_HISTORY.CODE IS 'Секция'; - -COMMENT ON COLUMN MARKET_HISTORY.SETTLEMENT_CURRENCY IS 'Валютный код расчетов (linked to currency)'; - -COMMENT ON COLUMN MARKET_HISTORY.SECTOR IS 'Идентификатор секции (linked to sector)'; - --- accountBalance - Информация об остатках ден. средств -CREATE TABLE IF NOT EXISTS ACCOUNT_BALANCE(ID bigint PRIMARY KEY, COMPANY_ID bigint, CREATED_AT timestamp, UPDATED_AT timestamp, ACCOUNT_ID bigint, ACCOUNT_TYPE char(4), ACCOUNT varchar(50), OPEN_BALANCE_AMOUNT numeric(72,18), START_BALANCE_AMOUNT numeric(72,18), CLOSE_BALANCE_AMOUNT numeric(72,18), TRADE_BALANCE_AMOUNT numeric(72,18), FREE_BALANCE_AMOUNT numeric(72,18), CHANGE_BALANCE_AMOUNT numeric(72,18), CREDIT_AMOUNT numeric(72,18), DEBIT_AMOUNT numeric(72,18), BALANCE_AMOUNT numeric(72,18), BALANCE_ACCOUNT_TYPE char(4), CLEARING_DATE date, CURRENCY_CODE char(4), TRADING_CODE varchar(255), SHORT_NAME varchar(255), FULL_NAME varchar(255)); -COMMENT ON TABLE ACCOUNT_BALANCE IS 'Информация об остатках ден. средств'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.COMPANY_ID IS 'Идентификатор участника (linked to company)'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.ACCOUNT_TYPE IS 'Тип счета (linked to account)'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.ACCOUNT IS 'Счет'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.OPEN_BALANCE_AMOUNT IS 'Начальная сумма после расчетной организации'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.START_BALANCE_AMOUNT IS 'Начальная сумма остатков ден. средств на начало работы'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.CLOSE_BALANCE_AMOUNT IS 'Конечная сумма остатков ден. средств на счете'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.TRADE_BALANCE_AMOUNT IS 'Регистр «Денежные средства Участника клиринга – блокированные»'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.FREE_BALANCE_AMOUNT IS 'Регистр «Денежные средства Участника клиринга – свободные»'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.CHANGE_BALANCE_AMOUNT IS 'Сумма изменения остатков ден. средств на счете'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.CREDIT_AMOUNT IS 'Зачисления'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.DEBIT_AMOUNT IS 'Списания'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.BALANCE_AMOUNT IS 'Денежные средства Участника клиринга, зарезервированные на торги'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.BALANCE_ACCOUNT_TYPE IS 'Тип баланса (linked to balanceAccountType)'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.CLEARING_DATE IS 'Дата расчета'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.CURRENCY_CODE IS 'Код валюты (linked to currency)'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.TRADING_CODE IS 'Торговый код Участника (linked to company)'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.SHORT_NAME IS 'Короткое наименование Участника (linked to company)'; - - -COMMENT ON COLUMN ACCOUNT_BALANCE.FULL_NAME IS 'Полное наименование Участника (linked to company)'; - - --- History log of accountBalance - Информация об остатках ден. средств -CREATE TABLE IF NOT EXISTS ACCOUNT_BALANCE_HISTORY(ACCOUNT_BALANCE_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, COMPANY_ID bigint, CREATED_AT timestamp, UPDATED_AT timestamp, ACCOUNT_ID bigint, ACCOUNT_TYPE char(4), ACCOUNT varchar(50), OPEN_BALANCE_AMOUNT numeric(72,18), START_BALANCE_AMOUNT numeric(72,18), CLOSE_BALANCE_AMOUNT numeric(72,18), TRADE_BALANCE_AMOUNT numeric(72,18), FREE_BALANCE_AMOUNT numeric(72,18), CHANGE_BALANCE_AMOUNT numeric(72,18), CREDIT_AMOUNT numeric(72,18), DEBIT_AMOUNT numeric(72,18), BALANCE_AMOUNT numeric(72,18), BALANCE_ACCOUNT_TYPE char(4), CLEARING_DATE date, CURRENCY_CODE char(4), TRADING_CODE varchar(255), SHORT_NAME varchar(255), FULL_NAME varchar(255)); -COMMENT ON TABLE ACCOUNT_BALANCE_HISTORY IS 'История изменений таблицы accountBalance'; -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT_BALANCE_ID IS 'Идентификатор записи в таблице ACCOUNT_BALANCE'; -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.COMPANY_ID IS 'Идентификатор участника (linked to company)'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT_TYPE IS 'Тип счета (linked to account)'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT IS 'Счет'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.OPEN_BALANCE_AMOUNT IS 'Начальная сумма после расчетной организации'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.START_BALANCE_AMOUNT IS 'Начальная сумма остатков ден. средств на начало работы'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.CLOSE_BALANCE_AMOUNT IS 'Конечная сумма остатков ден. средств на счете'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.TRADE_BALANCE_AMOUNT IS 'Регистр «Денежные средства Участника клиринга – блокированные»'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.FREE_BALANCE_AMOUNT IS 'Регистр «Денежные средства Участника клиринга – свободные»'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.CHANGE_BALANCE_AMOUNT IS 'Сумма изменения остатков ден. средств на счете'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.CREDIT_AMOUNT IS 'Зачисления'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.DEBIT_AMOUNT IS 'Списания'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.BALANCE_AMOUNT IS 'Денежные средства Участника клиринга, зарезервированные на торги'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.BALANCE_ACCOUNT_TYPE IS 'Тип баланса (linked to balanceAccountType)'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.CLEARING_DATE IS 'Дата расчета'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.CURRENCY_CODE IS 'Код валюты (linked to currency)'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.TRADING_CODE IS 'Торговый код Участника (linked to company)'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.SHORT_NAME IS 'Короткое наименование Участника (linked to company)'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.FULL_NAME IS 'Полное наименование Участника (linked to company)'; - --- balanceRegistry - Реестр остатков денежных средств -CREATE TABLE IF NOT EXISTS BALANCE_REGISTRY(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, S_DF01_DATE timestamp, CURRENCY_CODE char(4), SET_HOUSE_NAME varchar(255), ACCOUNT varchar(50), INFO_ACCOUNT varchar(50), REMAINDER_SUM numeric(72,18), BLOCKED_SUM numeric(72,18), UNBLOCKED_SUM numeric(72,18), INN varchar(255), MARKET bigint, MARKET_NAME varchar(255), FULL_NAME varchar(255), TYPE_REMAINS char(4), DOC_NUMBER varchar(255)); -COMMENT ON TABLE BALANCE_REGISTRY IS 'Реестр остатков денежных средств'; - - -COMMENT ON COLUMN BALANCE_REGISTRY.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN BALANCE_REGISTRY.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN BALANCE_REGISTRY.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN BALANCE_REGISTRY.S_DF01_DATE IS 'Дата создания записи в S_DF01'; - - -COMMENT ON COLUMN BALANCE_REGISTRY.CURRENCY_CODE IS 'Код валюты (linked to currencyCode)'; - - -COMMENT ON COLUMN BALANCE_REGISTRY.SET_HOUSE_NAME IS 'Наименование РО'; - - -COMMENT ON COLUMN BALANCE_REGISTRY.ACCOUNT IS 'Номер торгового/клирингового счета'; - - -COMMENT ON COLUMN BALANCE_REGISTRY.INFO_ACCOUNT IS 'Номер счета внутреннего учета СПВБ'; - - -COMMENT ON COLUMN BALANCE_REGISTRY.REMAINDER_SUM IS 'Остаток денежных средст'; - - -COMMENT ON COLUMN BALANCE_REGISTRY.BLOCKED_SUM IS 'Сумма блокированных денежных средств'; - - -COMMENT ON COLUMN BALANCE_REGISTRY.UNBLOCKED_SUM IS 'Сумма свободных денежных средств'; - - -COMMENT ON COLUMN BALANCE_REGISTRY.INN IS 'Идентификационный номер налогоплательщика (ИНН)'; - - -COMMENT ON COLUMN BALANCE_REGISTRY.MARKET IS 'Сегмент рынка (linked to market)'; - - -COMMENT ON COLUMN BALANCE_REGISTRY.MARKET_NAME IS 'Наименование сегмента рынка'; - - -COMMENT ON COLUMN BALANCE_REGISTRY.FULL_NAME IS 'Наименование Участника Клиринга'; - - -COMMENT ON COLUMN BALANCE_REGISTRY.TYPE_REMAINS IS 'Тип остатка'; - - -COMMENT ON COLUMN BALANCE_REGISTRY.DOC_NUMBER IS 'Номер документа'; - --- managementJournal - Журнал монитора и контроля -CREATE TABLE IF NOT EXISTS MANAGEMENT_JOURNAL(ID bigint PRIMARY KEY, COMPANY_ID bigint, USER_ID bigint, MANAGEMENT_JOURNAL_TYPE char(4), MANAGEMENT_JOURNAL_PURPOSE char(4), MANAGEMENT_JOURNAL_STATUS char(4), TEXT varchar(4096), CHANGE_ACCESS_SIGN char(4), CHANGE_DATA_SIGN char(4), EVENT_DATE timestamp, UPDATED_AT timestamp, CREATED_AT timestamp); -COMMENT ON TABLE MANAGEMENT_JOURNAL IS 'Журнал монитора и контроля'; - - -COMMENT ON COLUMN MANAGEMENT_JOURNAL.ID IS 'Идентификатор'; - - -COMMENT ON COLUMN MANAGEMENT_JOURNAL.COMPANY_ID IS 'Участник (linked to company)'; - - -COMMENT ON COLUMN MANAGEMENT_JOURNAL.USER_ID IS 'Автор сообщения (linked to userCls)'; - - -COMMENT ON COLUMN MANAGEMENT_JOURNAL.MANAGEMENT_JOURNAL_TYPE IS 'Тип мониторинга (linked to managementJournalType)'; - - -COMMENT ON COLUMN MANAGEMENT_JOURNAL.MANAGEMENT_JOURNAL_PURPOSE IS 'Цель мониторинга (linked to managementJournalPurpose)'; - - -COMMENT ON COLUMN MANAGEMENT_JOURNAL.MANAGEMENT_JOURNAL_STATUS IS 'Статус (linked to managementJournalStatus)'; - - -COMMENT ON COLUMN MANAGEMENT_JOURNAL.TEXT IS 'Сообщение'; - - -COMMENT ON COLUMN MANAGEMENT_JOURNAL.CHANGE_ACCESS_SIGN IS 'Признак изменения доступа (linked to allowed)'; - - -COMMENT ON COLUMN MANAGEMENT_JOURNAL.CHANGE_DATA_SIGN IS 'Признак изменения данных (linked to allowed)'; - - -COMMENT ON COLUMN MANAGEMENT_JOURNAL.EVENT_DATE IS 'Дата события ЕГРЮЛ'; - - -COMMENT ON COLUMN MANAGEMENT_JOURNAL.UPDATED_AT IS 'Изменено'; - - -COMMENT ON COLUMN MANAGEMENT_JOURNAL.CREATED_AT IS 'Создано'; - --- inDocumentJournal - Журнал входящих документов -CREATE TABLE IF NOT EXISTS IN_DOCUMENT_JOURNAL(ID bigint PRIMARY KEY, REGISTRATION_DATE date, REGISTRATION_TIME time, REGISTRATION_NUMBER bigint, DOCUMENT_NAME varchar(255), SENDER varchar(255), QUANTITY bigint, CLEARING_CODE varchar(255), COURIER_TYPE char(4), EMAIL_DATE date, AMOUNT numeric(72,2), DOSSIER_NUMBER varchar(50), COMMENT varchar(255), RECEIPT_DATE date, RESULT_STATUS char(4)); -COMMENT ON TABLE IN_DOCUMENT_JOURNAL IS 'Журнал входящих документов'; - - -COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.ID IS 'Идентификатор'; - - -COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.REGISTRATION_DATE IS 'Дата регистрации'; - - -COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.REGISTRATION_TIME IS 'Время регистрации'; - - -COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.REGISTRATION_NUMBER IS 'Регистационный номер'; - - -COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.DOCUMENT_NAME IS 'Наименование документа'; - - -COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.SENDER IS 'Полное наименование отправителя'; - - -COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.QUANTITY IS 'Количествово экземпляров'; - - -COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.CLEARING_CODE IS 'Код Участника Клиринга'; - - -COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.COURIER_TYPE IS 'Способ отправки (linked to courierType)'; - - -COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.EMAIL_DATE IS 'Дата отправки электронной почтой'; - - -COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.AMOUNT IS 'Сумма'; - - -COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.DOSSIER_NUMBER IS 'Номер дела'; - - -COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.COMMENT IS 'Комментарий'; - - -COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.RECEIPT_DATE IS 'Дата получения оригинала'; - - -COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.RESULT_STATUS IS 'Статус загрузки документа (linked to resultStatus)'; - --- outDocumentJournal - Журнал исходящих документов -CREATE TABLE IF NOT EXISTS OUT_DOCUMENT_JOURNAL(ID bigint PRIMARY KEY, REGISTRATION_DATE date, REGISTRATION_TIME time, REGISTRATION_NUMBER bigint, DOCUMENT_NAME varchar(255), ADDRESSEE varchar(255), QUANTITY bigint, CLEARING_CODE varchar(255), COURIER_TYPE char(4), EMAIL_DATE date, AMOUNT numeric(72,2), DOSSIER_NUMBER varchar(50), POST_DATE date, RESULT_STATUS char(4)); -COMMENT ON TABLE OUT_DOCUMENT_JOURNAL IS 'Журнал исходящих документов'; - - -COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.ID IS 'Идентификатор'; - - -COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.REGISTRATION_DATE IS 'Дата регистрации'; - - -COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.REGISTRATION_TIME IS 'Время регистрации'; - - -COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.REGISTRATION_NUMBER IS 'Регистационный номер'; - - -COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.DOCUMENT_NAME IS 'Наименование документа'; - - -COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.ADDRESSEE IS 'Полное наименование получателя'; - - -COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.QUANTITY IS 'Количествово экземпляров'; - - -COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.CLEARING_CODE IS 'Код Участника Клиринга'; - - -COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.COURIER_TYPE IS 'Способ отправки (linked to courierType)'; - - -COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.EMAIL_DATE IS 'Дата отправки электронной почтой'; - - -COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.AMOUNT IS 'Сумма'; - - -COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.DOSSIER_NUMBER IS 'Номер дела'; - - -COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.POST_DATE IS 'Дата почтового отправления'; - - -COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.RESULT_STATUS IS 'Статус выгрузки документа (linked to resultStatus)'; - --- executionDeposit - Сделки -CREATE TABLE IF NOT EXISTS EXECUTION_DEPOSIT(ID bigint PRIMARY KEY, EXCHANGE_EXECUTION_ID bigint, EXCHANGE_EXECUTION_TIME date, CREATED_AT time, UPDATED_AT time, TRADING_DATE date, ACCOUNT_ID bigint, MARKET char(4), PRICE numeric(72,18), AMOUNT bigint, SIDE_ID bigint, SETTLEMENT_CURRENCY_ID bigint, COMPANY_ID bigint, DURATION bigint, FIRST_LEG_SETTLEMENT_DATE date, SECOND_LEG_SETTLEMENT_DATE date, SECOND_LEG_AMOUNT date, INTEREST_AMOUNT date, SYMBOL_NAME varchar(50), SYMBOL_CODE varchar(20), SECURITIES_DEPOSIT_ID bigint, COUNTER_PARTY_ID bigint, SESSION_ID bigint, COVERAGE_STATUS_ID bigint); -COMMENT ON TABLE EXECUTION_DEPOSIT IS 'Сделки'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.ID IS 'ID записи'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.EXCHANGE_EXECUTION_ID IS 'Идентификационный номер сделкт в Торговой Системе'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.EXCHANGE_EXECUTION_TIME IS 'Время в Торговой Системе'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.CREATED_AT IS 'Время регистрации сделки'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.UPDATED_AT IS 'Время изменения сделки'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.TRADING_DATE IS 'Дата торгов'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.ACCOUNT_ID IS 'Торговый счет (linked to account)'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.MARKET IS 'Секция финансового инструмента (linked to market)'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.PRICE IS 'Ставка по депозиту'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.AMOUNT IS 'Объем сделки'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.SIDE_ID IS 'Направление сделки (linked to moneyFlowSide)'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.SETTLEMENT_CURRENCY_ID IS 'Валюта расчетов по инструменту (linked to currencyCode)'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.COMPANY_ID IS 'Название компании (linked to company)'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.DURATION IS 'Срок, дней'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.FIRST_LEG_SETTLEMENT_DATE IS 'Дата размещения'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.SECOND_LEG_SETTLEMENT_DATE IS 'Дата возврата'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.SECOND_LEG_AMOUNT IS 'Объем возврата'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.INTEREST_AMOUNT IS 'Проценты'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.SYMBOL_NAME IS 'Наименование инструмента в Торговой Системе'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.SYMBOL_CODE IS 'Код инструмента в Торговой Системе'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.SECURITIES_DEPOSIT_ID IS 'Наименование финансового инструмента (linked to security)'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.COUNTER_PARTY_ID IS 'Имя фирмы-партнера, с которым заключена сделка (linked to company)'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.SESSION_ID IS 'Сессия (linked to moneyMarketSession)'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT.COVERAGE_STATUS_ID IS 'Cтатус достаточности обеспечения (linked to allowed)'; - --- executionDepositRegister - Реестр сделок -CREATE TABLE IF NOT EXISTS EXECUTION_DEPOSIT_REGISTER(ID bigint PRIMARY KEY, EXCHANGE_EXECUTION_ID bigint, EXCHANGE_EXECUTION_TIME date, CREATED_AT time, UPDATED_AT time, TRADING_DATE date, CLEARING_DATE date, ACCOUNT_ID bigint, MARKET char(4), PRICE numeric(72,18), AMOUNT bigint, SIDE_ID bigint, SETTLEMENT_CURRENCY_ID bigint, COMPANY_ID bigint, FIRST_LEG_SETTLEMENT_DATE date, SECOND_LEG_SETTLEMENT_DATE date, SYMBOL_NAME varchar(50), SYMBOL_CODE varchar(20), SECURITIES_DEPOSIT_ID bigint, COUNTER_PARTY_ID bigint, COVERAGE_STATUS_ID bigint, SESSION_ID bigint); -COMMENT ON TABLE EXECUTION_DEPOSIT_REGISTER IS 'Реестр сделок'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.ID IS 'ID записи'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.EXCHANGE_EXECUTION_ID IS 'Идентификационный номер сделкт в Торговой Системе'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.EXCHANGE_EXECUTION_TIME IS 'Время в Торговой Системе'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.CREATED_AT IS 'Время регистрации сделки'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.UPDATED_AT IS 'Время изменения сделки'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.TRADING_DATE IS 'Дата торгов'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.CLEARING_DATE IS 'Дата клиринга'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.ACCOUNT_ID IS 'Торговый счет (linked to account)'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.MARKET IS 'Секция финансового инструмента (linked to market)'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.PRICE IS 'Ставка по депозиту'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.AMOUNT IS 'Объем сделки'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.SIDE_ID IS 'Направление заявки (linked to moneyFlowSide)'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.SETTLEMENT_CURRENCY_ID IS 'Валюта расчетов по инструменту (linked to currencyCode)'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.COMPANY_ID IS 'Название компании (linked to company)'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.FIRST_LEG_SETTLEMENT_DATE IS 'Дата размещения'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.SECOND_LEG_SETTLEMENT_DATE IS 'Дата возврата'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.SYMBOL_NAME IS 'Наименование инструмента в Торговой Системе'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.SYMBOL_CODE IS 'Код инструмента в Торговой Системе'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.SECURITIES_DEPOSIT_ID IS 'Наименование финансового инструмента (linked to security)'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.COUNTER_PARTY_ID IS 'Имя фирмы-партнера, с которым заключена сделка (linked to company)'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.COVERAGE_STATUS_ID IS 'Cтатус достаточности обеспечения (linked to allowed)'; - - -COMMENT ON COLUMN EXECUTION_DEPOSIT_REGISTER.SESSION_ID IS 'Сессия (linked to moneyMarketSession)'; - --- admittedDeal - Реестр сделок, допущенных к клирингу -CREATE TABLE IF NOT EXISTS ADMITTED_DEAL(COMPANY_FULL_NAME varchar(255), EXECUTION_DEPOSIT_REGISTER_TRADING_DATE timestamp, EXCHANGE_EXECUTION_ID varchar(255), EXCHANGE_EXECUTION_TIME time, SECURITY_ID bigint, SECURITY_NAME varchar(255), SELLER_FULL_NAME varchar(255), SELLER_CLEARING_CODE varchar(255), SELLER_ACCOUNT varchar, BUYER_FULL_NAME varchar(255), BUYER_CLEARING_CODE varchar(255), BUYER_ACCOUNT varchar, EXECUTION_DEPOSIT_REGISTER_AMOUNT numeric(72,18)); -COMMENT ON TABLE ADMITTED_DEAL IS 'Реестр сделок, допущенных к клирингу'; - - -COMMENT ON COLUMN ADMITTED_DEAL.COMPANY_FULL_NAME IS 'Наименование биржи'; - - -COMMENT ON COLUMN ADMITTED_DEAL.EXECUTION_DEPOSIT_REGISTER_TRADING_DATE IS 'Дата заключения сделки'; - - -COMMENT ON COLUMN ADMITTED_DEAL.EXCHANGE_EXECUTION_ID IS 'Номер сделки'; - - -COMMENT ON COLUMN ADMITTED_DEAL.EXCHANGE_EXECUTION_TIME IS 'Время заключения сделки'; - - -COMMENT ON COLUMN ADMITTED_DEAL.SECURITY_ID IS 'Биржевой код инструмента (linked to security)'; - - -COMMENT ON COLUMN ADMITTED_DEAL.SECURITY_NAME IS 'Наименование инструмента'; - - -COMMENT ON COLUMN ADMITTED_DEAL.SELLER_FULL_NAME IS 'Наименование продавца'; - - -COMMENT ON COLUMN ADMITTED_DEAL.SELLER_CLEARING_CODE IS 'Код продавца'; - - -COMMENT ON COLUMN ADMITTED_DEAL.SELLER_ACCOUNT IS 'Счет продавца'; - - -COMMENT ON COLUMN ADMITTED_DEAL.BUYER_FULL_NAME IS 'Наименование продавца'; - - -COMMENT ON COLUMN ADMITTED_DEAL.BUYER_CLEARING_CODE IS 'Код продавца'; - - -COMMENT ON COLUMN ADMITTED_DEAL.BUYER_ACCOUNT IS 'Счет продавца'; - - -COMMENT ON COLUMN ADMITTED_DEAL.EXECUTION_DEPOSIT_REGISTER_AMOUNT IS 'Сумма сделки'; - --- dealPassedControl - Реестр сделок, прошедших процедуру контроля обеспечения -CREATE TABLE IF NOT EXISTS DEAL_PASSED_CONTROL(COMPANY_FULL_NAME varchar(255), EXECUTION_DEPOSIT_REGISTER_TRADING_DATE timestamp, EXCHANGE_EXECUTION_ID varchar(255), EXCHANGE_EXECUTION_TIME time, SECURITY_ID bigint, SECURITY_NAME varchar(255), SELLER_FULL_NAME varchar(255), SELLER_CLEARING_CODE varchar(255), SELLER_ACCOUNT varchar, BUYER_FULL_NAME varchar(255), BUYER_CLEARING_CODE varchar(255), BUYER_ACCOUNT varchar, EXECUTION_DEPOSIT_REGISTER_AMOUNT numeric(72,18)); -COMMENT ON TABLE DEAL_PASSED_CONTROL IS 'Реестр сделок, прошедших процедуру контроля обеспечения'; - - -COMMENT ON COLUMN DEAL_PASSED_CONTROL.COMPANY_FULL_NAME IS 'Наименование биржи'; - - -COMMENT ON COLUMN DEAL_PASSED_CONTROL.EXECUTION_DEPOSIT_REGISTER_TRADING_DATE IS 'Дата заключения сделки'; - - -COMMENT ON COLUMN DEAL_PASSED_CONTROL.EXCHANGE_EXECUTION_ID IS 'Номер сделки'; - - -COMMENT ON COLUMN DEAL_PASSED_CONTROL.EXCHANGE_EXECUTION_TIME IS 'Время заключения сделки'; - - -COMMENT ON COLUMN DEAL_PASSED_CONTROL.SECURITY_ID IS 'Биржевой код инструмента (linked to security)'; - - -COMMENT ON COLUMN DEAL_PASSED_CONTROL.SECURITY_NAME IS 'Наименование инструмента'; - - -COMMENT ON COLUMN DEAL_PASSED_CONTROL.SELLER_FULL_NAME IS 'Наименование продавца'; - - -COMMENT ON COLUMN DEAL_PASSED_CONTROL.SELLER_CLEARING_CODE IS 'Код продавца'; - - -COMMENT ON COLUMN DEAL_PASSED_CONTROL.SELLER_ACCOUNT IS 'Счет продавца'; - - -COMMENT ON COLUMN DEAL_PASSED_CONTROL.BUYER_FULL_NAME IS 'Наименование продавца'; - - -COMMENT ON COLUMN DEAL_PASSED_CONTROL.BUYER_CLEARING_CODE IS 'Код продавца'; - - -COMMENT ON COLUMN DEAL_PASSED_CONTROL.BUYER_ACCOUNT IS 'Счет продавца'; - - -COMMENT ON COLUMN DEAL_PASSED_CONTROL.EXECUTION_DEPOSIT_REGISTER_AMOUNT IS 'Сумма сделки'; - --- dealUnPassedControl - Реестр сделок, не прошедших процедуру контроля обеспечения -CREATE TABLE IF NOT EXISTS DEAL_UN_PASSED_CONTROL(COMPANY_FULL_NAME varchar(255), EXECUTION_DEPOSIT_REGISTER_TRADING_DATE timestamp, EXCHANGE_EXECUTION_ID varchar(255), EXCHANGE_EXECUTION_TIME time, SECURITY_ID bigint, SECURITY_NAME varchar(255), SELLER_FULL_NAME varchar(255), SELLER_CLEARING_CODE varchar(255), SELLER_ACCOUNT varchar, BUYER_FULL_NAME varchar(255), BUYER_CLEARING_CODE varchar(255), BUYER_ACCOUNT varchar, EXECUTION_DEPOSIT_REGISTER_AMOUNT numeric(72,18), RESULT varchar(3)); -COMMENT ON TABLE DEAL_UN_PASSED_CONTROL IS 'Реестр сделок, не прошедших процедуру контроля обеспечения'; - - -COMMENT ON COLUMN DEAL_UN_PASSED_CONTROL.COMPANY_FULL_NAME IS 'Наименование биржи'; - - -COMMENT ON COLUMN DEAL_UN_PASSED_CONTROL.EXECUTION_DEPOSIT_REGISTER_TRADING_DATE IS 'Дата заключения сделки'; - - -COMMENT ON COLUMN DEAL_UN_PASSED_CONTROL.EXCHANGE_EXECUTION_ID IS 'Номер сделки'; - - -COMMENT ON COLUMN DEAL_UN_PASSED_CONTROL.EXCHANGE_EXECUTION_TIME IS 'Время заключения сделки'; - - -COMMENT ON COLUMN DEAL_UN_PASSED_CONTROL.SECURITY_ID IS 'Биржевой код инструмента (linked to security)'; - - -COMMENT ON COLUMN DEAL_UN_PASSED_CONTROL.SECURITY_NAME IS 'Наименование инструмента'; - - -COMMENT ON COLUMN DEAL_UN_PASSED_CONTROL.SELLER_FULL_NAME IS 'Наименование продавца'; - - -COMMENT ON COLUMN DEAL_UN_PASSED_CONTROL.SELLER_CLEARING_CODE IS 'Код продавца'; - - -COMMENT ON COLUMN DEAL_UN_PASSED_CONTROL.SELLER_ACCOUNT IS 'Счет продавца'; - - -COMMENT ON COLUMN DEAL_UN_PASSED_CONTROL.BUYER_FULL_NAME IS 'Наименование продавца'; - - -COMMENT ON COLUMN DEAL_UN_PASSED_CONTROL.BUYER_CLEARING_CODE IS 'Код продавца'; - - -COMMENT ON COLUMN DEAL_UN_PASSED_CONTROL.BUYER_ACCOUNT IS 'Счет продавца'; - - -COMMENT ON COLUMN DEAL_UN_PASSED_CONTROL.EXECUTION_DEPOSIT_REGISTER_AMOUNT IS 'Сумма сделки'; - - -COMMENT ON COLUMN DEAL_UN_PASSED_CONTROL.RESULT IS 'Результат клиринга'; - --- reportRegister - Реестр отчетов -CREATE TABLE IF NOT EXISTS REPORT_REGISTER(ID bigint PRIMARY KEY, CREATED_AT time, UPDATED_AT time, CLEARING_DATE date, COMPANY_FULL_NAME varchar(255), CLEARING_CODE varchar(255), SESSION_ID bigint, COMMENT varchar(255), NAME varchar(255), QUANTITY bigint); -COMMENT ON TABLE REPORT_REGISTER IS 'Реестр отчетов'; - - -COMMENT ON COLUMN REPORT_REGISTER.ID IS 'ID записи'; - - -COMMENT ON COLUMN REPORT_REGISTER.CREATED_AT IS 'Время регистрации'; - - -COMMENT ON COLUMN REPORT_REGISTER.UPDATED_AT IS 'Время изменения'; - - -COMMENT ON COLUMN REPORT_REGISTER.CLEARING_DATE IS 'Дата клиринга'; - - -COMMENT ON COLUMN REPORT_REGISTER.COMPANY_FULL_NAME IS 'Наименование участника'; - - -COMMENT ON COLUMN REPORT_REGISTER.CLEARING_CODE IS 'Код клиринга'; - - -COMMENT ON COLUMN REPORT_REGISTER.SESSION_ID IS 'Сессия (linked to moneyMarketSession)'; - - -COMMENT ON COLUMN REPORT_REGISTER.COMMENT IS 'Комментарий'; - - -COMMENT ON COLUMN REPORT_REGISTER.NAME IS 'Наименование'; - - -COMMENT ON COLUMN REPORT_REGISTER.QUANTITY IS 'Количество записей'; - --- contractRegister - Журнал регистрации договоров -CREATE TABLE IF NOT EXISTS CONTRACT_REGISTER(ID bigint PRIMARY KEY, CREATED_AT time, UPDATED_AT time, NAME varchar(255), NUMBER varchar(255), ISSUE_DATE date, COMPANY_FULL_NAME bigint, COMPANY_ID bigint, DOCUMENT_TYPE char(4), ISSUE_PLACE varchar(255), ISSUER varchar(255), ISSUER_CODE varchar(255), PLACE varchar(255), VALID_FROM_DATE date, VALID_TO_DATE date, CLOSE_DATE date, COMMENT varchar(255)); -COMMENT ON TABLE CONTRACT_REGISTER IS 'Журнал регистрации договоров'; - - -COMMENT ON COLUMN CONTRACT_REGISTER.ID IS 'Номер записи'; - - -COMMENT ON COLUMN CONTRACT_REGISTER.CREATED_AT IS 'Дата и время регистрации документа'; - - -COMMENT ON COLUMN CONTRACT_REGISTER.UPDATED_AT IS 'Время изменения сделки'; - - -COMMENT ON COLUMN CONTRACT_REGISTER.NAME IS 'Наименование документа'; - - -COMMENT ON COLUMN CONTRACT_REGISTER.NUMBER IS 'Номер документа'; - - -COMMENT ON COLUMN CONTRACT_REGISTER.ISSUE_DATE IS 'Дата составления'; - - -COMMENT ON COLUMN CONTRACT_REGISTER.COMPANY_FULL_NAME IS 'Наименование лица'; - - -COMMENT ON COLUMN CONTRACT_REGISTER.COMPANY_ID IS 'Идентификатор Компании (linked to company)'; - - -COMMENT ON COLUMN CONTRACT_REGISTER.DOCUMENT_TYPE IS 'Идентификатор типа документа (linked to documentType)'; - - -COMMENT ON COLUMN CONTRACT_REGISTER.ISSUE_PLACE IS 'Место выдачи'; - - -COMMENT ON COLUMN CONTRACT_REGISTER.ISSUER IS 'Кем выдан'; - - -COMMENT ON COLUMN CONTRACT_REGISTER.ISSUER_CODE IS 'Код выдавшего органа'; - - -COMMENT ON COLUMN CONTRACT_REGISTER.PLACE IS 'Место'; - - -COMMENT ON COLUMN CONTRACT_REGISTER.VALID_FROM_DATE IS 'Дата начала срока действия'; - - -COMMENT ON COLUMN CONTRACT_REGISTER.VALID_TO_DATE IS 'Дата окончания срока действия'; - - -COMMENT ON COLUMN CONTRACT_REGISTER.CLOSE_DATE IS 'Дата расторжения'; - - -COMMENT ON COLUMN CONTRACT_REGISTER.COMMENT IS 'Место'; - --- orderRegistry - Реестра распоряжений -CREATE TABLE IF NOT EXISTS ORDER_REGISTRY(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, CREDIT_LEG_ACCOUNT varchar, CREDIT_LEG_AMOUNT numeric(72,18), CREDIT_LEG_CURRENCY_CODE char(4), CREDIT_LEG_DIRECTION bigint, DEBIT_LEG_ACCOUNT varchar, SENDER varchar(255), ADDRESSEE varchar(255), DOCUMENT_NUMBER varchar(255)); -COMMENT ON TABLE ORDER_REGISTRY IS 'Реестра распоряжений'; - - -COMMENT ON COLUMN ORDER_REGISTRY.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN ORDER_REGISTRY.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN ORDER_REGISTRY.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN ORDER_REGISTRY.CLEARING_DATE IS 'Дата расчета'; - - -COMMENT ON COLUMN ORDER_REGISTRY.CREDIT_LEG_ACCOUNT IS 'Счет отправителя'; - - -COMMENT ON COLUMN ORDER_REGISTRY.CREDIT_LEG_AMOUNT IS 'Сумма отправителя'; - - -COMMENT ON COLUMN ORDER_REGISTRY.CREDIT_LEG_CURRENCY_CODE IS 'Код валюты отправителя (linked to currency)'; - - -COMMENT ON COLUMN ORDER_REGISTRY.CREDIT_LEG_DIRECTION IS 'Направление отправителя (linked to inOutDirection)'; - - -COMMENT ON COLUMN ORDER_REGISTRY.DEBIT_LEG_ACCOUNT IS 'Счет получателя'; - - -COMMENT ON COLUMN ORDER_REGISTRY.SENDER IS 'Отправитель'; - - -COMMENT ON COLUMN ORDER_REGISTRY.ADDRESSEE IS 'Получатель'; - - -COMMENT ON COLUMN ORDER_REGISTRY.DOCUMENT_NUMBER IS 'Номер документа в сторонней системе'; - --- liabilitiesClaimsMoney - Требования и обязательства денежных средств -CREATE TABLE IF NOT EXISTS LIABILITIES_CLAIMS_MONEY(ID bigint PRIMARY KEY, COMPANY_ID bigint, CREATED_AT timestamp, UPDATED_AT timestamp, ACCOUNT_ID bigint, ACCOUNT_TYPE bigint, ACCOUNT varchar(50), LIABILITIES_AMOUNT numeric(72,2), REFUND_INTEREST numeric(72,2), ACCRUED_INTEREST numeric(72,2), CLAIMS_AMOUNT numeric(72,2), SETTLEMENT_DATE date, TRADING_DATE date, CURRENCY char(4), TRADING_CODE varchar(255), SHORT_NAME varchar(255), FULL_NAME varchar(255)); -COMMENT ON TABLE LIABILITIES_CLAIMS_MONEY IS 'Требования и обязательства денежных средств'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.COMPANY_ID IS 'Идентификатор участника (linked to company)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.ACCOUNT_TYPE IS 'Тип счета (linked to account)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.ACCOUNT IS 'Счет'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.LIABILITIES_AMOUNT IS 'Регистр «Обязательства по денежным средствам, сформированные по результатам собственных сделок Участника клиринга», исключая проценты'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.REFUND_INTEREST IS 'Проценты к возврату'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.ACCRUED_INTEREST IS 'Начисленные проценты'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.CLAIMS_AMOUNT IS 'Сумма требований, исключая проценты'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.SETTLEMENT_DATE IS 'Дата расчета'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.TRADING_DATE IS 'Дата торгов'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.CURRENCY IS 'Код валюты (linked to currencyCode)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.TRADING_CODE IS 'Торговый код Участника (linked to company)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.SHORT_NAME IS 'Короткое наименование Участника (linked to company)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.FULL_NAME IS 'Полное наименование Участника (linked to company)'; - --- liabilitiesClaimsAssets - Требования и обязательства финансовых активов -CREATE TABLE IF NOT EXISTS LIABILITIES_CLAIMS_ASSETS(ID bigint PRIMARY KEY, COMPANY_ID bigint, CREATED_AT timestamp, UPDATED_AT timestamp, ACCOUNT_ID bigint, ACCOUNT_TYPE bigint, ACCOUNT varchar(50), LIABILITIES_QUANTITY numeric(72,18), CLAIMS_QUANTITY numeric(72,18), CURRENCY char(4), SETTLEMENT_DATE date, TRADING_DATE date, REFUND_DATE date, PRICE numeric(72,18), SECURITY_ID bigint, TRADING_CODE varchar(255), CLEARING_CODE varchar(255), SHORT_NAME varchar(255), CONTRACT varchar(255), COMMENT varchar(255), FULL_NAME varchar(255), PARENT_ID bigint, LIABILITIES_CLAIMS_MONEY_ID bigint, INTEREST_STATUS bigint, CLEARING_STATUS bigint, PAYMENT_ID bigint, REFUND_PAYMENT_ID bigint); -COMMENT ON TABLE LIABILITIES_CLAIMS_ASSETS IS 'Требования и обязательства финансовых активов'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.COMPANY_ID IS 'Идентификатор участника (linked to company)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.ACCOUNT_TYPE IS 'Тип счета (linked to account)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.ACCOUNT IS 'Счет'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.LIABILITIES_QUANTITY IS 'Сумма обязательств'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CLAIMS_QUANTITY IS 'Сумма требований'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CURRENCY IS 'Код валюты (linked to currencyCode)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.SETTLEMENT_DATE IS 'Дата расчета'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.TRADING_DATE IS 'Дата торгов'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.REFUND_DATE IS 'Дата возврата'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.PRICE IS 'Ставка по депозиту'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.SECURITY_ID IS 'Инструмент (linked to security)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.TRADING_CODE IS 'Торговый код Участника (linked to company)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CLEARING_CODE IS 'Клиринговый код Участника (linked to company)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.SHORT_NAME IS 'Короткое наименование Участника (linked to company)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CONTRACT IS 'Номер договора'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.COMMENT IS 'Комментарий'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.FULL_NAME IS 'Полное наименование Участника (linked to company)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.PARENT_ID IS 'Идентификатор записи основного договора без разделения'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.LIABILITIES_CLAIMS_MONEY_ID IS 'Регистры денежных средств (linked to liabilitiesClaimsMoney)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.INTEREST_STATUS IS 'Статус возврата процентов (linked to interestStatus)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CLEARING_STATUS IS 'Статус клиринга (linked to clearingStatus)'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.PAYMENT_ID IS 'Платеж'; - - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.REFUND_PAYMENT_ID IS 'Обратный платежа'; - --- statement - Денежные средства от расчетной организации -CREATE TABLE IF NOT EXISTS STATEMENT(ID bigint PRIMARY KEY, ADDRESSEE_ID bigint, SENDER_ID bigint, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, STATEMENT_TYPE char(4), COMMENT varchar(255), ACCOUNT_ID bigint, ACCOUNT varchar(50), IN_OUT_DIRECTION char(4), SETTLEMENT_DATE date, AMOUNT numeric(72,2), CASH_MOVEMENT_CURRENCY_CODE char(4), OPERATION_STATUS char(4), ERROR_CODE char(4), ERROR_TEXT char(4), IN_S_DF_ID bigint, OUT_S_DF_ID bigint, IN_OUT_S_DF_TYPE char(4)); -COMMENT ON TABLE STATEMENT IS 'Денежные средства от расчетной организации'; - - -COMMENT ON COLUMN STATEMENT.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN STATEMENT.ADDRESSEE_ID IS 'Идентификатор участника получателя (linked to company)'; - - -COMMENT ON COLUMN STATEMENT.SENDER_ID IS 'Идентификатор участника отправителя (linked to company)'; - - -COMMENT ON COLUMN STATEMENT.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN STATEMENT.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN STATEMENT.CLEARING_DATE IS 'Дата расчета'; - - -COMMENT ON COLUMN STATEMENT.STATEMENT_TYPE IS 'Тип поступления средств (linked to statementType)'; - - -COMMENT ON COLUMN STATEMENT.COMMENT IS 'Комментарий'; - - -COMMENT ON COLUMN STATEMENT.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; - - -COMMENT ON COLUMN STATEMENT.ACCOUNT IS 'Счет'; - - -COMMENT ON COLUMN STATEMENT.IN_OUT_DIRECTION IS 'Направление (linked to inOutDirection)'; - - -COMMENT ON COLUMN STATEMENT.SETTLEMENT_DATE IS 'Дата расчетов'; - - -COMMENT ON COLUMN STATEMENT.AMOUNT IS 'Объем'; - - -COMMENT ON COLUMN STATEMENT.CASH_MOVEMENT_CURRENCY_CODE IS 'Код валюты (linked to currency)'; - - -COMMENT ON COLUMN STATEMENT.OPERATION_STATUS IS 'Cтатус обработки (linked to operationStatus)'; - - -COMMENT ON COLUMN STATEMENT.ERROR_CODE IS 'Код ошибки (linked to errorCode)'; - - -COMMENT ON COLUMN STATEMENT.ERROR_TEXT IS 'Полный текст ошибки (linked to errorText)'; - - -COMMENT ON COLUMN STATEMENT.IN_S_DF_ID IS 'Идентификатор записи, инициирующей изменения этой таблицы'; - - -COMMENT ON COLUMN STATEMENT.OUT_S_DF_ID IS 'Идентификатор записи, формируемой в результате изменения этой таблицы'; - - -COMMENT ON COLUMN STATEMENT.IN_OUT_S_DF_TYPE IS 'Типы входящей и исходящей записей (linked to inOutSDfType)'; - --- tradeSettlement - Проводки на базе сделок торговой системы -CREATE TABLE IF NOT EXISTS TRADE_SETTLEMENT(ID bigint PRIMARY KEY, ADDRESSEE_ID bigint, SENDER_ID bigint, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, AMOUNT numeric(72,2), CURRENCY_CODE char(4), IN_OUT_DIRECTION bigint, ACCOUNT_ID bigint, ACCOUNT varchar(50), OPERATION_STATUS char(4)); -COMMENT ON TABLE TRADE_SETTLEMENT IS 'Проводки на базе сделок торговой системы'; - - -COMMENT ON COLUMN TRADE_SETTLEMENT.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN TRADE_SETTLEMENT.ADDRESSEE_ID IS 'Идентификатор участника получателя (linked to company)'; - - -COMMENT ON COLUMN TRADE_SETTLEMENT.SENDER_ID IS 'Идентификатор участника отправителя (linked to company)'; - - -COMMENT ON COLUMN TRADE_SETTLEMENT.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN TRADE_SETTLEMENT.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN TRADE_SETTLEMENT.CLEARING_DATE IS 'Дата расчета'; - - -COMMENT ON COLUMN TRADE_SETTLEMENT.AMOUNT IS 'Объем'; - - -COMMENT ON COLUMN TRADE_SETTLEMENT.CURRENCY_CODE IS 'Код валюты (linked to currency)'; - - -COMMENT ON COLUMN TRADE_SETTLEMENT.IN_OUT_DIRECTION IS 'Направление (linked to inOutDirection)'; - - -COMMENT ON COLUMN TRADE_SETTLEMENT.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; - - -COMMENT ON COLUMN TRADE_SETTLEMENT.ACCOUNT IS 'Счет'; - - -COMMENT ON COLUMN TRADE_SETTLEMENT.OPERATION_STATUS IS 'Cтатус обработки (linked to operationStatus)'; - --- operation - Проводки -CREATE TABLE IF NOT EXISTS OPERATION(ID bigint PRIMARY KEY, ADDRESSEE_ID bigint, SENDER_ID bigint, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, OPERATION_TYPE_ID bigint, OPERATION_STATUS char(4)); -COMMENT ON TABLE OPERATION IS 'Проводки'; - - -COMMENT ON COLUMN OPERATION.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN OPERATION.ADDRESSEE_ID IS 'Идентификатор участника получателя (linked to company)'; - - -COMMENT ON COLUMN OPERATION.SENDER_ID IS 'Идентификатор участника отправителя (linked to company)'; - - -COMMENT ON COLUMN OPERATION.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN OPERATION.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN OPERATION.CLEARING_DATE IS 'Дата расчета'; - - -COMMENT ON COLUMN OPERATION.OPERATION_TYPE_ID IS 'Тип проводки (linked to operationType)'; - - -COMMENT ON COLUMN OPERATION.OPERATION_STATUS IS 'Cтатус обработки (linked to operationStatus)'; - --- paymentInstruction - Информация о денежных средствах -CREATE TABLE IF NOT EXISTS PAYMENT_INSTRUCTION(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, SENDER_ID bigint, ADDRESSEE_ID bigint, ADRESSEE_B_I_C varchar(255), PAYEE_BANK_NAME varchar(255), PAYEE_B_I_C varchar(255), ADDRESSEE_BANK_NAME varchar(255), PAYMENT_DATE timestamp, _PAYMENT_PURPOSE varchar(255), SETTLEMENT_DATE date, CREDIT_LEG_AMOUNT bigint, DEBIT_LEG_AMOUNT bigint, CREDIT_LEG_ACCOUNT_ID bigint, CREDIT_CS_ACCOUNT varchar(255), CREDIT_LEG_ACCOUNT varchar(50), DEBIT_LEG_ACCOUNT_ID bigint, DEBIT_CS_ACCOUNT varchar(255), DEBIT_LEG_ACCOUNT varchar(50), CREDIT_LEG_DIRECTION bigint, DEBIT_LEG_DIRECTION bigint, CREDIT_LEG_CURRENCY_CODE char(4), DEBIT_LEG_CURRENCY_CODE char(4), CLEARING_DATE date, TRANSACTION_STATUS char(4), DOCUMENT_NUMBER varchar(255)); -COMMENT ON TABLE PAYMENT_INSTRUCTION IS 'Информация о денежных средствах'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.SENDER_ID IS 'Идентификатор участника отправителя (linked to company)'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.ADDRESSEE_ID IS 'Идентификатор участника получателя (linked to company)'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.ADRESSEE_B_I_C IS 'Банковский идентификационный код (БИК) получателя'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.PAYEE_BANK_NAME IS 'Банк отправителя'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.PAYEE_B_I_C IS 'Банковский идентификационный код (БИК) отправителя'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.ADDRESSEE_BANK_NAME IS 'Банк получателя'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.PAYMENT_DATE IS 'Дата и время платежа'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION._PAYMENT_PURPOSE IS 'Назначение платежа'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.SETTLEMENT_DATE IS 'Дата расчетов'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_LEG_AMOUNT IS 'Сумма отправителя'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_LEG_AMOUNT IS 'Сумма получателя'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_LEG_ACCOUNT_ID IS 'Идентификатор счета отправителя (linked to account)'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_CS_ACCOUNT IS 'Корреспондентский счет отправителя'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_LEG_ACCOUNT IS 'Счет отправителя (linked to Account)'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_LEG_ACCOUNT_ID IS 'Идентификатор счета отправителя (linked to account)'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_CS_ACCOUNT IS 'Корреспондентский счет получателя'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_LEG_ACCOUNT IS 'Счет получателя (linked to Account)'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_LEG_DIRECTION IS 'Направление отправителя (linked to inOutDirection)'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_LEG_DIRECTION IS 'Направление получателя (linked to inOutDirection)'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_LEG_CURRENCY_CODE IS 'Код валюты отправителя (linked to currency)'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_LEG_CURRENCY_CODE IS 'Код валюты получателя (linked to currency)'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.CLEARING_DATE IS 'Дата расчета'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.TRANSACTION_STATUS IS 'Cтатус транзакции (linked to transactionStatus)'; - - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.DOCUMENT_NUMBER IS 'Номер документа в сторонней системе'; - --- marketData - Итоги торгов -CREATE TABLE IF NOT EXISTS MARKET_DATA(ID bigint PRIMARY KEY, SECURITIES_DEPOSIT_ID bigint, COMPANY_NAME varchar(255), MARKET char(4), COUNTER_PARTY_NUM bigint, TRADES_NUM bigint, AMOUNT numeric(72,2), OPEN_PRICE numeric(72,18), MAX_PRICE numeric(72,18), MIN_PRICE numeric(72,18), CLOSE_PRICE numeric(72,18), AVG_PRICE numeric(72,18), DURATION bigint, CREATED_AT time, UPDATED_AT time, TRADING_DATE date); -COMMENT ON TABLE MARKET_DATA IS 'Итоги торгов'; - - -COMMENT ON COLUMN MARKET_DATA.ID IS 'ID записи'; - - -COMMENT ON COLUMN MARKET_DATA.SECURITIES_DEPOSIT_ID IS 'Биржевой код инструмента (linked to security)'; - - -COMMENT ON COLUMN MARKET_DATA.COMPANY_NAME IS 'Инициатор торгов'; - - -COMMENT ON COLUMN MARKET_DATA.MARKET IS 'Секция (linked to market)'; - - -COMMENT ON COLUMN MARKET_DATA.COUNTER_PARTY_NUM IS 'Количество участников, заключивших сделки'; - - -COMMENT ON COLUMN MARKET_DATA.TRADES_NUM IS 'Количество сделок'; - - -COMMENT ON COLUMN MARKET_DATA.AMOUNT IS 'Объем сделок, руб'; - - -COMMENT ON COLUMN MARKET_DATA.OPEN_PRICE IS 'Откр.'; - - -COMMENT ON COLUMN MARKET_DATA.MAX_PRICE IS 'Макс.'; - - -COMMENT ON COLUMN MARKET_DATA.MIN_PRICE IS 'Мин.'; - - -COMMENT ON COLUMN MARKET_DATA.CLOSE_PRICE IS 'Закр.'; - - -COMMENT ON COLUMN MARKET_DATA.AVG_PRICE IS 'Ср.взв.'; - - -COMMENT ON COLUMN MARKET_DATA.DURATION IS 'Срок, дней'; - - -COMMENT ON COLUMN MARKET_DATA.CREATED_AT IS 'Время регистрации сделки'; - - -COMMENT ON COLUMN MARKET_DATA.UPDATED_AT IS 'Время изменения сделки'; - - -COMMENT ON COLUMN MARKET_DATA.TRADING_DATE IS 'Дата торгов'; - --- chargeTariff - Тарифы комиссий -CREATE TABLE IF NOT EXISTS CHARGE_TARIFF(ID bigint PRIMARY KEY, MARKET char(4), CLEARING_MEMBER_CATEGORY char(4), CHARGE_TYPE_ID bigint, CHARGE_RATE numeric(72,18), CURRENCY bigint, VALID_FROM_DATE date, VALID_TO_DATE date, CREATED_AT timestamp, UPDATED_AT timestamp); -COMMENT ON TABLE CHARGE_TARIFF IS 'Тарифы комиссий'; - - -COMMENT ON COLUMN CHARGE_TARIFF.ID IS 'Идентификатор'; - - -COMMENT ON COLUMN CHARGE_TARIFF.MARKET IS 'Секция (linked to market)'; - - -COMMENT ON COLUMN CHARGE_TARIFF.CLEARING_MEMBER_CATEGORY IS 'Категория участника клиринга (linked to clearingCategory)'; - - -COMMENT ON COLUMN CHARGE_TARIFF.CHARGE_TYPE_ID IS 'Тип комиссии (linked to chargeType)'; - - -COMMENT ON COLUMN CHARGE_TARIFF.CHARGE_RATE IS 'Ставка комиссионного сбора'; - - -COMMENT ON COLUMN CHARGE_TARIFF.CURRENCY IS 'Валюта начисления комиссии (linked to currencyCode)'; - - -COMMENT ON COLUMN CHARGE_TARIFF.VALID_FROM_DATE IS 'Дата начала срока действия'; - - -COMMENT ON COLUMN CHARGE_TARIFF.VALID_TO_DATE IS 'Дата окончания срока действия'; - - -COMMENT ON COLUMN CHARGE_TARIFF.CREATED_AT IS 'Создано'; - - -COMMENT ON COLUMN CHARGE_TARIFF.UPDATED_AT IS 'Изменено'; - - --- History log of chargeTariff - Тарифы комиссий -CREATE TABLE IF NOT EXISTS CHARGE_TARIFF_HISTORY(CHARGE_TARIFF_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, MARKET char(4), CLEARING_MEMBER_CATEGORY char(4), CHARGE_TYPE_ID bigint, CHARGE_RATE numeric(72,18), CURRENCY bigint, VALID_FROM_DATE date, VALID_TO_DATE date, CREATED_AT timestamp, UPDATED_AT timestamp); -COMMENT ON TABLE CHARGE_TARIFF_HISTORY IS 'История изменений таблицы chargeTariff'; -COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.CHARGE_TARIFF_ID IS 'Идентификатор записи в таблице CHARGE_TARIFF'; -COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.MARKET IS 'Секция (linked to market)'; - -COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.CLEARING_MEMBER_CATEGORY IS 'Категория участника клиринга (linked to clearingCategory)'; - -COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.CHARGE_TYPE_ID IS 'Тип комиссии (linked to chargeType)'; - -COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.CHARGE_RATE IS 'Ставка комиссионного сбора'; - -COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.CURRENCY IS 'Валюта начисления комиссии (linked to currencyCode)'; - -COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.VALID_FROM_DATE IS 'Дата начала срока действия'; - -COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.VALID_TO_DATE IS 'Дата окончания срока действия'; - -COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.CREATED_AT IS 'Создано'; - -COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.UPDATED_AT IS 'Изменено'; - --- individualChargeTariff - Индивидуальные тарифы комиссий для Участника -CREATE TABLE IF NOT EXISTS INDIVIDUAL_CHARGE_TARIFF(ID bigint PRIMARY KEY, COMPANY_ID bigint, MARKET char(4), CLEARING_MEMBER_CATEGORY char(4), CHARGE_TYPE_ID bigint, CHARGE_RATE numeric(72,18), CURRENCY bigint, VALID_FROM_DATE date, VALID_TO_DATE date, CREATED_AT timestamp, UPDATED_AT timestamp); -COMMENT ON TABLE INDIVIDUAL_CHARGE_TARIFF IS 'Индивидуальные тарифы комиссий для Участника'; - - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.ID IS 'Идентификатор'; - - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.COMPANY_ID IS 'Участник (linked to company)'; - - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.MARKET IS 'Секция (linked to market)'; - - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.CLEARING_MEMBER_CATEGORY IS 'Категория участника клиринга (linked to clearingCategory)'; - - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.CHARGE_TYPE_ID IS 'Тип комиссии (linked to chargeType)'; - - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.CHARGE_RATE IS 'Ставка комиссионного сбора'; - - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.CURRENCY IS 'Валюта начисления комиссии (linked to currencyCode)'; - - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.VALID_FROM_DATE IS 'Дата начала срока действия'; - - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.VALID_TO_DATE IS 'Дата окончания срока действия'; - - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.CREATED_AT IS 'Создано'; - - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.UPDATED_AT IS 'Изменено'; - - --- History log of individualChargeTariff - Индивидуальные тарифы комиссий для Участника -CREATE TABLE IF NOT EXISTS INDIVIDUAL_CHARGE_TARIFF_HISTORY(INDIVIDUAL_CHARGE_TARIFF_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, COMPANY_ID bigint, MARKET char(4), CLEARING_MEMBER_CATEGORY char(4), CHARGE_TYPE_ID bigint, CHARGE_RATE numeric(72,18), CURRENCY bigint, VALID_FROM_DATE date, VALID_TO_DATE date, CREATED_AT timestamp, UPDATED_AT timestamp); -COMMENT ON TABLE INDIVIDUAL_CHARGE_TARIFF_HISTORY IS 'История изменений таблицы individualChargeTariff'; -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.INDIVIDUAL_CHARGE_TARIFF_ID IS 'Идентификатор записи в таблице INDIVIDUAL_CHARGE_TARIFF'; -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.ID IS 'Идентификатор'; - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.COMPANY_ID IS 'Участник (linked to company)'; - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.MARKET IS 'Секция (linked to market)'; - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.CLEARING_MEMBER_CATEGORY IS 'Категория участника клиринга (linked to clearingCategory)'; - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.CHARGE_TYPE_ID IS 'Тип комиссии (linked to chargeType)'; - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.CHARGE_RATE IS 'Ставка комиссионного сбора'; - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.CURRENCY IS 'Валюта начисления комиссии (linked to currencyCode)'; - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.VALID_FROM_DATE IS 'Дата начала срока действия'; - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.VALID_TO_DATE IS 'Дата окончания срока действия'; - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.CREATED_AT IS 'Создано'; - -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.UPDATED_AT IS 'Изменено'; - --- companyTariff - Тарифы комиссий в разрезе Участника -CREATE TABLE IF NOT EXISTS COMPANY_TARIFF(ID bigint PRIMARY KEY, MARKET char(4), CLEARING_MEMBER_CATEGORY char(4), FULL_NAME varchar(255), CONTRACT varchar(255), CHARGE_TYPE_ID bigint, CHARGE_RATE numeric(72,18), CURRENCY bigint, VALID_FROM_DATE date, VALID_TO_DATE date, CREATED_AT timestamp, UPDATED_AT timestamp, COMPANY_ID bigint); -COMMENT ON TABLE COMPANY_TARIFF IS 'Тарифы комиссий в разрезе Участника'; - - -COMMENT ON COLUMN COMPANY_TARIFF.ID IS 'Идентификатор'; - - -COMMENT ON COLUMN COMPANY_TARIFF.MARKET IS 'Секция (linked to market)'; - - -COMMENT ON COLUMN COMPANY_TARIFF.CLEARING_MEMBER_CATEGORY IS 'Категория участника клиринга (linked to clearingCategory)'; - - -COMMENT ON COLUMN COMPANY_TARIFF.FULL_NAME IS 'Полное наименование Участника (linked to company)'; - - -COMMENT ON COLUMN COMPANY_TARIFF.CONTRACT IS 'Номер договора'; - - -COMMENT ON COLUMN COMPANY_TARIFF.CHARGE_TYPE_ID IS 'Тип комиссии (linked to chargeType)'; - - -COMMENT ON COLUMN COMPANY_TARIFF.CHARGE_RATE IS 'Ставка комиссионного сбора'; - - -COMMENT ON COLUMN COMPANY_TARIFF.CURRENCY IS 'Валюта начисления комиссии (linked to currencyCode)'; - - -COMMENT ON COLUMN COMPANY_TARIFF.VALID_FROM_DATE IS 'Дата начала срока действия'; - - -COMMENT ON COLUMN COMPANY_TARIFF.VALID_TO_DATE IS 'Дата окончания срока действия'; - - -COMMENT ON COLUMN COMPANY_TARIFF.CREATED_AT IS 'Создано'; - - -COMMENT ON COLUMN COMPANY_TARIFF.UPDATED_AT IS 'Изменено'; - - -COMMENT ON COLUMN COMPANY_TARIFF.COMPANY_ID IS 'Участник (linked to company)'; - --- errorText - Полные тексты ошибок -CREATE TABLE IF NOT EXISTS ERROR_TEXT(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, ERROR_CODE char(4), TEXT varchar(255), USER_ID bigint, CLEARING_DATE date); -COMMENT ON TABLE ERROR_TEXT IS 'Полные тексты ошибок'; - - -COMMENT ON COLUMN ERROR_TEXT.ID IS 'Идентификатор'; - - -COMMENT ON COLUMN ERROR_TEXT.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN ERROR_TEXT.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN ERROR_TEXT.ERROR_CODE IS 'Код ошибки (linked to errorCode)'; - - -COMMENT ON COLUMN ERROR_TEXT.TEXT IS 'Полный текст ошибки'; - - -COMMENT ON COLUMN ERROR_TEXT.USER_ID IS 'Автор сообщения (linked to userCls)'; - - -COMMENT ON COLUMN ERROR_TEXT.CLEARING_DATE IS 'Текущая дата'; - --- sDf01 - ДФ-01 Информация о денежных средствах, находящихся на торговых банковских счетах Участников клиринга -CREATE TABLE IF NOT EXISTS S_DF01(ID bigint PRIMARY KEY, CURR_CODE varchar(12), ACCOUNT varchar(35), REMAINDER varchar(22), DEAL varchar(10), ACC_CODE varchar(5), DAT varchar(8), MARKET varchar(1), ACC_NAME varchar(30), ACC_TYPE varchar(2), SUMENGAGE varchar(22), SUMUNBLOCK varchar(22), FILE_TYPE varchar(1), FILE_NAME varchar(255), GENERATION_TIME timestamp, GENERATION_ID bigint); -COMMENT ON TABLE S_DF01 IS 'ДФ-01 Информация о денежных средствах, находящихся на торговых банковских счетах Участников клиринга'; - - -COMMENT ON COLUMN S_DF01.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN S_DF01.CURR_CODE IS 'Код валюты'; - - -COMMENT ON COLUMN S_DF01.ACCOUNT IS 'Код счета участника клиринга'; - - -COMMENT ON COLUMN S_DF01.REMAINDER IS 'Остаток денежных средств'; - - -COMMENT ON COLUMN S_DF01.DEAL IS 'Биржевой код участника клиринга'; - - -COMMENT ON COLUMN S_DF01.ACC_CODE IS 'Не используется в Системе'; - - -COMMENT ON COLUMN S_DF01.DAT IS 'Дата расчетов'; - - -COMMENT ON COLUMN S_DF01.MARKET IS 'Биржевая секция'; - - -COMMENT ON COLUMN S_DF01.ACC_NAME IS 'Наименование участника клиринга'; - - -COMMENT ON COLUMN S_DF01.ACC_TYPE IS 'Признак счета'; - - -COMMENT ON COLUMN S_DF01.SUMENGAGE IS 'Не используется в Системе'; - - -COMMENT ON COLUMN S_DF01.SUMUNBLOCK IS 'Не используется в Системе'; - - -COMMENT ON COLUMN S_DF01.FILE_TYPE IS 'Не используется в Системе'; - - -COMMENT ON COLUMN S_DF01.FILE_NAME IS 'Наименование входящего файла'; - - -COMMENT ON COLUMN S_DF01.GENERATION_TIME IS 'Дата и время обработки файла'; - - -COMMENT ON COLUMN S_DF01.GENERATION_ID IS 'Идентификатор взаимодействия'; - --- sDf02 - ДФ-02 Уведомление об исполнении операции загрузки денежных средств или уведомление об ошибке -CREATE TABLE IF NOT EXISTS S_DF02(ID bigint PRIMARY KEY, CURR_CODE varchar(12), ACCOUNT varchar(35), REMAINDER varchar(22), DEAL varchar(10), ACC_CODE varchar(5), DAT varchar(8), MARKET varchar(1), ACC_NAME varchar(30), ACC_TYPE varchar(2), SUMENGAGE varchar(22), SUMUNBLOCK varchar(22), FILE_TYPE varchar(1), RESULT varchar(3), GENERATION_TIME timestamp, GENERATION_ID bigint, IN_S_DF01_ID bigint); -COMMENT ON TABLE S_DF02 IS 'ДФ-02 Уведомление об исполнении операции загрузки денежных средств или уведомление об ошибке'; - - -COMMENT ON COLUMN S_DF02.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN S_DF02.CURR_CODE IS 'Код валюты'; - - -COMMENT ON COLUMN S_DF02.ACCOUNT IS 'Код счета участника клиринга'; - - -COMMENT ON COLUMN S_DF02.REMAINDER IS 'Остаток денежных средств'; - - -COMMENT ON COLUMN S_DF02.DEAL IS 'Биржевой код участника клиринга'; - - -COMMENT ON COLUMN S_DF02.ACC_CODE IS 'Не используется в Системе'; - - -COMMENT ON COLUMN S_DF02.DAT IS 'Дата расчетов'; - - -COMMENT ON COLUMN S_DF02.MARKET IS 'Биржевая секция'; - - -COMMENT ON COLUMN S_DF02.ACC_NAME IS 'Наименование участника клиринга'; - - -COMMENT ON COLUMN S_DF02.ACC_TYPE IS 'Признак счета'; - - -COMMENT ON COLUMN S_DF02.SUMENGAGE IS 'Не используется в Системе'; - - -COMMENT ON COLUMN S_DF02.SUMUNBLOCK IS 'Не используется в Системе'; - - -COMMENT ON COLUMN S_DF02.FILE_TYPE IS 'Не используется в Системе'; - - -COMMENT ON COLUMN S_DF02.RESULT IS 'Результат обработки каждой записи исходного файла ДФ-01'; - - -COMMENT ON COLUMN S_DF02.GENERATION_TIME IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN S_DF02.GENERATION_ID IS 'Идентификатор взаимодействия'; - - -COMMENT ON COLUMN S_DF02.IN_S_DF01_ID IS 'Идентификатор соответствующей записи из таблицы-источника'; - --- sDf03 - ДФ-03 Сводное платежное поручение -CREATE TABLE IF NOT EXISTS S_DF03(ID bigint PRIMARY KEY, SEG_TYPE varchar(1), DOC_TYPE varchar, DOCNM_REF varchar(16), DOCNMPREV varchar(16), PRIORITY varchar(1), SBANKCODE varchar(12), C_ACC_DEB varchar(35), SBANKNAM1 varchar(35), SBANKNAM2 varchar(35), SBANKNAM3 varchar(35), SBANKNAM4 varchar(35), SBANKNAM5 varchar(35), RBANKCODE varchar(12), C_ACC_CRED varchar(35), RBANKNAM1 varchar(35), RBANKNAM2 varchar(35), RBANKNAM3 varchar(35), RBANKNAM4 varchar(35), RBANKNAM5 varchar(35), PAY_DATE varchar, EXT_DATE varchar, PAY_VAL varchar(12), SUM_DEB varchar, SCLIENTN1 varchar(35), SCLIENTN2 varchar(35), SCLIENTN3 varchar(35), SCLIENTN4 varchar(35), SC_CODE varchar(12), ACC_DEB varchar(35), RCLIENTN1 varchar(35), RCLIENTN2 varchar(35), RCLIENTN3 varchar(35), RCLIENTN4 varchar(35), ACC_KR_1 varchar(35), ACC_KR_2 varchar(35), SP_CODE varchar(2), SPECIF_1 varchar(35), SPECIF_2 varchar(35), SPECIF_3 varchar(35), SPECIF_4 varchar(35), SPECIF_5 varchar(35), SPECIF_6 varchar(35), SEND_TYPE varchar(10), SERVDATE varchar(8), DOC_RESULT varchar(2), IMP_RESULT varchar(3), GENERATION_TIME timestamp, GENERATION_ID bigint); -COMMENT ON TABLE S_DF03 IS 'ДФ-03 Сводное платежное поручение'; - - -COMMENT ON COLUMN S_DF03.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN S_DF03.SEG_TYPE IS 'Код инициатора в КС'; - - -COMMENT ON COLUMN S_DF03.DOC_TYPE IS 'Тип документа'; - - -COMMENT ON COLUMN S_DF03.DOCNM_REF IS 'Ссылочный номер документа у отправителя'; - - -COMMENT ON COLUMN S_DF03.DOCNMPREV IS 'Ссылка на предшестввующий документ'; - - -COMMENT ON COLUMN S_DF03.PRIORITY IS 'Приоритет скорости отправления сообщения'; - - -COMMENT ON COLUMN S_DF03.SBANKCODE IS 'Код банка-плательщика'; - - -COMMENT ON COLUMN S_DF03.C_ACC_DEB IS 'Счет по дебету'; - - -COMMENT ON COLUMN S_DF03.SBANKNAM1 IS 'Наименование банка-плательщика'; - - -COMMENT ON COLUMN S_DF03.SBANKNAM2 IS ''; - - -COMMENT ON COLUMN S_DF03.SBANKNAM3 IS ''; - - -COMMENT ON COLUMN S_DF03.SBANKNAM4 IS ''; - - -COMMENT ON COLUMN S_DF03.SBANKNAM5 IS ''; - - -COMMENT ON COLUMN S_DF03.RBANKCODE IS 'Код банка-получателя'; - - -COMMENT ON COLUMN S_DF03.C_ACC_CRED IS 'Счет по кредиту'; - - -COMMENT ON COLUMN S_DF03.RBANKNAM1 IS 'Наименование банка-получателя'; - - -COMMENT ON COLUMN S_DF03.RBANKNAM2 IS ''; - - -COMMENT ON COLUMN S_DF03.RBANKNAM3 IS ''; - - -COMMENT ON COLUMN S_DF03.RBANKNAM4 IS ''; - - -COMMENT ON COLUMN S_DF03.RBANKNAM5 IS ''; - - -COMMENT ON COLUMN S_DF03.PAY_DATE IS 'Платеж-дата'; - - -COMMENT ON COLUMN S_DF03.EXT_DATE IS 'Дата по выписке'; - - -COMMENT ON COLUMN S_DF03.PAY_VAL IS 'Валюта платежа'; - - -COMMENT ON COLUMN S_DF03.SUM_DEB IS 'Сумма дебет '; - - -COMMENT ON COLUMN S_DF03.SCLIENTN1 IS 'Наименование клиента-плательщика'; - - -COMMENT ON COLUMN S_DF03.SCLIENTN2 IS ''; - - -COMMENT ON COLUMN S_DF03.SCLIENTN3 IS ''; - - -COMMENT ON COLUMN S_DF03.SCLIENTN4 IS ''; - - -COMMENT ON COLUMN S_DF03.SC_CODE IS 'Код клиента-плательщика'; - - -COMMENT ON COLUMN S_DF03.ACC_DEB IS 'Счет клиента-плательщика(дебет)'; - - -COMMENT ON COLUMN S_DF03.RCLIENTN1 IS 'Наименование клиента-получателя'; - - -COMMENT ON COLUMN S_DF03.RCLIENTN2 IS ''; - - -COMMENT ON COLUMN S_DF03.RCLIENTN3 IS ''; - - -COMMENT ON COLUMN S_DF03.RCLIENTN4 IS ''; - - -COMMENT ON COLUMN S_DF03.ACC_KR_1 IS 'Счет кредит'; - - -COMMENT ON COLUMN S_DF03.ACC_KR_2 IS ''; - - -COMMENT ON COLUMN S_DF03.SP_CODE IS 'Код назначения платежа'; - - -COMMENT ON COLUMN S_DF03.SPECIF_1 IS 'Назначение платежа'; - - -COMMENT ON COLUMN S_DF03.SPECIF_2 IS ''; - - -COMMENT ON COLUMN S_DF03.SPECIF_3 IS ''; - - -COMMENT ON COLUMN S_DF03.SPECIF_4 IS ''; - - -COMMENT ON COLUMN S_DF03.SPECIF_5 IS ''; - - -COMMENT ON COLUMN S_DF03.SPECIF_6 IS ''; - - -COMMENT ON COLUMN S_DF03.SEND_TYPE IS 'Тип отправления плат. поручения'; - - -COMMENT ON COLUMN S_DF03.SERVDATE IS 'Дата получения товара, оказания услуг в плат. поручении'; - - -COMMENT ON COLUMN S_DF03.DOC_RESULT IS ''; - - -COMMENT ON COLUMN S_DF03.IMP_RESULT IS 'Результат приема'; - - -COMMENT ON COLUMN S_DF03.GENERATION_TIME IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN S_DF03.GENERATION_ID IS 'Идентификатор взаимодействия'; - --- sDf04 - ДФ-04 Подтверждение переводов из Расчетной организации для СПВБ -CREATE TABLE IF NOT EXISTS S_DF04(ID bigint PRIMARY KEY, SEG_TYPE varchar(1), DOC_TYPE varchar, DOCNM_REF varchar(16), DOCNMPREV varchar(16), PRIORITY varchar(1), SBANKCODE varchar(12), C_ACC_DEB varchar(35), SBANKNAM1 varchar(35), SBANKNAM2 varchar(35), SBANKNAM3 varchar(35), SBANKNAM4 varchar(35), SBANKNAM5 varchar(35), RBANKCODE varchar(12), C_ACC_CRED varchar(35), RBANKNAM1 varchar(35), RBANKNAM2 varchar(35), RBANKNAM3 varchar(35), RBANKNAM4 varchar(35), RBANKNAM5 varchar(35), PAY_DATE varchar, EXT_DATE varchar, PAY_VAL varchar(12), SUM_DEB varchar, SCLIENTN1 varchar(35), SCLIENTN2 varchar(35), SCLIENTN3 varchar(35), SCLIENTN4 varchar(35), SC_CODE varchar(12), ACC_DEB varchar(35), RCLIENTN1 varchar(35), RCLIENTN2 varchar(35), RCLIENTN3 varchar(35), RCLIENTN4 varchar(35), ACC_KR_1 varchar(35), ACC_KR_2 varchar(35), SP_CODE varchar(2), SPECIF_1 varchar(35), SPECIF_2 varchar(35), SPECIF_3 varchar(35), SPECIF_4 varchar(35), SPECIF_5 varchar(35), SPECIF_6 varchar(35), SEND_TYPE varchar(10), SERVDATE varchar(8), DOC_RESULT varchar(2), IMP_RESULT varchar(3), FILE_NAME varchar(255), GENERATION_TIME timestamp, GENERATION_ID bigint); -COMMENT ON TABLE S_DF04 IS 'ДФ-04 Подтверждение переводов из Расчетной организации для СПВБ'; - - -COMMENT ON COLUMN S_DF04.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN S_DF04.SEG_TYPE IS 'Код инициатора в КС'; - - -COMMENT ON COLUMN S_DF04.DOC_TYPE IS 'Тип документа'; - - -COMMENT ON COLUMN S_DF04.DOCNM_REF IS 'Ссылочный номер документа у отправителя'; - - -COMMENT ON COLUMN S_DF04.DOCNMPREV IS 'Ссылка на предшестввующий документ'; - - -COMMENT ON COLUMN S_DF04.PRIORITY IS 'Приоритет скорости отправления сообщения'; - - -COMMENT ON COLUMN S_DF04.SBANKCODE IS 'Код банка-плательщика'; - - -COMMENT ON COLUMN S_DF04.C_ACC_DEB IS 'Счет по дебету'; - - -COMMENT ON COLUMN S_DF04.SBANKNAM1 IS 'Наименование банка-плательщика'; - - -COMMENT ON COLUMN S_DF04.SBANKNAM2 IS ''; - - -COMMENT ON COLUMN S_DF04.SBANKNAM3 IS ''; - - -COMMENT ON COLUMN S_DF04.SBANKNAM4 IS ''; - - -COMMENT ON COLUMN S_DF04.SBANKNAM5 IS ''; - - -COMMENT ON COLUMN S_DF04.RBANKCODE IS 'Код банка-получателя'; - - -COMMENT ON COLUMN S_DF04.C_ACC_CRED IS 'Счет по кредиту'; - - -COMMENT ON COLUMN S_DF04.RBANKNAM1 IS 'Наименование банка-получателя'; - - -COMMENT ON COLUMN S_DF04.RBANKNAM2 IS ''; - - -COMMENT ON COLUMN S_DF04.RBANKNAM3 IS ''; - - -COMMENT ON COLUMN S_DF04.RBANKNAM4 IS ''; - - -COMMENT ON COLUMN S_DF04.RBANKNAM5 IS ''; - - -COMMENT ON COLUMN S_DF04.PAY_DATE IS 'Платеж-дата'; - - -COMMENT ON COLUMN S_DF04.EXT_DATE IS 'Дата по выписке'; - - -COMMENT ON COLUMN S_DF04.PAY_VAL IS 'Валюта платежа'; - - -COMMENT ON COLUMN S_DF04.SUM_DEB IS 'Сумма дебет '; - - -COMMENT ON COLUMN S_DF04.SCLIENTN1 IS 'Наименование клиента-плательщика'; - - -COMMENT ON COLUMN S_DF04.SCLIENTN2 IS ''; - - -COMMENT ON COLUMN S_DF04.SCLIENTN3 IS ''; - - -COMMENT ON COLUMN S_DF04.SCLIENTN4 IS ''; - - -COMMENT ON COLUMN S_DF04.SC_CODE IS 'Код клиента-плательщика'; - - -COMMENT ON COLUMN S_DF04.ACC_DEB IS 'Счет клиента-плательщика(дебет)'; - - -COMMENT ON COLUMN S_DF04.RCLIENTN1 IS 'Наименование клиента-получателя'; - - -COMMENT ON COLUMN S_DF04.RCLIENTN2 IS ''; - - -COMMENT ON COLUMN S_DF04.RCLIENTN3 IS ''; - - -COMMENT ON COLUMN S_DF04.RCLIENTN4 IS ''; - - -COMMENT ON COLUMN S_DF04.ACC_KR_1 IS 'Счет кредит'; - - -COMMENT ON COLUMN S_DF04.ACC_KR_2 IS ''; - - -COMMENT ON COLUMN S_DF04.SP_CODE IS 'Код назначения платежа'; - - -COMMENT ON COLUMN S_DF04.SPECIF_1 IS 'Назначение платежа'; - - -COMMENT ON COLUMN S_DF04.SPECIF_2 IS ''; - - -COMMENT ON COLUMN S_DF04.SPECIF_3 IS ''; - - -COMMENT ON COLUMN S_DF04.SPECIF_4 IS ''; - - -COMMENT ON COLUMN S_DF04.SPECIF_5 IS ''; - - -COMMENT ON COLUMN S_DF04.SPECIF_6 IS ''; - - -COMMENT ON COLUMN S_DF04.SEND_TYPE IS 'Тип отправления плат. поручения'; - - -COMMENT ON COLUMN S_DF04.SERVDATE IS 'Дата получения товара, оказания услуг в плат. поручении'; - - -COMMENT ON COLUMN S_DF04.DOC_RESULT IS ''; - - -COMMENT ON COLUMN S_DF04.IMP_RESULT IS 'Результат приема'; - - -COMMENT ON COLUMN S_DF04.FILE_NAME IS 'Наименование входящего файла'; - - -COMMENT ON COLUMN S_DF04.GENERATION_TIME IS 'Дата и время обработки файла'; - - -COMMENT ON COLUMN S_DF04.GENERATION_ID IS 'Идентификатор взаимодействия'; - --- sDf05 - ДФ-05 Уведомление о завершении расчетов в ПРЦ -CREATE TABLE IF NOT EXISTS S_DF05(ID bigint PRIMARY KEY, TP numeric(72,18), DT date, TM time, PR varchar(1), GENERATION_TIME timestamp, GENERATION_ID bigint); -COMMENT ON TABLE S_DF05 IS 'ДФ-05 Уведомление о завершении расчетов в ПРЦ'; - - -COMMENT ON COLUMN S_DF05.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN S_DF05.TP IS 'Тип документа'; - - -COMMENT ON COLUMN S_DF05.DT IS 'Дата завершения расчетов'; - - -COMMENT ON COLUMN S_DF05.TM IS 'Время завершения расчетов'; - - -COMMENT ON COLUMN S_DF05.PR IS 'Результат обработки запроса'; - - -COMMENT ON COLUMN S_DF05.GENERATION_TIME IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN S_DF05.GENERATION_ID IS 'Идентификатор взаимодействия'; - --- sDf08 - ДФ-08 Запрос остатков по всем счетам -CREATE TABLE IF NOT EXISTS S_DF08(ID bigint PRIMARY KEY, NUMBER numeric(72,18), DATETIME timestamp, GENERATION_TIME timestamp, GENERATION_ID bigint); -COMMENT ON TABLE S_DF08 IS 'ДФ-08 Запрос остатков по всем счетам'; - - -COMMENT ON COLUMN S_DF08.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN S_DF08.NUMBER IS 'Номер запроса остатков по счетам (linked to currency)'; - - -COMMENT ON COLUMN S_DF08.DATETIME IS 'Дата и время сообщения'; - - -COMMENT ON COLUMN S_DF08.GENERATION_TIME IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN S_DF08.GENERATION_ID IS 'Идентификатор взаимодействия'; - --- sDf09 - ДФ-09 Уведомление о поступлении средств на клиринговый счет -CREATE TABLE IF NOT EXISTS S_DF09(ID bigint PRIMARY KEY, ACCOUNT varchar(20), SUM numeric(72,18), MARKET varchar(1), TYPE varchar(1), NUMBER numeric(72,18), _I_N_N numeric(72,18), FILE_NAME varchar(255), GENERATION_TIME timestamp, GENERATION_ID bigint); -COMMENT ON TABLE S_DF09 IS 'ДФ-09 Уведомление о поступлении средств на клиринговый счет'; - - -COMMENT ON COLUMN S_DF09.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN S_DF09.ACCOUNT IS 'Номер счета участника торгов'; - - -COMMENT ON COLUMN S_DF09.SUM IS 'Сумма платежного документа (операции)'; - - -COMMENT ON COLUMN S_DF09.MARKET IS 'Код сегмента рынка'; - - -COMMENT ON COLUMN S_DF09.TYPE IS 'Код типа платежного документа (операции)'; - - -COMMENT ON COLUMN S_DF09.NUMBER IS 'Номер платежного документа (операции)'; - - -COMMENT ON COLUMN S_DF09._I_N_N IS 'ИНН'; - - -COMMENT ON COLUMN S_DF09.FILE_NAME IS 'Наименование входящего файла'; - - -COMMENT ON COLUMN S_DF09.GENERATION_TIME IS 'Дата и время обработки файла'; - - -COMMENT ON COLUMN S_DF09.GENERATION_ID IS 'Идентификатор взаимодействия'; - --- sDf10 - ДФ-10 Подтверждение о загрузке по поступлению на клиринговый счет -CREATE TABLE IF NOT EXISTS S_DF10(ID bigint PRIMARY KEY, ACCOUNT varchar(20), SUM numeric(72,18), MARKET varchar(1), TYPE varchar(1), NUMBER numeric(72,18), _I_N_N numeric(72,18), RESULT varchar(3), GENERATION_TIME timestamp, GENERATION_ID bigint, IN_S_DF09_ID bigint); -COMMENT ON TABLE S_DF10 IS 'ДФ-10 Подтверждение о загрузке по поступлению на клиринговый счет'; - - -COMMENT ON COLUMN S_DF10.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN S_DF10.ACCOUNT IS 'Номер счета участника торгов'; - - -COMMENT ON COLUMN S_DF10.SUM IS 'Сумма платежного документа (операции)'; - - -COMMENT ON COLUMN S_DF10.MARKET IS 'Код сегмента рынка'; - - -COMMENT ON COLUMN S_DF10.TYPE IS 'Код типа платежного документа (операции)'; - - -COMMENT ON COLUMN S_DF10.NUMBER IS 'Номер платежного документа (операции)'; - - -COMMENT ON COLUMN S_DF10._I_N_N IS 'ИНН'; - - -COMMENT ON COLUMN S_DF10.RESULT IS 'Результат приема'; - - -COMMENT ON COLUMN S_DF10.GENERATION_TIME IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN S_DF10.GENERATION_ID IS 'Идентификатор взаимодействия'; - - -COMMENT ON COLUMN S_DF10.IN_S_DF09_ID IS 'Идентификатор соответствующей записи из таблицы-источника'; - --- sDf11 - ДФ-11 Из КС в ПРЦ Платежное распоряжение на перевод средств с ТБС Участника на КС Инициатора -CREATE TABLE IF NOT EXISTS S_DF11(ID bigint PRIMARY KEY, SEG_TYPE varchar(1), DOC_TYPE varchar, DOCNM_REF varchar(16), DOCNMPREV varchar(16), PRIORITY varchar(1), SBANKCODE varchar(12), C_ACC_DEB varchar(35), SBANKNAM1 varchar(35), SBANKNAM2 varchar(35), SBANKNAM3 varchar(35), SBANKNAM4 varchar(35), SBANKNAM5 varchar(35), RBANKCODE varchar(12), C_ACC_CRED varchar(35), RBANKNAM1 varchar(35), RBANKNAM2 varchar(35), RBANKNAM3 varchar(35), RBANKNAM4 varchar(35), RBANKNAM5 varchar(35), PAY_DATE varchar, EXT_DATE varchar, PAY_VAL varchar(12), SUM_DEB varchar, SCLIENTN1 varchar(35), SCLIENTN2 varchar(35), SCLIENTN3 varchar(35), SCLIENTN4 varchar(35), SC_CODE varchar(12), ACC_DEB varchar(35), RCLIENTN1 varchar(35), RCLIENTN2 varchar(35), RCLIENTN3 varchar(35), RCLIENTN4 varchar(35), ACC_KR_1 varchar(35), ACC_KR_2 varchar(35), SP_CODE varchar(2), SPECIF_1 varchar(35), SPECIF_2 varchar(35), SPECIF_3 varchar(35), SPECIF_4 varchar(35), SPECIF_5 varchar(35), SPECIF_6 varchar(35), SEND_TYPE varchar(10), SERVDATE varchar(8), DOC_RESULT varchar(2), GENERATION_TIME timestamp, GENERATION_ID bigint); -COMMENT ON TABLE S_DF11 IS 'ДФ-11 Из КС в ПРЦ Платежное распоряжение на перевод средств с ТБС Участника на КС Инициатора'; - - -COMMENT ON COLUMN S_DF11.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN S_DF11.SEG_TYPE IS 'Код инициатора в КС'; - - -COMMENT ON COLUMN S_DF11.DOC_TYPE IS 'Тип документа'; - - -COMMENT ON COLUMN S_DF11.DOCNM_REF IS 'Ссылочный номер документа у отправителя'; - - -COMMENT ON COLUMN S_DF11.DOCNMPREV IS 'Ссылка на предшестввующий документ'; - - -COMMENT ON COLUMN S_DF11.PRIORITY IS 'Приоритет скорости отправления сообщения'; - - -COMMENT ON COLUMN S_DF11.SBANKCODE IS 'Код банка-плательщика'; - - -COMMENT ON COLUMN S_DF11.C_ACC_DEB IS 'Счет по дебету'; - - -COMMENT ON COLUMN S_DF11.SBANKNAM1 IS 'Наименование банка-плательщика'; - - -COMMENT ON COLUMN S_DF11.SBANKNAM2 IS ''; - - -COMMENT ON COLUMN S_DF11.SBANKNAM3 IS ''; - - -COMMENT ON COLUMN S_DF11.SBANKNAM4 IS ''; - - -COMMENT ON COLUMN S_DF11.SBANKNAM5 IS ''; - - -COMMENT ON COLUMN S_DF11.RBANKCODE IS 'Код банка-получателя'; - - -COMMENT ON COLUMN S_DF11.C_ACC_CRED IS 'Счет по кредиту'; - - -COMMENT ON COLUMN S_DF11.RBANKNAM1 IS 'Наименование банка-получателя'; - - -COMMENT ON COLUMN S_DF11.RBANKNAM2 IS ''; - - -COMMENT ON COLUMN S_DF11.RBANKNAM3 IS ''; - - -COMMENT ON COLUMN S_DF11.RBANKNAM4 IS ''; - - -COMMENT ON COLUMN S_DF11.RBANKNAM5 IS ''; - - -COMMENT ON COLUMN S_DF11.PAY_DATE IS 'Платеж-дата'; - - -COMMENT ON COLUMN S_DF11.EXT_DATE IS 'Дата по выписке'; - - -COMMENT ON COLUMN S_DF11.PAY_VAL IS 'Валюта платежа'; - - -COMMENT ON COLUMN S_DF11.SUM_DEB IS 'Сумма дебет '; - - -COMMENT ON COLUMN S_DF11.SCLIENTN1 IS 'Наименование клиента-плательщика'; - - -COMMENT ON COLUMN S_DF11.SCLIENTN2 IS ''; - - -COMMENT ON COLUMN S_DF11.SCLIENTN3 IS ''; - - -COMMENT ON COLUMN S_DF11.SCLIENTN4 IS ''; - - -COMMENT ON COLUMN S_DF11.SC_CODE IS 'Код клиента-плательщика'; - - -COMMENT ON COLUMN S_DF11.ACC_DEB IS 'Счет клиента-плательщика(дебет)'; - - -COMMENT ON COLUMN S_DF11.RCLIENTN1 IS 'Наименование клиента-получателя'; - - -COMMENT ON COLUMN S_DF11.RCLIENTN2 IS ''; - - -COMMENT ON COLUMN S_DF11.RCLIENTN3 IS ''; - - -COMMENT ON COLUMN S_DF11.RCLIENTN4 IS ''; - - -COMMENT ON COLUMN S_DF11.ACC_KR_1 IS 'Счет кредит'; - - -COMMENT ON COLUMN S_DF11.ACC_KR_2 IS ''; - - -COMMENT ON COLUMN S_DF11.SP_CODE IS 'Код назначения платежа'; - - -COMMENT ON COLUMN S_DF11.SPECIF_1 IS 'Назначение платежа'; - - -COMMENT ON COLUMN S_DF11.SPECIF_2 IS ''; - - -COMMENT ON COLUMN S_DF11.SPECIF_3 IS ''; - - -COMMENT ON COLUMN S_DF11.SPECIF_4 IS ''; - - -COMMENT ON COLUMN S_DF11.SPECIF_5 IS ''; - - -COMMENT ON COLUMN S_DF11.SPECIF_6 IS ''; - - -COMMENT ON COLUMN S_DF11.SEND_TYPE IS 'Тип отправления плат. поручения'; - - -COMMENT ON COLUMN S_DF11.SERVDATE IS 'Дата получения товара, оказания услуг в плат. поручении'; - - -COMMENT ON COLUMN S_DF11.DOC_RESULT IS ''; - - -COMMENT ON COLUMN S_DF11.GENERATION_TIME IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN S_DF11.GENERATION_ID IS 'Идентификатор взаимодействия'; - --- sDf12 - ДФ-12 Из ПРЦ в КС Информация о блокировке/разблокировке/закрытии ТБС УК -CREATE TABLE IF NOT EXISTS S_DF12(ID bigint PRIMARY KEY, ACCOUNT varchar(25), DEAL varchar(4), STATUS bigint, FILE_NAME varchar(255), GENERATION_TIME timestamp, GENERATION_ID bigint); -COMMENT ON TABLE S_DF12 IS 'ДФ-12 Из ПРЦ в КС Информация о блокировке/разблокировке/закрытии ТБС УК'; - - -COMMENT ON COLUMN S_DF12.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN S_DF12.ACCOUNT IS 'Код счета участника клиринга'; - - -COMMENT ON COLUMN S_DF12.DEAL IS 'Биржевой код участника клиринга'; - - -COMMENT ON COLUMN S_DF12.STATUS IS 'Статус счета'; - - -COMMENT ON COLUMN S_DF12.FILE_NAME IS 'Наименование входящего файла'; - - -COMMENT ON COLUMN S_DF12.GENERATION_TIME IS 'Дата и время обработки файла'; - - -COMMENT ON COLUMN S_DF12.GENERATION_ID IS 'Идентификатор взаимодействия'; - --- sDf13 - ДФ-13 Вывод свободных средств для инициаторов категории В с клирингового счета 30414/7 - платежное поручение АО СПВБ на вывод средств из РО -CREATE TABLE IF NOT EXISTS S_DF13(ID bigint PRIMARY KEY, SEG_TYPE varchar(1), DOC_TYPE varchar, DOCNM_REF varchar(16), DOCNMPREV varchar(16), PRIORITY varchar(1), SBANKCODE varchar(12), C_ACC_DEB varchar(35), SBANKNAM1 varchar(35), SBANKNAM2 varchar(35), SBANKNAM3 varchar(35), SBANKNAM4 varchar(35), SBANKNAM5 varchar(35), RBANKCODE varchar(12), C_ACC_CRED varchar(35), RBANKNAM1 varchar(35), OP_TYPE varchar(2), OP_ORDER varchar(1), RBANKNAM4 varchar(35), RBANKNAM5 varchar(35), PAY_DATE varchar, EXT_DATE varchar, PAY_VAL varchar(12), SUM_DEB varchar, SCLIENTN1 varchar(35), INN_DEB varchar(12), KPP_DEB varchar(9), SCLIENTN4 varchar(35), SC_CODE varchar(12), ACC_DEB varchar(35), RCLIENTN1 varchar(35), INN_CRED varchar(12), KPP_CRED varchar(9), RCLIENTN4 varchar(35), ACC_KR_1 varchar(35), ACC_KR_2 varchar(35), SP_CODE varchar(2), SPECIF_1 varchar(35), SPECIF_2 varchar(35), SPECIF_3 varchar(35), SPECIF_4 varchar(35), SPECIF_5 varchar(35), SPECIF_6 varchar(35), SEND_TYPE varchar(10), SERVDATE varchar(8), DOC_RESULT varchar(2), GENERATION_TIME timestamp, GENERATION_ID bigint); -COMMENT ON TABLE S_DF13 IS 'ДФ-13 Вывод свободных средств для инициаторов категории В с клирингового счета 30414/7 - платежное поручение АО СПВБ на вывод средств из РО'; - - -COMMENT ON COLUMN S_DF13.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN S_DF13.SEG_TYPE IS 'Код инициатора в КС'; - - -COMMENT ON COLUMN S_DF13.DOC_TYPE IS 'Тип документа'; - - -COMMENT ON COLUMN S_DF13.DOCNM_REF IS 'Ссылочный номер документа у отправителя'; - - -COMMENT ON COLUMN S_DF13.DOCNMPREV IS 'Ссылка на предшестввующий документ'; - - -COMMENT ON COLUMN S_DF13.PRIORITY IS 'Приоритет скорости отправления сообщения'; - - -COMMENT ON COLUMN S_DF13.SBANKCODE IS 'Код банка-плательщика'; - - -COMMENT ON COLUMN S_DF13.C_ACC_DEB IS 'Кор счет банка - плательщика в системе - акт.'; - - -COMMENT ON COLUMN S_DF13.SBANKNAM1 IS 'Наименование банка-плательщика'; - - -COMMENT ON COLUMN S_DF13.SBANKNAM2 IS ''; - - -COMMENT ON COLUMN S_DF13.SBANKNAM3 IS ''; - - -COMMENT ON COLUMN S_DF13.SBANKNAM4 IS ''; - - -COMMENT ON COLUMN S_DF13.SBANKNAM5 IS ''; - - -COMMENT ON COLUMN S_DF13.RBANKCODE IS 'Код банка-получателя'; - - -COMMENT ON COLUMN S_DF13.C_ACC_CRED IS 'Кор счет банка - получателя в системе - акт. '; - - -COMMENT ON COLUMN S_DF13.RBANKNAM1 IS 'Наименование банка-получателя'; - - -COMMENT ON COLUMN S_DF13.OP_TYPE IS 'Вид операции'; - - -COMMENT ON COLUMN S_DF13.OP_ORDER IS 'Очередность платежа'; - - -COMMENT ON COLUMN S_DF13.RBANKNAM4 IS ''; - - -COMMENT ON COLUMN S_DF13.RBANKNAM5 IS ''; - - -COMMENT ON COLUMN S_DF13.PAY_DATE IS 'Платеж-дата'; - - -COMMENT ON COLUMN S_DF13.EXT_DATE IS 'Дата по выписке'; - - -COMMENT ON COLUMN S_DF13.PAY_VAL IS 'Валюта платежа'; - - -COMMENT ON COLUMN S_DF13.SUM_DEB IS 'Сумма дебет '; - - -COMMENT ON COLUMN S_DF13.SCLIENTN1 IS 'Наименование клиента-плательщика'; - - -COMMENT ON COLUMN S_DF13.INN_DEB IS 'ИНН клиента-плательщика'; - - -COMMENT ON COLUMN S_DF13.KPP_DEB IS 'КПП клиента-плательщика'; - - -COMMENT ON COLUMN S_DF13.SCLIENTN4 IS ''; - - -COMMENT ON COLUMN S_DF13.SC_CODE IS 'Код клиента-плательщика'; - - -COMMENT ON COLUMN S_DF13.ACC_DEB IS 'Счет клиента-плательщика(дебет)'; - - -COMMENT ON COLUMN S_DF13.RCLIENTN1 IS 'Наименование клиента-получателя'; - - -COMMENT ON COLUMN S_DF13.INN_CRED IS 'ИНН клиента-получателя'; - - -COMMENT ON COLUMN S_DF13.KPP_CRED IS 'КПП клиента-получателя'; - - -COMMENT ON COLUMN S_DF13.RCLIENTN4 IS ''; - - -COMMENT ON COLUMN S_DF13.ACC_KR_1 IS 'Счет получателя'; - - -COMMENT ON COLUMN S_DF13.ACC_KR_2 IS ''; - - -COMMENT ON COLUMN S_DF13.SP_CODE IS 'Код назначения платежа'; - - -COMMENT ON COLUMN S_DF13.SPECIF_1 IS 'Назначение платежа'; - - -COMMENT ON COLUMN S_DF13.SPECIF_2 IS 'Назначение платежа'; - - -COMMENT ON COLUMN S_DF13.SPECIF_3 IS 'Назначение платежа'; - - -COMMENT ON COLUMN S_DF13.SPECIF_4 IS 'Назначение платежа'; - - -COMMENT ON COLUMN S_DF13.SPECIF_5 IS 'Назначение платежа'; - - -COMMENT ON COLUMN S_DF13.SPECIF_6 IS 'Назначение платежа'; - - -COMMENT ON COLUMN S_DF13.SEND_TYPE IS 'Вид платежа'; - - -COMMENT ON COLUMN S_DF13.SERVDATE IS 'Дата получения товара, оказания услуг в плат. поручении'; - - -COMMENT ON COLUMN S_DF13.DOC_RESULT IS ''; - - -COMMENT ON COLUMN S_DF13.GENERATION_TIME IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN S_DF13.GENERATION_ID IS 'Идентификатор взаимодействия'; - --- sDf16 - ДФ-16 Формат запроса по возврату депозита или дозачисление/списание денежных средств -CREATE TABLE IF NOT EXISTS S_DF16(ID bigint PRIMARY KEY, ACCOUNT varchar(20), SUM numeric(72,18), MARKET varchar(1), TYPE varchar(1), _I_N_N numeric(72,18), _B_I_C numeric(72,18), _S_P_E_C varchar(255), NUMBER numeric(72,18), FILE_NAME varchar(255), GENERATION_TIME timestamp, GENERATION_ID bigint); -COMMENT ON TABLE S_DF16 IS 'ДФ-16 Формат запроса по возврату депозита или дозачисление/списание денежных средств'; - - -COMMENT ON COLUMN S_DF16.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN S_DF16.ACCOUNT IS 'Номер счета участника торгов'; - - -COMMENT ON COLUMN S_DF16.SUM IS 'Сумма платежного документа (операции)'; - - -COMMENT ON COLUMN S_DF16.MARKET IS 'Код сегмента рынка'; - - -COMMENT ON COLUMN S_DF16.TYPE IS 'Код типа платежного документа (операции)'; - - -COMMENT ON COLUMN S_DF16._I_N_N IS 'ИНН'; - - -COMMENT ON COLUMN S_DF16._B_I_C IS 'БИК'; - - -COMMENT ON COLUMN S_DF16._S_P_E_C IS 'Назначение'; - - -COMMENT ON COLUMN S_DF16.NUMBER IS 'Номер платежного документа (операции)'; - - -COMMENT ON COLUMN S_DF16.FILE_NAME IS 'Наименование входящего файла'; - - -COMMENT ON COLUMN S_DF16.GENERATION_TIME IS 'Дата и время обработки файла'; - - -COMMENT ON COLUMN S_DF16.GENERATION_ID IS 'Идентификатор взаимодействия'; - --- sDf17 - ДФ-17 Формат ответа на запрос по возврату депозита или дозачисление/списание денежных средств -CREATE TABLE IF NOT EXISTS S_DF17(ID bigint PRIMARY KEY, ACCOUNT varchar(20), SUM numeric(72,18), MARKET varchar(1), TYPE varchar(1), _I_N_N numeric(72,18), _B_I_C numeric(72,18), _S_P_E_C varchar(255), NUMBER numeric(72,18), RESULT numeric(72,18), GENERATION_TIME timestamp, GENERATION_ID bigint, IN_S_DF16_ID bigint); -COMMENT ON TABLE S_DF17 IS 'ДФ-17 Формат ответа на запрос по возврату депозита или дозачисление/списание денежных средств'; - - -COMMENT ON COLUMN S_DF17.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN S_DF17.ACCOUNT IS 'Номер счета участника торгов'; - - -COMMENT ON COLUMN S_DF17.SUM IS 'Сумма платежного документа (операции)'; - - -COMMENT ON COLUMN S_DF17.MARKET IS 'Код сегмента рынка'; - - -COMMENT ON COLUMN S_DF17.TYPE IS 'Код типа платежного документа (операции)'; - - -COMMENT ON COLUMN S_DF17._I_N_N IS 'ИНН'; - - -COMMENT ON COLUMN S_DF17._B_I_C IS 'БИК'; - - -COMMENT ON COLUMN S_DF17._S_P_E_C IS 'Назначение'; - - -COMMENT ON COLUMN S_DF17.NUMBER IS 'Номер платежного документа (операции)'; - - -COMMENT ON COLUMN S_DF17.RESULT IS 'Код завершения операции'; - - -COMMENT ON COLUMN S_DF17.GENERATION_TIME IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN S_DF17.GENERATION_ID IS 'Идентификатор взаимодействия'; - - -COMMENT ON COLUMN S_DF17.IN_S_DF16_ID IS 'Идентификатор соответствующей записи из таблицы-источника'; - --- sDf18 - ДФ-18 Из КС в ПРЦ Квитанция о получении информации о состоянии счета (блокировка/разблокировка/закрытие) -CREATE TABLE IF NOT EXISTS S_DF18(ID bigint PRIMARY KEY, ACCOUNT varchar(25), DEAL varchar(4), STATUS bigint, RESULT numeric(72,18), GENERATION_TIME timestamp, GENERATION_ID bigint, IN_S_DF12_ID bigint); -COMMENT ON TABLE S_DF18 IS 'ДФ-18 Из КС в ПРЦ Квитанция о получении информации о состоянии счета (блокировка/разблокировка/закрытие)'; - - -COMMENT ON COLUMN S_DF18.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN S_DF18.ACCOUNT IS 'Код счета участника клиринга'; - - -COMMENT ON COLUMN S_DF18.DEAL IS 'Биржевой код участника клиринга'; - - -COMMENT ON COLUMN S_DF18.STATUS IS 'Статус счета'; - - -COMMENT ON COLUMN S_DF18.RESULT IS 'Код завершения операции'; - - -COMMENT ON COLUMN S_DF18.GENERATION_TIME IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN S_DF18.GENERATION_ID IS 'Идентификатор взаимодействия'; - - -COMMENT ON COLUMN S_DF18.IN_S_DF12_ID IS 'Идентификатор соответствующей записи из таблицы-источника'; - --- trade_arqa - Выгрузка сделок из торговой системы -CREATE TABLE IF NOT EXISTS TRADE_ARQA(TRADE_NUM numeric(72,18), SEC_CODE varchar(255), TRADE_DATE_TIME timestamp, SETTLE_DATE date, PRICE numeric(72,18), VALUE numeric(72,18), QTY numeric(72,18), ACCRUEDINT numeric(72,18), FIRM_ID varchar(255), CLIENT_CODE varchar(255), EXCHANGE_COMMISSION numeric(72,18), CLASS_CODE varchar(255), OPERATION varchar(255), ISSUE_ACCOUNT varchar(255), MONEY_ACCOUNT varchar(255), TRADE_TYPE char(4), DAYS_TO_MAT_DATE numeric(72,18), COLLATERAL char(4), SETTLE_CODE varchar(255)); -COMMENT ON TABLE TRADE_ARQA IS 'Выгрузка сделок из торговой системы'; - - -COMMENT ON COLUMN TRADE_ARQA.TRADE_NUM IS 'Номер сделки'; - - -COMMENT ON COLUMN TRADE_ARQA.SEC_CODE IS 'Код ценной бумаги'; - - -COMMENT ON COLUMN TRADE_ARQA.TRADE_DATE_TIME IS 'Дата-время сделки'; - - -COMMENT ON COLUMN TRADE_ARQA.SETTLE_DATE IS 'Плановая дата исполнения сделки'; - - -COMMENT ON COLUMN TRADE_ARQA.PRICE IS 'Цена сделки'; - - -COMMENT ON COLUMN TRADE_ARQA.VALUE IS 'Сумма сделки'; - - -COMMENT ON COLUMN TRADE_ARQA.QTY IS 'Количество лотов по сделке'; - - -COMMENT ON COLUMN TRADE_ARQA.ACCRUEDINT IS 'НКД за 1 ценную бумагу'; - - -COMMENT ON COLUMN TRADE_ARQA.FIRM_ID IS 'ID клиента в КС'; - - -COMMENT ON COLUMN TRADE_ARQA.CLIENT_CODE IS 'Код участника торгов = Код участника клиринга = Код участника расчетов'; - - -COMMENT ON COLUMN TRADE_ARQA.EXCHANGE_COMMISSION IS 'Комиссия по сделке'; - - -COMMENT ON COLUMN TRADE_ARQA.CLASS_CODE IS 'Код класса сделки из новой ТС'; - - -COMMENT ON COLUMN TRADE_ARQA.OPERATION IS 'Тип плеча (Купля/Продажа)'; - - -COMMENT ON COLUMN TRADE_ARQA.ISSUE_ACCOUNT IS 'Счет для учета ценной бумаги'; - - -COMMENT ON COLUMN TRADE_ARQA.MONEY_ACCOUNT IS 'Счет для учета денежных средств'; - - -COMMENT ON COLUMN TRADE_ARQA.TRADE_TYPE IS 'Первичное размещение/торги'; - - -COMMENT ON COLUMN TRADE_ARQA.DAYS_TO_MAT_DATE IS 'Количество дней до погашения'; - - -COMMENT ON COLUMN TRADE_ARQA.COLLATERAL IS 'Признак залога (не используется)'; - - -COMMENT ON COLUMN TRADE_ARQA.SETTLE_CODE IS 'Код периода сделки из новой ТС'; - --- notification - Сообщения -CREATE TABLE IF NOT EXISTS NOTIFICATION(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, SENDER_ID bigint, ADDRESSEE_ID bigint, OBJECT_TYPE char(4), OBJECT_ID timestamp, NOTIFICATION_STATUS char(4)); -COMMENT ON TABLE NOTIFICATION IS 'Сообщения'; - - -COMMENT ON COLUMN NOTIFICATION.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN NOTIFICATION.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN NOTIFICATION.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN NOTIFICATION.CLEARING_DATE IS 'Дата'; - - -COMMENT ON COLUMN NOTIFICATION.SENDER_ID IS 'Идентификатор участника отправителя (linked to company)'; - - -COMMENT ON COLUMN NOTIFICATION.ADDRESSEE_ID IS 'Идентификатор участника получателя (linked to company)'; - - -COMMENT ON COLUMN NOTIFICATION.OBJECT_TYPE IS 'Тип объекта (linked to objectType)'; - - -COMMENT ON COLUMN NOTIFICATION.OBJECT_ID IS 'Идентификатор объекта'; - - -COMMENT ON COLUMN NOTIFICATION.NOTIFICATION_STATUS IS 'Статус сообщения (linked to notificationStatus)'; - - --- History log of notification - Сообщения -CREATE TABLE IF NOT EXISTS NOTIFICATION_HISTORY(NOTIFICATION_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, SENDER_ID bigint, ADDRESSEE_ID bigint, OBJECT_TYPE char(4), OBJECT_ID timestamp, NOTIFICATION_STATUS char(4)); -COMMENT ON TABLE NOTIFICATION_HISTORY IS 'История изменений таблицы notification'; -COMMENT ON COLUMN NOTIFICATION_HISTORY.NOTIFICATION_ID IS 'Идентификатор записи в таблице NOTIFICATION'; -COMMENT ON COLUMN NOTIFICATION_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN NOTIFICATION_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN NOTIFICATION_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN NOTIFICATION_HISTORY.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN NOTIFICATION_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN NOTIFICATION_HISTORY.CLEARING_DATE IS 'Дата'; - -COMMENT ON COLUMN NOTIFICATION_HISTORY.SENDER_ID IS 'Идентификатор участника отправителя (linked to company)'; - -COMMENT ON COLUMN NOTIFICATION_HISTORY.ADDRESSEE_ID IS 'Идентификатор участника получателя (linked to company)'; - -COMMENT ON COLUMN NOTIFICATION_HISTORY.OBJECT_TYPE IS 'Тип объекта (linked to objectType)'; - -COMMENT ON COLUMN NOTIFICATION_HISTORY.OBJECT_ID IS 'Идентификатор объекта'; - -COMMENT ON COLUMN NOTIFICATION_HISTORY.NOTIFICATION_STATUS IS 'Статус сообщения (linked to notificationStatus)'; - --- session - Клиринговая сессия -CREATE TABLE IF NOT EXISTS SESSION(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, SESSION_STATUS char(4)); -COMMENT ON TABLE SESSION IS 'Клиринговая сессия'; - - -COMMENT ON COLUMN SESSION.ID IS 'Идентификатор записи'; - - -COMMENT ON COLUMN SESSION.CREATED_AT IS 'Дата и время создания записи'; - - -COMMENT ON COLUMN SESSION.UPDATED_AT IS 'Дата и время изменения записи'; - - -COMMENT ON COLUMN SESSION.CLEARING_DATE IS 'Дата'; - - -COMMENT ON COLUMN SESSION.SESSION_STATUS IS 'Статус клиринговой сессии (linked to sessionStatus)'; - - --- History log of session - Клиринговая сессия -CREATE TABLE IF NOT EXISTS SESSION_HISTORY(SESSION_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, SESSION_STATUS char(4)); -COMMENT ON TABLE SESSION_HISTORY IS 'История изменений таблицы session'; -COMMENT ON COLUMN SESSION_HISTORY.SESSION_ID IS 'Идентификатор записи в таблице SESSION'; -COMMENT ON COLUMN SESSION_HISTORY.EVENT_TIME IS 'Дата и время изменения'; -COMMENT ON COLUMN SESSION_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; - -COMMENT ON COLUMN SESSION_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN SESSION_HISTORY.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN SESSION_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN SESSION_HISTORY.CLEARING_DATE IS 'Дата'; - -COMMENT ON COLUMN SESSION_HISTORY.SESSION_STATUS IS 'Статус клиринговой сессии (linked to sessionStatus)'; - - /* views */ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- Data types +-- DB version: 2.4.0.0 +/* Dictionaries */ + +-- chargeDirection - Направление начисления комиссии +CREATE TABLE IF NOT EXISTS CHARGE_DIRECTION_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE CHARGE_DIRECTION_DICTIONARY IS 'Направление начисления комиссии'; + +COMMENT ON COLUMN CHARGE_DIRECTION_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN CHARGE_DIRECTION_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN CHARGE_DIRECTION_DICTIONARY.NAME IS 'Направление комиссии'; + +-- chargeType - Справочник типов комиссий +CREATE TABLE IF NOT EXISTS CHARGE_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE CHARGE_TYPE_DICTIONARY IS 'Справочник типов комиссий'; + +COMMENT ON COLUMN CHARGE_TYPE_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN CHARGE_TYPE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN CHARGE_TYPE_DICTIONARY.NAME IS 'Тип комиссии'; + +-- courierType - Способ доставки документа +CREATE TABLE IF NOT EXISTS COURIER_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE COURIER_TYPE_DICTIONARY IS 'Способ доставки документа'; + +COMMENT ON COLUMN COURIER_TYPE_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN COURIER_TYPE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN COURIER_TYPE_DICTIONARY.NAME IS 'Способ доставки'; + +-- termType - Справочник видов инструментов денежного рынка +CREATE TABLE IF NOT EXISTS TERM_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE TERM_TYPE_DICTIONARY IS 'Справочник видов инструментов денежного рынка'; + +COMMENT ON COLUMN TERM_TYPE_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN TERM_TYPE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN TERM_TYPE_DICTIONARY.NAME IS 'Наименование'; + +-- task - Справочник задач +CREATE TABLE IF NOT EXISTS TASK_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(150)); +COMMENT ON TABLE TASK_DICTIONARY IS 'Справочник задач'; + +COMMENT ON COLUMN TASK_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN TASK_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN TASK_DICTIONARY.NAME IS 'Задача'; + +-- taskStatus - Справочник статусов задач +CREATE TABLE IF NOT EXISTS TASK_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE TASK_STATUS_DICTIONARY IS 'Справочник статусов задач'; + +COMMENT ON COLUMN TASK_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN TASK_STATUS_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN TASK_STATUS_DICTIONARY.NAME IS 'Статус'; + +-- dayStatus - Справочник статусов дней +CREATE TABLE IF NOT EXISTS DAY_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE DAY_STATUS_DICTIONARY IS 'Справочник статусов дней'; + +COMMENT ON COLUMN DAY_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN DAY_STATUS_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN DAY_STATUS_DICTIONARY.NAME IS 'Статус дня'; + +-- transactionStatus - Справочник статусов транзакций +CREATE TABLE IF NOT EXISTS TRANSACTION_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE TRANSACTION_STATUS_DICTIONARY IS 'Справочник статусов транзакций'; + +COMMENT ON COLUMN TRANSACTION_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN TRANSACTION_STATUS_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN TRANSACTION_STATUS_DICTIONARY.NAME IS 'Статус транзакции'; + +-- parent - Справочник источников +CREATE TABLE IF NOT EXISTS PARENT_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE PARENT_DICTIONARY IS 'Справочник источников'; + +COMMENT ON COLUMN PARENT_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN PARENT_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN PARENT_DICTIONARY.NAME IS 'Наименование'; + +-- clearingStatus - Справочник результатов клиринга +CREATE TABLE IF NOT EXISTS CLEARING_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE CLEARING_STATUS_DICTIONARY IS 'Справочник результатов клиринга'; + +COMMENT ON COLUMN CLEARING_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN CLEARING_STATUS_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN CLEARING_STATUS_DICTIONARY.NAME IS 'Наименование'; + +-- workflowStatus - Справочник статусов бизнес-процессов +CREATE TABLE IF NOT EXISTS WORKFLOW_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE WORKFLOW_STATUS_DICTIONARY IS 'Справочник статусов бизнес-процессов'; + +COMMENT ON COLUMN WORKFLOW_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN WORKFLOW_STATUS_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN WORKFLOW_STATUS_DICTIONARY.NAME IS 'Наименование'; + +-- accountStatus - Справочник статусов счетов +CREATE TABLE IF NOT EXISTS ACCOUNT_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE ACCOUNT_STATUS_DICTIONARY IS 'Справочник статусов счетов'; + +COMMENT ON COLUMN ACCOUNT_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN ACCOUNT_STATUS_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN ACCOUNT_STATUS_DICTIONARY.NAME IS 'Наименование'; + +-- allowed - Справочник признаков допустимости использования объектов +CREATE TABLE IF NOT EXISTS ALLOWED_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE ALLOWED_DICTIONARY IS 'Справочник признаков допустимости использования объектов'; + +COMMENT ON COLUMN ALLOWED_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN ALLOWED_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN ALLOWED_DICTIONARY.NAME IS 'Признак допустимости'; + +-- moneyFlowSide - Направление заявки +CREATE TABLE IF NOT EXISTS MONEY_FLOW_SIDE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE MONEY_FLOW_SIDE_DICTIONARY IS 'Направление заявки'; + +COMMENT ON COLUMN MONEY_FLOW_SIDE_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN MONEY_FLOW_SIDE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN MONEY_FLOW_SIDE_DICTIONARY.NAME IS 'Значение'; + +-- inOutDirection - Справочник значений направления денежного потока +CREATE TABLE IF NOT EXISTS IN_OUT_DIRECTION_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE IN_OUT_DIRECTION_DICTIONARY IS 'Справочник значений направления денежного потока'; + +COMMENT ON COLUMN IN_OUT_DIRECTION_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN IN_OUT_DIRECTION_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN IN_OUT_DIRECTION_DICTIONARY.NAME IS 'Значение'; + +-- statementType - Справочник типов поступлений/списаний от ПРЦ +CREATE TABLE IF NOT EXISTS STATEMENT_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE STATEMENT_TYPE_DICTIONARY IS 'Справочник типов поступлений/списаний от ПРЦ'; + +COMMENT ON COLUMN STATEMENT_TYPE_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN STATEMENT_TYPE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN STATEMENT_TYPE_DICTIONARY.NAME IS 'Значение'; + +-- operationType - Справочник типов операций +CREATE TABLE IF NOT EXISTS OPERATION_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE OPERATION_TYPE_DICTIONARY IS 'Справочник типов операций'; + +COMMENT ON COLUMN OPERATION_TYPE_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN OPERATION_TYPE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN OPERATION_TYPE_DICTIONARY.NAME IS 'Значение'; + +-- operationStatus - Справочник статусов операций +CREATE TABLE IF NOT EXISTS OPERATION_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE OPERATION_STATUS_DICTIONARY IS 'Справочник статусов операций'; + +COMMENT ON COLUMN OPERATION_STATUS_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN OPERATION_STATUS_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN OPERATION_STATUS_DICTIONARY.NAME IS 'Значение'; + +-- balanceAccountType - Справочник типов лимитов +CREATE TABLE IF NOT EXISTS BALANCE_ACCOUNT_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE BALANCE_ACCOUNT_TYPE_DICTIONARY IS 'Справочник типов лимитов'; + +COMMENT ON COLUMN BALANCE_ACCOUNT_TYPE_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN BALANCE_ACCOUNT_TYPE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN BALANCE_ACCOUNT_TYPE_DICTIONARY.NAME IS 'Тип лимитов'; + +-- countryCode - Справочник кодов стран +CREATE TABLE IF NOT EXISTS COUNTRY_CODE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE COUNTRY_CODE_DICTIONARY IS 'Справочник кодов стран'; + +COMMENT ON COLUMN COUNTRY_CODE_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN COUNTRY_CODE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN COUNTRY_CODE_DICTIONARY.NAME IS 'Наименование'; + +-- clearingCategory - Справочник категорий участника клиринга +CREATE TABLE IF NOT EXISTS CLEARING_CATEGORY_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE CLEARING_CATEGORY_DICTIONARY IS 'Справочник категорий участника клиринга'; + +COMMENT ON COLUMN CLEARING_CATEGORY_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN CLEARING_CATEGORY_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN CLEARING_CATEGORY_DICTIONARY.NAME IS 'Наименование'; + +-- contactType - Справочник типов контактов Компании +CREATE TABLE IF NOT EXISTS CONTACT_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE CONTACT_TYPE_DICTIONARY IS 'Справочник типов контактов Компании'; + +COMMENT ON COLUMN CONTACT_TYPE_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN CONTACT_TYPE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN CONTACT_TYPE_DICTIONARY.NAME IS 'Наименование'; + +-- corporationSoleType - Единоличный исполнительный орган +CREATE TABLE IF NOT EXISTS CORPORATION_SOLE_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE CORPORATION_SOLE_TYPE_DICTIONARY IS 'Единоличный исполнительный орган'; + +COMMENT ON COLUMN CORPORATION_SOLE_TYPE_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN CORPORATION_SOLE_TYPE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN CORPORATION_SOLE_TYPE_DICTIONARY.NAME IS 'Наименование'; + +-- connectionState - Справочник состояний соединений +CREATE TABLE IF NOT EXISTS CONNECTION_STATE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE CONNECTION_STATE_DICTIONARY IS 'Справочник состояний соединений'; + +COMMENT ON COLUMN CONNECTION_STATE_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN CONNECTION_STATE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN CONNECTION_STATE_DICTIONARY.NAME IS 'Наименование'; + +-- documentType - Справочник типов документов +CREATE TABLE IF NOT EXISTS DOCUMENT_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE DOCUMENT_TYPE_DICTIONARY IS 'Справочник типов документов'; + +COMMENT ON COLUMN DOCUMENT_TYPE_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN DOCUMENT_TYPE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN DOCUMENT_TYPE_DICTIONARY.NAME IS 'Наименование'; + +-- legalKind - Справочник видов субъекта +CREATE TABLE IF NOT EXISTS LEGAL_KIND_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE LEGAL_KIND_DICTIONARY IS 'Справочник видов субъекта'; + +COMMENT ON COLUMN LEGAL_KIND_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN LEGAL_KIND_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN LEGAL_KIND_DICTIONARY.NAME IS 'Наименование'; + +-- organizationType - Справочник типов организаций +CREATE TABLE IF NOT EXISTS ORGANIZATION_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE ORGANIZATION_TYPE_DICTIONARY IS 'Справочник типов организаций'; + +COMMENT ON COLUMN ORGANIZATION_TYPE_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN ORGANIZATION_TYPE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN ORGANIZATION_TYPE_DICTIONARY.NAME IS 'Наименование'; + +-- companySymbol - Справочник имен Компании +CREATE TABLE IF NOT EXISTS COMPANY_SYMBOL_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255), SHORTNAME varchar(255)); +COMMENT ON TABLE COMPANY_SYMBOL_DICTIONARY IS 'Справочник имен Компании'; + +COMMENT ON COLUMN COMPANY_SYMBOL_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN COMPANY_SYMBOL_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN COMPANY_SYMBOL_DICTIONARY.NAME IS 'Наименование'; + +COMMENT ON COLUMN COMPANY_SYMBOL_DICTIONARY.SHORTNAME IS 'Краткое наименование'; + +-- companyRole - Справочник ролей Компаний +CREATE TABLE IF NOT EXISTS COMPANY_ROLE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE COMPANY_ROLE_DICTIONARY IS 'Справочник ролей Компаний'; + +COMMENT ON COLUMN COMPANY_ROLE_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN COMPANY_ROLE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN COMPANY_ROLE_DICTIONARY.NAME IS 'Роль Участника'; + +-- userRole - Роли пользователей +CREATE TABLE IF NOT EXISTS USER_ROLE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE USER_ROLE_DICTIONARY IS 'Роли пользователей'; + +COMMENT ON COLUMN USER_ROLE_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN USER_ROLE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN USER_ROLE_DICTIONARY.NAME IS 'Роль пользователя'; + +-- accountType - Справочник типов счетов +CREATE TABLE IF NOT EXISTS ACCOUNT_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE ACCOUNT_TYPE_DICTIONARY IS 'Справочник типов счетов'; + +COMMENT ON COLUMN ACCOUNT_TYPE_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN ACCOUNT_TYPE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN ACCOUNT_TYPE_DICTIONARY.NAME IS 'Наименование'; + +-- instrumentType - Справочник типов инструмента +CREATE TABLE IF NOT EXISTS INSTRUMENT_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE INSTRUMENT_TYPE_DICTIONARY IS 'Справочник типов инструмента'; + +COMMENT ON COLUMN INSTRUMENT_TYPE_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN INSTRUMENT_TYPE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN INSTRUMENT_TYPE_DICTIONARY.NAME IS 'Наименование'; + +-- currencyCode - Справочник кодов валют +CREATE TABLE IF NOT EXISTS CURRENCY_CODE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE CURRENCY_CODE_DICTIONARY IS 'Справочник кодов валют'; + +COMMENT ON COLUMN CURRENCY_CODE_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN CURRENCY_CODE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN CURRENCY_CODE_DICTIONARY.NAME IS 'Наименование'; + +-- serviceStatus - Справочник услуги +CREATE TABLE IF NOT EXISTS SERVICE_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE SERVICE_STATUS_DICTIONARY IS 'Справочник услуги'; + +COMMENT ON COLUMN SERVICE_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN SERVICE_STATUS_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN SERVICE_STATUS_DICTIONARY.NAME IS 'Наименование'; + +-- service - Справочник услуги +CREATE TABLE IF NOT EXISTS SERVICE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE SERVICE_DICTIONARY IS 'Справочник услуги'; + +COMMENT ON COLUMN SERVICE_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN SERVICE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN SERVICE_DICTIONARY.NAME IS 'Наименование'; + +-- serviceProduct - Справочник продукта для услуги +CREATE TABLE IF NOT EXISTS SERVICE_PRODUCT_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE SERVICE_PRODUCT_DICTIONARY IS 'Справочник продукта для услуги'; + +COMMENT ON COLUMN SERVICE_PRODUCT_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN SERVICE_PRODUCT_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN SERVICE_PRODUCT_DICTIONARY.NAME IS 'Наименование'; + +-- sector - Справочник секций +CREATE TABLE IF NOT EXISTS SECTOR_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE SECTOR_DICTIONARY IS 'Справочник секций'; + +COMMENT ON COLUMN SECTOR_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN SECTOR_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN SECTOR_DICTIONARY.NAME IS 'Наименование'; + +-- resultStatus - Статус обработки +CREATE TABLE IF NOT EXISTS RESULT_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE RESULT_STATUS_DICTIONARY IS 'Статус обработки'; + +COMMENT ON COLUMN RESULT_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN RESULT_STATUS_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN RESULT_STATUS_DICTIONARY.NAME IS 'Статус обработки'; + +-- errorCode - Коды ошибок +CREATE TABLE IF NOT EXISTS ERROR_CODE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255)); +COMMENT ON TABLE ERROR_CODE_DICTIONARY IS 'Коды ошибок'; + +COMMENT ON COLUMN ERROR_CODE_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN ERROR_CODE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN ERROR_CODE_DICTIONARY.NAME IS 'Текст ошибки'; + +-- managementJournalStatus - Справочник статусов журнала мониторинга и контроля +CREATE TABLE IF NOT EXISTS MANAGEMENT_JOURNAL_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE MANAGEMENT_JOURNAL_STATUS_DICTIONARY IS 'Справочник статусов журнала мониторинга и контроля'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL_STATUS_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL_STATUS_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL_STATUS_DICTIONARY.NAME IS 'Статус сообщения'; + +-- managementJournalType - Справочник типов записей в журнале мониторинга и контроля +CREATE TABLE IF NOT EXISTS MANAGEMENT_JOURNAL_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE MANAGEMENT_JOURNAL_TYPE_DICTIONARY IS 'Справочник типов записей в журнале мониторинга и контроля'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL_TYPE_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL_TYPE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL_TYPE_DICTIONARY.NAME IS 'Тип записи'; + +-- managementJournalPurpose - Справочник целей записей в журнале мониторинга и контроля +CREATE TABLE IF NOT EXISTS MANAGEMENT_JOURNAL_PURPOSE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE MANAGEMENT_JOURNAL_PURPOSE_DICTIONARY IS 'Справочник целей записей в журнале мониторинга и контроля'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL_PURPOSE_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL_PURPOSE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL_PURPOSE_DICTIONARY.NAME IS 'Тип записи'; + +-- inOutSDfType - Справочник типов входящих и исходящих записей +CREATE TABLE IF NOT EXISTS IN_OUT_S_DF_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE IN_OUT_S_DF_TYPE_DICTIONARY IS 'Справочник типов входящих и исходящих записей'; + +COMMENT ON COLUMN IN_OUT_S_DF_TYPE_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN IN_OUT_S_DF_TYPE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN IN_OUT_S_DF_TYPE_DICTIONARY.NAME IS 'Тип записи'; + +-- sessionStatus - Справочник статусов клиринговой сессии +CREATE TABLE IF NOT EXISTS SESSION_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE SESSION_STATUS_DICTIONARY IS 'Справочник статусов клиринговой сессии'; + +COMMENT ON COLUMN SESSION_STATUS_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN SESSION_STATUS_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN SESSION_STATUS_DICTIONARY.NAME IS 'Наименование'; + +-- objectType - Справочник типов объектов +CREATE TABLE IF NOT EXISTS OBJECT_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE OBJECT_TYPE_DICTIONARY IS 'Справочник типов объектов'; + +COMMENT ON COLUMN OBJECT_TYPE_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN OBJECT_TYPE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN OBJECT_TYPE_DICTIONARY.NAME IS 'Наименование'; + +-- notificationStatus - Справочник статусов сообщений +CREATE TABLE IF NOT EXISTS NOTIFICATION_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE NOTIFICATION_STATUS_DICTIONARY IS 'Справочник статусов сообщений'; + +COMMENT ON COLUMN NOTIFICATION_STATUS_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN NOTIFICATION_STATUS_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN NOTIFICATION_STATUS_DICTIONARY.NAME IS 'Наименование'; + +-- eventType - Типы изменений записей +CREATE TABLE IF NOT EXISTS EVENT_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50)); +COMMENT ON TABLE EVENT_TYPE_DICTIONARY IS 'Типы изменений записей'; + +COMMENT ON COLUMN EVENT_TYPE_DICTIONARY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN EVENT_TYPE_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN EVENT_TYPE_DICTIONARY.NAME IS 'Тип события'; + +/* Business objects */ + +-- userCls - Пользователь +CREATE TABLE IF NOT EXISTS USER_CLS(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, IDENTIFIER varchar(250)); +COMMENT ON TABLE USER_CLS IS 'Пользователь'; + +COMMENT ON COLUMN USER_CLS.ID IS 'Идентификатор'; + +COMMENT ON COLUMN USER_CLS.CREATED_AT IS 'Создано'; + +COMMENT ON COLUMN USER_CLS.UPDATED_AT IS 'Изменено'; + +COMMENT ON COLUMN USER_CLS.IDENTIFIER IS 'Внешний идентификатор'; + + +-- History log of userCls - Пользователь +CREATE TABLE IF NOT EXISTS USER_CLS_HISTORY(USER_CLS_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, IDENTIFIER varchar(250)); +COMMENT ON TABLE USER_CLS_HISTORY IS 'История изменений таблицы userCls'; +COMMENT ON COLUMN USER_CLS_HISTORY.USER_CLS_ID IS 'Идентификатор записи в таблице USER_CLS'; +COMMENT ON COLUMN USER_CLS_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN USER_CLS_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN USER_CLS_HISTORY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN USER_CLS_HISTORY.CREATED_AT IS 'Создано'; + +COMMENT ON COLUMN USER_CLS_HISTORY.UPDATED_AT IS 'Изменено'; + +COMMENT ON COLUMN USER_CLS_HISTORY.IDENTIFIER IS 'Внешний идентификатор'; + +-- userRoleSession - Набор ролей +CREATE TABLE IF NOT EXISTS USER_ROLE_SESSION(ID bigint PRIMARY KEY, USER_ID bigint, USER_ROLE varchar(4), COMPANY_ID bigint, STATUS varchar(4)); +COMMENT ON TABLE USER_ROLE_SESSION IS 'Набор ролей'; + +COMMENT ON COLUMN USER_ROLE_SESSION.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN USER_ROLE_SESSION.USER_ID IS 'Идентификатор пользователя (linked to userCls)'; + +COMMENT ON COLUMN USER_ROLE_SESSION.USER_ROLE IS 'Идентификатор роли (linked to userRole)'; + +COMMENT ON COLUMN USER_ROLE_SESSION.COMPANY_ID IS 'Идентификатор компании (linked to company)'; + +COMMENT ON COLUMN USER_ROLE_SESSION.STATUS IS 'Статус (linked to workflowStatus)'; + +-- userSettings - Настройки пользователя +CREATE TABLE IF NOT EXISTS USER_SETTINGS(ID bigint PRIMARY KEY, USER_ID bigint, VERSION varchar(50), JSON varchar(200000)); +COMMENT ON TABLE USER_SETTINGS IS 'Настройки пользователя'; + +COMMENT ON COLUMN USER_SETTINGS.ID IS 'Идентификатор'; + +COMMENT ON COLUMN USER_SETTINGS.USER_ID IS 'Пользователь (linked to userCls)'; + +COMMENT ON COLUMN USER_SETTINGS.VERSION IS 'Версия настроек пользователя'; + +COMMENT ON COLUMN USER_SETTINGS.JSON IS 'Данные конфигурации'; + +-- userConnect - Активность пользователей в системе +CREATE TABLE IF NOT EXISTS USER_CONNECT(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, USER_ID bigint, CONNECTION_TIME timestamp, DISCONNECTION_TIME timestamp, SERVER_IP varchar(250), CLIENT_IP varchar(250), CONNECTION_STATE varchar(4), CLEARING_DATE date, ERROR_CODE bigint, ERROR_TEXT varchar(4)); +COMMENT ON TABLE USER_CONNECT IS 'Активность пользователей в системе'; + +COMMENT ON COLUMN USER_CONNECT.ID IS 'Идентификатор'; + +COMMENT ON COLUMN USER_CONNECT.CREATED_AT IS 'Создано'; + +COMMENT ON COLUMN USER_CONNECT.UPDATED_AT IS 'Изменено'; + +COMMENT ON COLUMN USER_CONNECT.USER_ID IS 'Пользователь (linked to userCls)'; + +COMMENT ON COLUMN USER_CONNECT.CONNECTION_TIME IS 'Последнее соединение'; + +COMMENT ON COLUMN USER_CONNECT.DISCONNECTION_TIME IS 'Разрыв соединения'; + +COMMENT ON COLUMN USER_CONNECT.SERVER_IP IS 'IP адрес сервера'; + +COMMENT ON COLUMN USER_CONNECT.CLIENT_IP IS 'IP адрес клиента'; + +COMMENT ON COLUMN USER_CONNECT.CONNECTION_STATE IS 'Статус соединения (linked to connectionState)'; + +COMMENT ON COLUMN USER_CONNECT.CLEARING_DATE IS 'Дата'; + +COMMENT ON COLUMN USER_CONNECT.ERROR_CODE IS 'Код ошибки (linked to errorCode)'; + +COMMENT ON COLUMN USER_CONNECT.ERROR_TEXT IS 'Полный текст ошибки (linked to errorText)'; + + +-- History log of userConnect - Активность пользователей в системе +CREATE TABLE IF NOT EXISTS USER_CONNECT_HISTORY(USER_CONNECT_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, USER_ID bigint, CONNECTION_TIME timestamp, DISCONNECTION_TIME timestamp, SERVER_IP varchar(250), CLIENT_IP varchar(250), CONNECTION_STATE varchar(4), CLEARING_DATE date, ERROR_CODE bigint, ERROR_TEXT varchar(4)); +COMMENT ON TABLE USER_CONNECT_HISTORY IS 'История изменений таблицы userConnect'; +COMMENT ON COLUMN USER_CONNECT_HISTORY.USER_CONNECT_ID IS 'Идентификатор записи в таблице USER_CONNECT'; +COMMENT ON COLUMN USER_CONNECT_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN USER_CONNECT_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN USER_CONNECT_HISTORY.ID IS 'Идентификатор'; + +COMMENT ON COLUMN USER_CONNECT_HISTORY.CREATED_AT IS 'Создано'; + +COMMENT ON COLUMN USER_CONNECT_HISTORY.UPDATED_AT IS 'Изменено'; + +COMMENT ON COLUMN USER_CONNECT_HISTORY.USER_ID IS 'Пользователь (linked to userCls)'; + +COMMENT ON COLUMN USER_CONNECT_HISTORY.CONNECTION_TIME IS 'Последнее соединение'; + +COMMENT ON COLUMN USER_CONNECT_HISTORY.DISCONNECTION_TIME IS 'Разрыв соединения'; + +COMMENT ON COLUMN USER_CONNECT_HISTORY.SERVER_IP IS 'IP адрес сервера'; + +COMMENT ON COLUMN USER_CONNECT_HISTORY.CLIENT_IP IS 'IP адрес клиента'; + +COMMENT ON COLUMN USER_CONNECT_HISTORY.CONNECTION_STATE IS 'Статус соединения (linked to connectionState)'; + +COMMENT ON COLUMN USER_CONNECT_HISTORY.CLEARING_DATE IS 'Дата'; + +COMMENT ON COLUMN USER_CONNECT_HISTORY.ERROR_CODE IS 'Код ошибки (linked to errorCode)'; + +COMMENT ON COLUMN USER_CONNECT_HISTORY.ERROR_TEXT IS 'Полный текст ошибки (linked to errorText)'; + +-- plannerTemplate - Шаблон расписания операционного дня +CREATE TABLE IF NOT EXISTS PLANNER_TEMPLATE(TASK varchar(4), TASK_TIME time, TASK_STATUS varchar(4), COMPANY_ID bigint, SECURITY_ID bigint, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE PLANNER_TEMPLATE IS 'Шаблон расписания операционного дня'; + +COMMENT ON COLUMN PLANNER_TEMPLATE.TASK IS 'Наименование задачи (linked to task)'; + +COMMENT ON COLUMN PLANNER_TEMPLATE.TASK_TIME IS 'Время задачи'; + +COMMENT ON COLUMN PLANNER_TEMPLATE.TASK_STATUS IS 'Статус (linked to taskStatus)'; + +COMMENT ON COLUMN PLANNER_TEMPLATE.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN PLANNER_TEMPLATE.SECURITY_ID IS 'Инструмент (linked to security)'; + +COMMENT ON COLUMN PLANNER_TEMPLATE.ID IS 'Идентификатор'; + +COMMENT ON COLUMN PLANNER_TEMPLATE.CREATED_AT IS 'Создано'; + +COMMENT ON COLUMN PLANNER_TEMPLATE.UPDATED_AT IS 'Изменено'; + +-- clearingCalendar - Рабочие и нерабочие дни +CREATE TABLE IF NOT EXISTS CLEARING_CALENDAR(CLEARING_DATE date, COMPANY_ID bigint, DAY_STATUS varchar(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE CLEARING_CALENDAR IS 'Рабочие и нерабочие дни'; + +COMMENT ON COLUMN CLEARING_CALENDAR.CLEARING_DATE IS 'Дата'; + +COMMENT ON COLUMN CLEARING_CALENDAR.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN CLEARING_CALENDAR.DAY_STATUS IS 'Статус (linked to dayStatus)'; + +COMMENT ON COLUMN CLEARING_CALENDAR.ID IS 'Идентификатор'; + +COMMENT ON COLUMN CLEARING_CALENDAR.CREATED_AT IS 'Создано'; + +COMMENT ON COLUMN CLEARING_CALENDAR.UPDATED_AT IS 'Изменено'; + +-- planner - Расписание +CREATE TABLE IF NOT EXISTS PLANNER(TASK varchar(4), TASK_TIME time, CLEARING_DATE date, MARKET varchar(4), TASK_STATUS varchar(4), COMPANY_ID bigint, SECURITY_ID bigint, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE PLANNER IS 'Расписание'; + +COMMENT ON COLUMN PLANNER.TASK IS 'Наименование задачи (linked to task)'; + +COMMENT ON COLUMN PLANNER.TASK_TIME IS 'Время задачи'; + +COMMENT ON COLUMN PLANNER.CLEARING_DATE IS 'Дата задачи'; + +COMMENT ON COLUMN PLANNER.MARKET IS 'Секция (linked to market)'; + +COMMENT ON COLUMN PLANNER.TASK_STATUS IS 'Статус (linked to taskStatus)'; + +COMMENT ON COLUMN PLANNER.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN PLANNER.SECURITY_ID IS 'Инструмент (linked to security)'; + +COMMENT ON COLUMN PLANNER.ID IS 'Идентификатор'; + +COMMENT ON COLUMN PLANNER.CREATED_AT IS 'Создано'; + +COMMENT ON COLUMN PLANNER.UPDATED_AT IS 'Изменено'; + +-- plannerAllToday - Расписание на текущий день +CREATE TABLE IF NOT EXISTS PLANNER_ALL_TODAY(TASK varchar(4), TASK_TIME time, CLEARING_DATE date, MARKET varchar(4), TASK_STATUS varchar(4), COMPANY_ID bigint, SECURITY_ID bigint, PARENT varchar(4), PARENT_ID bigint, ID bigint PRIMARY KEY); +COMMENT ON TABLE PLANNER_ALL_TODAY IS 'Расписание на текущий день'; + +COMMENT ON COLUMN PLANNER_ALL_TODAY.TASK IS 'Идентификатор задачи (linked to task)'; + +COMMENT ON COLUMN PLANNER_ALL_TODAY.TASK_TIME IS 'Время'; + +COMMENT ON COLUMN PLANNER_ALL_TODAY.CLEARING_DATE IS 'Дата'; + +COMMENT ON COLUMN PLANNER_ALL_TODAY.MARKET IS 'Секция (linked to market)'; + +COMMENT ON COLUMN PLANNER_ALL_TODAY.TASK_STATUS IS 'Статус (linked to taskStatus)'; + +COMMENT ON COLUMN PLANNER_ALL_TODAY.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN PLANNER_ALL_TODAY.SECURITY_ID IS 'Инструмент (linked to security)'; + +COMMENT ON COLUMN PLANNER_ALL_TODAY.PARENT IS 'Источник записи расписания (linked to parent)'; + +COMMENT ON COLUMN PLANNER_ALL_TODAY.PARENT_ID IS 'Наименование источника'; + +COMMENT ON COLUMN PLANNER_ALL_TODAY.ID IS 'Идентификатор'; + +-- launcher - Запуск задачи +CREATE TABLE IF NOT EXISTS LAUNCHER(SENDER_ID bigint, TASK varchar(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE LAUNCHER IS 'Запуск задачи'; + +COMMENT ON COLUMN LAUNCHER.SENDER_ID IS 'Отправитель (linked to userCls)'; + +COMMENT ON COLUMN LAUNCHER.TASK IS 'Задача (linked to task)'; + +COMMENT ON COLUMN LAUNCHER.ID IS 'Идентификатор'; + +COMMENT ON COLUMN LAUNCHER.CREATED_AT IS 'Создано'; + +COMMENT ON COLUMN LAUNCHER.UPDATED_AT IS 'Изменено'; + +-- company - Компании +CREATE TABLE IF NOT EXISTS COMPANY(TRADING_CODE varchar(255), CLEARING_CODE varchar(255), REGISTRATION_CODE varchar(255), WORKFLOW_STATUS varchar(4), SHORT_NAME varchar(255), FULL_NAME varchar(255), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE COMPANY IS 'Компании'; + +COMMENT ON COLUMN COMPANY.TRADING_CODE IS 'Код участника торгов'; + +COMMENT ON COLUMN COMPANY.CLEARING_CODE IS 'Код участника клиринга'; + +COMMENT ON COLUMN COMPANY.REGISTRATION_CODE IS 'Регистрационный код участника'; + +COMMENT ON COLUMN COMPANY.WORKFLOW_STATUS IS 'Статус (linked to workflowStatus)'; + +COMMENT ON COLUMN COMPANY.SHORT_NAME IS 'Краткое наименование Компании'; + +COMMENT ON COLUMN COMPANY.FULL_NAME IS 'Полное наименование Компании'; + +COMMENT ON COLUMN COMPANY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN COMPANY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN COMPANY.UPDATED_AT IS 'Дата и время изменения записи'; + + +-- History log of company - Компании +CREATE TABLE IF NOT EXISTS COMPANY_HISTORY(COMPANY_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, TRADING_CODE varchar(255), CLEARING_CODE varchar(255), REGISTRATION_CODE varchar(255), WORKFLOW_STATUS varchar(4), SHORT_NAME varchar(255), FULL_NAME varchar(255), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE COMPANY_HISTORY IS 'История изменений таблицы company'; +COMMENT ON COLUMN COMPANY_HISTORY.COMPANY_ID IS 'Идентификатор записи в таблице COMPANY'; +COMMENT ON COLUMN COMPANY_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN COMPANY_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN COMPANY_HISTORY.TRADING_CODE IS 'Код участника торгов'; + +COMMENT ON COLUMN COMPANY_HISTORY.CLEARING_CODE IS 'Код участника клиринга'; + +COMMENT ON COLUMN COMPANY_HISTORY.REGISTRATION_CODE IS 'Регистрационный код участника'; + +COMMENT ON COLUMN COMPANY_HISTORY.WORKFLOW_STATUS IS 'Статус (linked to workflowStatus)'; + +COMMENT ON COLUMN COMPANY_HISTORY.SHORT_NAME IS 'Краткое наименование Компании'; + +COMMENT ON COLUMN COMPANY_HISTORY.FULL_NAME IS 'Полное наименование Компании'; + +COMMENT ON COLUMN COMPANY_HISTORY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN COMPANY_HISTORY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN COMPANY_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; + +-- companyInfo - Профили Компаний +CREATE TABLE IF NOT EXISTS COMPANY_INFO(COMPANY_ID bigint, CORPORATION_SOLE_TYPE varchar(4), COUNTRY_CODE varchar(4), DESCRIPTION varchar(255), PROFESSIONAL_SIGN varchar(4), LEGAL_KIND varchar(4), ORGANIZATION_TYPE varchar(4), RESIDENCE varchar(4), SHORT_NAME_ENG varchar(255), FULL_NAME_ENG varchar(255), ID bigint PRIMARY KEY); +COMMENT ON TABLE COMPANY_INFO IS 'Профили Компаний'; + +COMMENT ON COLUMN COMPANY_INFO.COMPANY_ID IS 'Наименование Компании (linked to company)'; + +COMMENT ON COLUMN COMPANY_INFO.CORPORATION_SOLE_TYPE IS 'Единоличный исполнительный орган (linked to corporationSoleType)'; + +COMMENT ON COLUMN COMPANY_INFO.COUNTRY_CODE IS 'Юрисдикция (linked to countryCode)'; + +COMMENT ON COLUMN COMPANY_INFO.DESCRIPTION IS 'Описание Участника'; + +COMMENT ON COLUMN COMPANY_INFO.PROFESSIONAL_SIGN IS 'Признак проф. Участника (linked to allowed)'; + +COMMENT ON COLUMN COMPANY_INFO.LEGAL_KIND IS 'Вид субъекта (linked to legalKind)'; + +COMMENT ON COLUMN COMPANY_INFO.ORGANIZATION_TYPE IS 'Тип организации (linked to organizationType)'; + +COMMENT ON COLUMN COMPANY_INFO.RESIDENCE IS 'Резиденция (linked to countryCode)'; + +COMMENT ON COLUMN COMPANY_INFO.SHORT_NAME_ENG IS 'Краткое наименование Компании на английском'; + +COMMENT ON COLUMN COMPANY_INFO.FULL_NAME_ENG IS 'Полное наименование Компании на английском'; + IS 'Краткое наименование Компании'; + IS 'Полное наименование Компании'; + IS 'Код участника торгов'; + IS 'Код участника клиринга'; + IS 'Регистрационный код участника'; + +COMMENT ON COLUMN COMPANY_INFO.ID IS 'Идентификатор записи'; + + +-- History log of companyInfo - Профили Компаний +CREATE TABLE IF NOT EXISTS COMPANY_INFO_HISTORY(COMPANY_INFO_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, COMPANY_ID bigint, CORPORATION_SOLE_TYPE varchar(4), COUNTRY_CODE varchar(4), DESCRIPTION varchar(255), PROFESSIONAL_SIGN varchar(4), LEGAL_KIND varchar(4), ORGANIZATION_TYPE varchar(4), RESIDENCE varchar(4), SHORT_NAME_ENG varchar(255), FULL_NAME_ENG varchar(255), ID bigint PRIMARY KEY); +COMMENT ON TABLE COMPANY_INFO_HISTORY IS 'История изменений таблицы companyInfo'; +COMMENT ON COLUMN COMPANY_INFO_HISTORY.COMPANY_INFO_ID IS 'Идентификатор записи в таблице COMPANY_INFO'; +COMMENT ON COLUMN COMPANY_INFO_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN COMPANY_INFO_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN COMPANY_INFO_HISTORY.COMPANY_ID IS 'Наименование Компании (linked to company)'; + +COMMENT ON COLUMN COMPANY_INFO_HISTORY.CORPORATION_SOLE_TYPE IS 'Единоличный исполнительный орган (linked to corporationSoleType)'; + +COMMENT ON COLUMN COMPANY_INFO_HISTORY.COUNTRY_CODE IS 'Юрисдикция (linked to countryCode)'; + +COMMENT ON COLUMN COMPANY_INFO_HISTORY.DESCRIPTION IS 'Описание Участника'; + +COMMENT ON COLUMN COMPANY_INFO_HISTORY.PROFESSIONAL_SIGN IS 'Признак проф. Участника (linked to allowed)'; + +COMMENT ON COLUMN COMPANY_INFO_HISTORY.LEGAL_KIND IS 'Вид субъекта (linked to legalKind)'; + +COMMENT ON COLUMN COMPANY_INFO_HISTORY.ORGANIZATION_TYPE IS 'Тип организации (linked to organizationType)'; + +COMMENT ON COLUMN COMPANY_INFO_HISTORY.RESIDENCE IS 'Резиденция (linked to countryCode)'; + +COMMENT ON COLUMN COMPANY_INFO_HISTORY.SHORT_NAME_ENG IS 'Краткое наименование Компании на английском'; + +COMMENT ON COLUMN COMPANY_INFO_HISTORY.FULL_NAME_ENG IS 'Полное наименование Компании на английском'; + +COMMENT ON COLUMN COMPANY_INFO_HISTORY.ID IS 'Идентификатор записи'; + +-- clearingMemberCategory - Категории Участника клиринга +CREATE TABLE IF NOT EXISTS CLEARING_MEMBER_CATEGORY(COMPANY_ID bigint, CLEARING_MEMBER_CATEGORY varchar(4), ID bigint PRIMARY KEY); +COMMENT ON TABLE CLEARING_MEMBER_CATEGORY IS 'Категории Участника клиринга'; + +COMMENT ON COLUMN CLEARING_MEMBER_CATEGORY.COMPANY_ID IS 'Наименование Компании (linked to company)'; + +COMMENT ON COLUMN CLEARING_MEMBER_CATEGORY.CLEARING_MEMBER_CATEGORY IS 'Категория участника клиринга (linked to clearingCategory)'; + +COMMENT ON COLUMN CLEARING_MEMBER_CATEGORY.ID IS 'Идентификатор записи'; + +-- contact - Контакты Компании +CREATE TABLE IF NOT EXISTS CONTACT(COMPANY_ID bigint, CONTACT_TYPE varchar(4), CONTACT_VALUE varchar(255), ID bigint PRIMARY KEY); +COMMENT ON TABLE CONTACT IS 'Контакты Компании'; + +COMMENT ON COLUMN CONTACT.COMPANY_ID IS 'Наименование Компании (linked to company)'; + +COMMENT ON COLUMN CONTACT.CONTACT_TYPE IS 'Наименование справочника (linked to contactType)'; + +COMMENT ON COLUMN CONTACT.CONTACT_VALUE IS 'Значение справочника'; + +COMMENT ON COLUMN CONTACT.ID IS 'Идентификатор записи'; + +-- profileDocument - Досье Компании +CREATE TABLE IF NOT EXISTS PROFILE_DOCUMENT(COMPANY_ID bigint, DOCUMENT_TYPE varchar(4), ISSUE_DATE date, ISSUE_PLACE varchar(255), ISSUER varchar(255), ISSUER_CODE varchar(255), NAME varchar(255), NUMBER varchar(255), PLACE varchar(255), VALID_FROM_DATE date, VALID_TO_DATE date, LINK varchar(255), ID bigint PRIMARY KEY); +COMMENT ON TABLE PROFILE_DOCUMENT IS 'Досье Компании'; + +COMMENT ON COLUMN PROFILE_DOCUMENT.COMPANY_ID IS 'Наименование Компании (linked to company)'; + +COMMENT ON COLUMN PROFILE_DOCUMENT.DOCUMENT_TYPE IS 'Тип документа (linked to documentType)'; + +COMMENT ON COLUMN PROFILE_DOCUMENT.ISSUE_DATE IS 'Дата выдачи'; + +COMMENT ON COLUMN PROFILE_DOCUMENT.ISSUE_PLACE IS 'Место выдачи'; + +COMMENT ON COLUMN PROFILE_DOCUMENT.ISSUER IS 'Кем выдан'; + +COMMENT ON COLUMN PROFILE_DOCUMENT.ISSUER_CODE IS 'Код выдавшего органа'; + +COMMENT ON COLUMN PROFILE_DOCUMENT.NAME IS 'Наименование'; + +COMMENT ON COLUMN PROFILE_DOCUMENT.NUMBER IS 'Номер документа'; + +COMMENT ON COLUMN PROFILE_DOCUMENT.PLACE IS 'Место'; + +COMMENT ON COLUMN PROFILE_DOCUMENT.VALID_FROM_DATE IS 'Дата начала срока действия'; + +COMMENT ON COLUMN PROFILE_DOCUMENT.VALID_TO_DATE IS 'Дата окончания срока действия'; + +COMMENT ON COLUMN PROFILE_DOCUMENT.LINK IS 'Ссылка на документ'; + +COMMENT ON COLUMN PROFILE_DOCUMENT.ID IS 'Идентификатор записи'; + +-- companySymbols - Реквизиты Компании +CREATE TABLE IF NOT EXISTS COMPANY_SYMBOLS(COMPANY_ID bigint, COMPANY_SYMBOL varchar(4), COMPANY_SYMBOL_VALUE varchar(255), ID bigint PRIMARY KEY); +COMMENT ON TABLE COMPANY_SYMBOLS IS 'Реквизиты Компании'; + +COMMENT ON COLUMN COMPANY_SYMBOLS.COMPANY_ID IS 'Наименование Компании (linked to company)'; + +COMMENT ON COLUMN COMPANY_SYMBOLS.COMPANY_SYMBOL IS 'Справочник (linked to companySymbol)'; + +COMMENT ON COLUMN COMPANY_SYMBOLS.COMPANY_SYMBOL_VALUE IS 'Значение справочника'; + +COMMENT ON COLUMN COMPANY_SYMBOLS.ID IS 'Идентификатор записи'; + +-- clearmemberRegister - Реестр участников клиринга +CREATE TABLE IF NOT EXISTS CLEARMEMBER_REGISTER(TRADING_CODE varchar(255), CLEARING_CODE varchar(255), FULL_NAME varchar(255), SHORT_NAME varchar(255), CATEGORY_LIST varchar(4), CORPORATION_SOLE varchar(4), ACCOUNT varchar(50), BANK bigint, BANK_NAME varchar(255), INN varchar(255), BIC varchar(255), OGRN varchar(255), CPP varchar(255), OCPO varchar(255), CONTRACT_NUMBER varchar(255), CONTRACT_DATE date, REGISTRATION_DATE date, SYSTEM_DATE date, ACCESS_DATE timestamp, SUSPENTION_DATE timestamp, REOPENING_DATE timestamp, CLOSE_DATE timestamp, EXCLUSION_DATE timestamp, ADDRESS varchar(255), EMAIL varchar(255), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE CLEARMEMBER_REGISTER IS 'Реестр участников клиринга'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.TRADING_CODE IS 'Код участника торгов'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.CLEARING_CODE IS 'Код участника клиринга'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.FULL_NAME IS 'Полное наименование участника клиринга'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.SHORT_NAME IS 'Краткое наименование участника клиринга'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.CATEGORY_LIST IS 'Категория участника клиринга (linked to clearingCategory)'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.CORPORATION_SOLE IS 'Единоличный исполнительный орган (linked to corporationSoleType)'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.ACCOUNT IS 'Счета'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.BANK IS 'Наименование банка (linked to bankAccount)'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.BANK_NAME IS 'Наименование банка'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.INN IS 'Идентификационный номер налогоплательщика (ИНН)'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.BIC IS 'Банковский идентификационный код (БИК)'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.OGRN IS 'Основной государственный регистрационный номер'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.CPP IS 'Код причины постановки (КПП)'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.OCPO IS 'Код в Общероссийском классификаторе предприятий'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.CONTRACT_NUMBER IS 'Номер договора'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.CONTRACT_DATE IS 'Дата выдачи'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.REGISTRATION_DATE IS 'Дата регистрации'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.SYSTEM_DATE IS 'Системная дата'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.ACCESS_DATE IS 'Дата допуска к КО'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.SUSPENTION_DATE IS 'Дата приостановления'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.REOPENING_DATE IS 'Дата возобновления'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.CLOSE_DATE IS 'Дата прекращения'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.EXCLUSION_DATE IS 'Дата исключения из реестра'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.ADDRESS IS 'Адрес местонахождения'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.EMAIL IS 'Электронная почта'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER.UPDATED_AT IS 'Дата и время изменения записи'; + +-- clearmemberRegisterChange - Журнал изменений информации участников клиринга +CREATE TABLE IF NOT EXISTS CLEARMEMBER_REGISTER_CHANGE(DATE timestamp, CLEARING_CODE varchar(255), COMMENT varchar(255)); +COMMENT ON TABLE CLEARMEMBER_REGISTER_CHANGE IS 'Журнал изменений информации участников клиринга'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER_CHANGE.DATE IS 'Дата и время изменения записи'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER_CHANGE.CLEARING_CODE IS 'Код участника клиринга'; + +COMMENT ON COLUMN CLEARMEMBER_REGISTER_CHANGE.COMMENT IS 'Комментарий'; + +-- keyRate - Ключевая ставка ЦБ +CREATE TABLE IF NOT EXISTS KEY_RATE(RATE numeric(72,18), START_DATE date, END_DATE date, DOCUMENT varchar(255), WORKFLOW_STATUS varchar(4), ID bigint PRIMARY KEY); +COMMENT ON TABLE KEY_RATE IS 'Ключевая ставка ЦБ'; + +COMMENT ON COLUMN KEY_RATE.RATE IS 'Ключевая ставка ЦБ'; + +COMMENT ON COLUMN KEY_RATE.START_DATE IS 'Дата начала действия ключевой ставки'; + +COMMENT ON COLUMN KEY_RATE.END_DATE IS 'Дата окончания действия ключевой ставки'; + +COMMENT ON COLUMN KEY_RATE.DOCUMENT IS 'Документ ЦБ, регламентирующий установку величины ключевой ставки'; + +COMMENT ON COLUMN KEY_RATE.WORKFLOW_STATUS IS 'Статус (linked to workflowStatus)'; + +COMMENT ON COLUMN KEY_RATE.ID IS 'Идентификатор записи'; + +-- companyRoleSet - Таблица ролей Компании +CREATE TABLE IF NOT EXISTS COMPANY_ROLE_SET(COMPANY_ID bigint, ROLE_ID bigint, ID bigint PRIMARY KEY); +COMMENT ON TABLE COMPANY_ROLE_SET IS 'Таблица ролей Компании'; + +COMMENT ON COLUMN COMPANY_ROLE_SET.COMPANY_ID IS 'Список ролей Компании (linked to company)'; + +COMMENT ON COLUMN COMPANY_ROLE_SET.ROLE_ID IS 'Значение справочника (linked to companyRole)'; + +COMMENT ON COLUMN COMPANY_ROLE_SET.ID IS 'Идентификатор записи'; + +-- account - Счета +CREATE TABLE IF NOT EXISTS ACCOUNT(ACCOUNT varchar(50), ACCOUNT_TYPE varchar(4), RELATION_ID bigint, ACCOUNT_STATUS varchar(4), PROCESSING_SIGN varchar(4), COMPANY_ID bigint, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE ACCOUNT IS 'Счета'; + +COMMENT ON COLUMN ACCOUNT.ACCOUNT IS 'Номер счета'; + +COMMENT ON COLUMN ACCOUNT.ACCOUNT_TYPE IS 'Тип счета (linked to accountType)'; + +COMMENT ON COLUMN ACCOUNT.RELATION_ID IS 'Договорные отношения (linked to relation)'; + +COMMENT ON COLUMN ACCOUNT.ACCOUNT_STATUS IS 'Статус (linked to accountStatus)'; + +COMMENT ON COLUMN ACCOUNT.PROCESSING_SIGN IS 'Признак обработки счета (linked to allowed)'; + +COMMENT ON COLUMN ACCOUNT.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN ACCOUNT.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN ACCOUNT.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN ACCOUNT.UPDATED_AT IS 'Дата и время изменения записи'; + + +-- History log of account - Счета +CREATE TABLE IF NOT EXISTS ACCOUNT_HISTORY(ACCOUNT_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ACCOUNT varchar(50), ACCOUNT_TYPE varchar(4), RELATION_ID bigint, ACCOUNT_STATUS varchar(4), PROCESSING_SIGN varchar(4), COMPANY_ID bigint, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE ACCOUNT_HISTORY IS 'История изменений таблицы account'; +COMMENT ON COLUMN ACCOUNT_HISTORY.ACCOUNT_ID IS 'Идентификатор записи в таблице ACCOUNT'; +COMMENT ON COLUMN ACCOUNT_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN ACCOUNT_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN ACCOUNT_HISTORY.ACCOUNT IS 'Номер счета'; + +COMMENT ON COLUMN ACCOUNT_HISTORY.ACCOUNT_TYPE IS 'Тип счета (linked to accountType)'; + +COMMENT ON COLUMN ACCOUNT_HISTORY.RELATION_ID IS 'Договорные отношения (linked to relation)'; + +COMMENT ON COLUMN ACCOUNT_HISTORY.ACCOUNT_STATUS IS 'Статус (linked to accountStatus)'; + +COMMENT ON COLUMN ACCOUNT_HISTORY.PROCESSING_SIGN IS 'Признак обработки счета (linked to allowed)'; + +COMMENT ON COLUMN ACCOUNT_HISTORY.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN ACCOUNT_HISTORY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN ACCOUNT_HISTORY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN ACCOUNT_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; + +-- relation - Договорные отношения +CREATE TABLE IF NOT EXISTS RELATION(CONSUMER_ID bigint, SUPPLIER_ID bigint, SERVICE_STATUS varchar(4), SERVICE varchar(4), SERVICE_PRODUCT varchar(4), COMMENT varchar(255), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE RELATION IS 'Договорные отношения'; + +COMMENT ON COLUMN RELATION.CONSUMER_ID IS 'Компания пользователя услуги (linked to company)'; + +COMMENT ON COLUMN RELATION.SUPPLIER_ID IS 'Компания поставщика услуги (linked to company)'; + +COMMENT ON COLUMN RELATION.SERVICE_STATUS IS 'Статус (linked to serviceStatus)'; + +COMMENT ON COLUMN RELATION.SERVICE IS 'Наименование услуги (linked to service)'; + +COMMENT ON COLUMN RELATION.SERVICE_PRODUCT IS 'Наименование продукта (linked to serviceProduct)'; + +COMMENT ON COLUMN RELATION.COMMENT IS 'Текст причины'; + +COMMENT ON COLUMN RELATION.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN RELATION.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN RELATION.UPDATED_AT IS 'Дата и время изменения записи'; + + +-- History log of relation - Договорные отношения +CREATE TABLE IF NOT EXISTS RELATION_HISTORY(RELATION_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, CONSUMER_ID bigint, SUPPLIER_ID bigint, SERVICE_STATUS varchar(4), SERVICE varchar(4), SERVICE_PRODUCT varchar(4), COMMENT varchar(255), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE RELATION_HISTORY IS 'История изменений таблицы relation'; +COMMENT ON COLUMN RELATION_HISTORY.RELATION_ID IS 'Идентификатор записи в таблице RELATION'; +COMMENT ON COLUMN RELATION_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN RELATION_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN RELATION_HISTORY.CONSUMER_ID IS 'Компания пользователя услуги (linked to company)'; + +COMMENT ON COLUMN RELATION_HISTORY.SUPPLIER_ID IS 'Компания поставщика услуги (linked to company)'; + +COMMENT ON COLUMN RELATION_HISTORY.SERVICE_STATUS IS 'Статус (linked to serviceStatus)'; + +COMMENT ON COLUMN RELATION_HISTORY.SERVICE IS 'Наименование услуги (linked to service)'; + +COMMENT ON COLUMN RELATION_HISTORY.SERVICE_PRODUCT IS 'Наименование продукта (linked to serviceProduct)'; + +COMMENT ON COLUMN RELATION_HISTORY.COMMENT IS 'Текст причины'; + +COMMENT ON COLUMN RELATION_HISTORY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN RELATION_HISTORY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN RELATION_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; + +-- bankAccount - Банковские реквизиты для перечисления денежных средств +CREATE TABLE IF NOT EXISTS BANK_ACCOUNT(ACCOUNT_ID bigint, BANK_IDENTIFICATION_CODE varchar(255), BANK_NAME varchar(255), CORRESPONDENT_ACCOUNT varchar(255), CORRESPONDENT_ACCOUNT_NAME varchar(255), CURRENCY varchar(4), DESTINATION varchar(255), IBAN varchar(255), INTERNATIONAL_TRANSFER_SIGN varchar(4), SWIFT_CODE varchar(255), TAXPAYER_IDENTIFICATION_NUMBER varchar(255), TAX_REGISTRATION_REASON_CODE varchar(255), COMPANY_ID bigint, ID bigint PRIMARY KEY); +COMMENT ON TABLE BANK_ACCOUNT IS 'Банковские реквизиты для перечисления денежных средств'; + +COMMENT ON COLUMN BANK_ACCOUNT.ACCOUNT_ID IS 'Номер счета (linked to account)'; + +COMMENT ON COLUMN BANK_ACCOUNT.BANK_IDENTIFICATION_CODE IS 'Банковский идентификационный код (БИК)'; + +COMMENT ON COLUMN BANK_ACCOUNT.BANK_NAME IS 'Наименование банка'; + +COMMENT ON COLUMN BANK_ACCOUNT.CORRESPONDENT_ACCOUNT IS 'Корреспондентский счет'; + +COMMENT ON COLUMN BANK_ACCOUNT.CORRESPONDENT_ACCOUNT_NAME IS 'Наименование корреспондентского счета'; + +COMMENT ON COLUMN BANK_ACCOUNT.CURRENCY IS 'Валюты (linked to currencyCode)'; + +COMMENT ON COLUMN BANK_ACCOUNT.DESTINATION IS 'Назначение платежа'; + +COMMENT ON COLUMN BANK_ACCOUNT.IBAN IS 'Международный номер банковского счета'; + +COMMENT ON COLUMN BANK_ACCOUNT.INTERNATIONAL_TRANSFER_SIGN IS 'Доступность международных переводов (linked to allowed)'; + +COMMENT ON COLUMN BANK_ACCOUNT.SWIFT_CODE IS 'Код SWIFT'; + +COMMENT ON COLUMN BANK_ACCOUNT.TAXPAYER_IDENTIFICATION_NUMBER IS 'Идентификационный номер налогоплательщика (ИНН)'; + +COMMENT ON COLUMN BANK_ACCOUNT.TAX_REGISTRATION_REASON_CODE IS 'Код причины постановки (КПП)'; + IS 'Номер счета'; + +COMMENT ON COLUMN BANK_ACCOUNT.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN BANK_ACCOUNT.ID IS 'Идентификатор записи'; + + +-- History log of bankAccount - Банковские реквизиты для перечисления денежных средств +CREATE TABLE IF NOT EXISTS BANK_ACCOUNT_HISTORY(BANK_ACCOUNT_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ACCOUNT_ID bigint, BANK_IDENTIFICATION_CODE varchar(255), BANK_NAME varchar(255), CORRESPONDENT_ACCOUNT varchar(255), CORRESPONDENT_ACCOUNT_NAME varchar(255), CURRENCY varchar(4), DESTINATION varchar(255), IBAN varchar(255), INTERNATIONAL_TRANSFER_SIGN varchar(4), SWIFT_CODE varchar(255), TAXPAYER_IDENTIFICATION_NUMBER varchar(255), TAX_REGISTRATION_REASON_CODE varchar(255), COMPANY_ID bigint, ID bigint PRIMARY KEY); +COMMENT ON TABLE BANK_ACCOUNT_HISTORY IS 'История изменений таблицы bankAccount'; +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.BANK_ACCOUNT_ID IS 'Идентификатор записи в таблице BANK_ACCOUNT'; +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.ACCOUNT_ID IS 'Номер счета (linked to account)'; + +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.BANK_IDENTIFICATION_CODE IS 'Банковский идентификационный код (БИК)'; + +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.BANK_NAME IS 'Наименование банка'; + +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.CORRESPONDENT_ACCOUNT IS 'Корреспондентский счет'; + +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.CORRESPONDENT_ACCOUNT_NAME IS 'Наименование корреспондентского счета'; + +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.CURRENCY IS 'Валюты (linked to currencyCode)'; + +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.DESTINATION IS 'Назначение платежа'; + +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.IBAN IS 'Международный номер банковского счета'; + +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.INTERNATIONAL_TRANSFER_SIGN IS 'Доступность международных переводов (linked to allowed)'; + +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.SWIFT_CODE IS 'Код SWIFT'; + +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.TAXPAYER_IDENTIFICATION_NUMBER IS 'Идентификационный номер налогоплательщика (ИНН)'; + +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.TAX_REGISTRATION_REASON_CODE IS 'Код причины постановки (КПП)'; + +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.ID IS 'Идентификатор записи'; + +-- informationAccount - Информационные счета +CREATE TABLE IF NOT EXISTS INFORMATION_ACCOUNT(ACCOUNT_ID bigint, CLEARING_ACCOUNT_ID bigint, COMPANY_ID bigint, ID bigint PRIMARY KEY); +COMMENT ON TABLE INFORMATION_ACCOUNT IS 'Информационные счета'; + +COMMENT ON COLUMN INFORMATION_ACCOUNT.ACCOUNT_ID IS 'Счет (linked to account)'; + +COMMENT ON COLUMN INFORMATION_ACCOUNT.CLEARING_ACCOUNT_ID IS 'Счета (linked to account)'; + +COMMENT ON COLUMN INFORMATION_ACCOUNT.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN INFORMATION_ACCOUNT.ID IS 'Идентификатор записи'; + + +-- History log of informationAccount - Информационные счета +CREATE TABLE IF NOT EXISTS INFORMATION_ACCOUNT_HISTORY(INFORMATION_ACCOUNT_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ACCOUNT_ID bigint, CLEARING_ACCOUNT_ID bigint, COMPANY_ID bigint, ID bigint PRIMARY KEY); +COMMENT ON TABLE INFORMATION_ACCOUNT_HISTORY IS 'История изменений таблицы informationAccount'; +COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.INFORMATION_ACCOUNT_ID IS 'Идентификатор записи в таблице INFORMATION_ACCOUNT'; +COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.ACCOUNT_ID IS 'Счет (linked to account)'; + +COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.CLEARING_ACCOUNT_ID IS 'Счета (linked to account)'; + +COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.ID IS 'Идентификатор записи'; + +-- accountRouting - Маршрутизация счета +CREATE TABLE IF NOT EXISTS ACCOUNT_ROUTING(ID bigint PRIMARY KEY, DESTINATION_ID bigint, RELATION_ID bigint, SOURCE_ID bigint); +COMMENT ON TABLE ACCOUNT_ROUTING IS 'Маршрутизация счета'; + +COMMENT ON COLUMN ACCOUNT_ROUTING.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN ACCOUNT_ROUTING.DESTINATION_ID IS 'Счет-назначение (зачисления) (linked to account)'; + +COMMENT ON COLUMN ACCOUNT_ROUTING.RELATION_ID IS 'Договорные отношения (linked to relation)'; + +COMMENT ON COLUMN ACCOUNT_ROUTING.SOURCE_ID IS 'Счет-источник (списания) (linked to account)'; + + +-- History log of accountRouting - Маршрутизация счета +CREATE TABLE IF NOT EXISTS ACCOUNT_ROUTING_HISTORY(ACCOUNT_ROUTING_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, DESTINATION_ID bigint, RELATION_ID bigint, SOURCE_ID bigint); +COMMENT ON TABLE ACCOUNT_ROUTING_HISTORY IS 'История изменений таблицы accountRouting'; +COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.ACCOUNT_ROUTING_ID IS 'Идентификатор записи в таблице ACCOUNT_ROUTING'; +COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.DESTINATION_ID IS 'Счет-назначение (зачисления) (linked to account)'; + +COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.RELATION_ID IS 'Договорные отношения (linked to relation)'; + +COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.SOURCE_ID IS 'Счет-источник (списания) (linked to account)'; + +-- security - Инструменты +CREATE TABLE IF NOT EXISTS SECURITY(INSTRUMENT_TYPE varchar(4), ISSUER_ID bigint, SHORT_NAME varchar(255), FULL_NAME varchar(255), SHORT_NAME_ENG varchar(255), FULL_NAME_ENG varchar(255), SECURITY_SYMBOL varchar(255), WORKFLOW_STATUS varchar(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE SECURITY IS 'Инструменты'; + +COMMENT ON COLUMN SECURITY.INSTRUMENT_TYPE IS 'Наименование типа инструмента (linked to instrumentType)'; + +COMMENT ON COLUMN SECURITY.ISSUER_ID IS 'Наименование эмитента (linked to company)'; + +COMMENT ON COLUMN SECURITY.SHORT_NAME IS 'Краткое наименование инструмента'; + +COMMENT ON COLUMN SECURITY.FULL_NAME IS 'Полное наименование инструмента'; + +COMMENT ON COLUMN SECURITY.SHORT_NAME_ENG IS 'Краткое наименование инструмента на английском'; + +COMMENT ON COLUMN SECURITY.FULL_NAME_ENG IS 'Полное наименование инструмента на английском'; + +COMMENT ON COLUMN SECURITY.SECURITY_SYMBOL IS 'Код инструмента'; + +COMMENT ON COLUMN SECURITY.WORKFLOW_STATUS IS 'Наименование статуса (linked to workflowStatus)'; + +COMMENT ON COLUMN SECURITY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN SECURITY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN SECURITY.UPDATED_AT IS 'Дата и время изменения записи'; + + +-- History log of security - Инструменты +CREATE TABLE IF NOT EXISTS SECURITY_HISTORY(SECURITY_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, INSTRUMENT_TYPE varchar(4), ISSUER_ID bigint, SHORT_NAME varchar(255), FULL_NAME varchar(255), SHORT_NAME_ENG varchar(255), FULL_NAME_ENG varchar(255), SECURITY_SYMBOL varchar(255), WORKFLOW_STATUS varchar(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE SECURITY_HISTORY IS 'История изменений таблицы security'; +COMMENT ON COLUMN SECURITY_HISTORY.SECURITY_ID IS 'Идентификатор записи в таблице SECURITY'; +COMMENT ON COLUMN SECURITY_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN SECURITY_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN SECURITY_HISTORY.INSTRUMENT_TYPE IS 'Наименование типа инструмента (linked to instrumentType)'; + +COMMENT ON COLUMN SECURITY_HISTORY.ISSUER_ID IS 'Наименование эмитента (linked to company)'; + +COMMENT ON COLUMN SECURITY_HISTORY.SHORT_NAME IS 'Краткое наименование инструмента'; + +COMMENT ON COLUMN SECURITY_HISTORY.FULL_NAME IS 'Полное наименование инструмента'; + +COMMENT ON COLUMN SECURITY_HISTORY.SHORT_NAME_ENG IS 'Краткое наименование инструмента на английском'; + +COMMENT ON COLUMN SECURITY_HISTORY.FULL_NAME_ENG IS 'Полное наименование инструмента на английском'; + +COMMENT ON COLUMN SECURITY_HISTORY.SECURITY_SYMBOL IS 'Код инструмента'; + +COMMENT ON COLUMN SECURITY_HISTORY.WORKFLOW_STATUS IS 'Наименование статуса (linked to workflowStatus)'; + +COMMENT ON COLUMN SECURITY_HISTORY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN SECURITY_HISTORY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN SECURITY_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; + +-- currency - Инструменты Валюты +CREATE TABLE IF NOT EXISTS CURRENCY(COUNTRY_CODE varchar(4), CURRENCY_CODE varchar(4), ID bigint PRIMARY KEY); +COMMENT ON TABLE CURRENCY IS 'Инструменты Валюты'; + +COMMENT ON COLUMN CURRENCY.COUNTRY_CODE IS 'Код страны (linked to countryCode)'; + +COMMENT ON COLUMN CURRENCY.CURRENCY_CODE IS 'Код валюты (linked to currencyCode)'; + +COMMENT ON COLUMN CURRENCY.ID IS 'Идентификатор записи'; + + +-- History log of currency - Инструменты Валюты +CREATE TABLE IF NOT EXISTS CURRENCY_HISTORY(CURRENCY_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, COUNTRY_CODE varchar(4), CURRENCY_CODE varchar(4), ID bigint PRIMARY KEY); +COMMENT ON TABLE CURRENCY_HISTORY IS 'История изменений таблицы currency'; +COMMENT ON COLUMN CURRENCY_HISTORY.CURRENCY_ID IS 'Идентификатор записи в таблице CURRENCY'; +COMMENT ON COLUMN CURRENCY_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN CURRENCY_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN CURRENCY_HISTORY.COUNTRY_CODE IS 'Код страны (linked to countryCode)'; + +COMMENT ON COLUMN CURRENCY_HISTORY.CURRENCY_CODE IS 'Код валюты (linked to currencyCode)'; + +COMMENT ON COLUMN CURRENCY_HISTORY.ID IS 'Идентификатор записи'; + +-- moneyMarketSecurity - Инструменты Денежного рынка +CREATE TABLE IF NOT EXISTS MONEY_MARKET_SECURITY(SECURITY_ID bigint, DESCRIPTION varchar(255), START_DATE date, END_DATE date, NOMINAL_VALUE numeric(72,2), NOMINAL_CURRENCY varchar(4), TERM_TYPE varchar(4), ID bigint PRIMARY KEY); +COMMENT ON TABLE MONEY_MARKET_SECURITY IS 'Инструменты Денежного рынка'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY.SECURITY_ID IS 'Наименование инструмента (linked to security)'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY.DESCRIPTION IS 'Описание'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY.START_DATE IS 'Дата начала действия'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY.END_DATE IS 'Дата окончания действия'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY.NOMINAL_VALUE IS 'Номинал'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY.NOMINAL_CURRENCY IS 'Валюта номинала (linked to currencyCode)'; + IS 'Наименование типа инструмента (linked to instrumentType)'; + IS 'Полное наименование инструмента'; + IS 'Код инструмента'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY.TERM_TYPE IS 'Наименование вида инструмента (linked to termType)'; + IS 'Размер лота (linked to listing)'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY.ID IS 'Идентификатор записи'; + + +-- History log of moneyMarketSecurity - Инструменты Денежного рынка +CREATE TABLE IF NOT EXISTS MONEY_MARKET_SECURITY_HISTORY(MONEY_MARKET_SECURITY_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, SECURITY_ID bigint, DESCRIPTION varchar(255), START_DATE date, END_DATE date, NOMINAL_VALUE numeric(72,2), NOMINAL_CURRENCY varchar(4), TERM_TYPE varchar(4), ID bigint PRIMARY KEY); +COMMENT ON TABLE MONEY_MARKET_SECURITY_HISTORY IS 'История изменений таблицы moneyMarketSecurity'; +COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.MONEY_MARKET_SECURITY_ID IS 'Идентификатор записи в таблице MONEY_MARKET_SECURITY'; +COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.SECURITY_ID IS 'Наименование инструмента (linked to security)'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.DESCRIPTION IS 'Описание'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.START_DATE IS 'Дата начала действия'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.END_DATE IS 'Дата окончания действия'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.NOMINAL_VALUE IS 'Номинал'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.NOMINAL_CURRENCY IS 'Валюта номинала (linked to currencyCode)'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.TERM_TYPE IS 'Наименование вида инструмента (linked to termType)'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.ID IS 'Идентификатор записи'; + +-- listing - Листинг инструментов +CREATE TABLE IF NOT EXISTS LISTING(SECURITY_ID bigint, LOT_SIZE numeric(72,2), MARKET varchar(4), SYMBOL_CODE varchar(255), SYMBOL_NAME varchar(255), TRADING_CURRENCY varchar(4), WORKFLOW_STATUS varchar(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE LISTING IS 'Листинг инструментов'; + +COMMENT ON COLUMN LISTING.SECURITY_ID IS 'Наименование инструмента (linked to security)'; + +COMMENT ON COLUMN LISTING.LOT_SIZE IS 'Размер лота'; + +COMMENT ON COLUMN LISTING.MARKET IS 'Секция (linked to market)'; + +COMMENT ON COLUMN LISTING.SYMBOL_CODE IS 'Код инструмента на торговой площадке'; + +COMMENT ON COLUMN LISTING.SYMBOL_NAME IS 'Название инструмента на торговой площадке'; + +COMMENT ON COLUMN LISTING.TRADING_CURRENCY IS 'Наименование кода валюты расчета (linked to currency)'; + +COMMENT ON COLUMN LISTING.WORKFLOW_STATUS IS 'Наименование статуса листинга в системе (linked to workflowStatus)'; + +COMMENT ON COLUMN LISTING.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN LISTING.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN LISTING.UPDATED_AT IS 'Дата и время изменения записи'; + + +-- History log of listing - Листинг инструментов +CREATE TABLE IF NOT EXISTS LISTING_HISTORY(LISTING_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, SECURITY_ID bigint, LOT_SIZE numeric(72,2), MARKET varchar(4), SYMBOL_CODE varchar(255), SYMBOL_NAME varchar(255), TRADING_CURRENCY varchar(4), WORKFLOW_STATUS varchar(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE LISTING_HISTORY IS 'История изменений таблицы listing'; +COMMENT ON COLUMN LISTING_HISTORY.LISTING_ID IS 'Идентификатор записи в таблице LISTING'; +COMMENT ON COLUMN LISTING_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN LISTING_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN LISTING_HISTORY.SECURITY_ID IS 'Наименование инструмента (linked to security)'; + +COMMENT ON COLUMN LISTING_HISTORY.LOT_SIZE IS 'Размер лота'; + +COMMENT ON COLUMN LISTING_HISTORY.MARKET IS 'Секция (linked to market)'; + +COMMENT ON COLUMN LISTING_HISTORY.SYMBOL_CODE IS 'Код инструмента на торговой площадке'; + +COMMENT ON COLUMN LISTING_HISTORY.SYMBOL_NAME IS 'Название инструмента на торговой площадке'; + +COMMENT ON COLUMN LISTING_HISTORY.TRADING_CURRENCY IS 'Наименование кода валюты расчета (linked to currency)'; + +COMMENT ON COLUMN LISTING_HISTORY.WORKFLOW_STATUS IS 'Наименование статуса листинга в системе (linked to workflowStatus)'; + +COMMENT ON COLUMN LISTING_HISTORY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN LISTING_HISTORY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN LISTING_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; + +-- market - Торговые секции +CREATE TABLE IF NOT EXISTS MARKET(DESCRIPTION varchar(255), EXCHANGE_ID bigint, NAME varchar(255), CODE varchar(4), SETTLEMENT_CURRENCY varchar(4), SECTOR varchar(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE MARKET IS 'Торговые секции'; + +COMMENT ON COLUMN MARKET.DESCRIPTION IS 'Описание'; + +COMMENT ON COLUMN MARKET.EXCHANGE_ID IS 'Наименование площадки (linked to company)'; + +COMMENT ON COLUMN MARKET.NAME IS 'Наименование'; + +COMMENT ON COLUMN MARKET.CODE IS 'Секция'; + +COMMENT ON COLUMN MARKET.SETTLEMENT_CURRENCY IS 'Валютный код расчетов (linked to currency)'; + +COMMENT ON COLUMN MARKET.SECTOR IS 'Наименование секции (linked to sector)'; + +COMMENT ON COLUMN MARKET.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN MARKET.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN MARKET.UPDATED_AT IS 'Дата и время изменения записи'; + + +-- History log of market - Торговые секции +CREATE TABLE IF NOT EXISTS MARKET_HISTORY(MARKET_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, DESCRIPTION varchar(255), EXCHANGE_ID bigint, NAME varchar(255), CODE varchar(4), SETTLEMENT_CURRENCY varchar(4), SECTOR varchar(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE MARKET_HISTORY IS 'История изменений таблицы market'; +COMMENT ON COLUMN MARKET_HISTORY.MARKET_ID IS 'Идентификатор записи в таблице MARKET'; +COMMENT ON COLUMN MARKET_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN MARKET_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN MARKET_HISTORY.DESCRIPTION IS 'Описание'; + +COMMENT ON COLUMN MARKET_HISTORY.EXCHANGE_ID IS 'Наименование площадки (linked to company)'; + +COMMENT ON COLUMN MARKET_HISTORY.NAME IS 'Наименование'; + +COMMENT ON COLUMN MARKET_HISTORY.CODE IS 'Секция'; + +COMMENT ON COLUMN MARKET_HISTORY.SETTLEMENT_CURRENCY IS 'Валютный код расчетов (linked to currency)'; + +COMMENT ON COLUMN MARKET_HISTORY.SECTOR IS 'Наименование секции (linked to sector)'; + +COMMENT ON COLUMN MARKET_HISTORY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN MARKET_HISTORY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN MARKET_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; + +-- accountBalance - Информация об остатках ден. средств +CREATE TABLE IF NOT EXISTS ACCOUNT_BALANCE(COMPANY_ID bigint, ACCOUNT_ID bigint, ACCOUNT_TYPE varchar(4), ACCOUNT varchar(50), OPEN_BALANCE_AMOUNT numeric(72,18), START_BALANCE_AMOUNT numeric(72,18), CLOSE_BALANCE_AMOUNT numeric(72,18), TRADE_BALANCE_AMOUNT numeric(72,18), FREE_BALANCE_AMOUNT numeric(72,18), CHANGE_BALANCE_AMOUNT numeric(72,18), CREDIT_AMOUNT numeric(72,18), DEBIT_AMOUNT numeric(72,18), BALANCE_AMOUNT numeric(72,18), BALANCE_ACCOUNT_TYPE varchar(4), CLEARING_DATE date, CURRENCY_CODE varchar(4), TRADING_CODE varchar(255), SHORT_NAME varchar(255), FULL_NAME varchar(255), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE ACCOUNT_BALANCE IS 'Информация об остатках ден. средств'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.COMPANY_ID IS 'Наименование участника (linked to company)'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.ACCOUNT_ID IS 'Наименование счета (linked to account)'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.ACCOUNT_TYPE IS 'Тип счета (linked to account)'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.ACCOUNT IS 'Наименование счета'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.OPEN_BALANCE_AMOUNT IS 'Начальная сумма после расчетной организации'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.START_BALANCE_AMOUNT IS 'Начальная сумма остатков ден. средств на начало работы'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.CLOSE_BALANCE_AMOUNT IS 'Конечная сумма остатков ден. средств на счете'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.TRADE_BALANCE_AMOUNT IS 'Регистр «Денежные средства Участника клиринга – блокированные»'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.FREE_BALANCE_AMOUNT IS 'Регистр «Денежные средства Участника клиринга – свободные»'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.CHANGE_BALANCE_AMOUNT IS 'Сумма изменения остатков ден. средств на счете'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.CREDIT_AMOUNT IS 'Зачисления'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.DEBIT_AMOUNT IS 'Списания'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.BALANCE_AMOUNT IS 'Денежные средства Участника клиринга, зарезервированные на торги'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.BALANCE_ACCOUNT_TYPE IS 'Тип баланса (linked to balanceAccountType)'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.CLEARING_DATE IS 'Дата расчета'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.CURRENCY_CODE IS 'Код валюты (linked to currency)'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.TRADING_CODE IS 'Торговый код Участника (linked to company)'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.SHORT_NAME IS 'Короткое наименование Участника (linked to company)'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.FULL_NAME IS 'Полное наименование Участника (linked to company)'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.UPDATED_AT IS 'Дата и время изменения записи'; + + +-- History log of accountBalance - Информация об остатках ден. средств +CREATE TABLE IF NOT EXISTS ACCOUNT_BALANCE_HISTORY(ACCOUNT_BALANCE_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, COMPANY_ID bigint, ACCOUNT_ID bigint, ACCOUNT_TYPE varchar(4), ACCOUNT varchar(50), OPEN_BALANCE_AMOUNT numeric(72,18), START_BALANCE_AMOUNT numeric(72,18), CLOSE_BALANCE_AMOUNT numeric(72,18), TRADE_BALANCE_AMOUNT numeric(72,18), FREE_BALANCE_AMOUNT numeric(72,18), CHANGE_BALANCE_AMOUNT numeric(72,18), CREDIT_AMOUNT numeric(72,18), DEBIT_AMOUNT numeric(72,18), BALANCE_AMOUNT numeric(72,18), BALANCE_ACCOUNT_TYPE varchar(4), CLEARING_DATE date, CURRENCY_CODE varchar(4), TRADING_CODE varchar(255), SHORT_NAME varchar(255), FULL_NAME varchar(255), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE ACCOUNT_BALANCE_HISTORY IS 'История изменений таблицы accountBalance'; +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT_BALANCE_ID IS 'Идентификатор записи в таблице ACCOUNT_BALANCE'; +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.COMPANY_ID IS 'Наименование участника (linked to company)'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT_ID IS 'Наименование счета (linked to account)'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT_TYPE IS 'Тип счета (linked to account)'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT IS 'Наименование счета'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.OPEN_BALANCE_AMOUNT IS 'Начальная сумма после расчетной организации'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.START_BALANCE_AMOUNT IS 'Начальная сумма остатков ден. средств на начало работы'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.CLOSE_BALANCE_AMOUNT IS 'Конечная сумма остатков ден. средств на счете'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.TRADE_BALANCE_AMOUNT IS 'Регистр «Денежные средства Участника клиринга – блокированные»'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.FREE_BALANCE_AMOUNT IS 'Регистр «Денежные средства Участника клиринга – свободные»'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.CHANGE_BALANCE_AMOUNT IS 'Сумма изменения остатков ден. средств на счете'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.CREDIT_AMOUNT IS 'Зачисления'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.DEBIT_AMOUNT IS 'Списания'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.BALANCE_AMOUNT IS 'Денежные средства Участника клиринга, зарезервированные на торги'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.BALANCE_ACCOUNT_TYPE IS 'Тип баланса (linked to balanceAccountType)'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.CLEARING_DATE IS 'Дата расчета'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.CURRENCY_CODE IS 'Код валюты (linked to currency)'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.TRADING_CODE IS 'Торговый код Участника (linked to company)'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.SHORT_NAME IS 'Короткое наименование Участника (linked to company)'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.FULL_NAME IS 'Полное наименование Участника (linked to company)'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; + +-- balanceRegister - Реестр остатков денежных средств +CREATE TABLE IF NOT EXISTS BALANCE_REGISTER(S_DF01_DATE timestamp, CURRENCY_CODE varchar(4), SET_HOUSE_NAME varchar(255), ACCOUNT varchar(50), INFO_ACCOUNT varchar(50), REMAINDER_SUM numeric(72,18), BLOCKED_SUM numeric(72,18), UNBLOCKED_SUM numeric(72,18), INN varchar(255), MARKET bigint, FULL_NAME varchar(255), TYPE_REMAINS varchar(4), DOC_NUMBER varchar(255), COMPANY_ID bigint, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE BALANCE_REGISTER IS 'Реестр остатков денежных средств'; + +COMMENT ON COLUMN BALANCE_REGISTER.S_DF01_DATE IS 'Дата создания записи в S_DF01'; + +COMMENT ON COLUMN BALANCE_REGISTER.CURRENCY_CODE IS 'Код валюты (linked to currencyCode)'; + +COMMENT ON COLUMN BALANCE_REGISTER.SET_HOUSE_NAME IS 'Наименование РО'; + +COMMENT ON COLUMN BALANCE_REGISTER.ACCOUNT IS 'Номер торгового/клирингового счета'; + +COMMENT ON COLUMN BALANCE_REGISTER.INFO_ACCOUNT IS 'Номер счета внутреннего учета СПВБ'; + +COMMENT ON COLUMN BALANCE_REGISTER.REMAINDER_SUM IS 'Остаток денежных средст'; + +COMMENT ON COLUMN BALANCE_REGISTER.BLOCKED_SUM IS 'Сумма блокированных денежных средств'; + +COMMENT ON COLUMN BALANCE_REGISTER.UNBLOCKED_SUM IS 'Сумма свободных денежных средств'; + +COMMENT ON COLUMN BALANCE_REGISTER.INN IS 'Идентификационный номер налогоплательщика (ИНН)'; + +COMMENT ON COLUMN BALANCE_REGISTER.MARKET IS 'Сегмент рынка (linked to market)'; + +COMMENT ON COLUMN BALANCE_REGISTER.FULL_NAME IS 'Наименование Участника Клиринга'; + +COMMENT ON COLUMN BALANCE_REGISTER.TYPE_REMAINS IS 'Тип остатка'; + +COMMENT ON COLUMN BALANCE_REGISTER.DOC_NUMBER IS 'Номер документа'; + +COMMENT ON COLUMN BALANCE_REGISTER.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN BALANCE_REGISTER.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN BALANCE_REGISTER.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN BALANCE_REGISTER.UPDATED_AT IS 'Дата и время изменения записи'; + +-- managementJournal - Журнал мониторинга и контроля +CREATE TABLE IF NOT EXISTS MANAGEMENT_JOURNAL(COMPANY_ID bigint, USER_ID bigint, MANAGEMENT_JOURNAL_TYPE varchar(4), MANAGEMENT_JOURNAL_PURPOSE varchar(4), MANAGEMENT_JOURNAL_STATUS varchar(4), TEXT varchar(4096), CHANGE_ACCESS_SIGN varchar(4), CHANGE_DATA_SIGN varchar(4), EVENT_DATE timestamp, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE MANAGEMENT_JOURNAL IS 'Журнал мониторинга и контроля'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL.COMPANY_ID IS 'Участник (linked to company)'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL.USER_ID IS 'Автор сообщения (linked to userCls)'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL.MANAGEMENT_JOURNAL_TYPE IS 'Тип мониторинга (linked to managementJournalType)'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL.MANAGEMENT_JOURNAL_PURPOSE IS 'Цель мониторинга (linked to managementJournalPurpose)'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL.MANAGEMENT_JOURNAL_STATUS IS 'Статус (linked to managementJournalStatus)'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL.TEXT IS 'Сообщение'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL.CHANGE_ACCESS_SIGN IS 'Признак изменения доступа (linked to allowed)'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL.CHANGE_DATA_SIGN IS 'Признак изменения данных (linked to allowed)'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL.EVENT_DATE IS 'Дата события ЕГРЮЛ'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL.CREATED_AT IS 'Создано'; + +COMMENT ON COLUMN MANAGEMENT_JOURNAL.UPDATED_AT IS 'Изменено'; + +-- inDocumentJournal - Журнал входящих документов +CREATE TABLE IF NOT EXISTS IN_DOCUMENT_JOURNAL(REGISTRATION_DATE date, REGISTRATION_TIME time, REGISTRATION_NUMBER bigint, DOCUMENT_NAME varchar(255), SENDER varchar(255), QUANTITY bigint, CLEARING_CODE varchar(255), COURIER_TYPE varchar(4), EMAIL_DATE date, AMOUNT numeric(72,2), DOSSIER_NUMBER varchar(50), COMMENT varchar(255), RECEIPT_DATE date, RESULT_STATUS varchar(4), ID bigint PRIMARY KEY); +COMMENT ON TABLE IN_DOCUMENT_JOURNAL IS 'Журнал входящих документов'; + +COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.REGISTRATION_DATE IS 'Дата регистрации'; + +COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.REGISTRATION_TIME IS 'Время регистрации'; + +COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.REGISTRATION_NUMBER IS 'Регистационный номер'; + +COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.DOCUMENT_NAME IS 'Наименование документа'; + +COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.SENDER IS 'Полное наименование отправителя'; + +COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.QUANTITY IS 'Количествово экземпляров'; + +COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.CLEARING_CODE IS 'Код Участника Клиринга'; + +COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.COURIER_TYPE IS 'Способ отправки (linked to courierType)'; + +COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.EMAIL_DATE IS 'Дата отправки электронной почтой'; + +COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.AMOUNT IS 'Сумма'; + +COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.DOSSIER_NUMBER IS 'Номер дела'; + +COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.COMMENT IS 'Комментарий'; + +COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.RECEIPT_DATE IS 'Дата получения оригинала'; + +COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.RESULT_STATUS IS 'Статус загрузки документа (linked to resultStatus)'; + +COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.ID IS 'Идентификатор записи'; + +-- outDocumentJournal - Журнал исходящих документов +CREATE TABLE IF NOT EXISTS OUT_DOCUMENT_JOURNAL(REGISTRATION_DATE date, REGISTRATION_TIME time, REGISTRATION_NUMBER bigint, DOCUMENT_NAME varchar(255), ADDRESSEE varchar(255), QUANTITY bigint, CLEARING_CODE varchar(255), COURIER_TYPE varchar(4), EMAIL_DATE date, AMOUNT numeric(72,2), DOSSIER_NUMBER varchar(50), POST_DATE date, RESULT_STATUS varchar(4), ID bigint PRIMARY KEY); +COMMENT ON TABLE OUT_DOCUMENT_JOURNAL IS 'Журнал исходящих документов'; + +COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.REGISTRATION_DATE IS 'Дата регистрации'; + +COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.REGISTRATION_TIME IS 'Время регистрации'; + +COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.REGISTRATION_NUMBER IS 'Регистационный номер'; + +COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.DOCUMENT_NAME IS 'Наименование документа'; + +COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.ADDRESSEE IS 'Полное наименование получателя'; + +COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.QUANTITY IS 'Количествово экземпляров'; + +COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.CLEARING_CODE IS 'Код Участника Клиринга'; + +COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.COURIER_TYPE IS 'Способ отправки (linked to courierType)'; + +COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.EMAIL_DATE IS 'Дата отправки электронной почтой'; + +COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.AMOUNT IS 'Сумма'; + +COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.DOSSIER_NUMBER IS 'Номер дела'; + +COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.POST_DATE IS 'Дата почтового отправления'; + +COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.RESULT_STATUS IS 'Статус выгрузки документа (linked to resultStatus)'; + +COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.ID IS 'Идентификатор записи'; + +-- executionDeposit - Сделки +CREATE TABLE IF NOT EXISTS EXECUTION_DEPOSIT(EXCHANGE_EXECUTION_ID bigint, EXCHANGE_EXECUTION_TIME timestamp, TRADING_DATE date, ACCOUNT_ID bigint, MARKET varchar(4), PRICE numeric(72,18), LOTS numeric(72,2), QUANTITY numeric(72,2), FIRST_LEG_AMOUNT numeric(72,2), SECOND_LEG_AMOUNT numeric(72,2), INTEREST_AMOUNT numeric(72,2), SIDE varchar(4), SETTLEMENT_CURRENCY varchar(4), COMPANY_ID bigint, DURATION bigint, FIRST_LEG_SETTLEMENT_DATE date, SECOND_LEG_SETTLEMENT_DATE date, FIRST_LEG_SETTLEMENT_CODE date, SECOND_LEG_SETTLEMENT_CODE date, SECURITY_FULL_NAME varchar(255), SECURITY_SYMBOL varchar(255), SECURITY_ID bigint, COUNTER_PARTY_ID bigint, COVERAGE_STATUS varchar(4), SESSION_ID bigint, ID bigint PRIMARY KEY, CREATED_AT time, UPDATED_AT time, CLEARING_DATE date); +COMMENT ON TABLE EXECUTION_DEPOSIT IS 'Сделки'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.EXCHANGE_EXECUTION_ID IS 'Идентификационный номер сделки в Торговой системе'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.EXCHANGE_EXECUTION_TIME IS 'Время заключения сделки в Торговой системе'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.TRADING_DATE IS 'Дата заключения сделки'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.ACCOUNT_ID IS 'Торговый счет (linked to account)'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.MARKET IS 'Секция финансового инструмента (linked to market)'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.PRICE IS 'Ставка по депозиту'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.LOTS IS 'Количество лотов'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.QUANTITY IS 'Количество штук'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.FIRST_LEG_AMOUNT IS 'Объем сделки'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.SECOND_LEG_AMOUNT IS 'Объем возврата'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.INTEREST_AMOUNT IS 'Объем процентов'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.SIDE IS 'Направление сделки (linked to moneyFlowSide)'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.SETTLEMENT_CURRENCY IS 'Валюта расчетов по инструменту (linked to currencyCode)'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.COMPANY_ID IS 'Название компании (linked to company)'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.DURATION IS 'Срок, дней'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.FIRST_LEG_SETTLEMENT_DATE IS 'Дата размещения'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.SECOND_LEG_SETTLEMENT_DATE IS 'Дата возврата'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.FIRST_LEG_SETTLEMENT_CODE IS 'Код расчетов при размещении'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.SECOND_LEG_SETTLEMENT_CODE IS 'Код расчетов при возврате'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.SECURITY_FULL_NAME IS 'Наименование инструмента'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.SECURITY_SYMBOL IS 'Код инструмента в Торговой Системе'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.SECURITY_ID IS 'Финансовый инструмент (linked to moneyMarketSecurity)'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.COUNTER_PARTY_ID IS 'Имя компании-партнера, с которым заключена сделка (linked to company)'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.COVERAGE_STATUS IS 'Cтатус достаточности обеспечения (linked to allowed)'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.SESSION_ID IS 'Наименование сессии (linked to moneyMarketSession)'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.CREATED_AT IS 'Время регистрации сделки'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.UPDATED_AT IS 'Время изменения сделки'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.CLEARING_DATE IS 'Дата клиринга'; + +-- dealRegister - Реестр сделок +CREATE TABLE IF NOT EXISTS DEAL_REGISTER(EXECUTION_ID bigint, EXCHANGE_EXECUTION_ID bigint, EXCHANGE_EXECUTION_TIME timestamp, TRADING_DATE date, ACCOUNT varchar(50), MARKET varchar(4), PRICE numeric(72,18), AMOUNT numeric(72,2), SIDE varchar(4), SETTLEMENT_CURRENCY varchar(4), COMPANY_ID bigint, FIRST_LEG_SETTLEMENT_DATE date, SECOND_LEG_SETTLEMENT_DATE date, SECURITY_FULL_NAME varchar(255), SECURITY_SYMBOL varchar(255), SECURITY_ID bigint, COUNTER_PARTY_ID bigint, COVERAGE_STATUS varchar(4), SESSION_ID bigint, ID bigint PRIMARY KEY, CREATED_AT time, UPDATED_AT time, CLEARING_DATE date); +COMMENT ON TABLE DEAL_REGISTER IS 'Реестр сделок'; + +COMMENT ON COLUMN DEAL_REGISTER.EXECUTION_ID IS 'Идентификационный номер сделки в Клиринговой системе'; + +COMMENT ON COLUMN DEAL_REGISTER.EXCHANGE_EXECUTION_ID IS 'Идентификационный номер сделки в Торговой системе'; + +COMMENT ON COLUMN DEAL_REGISTER.EXCHANGE_EXECUTION_TIME IS 'Время заключения сделки в Торговой системе'; + +COMMENT ON COLUMN DEAL_REGISTER.TRADING_DATE IS 'Дата заключения сделки'; + +COMMENT ON COLUMN DEAL_REGISTER.ACCOUNT IS 'Торговый счет'; + +COMMENT ON COLUMN DEAL_REGISTER.MARKET IS 'Секция финансового инструмента (linked to market)'; + +COMMENT ON COLUMN DEAL_REGISTER.PRICE IS 'Ставка по депозиту'; + +COMMENT ON COLUMN DEAL_REGISTER.AMOUNT IS 'Сумма сделки'; + +COMMENT ON COLUMN DEAL_REGISTER.SIDE IS 'Направление сделки (linked to moneyFlowSide)'; + +COMMENT ON COLUMN DEAL_REGISTER.SETTLEMENT_CURRENCY IS 'Валюта расчетов по инструменту (linked to currencyCode)'; + +COMMENT ON COLUMN DEAL_REGISTER.COMPANY_ID IS 'Название компании (linked to company)'; + +COMMENT ON COLUMN DEAL_REGISTER.FIRST_LEG_SETTLEMENT_DATE IS 'Дата размещения'; + +COMMENT ON COLUMN DEAL_REGISTER.SECOND_LEG_SETTLEMENT_DATE IS 'Дата возврата'; + +COMMENT ON COLUMN DEAL_REGISTER.SECURITY_FULL_NAME IS 'Наименование инструмента'; + +COMMENT ON COLUMN DEAL_REGISTER.SECURITY_SYMBOL IS 'Код инструмента в Торговой Системе'; + +COMMENT ON COLUMN DEAL_REGISTER.SECURITY_ID IS 'Финансовый инструмент (linked to security)'; + +COMMENT ON COLUMN DEAL_REGISTER.COUNTER_PARTY_ID IS 'Имя компании-партнера, с которым заключена сделка (linked to company)'; + +COMMENT ON COLUMN DEAL_REGISTER.COVERAGE_STATUS IS 'Cтатус достаточности обеспечения (linked to allowed)'; + +COMMENT ON COLUMN DEAL_REGISTER.SESSION_ID IS 'Наименование сессии (linked to moneyMarketSession)'; + +COMMENT ON COLUMN DEAL_REGISTER.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN DEAL_REGISTER.CREATED_AT IS 'Время регистрации'; + +COMMENT ON COLUMN DEAL_REGISTER.UPDATED_AT IS 'Время изменения'; + +COMMENT ON COLUMN DEAL_REGISTER.CLEARING_DATE IS 'Дата клиринга'; + +-- admittedDealRegister - Реестр сделок, допущенных к клирингу +CREATE TABLE IF NOT EXISTS ADMITTED_DEAL_REGISTER(EXECUTION_ID bigint, COMPANY_FULL_NAME varchar(255), TRADING_DATE date, EXCHANGE_EXECUTION_ID bigint, EXCHANGE_EXECUTION_TIME timestamp, SECURITY_SYMBOL varchar(255), SECURITY_FULL_NAME varchar(255), SELLER_FULL_NAME varchar(255), SELLER_CLEARING_CODE varchar(255), SELLER_ACCOUNT varchar(50), BUYER_FULL_NAME varchar(255), BUYER_CLEARING_CODE varchar(255), BUYER_ACCOUNT varchar(50), AMOUNT numeric(72,2), ID bigint PRIMARY KEY, CREATED_AT time, UPDATED_AT time, CLEARING_DATE date); +COMMENT ON TABLE ADMITTED_DEAL_REGISTER IS 'Реестр сделок, допущенных к клирингу'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.EXECUTION_ID IS 'Идентификационный номер сделки в Клиринговой системе'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.COMPANY_FULL_NAME IS 'Наименование биржи'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.TRADING_DATE IS 'Дата заключения сделки'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.EXCHANGE_EXECUTION_ID IS 'Идентификационный номер сделки в Торговой системе'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.EXCHANGE_EXECUTION_TIME IS 'Время заключения сделки в Торговой системе'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.SECURITY_SYMBOL IS 'Финансовый инструмент'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.SECURITY_FULL_NAME IS 'Наименование инструмента'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.SELLER_FULL_NAME IS 'Наименование продавца'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.SELLER_CLEARING_CODE IS 'Код продавца'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.SELLER_ACCOUNT IS 'Счет продавца'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.BUYER_FULL_NAME IS 'Наименование покупателя'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.BUYER_CLEARING_CODE IS 'Код покупателя'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.BUYER_ACCOUNT IS 'Счет покупателя'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.AMOUNT IS 'Сумма сделки'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.CREATED_AT IS 'Время регистрации'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.UPDATED_AT IS 'Время изменения'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.CLEARING_DATE IS 'Дата клиринга'; + +-- coveredDealRegister - Реестр сделок, прошедших процедуру контроля обеспечения +CREATE TABLE IF NOT EXISTS COVERED_DEAL_REGISTER(EXECUTION_ID bigint, COMPANY_FULL_NAME varchar(255), TRADING_DATE date, EXCHANGE_EXECUTION_ID bigint, EXCHANGE_EXECUTION_TIME timestamp, SECURITY_SYMBOL varchar(255), SECURITY_FULL_NAME varchar(255), SELLER_FULL_NAME varchar(255), SELLER_CLEARING_CODE varchar(255), SELLER_ACCOUNT varchar(50), BUYER_FULL_NAME varchar(255), BUYER_CLEARING_CODE varchar(255), BUYER_ACCOUNT varchar(50), AMOUNT numeric(72,2), ID bigint PRIMARY KEY, CREATED_AT time, UPDATED_AT time, CLEARING_DATE date); +COMMENT ON TABLE COVERED_DEAL_REGISTER IS 'Реестр сделок, прошедших процедуру контроля обеспечения'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.EXECUTION_ID IS 'Идентификационный номер сделки в Клиринговой системе'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.COMPANY_FULL_NAME IS 'Наименование биржи'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.TRADING_DATE IS 'Дата заключения сделки'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.EXCHANGE_EXECUTION_ID IS 'Идентификационный номер сделки в Торговой системе'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.EXCHANGE_EXECUTION_TIME IS 'Время заключения сделки в Торговой системе'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.SECURITY_SYMBOL IS 'Финансовый инструмент'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.SECURITY_FULL_NAME IS 'Наименование инструмента'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.SELLER_FULL_NAME IS 'Наименование продавца'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.SELLER_CLEARING_CODE IS 'Код продавца'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.SELLER_ACCOUNT IS 'Счет продавца'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.BUYER_FULL_NAME IS 'Наименование покупателя'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.BUYER_CLEARING_CODE IS 'Код покупателя'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.BUYER_ACCOUNT IS 'Счет покупателя'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.AMOUNT IS 'Сумма сделки'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.CREATED_AT IS 'Время регистрации'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.UPDATED_AT IS 'Время изменения'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.CLEARING_DATE IS 'Дата клиринга'; + +-- uncoveredDealRegister - Реестр сделок, не прошедших процедуру контроля обеспечения +CREATE TABLE IF NOT EXISTS UNCOVERED_DEAL_REGISTER(EXECUTION_ID bigint, COMPANY_FULL_NAME varchar(255), TRADING_DATE date, EXCHANGE_EXECUTION_ID bigint, EXCHANGE_EXECUTION_TIME timestamp, SECURITY_SYMBOL varchar(255), SECURITY_FULL_NAME varchar(255), SELLER_FULL_NAME varchar(255), SELLER_CLEARING_CODE varchar(255), SELLER_ACCOUNT varchar(50), BUYER_FULL_NAME varchar(255), BUYER_CLEARING_CODE varchar(255), BUYER_ACCOUNT varchar(50), AMOUNT numeric(72,2), RESULT_STATUS varchar(4), ID bigint PRIMARY KEY, CREATED_AT time, UPDATED_AT time, CLEARING_DATE date); +COMMENT ON TABLE UNCOVERED_DEAL_REGISTER IS 'Реестр сделок, не прошедших процедуру контроля обеспечения'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.EXECUTION_ID IS 'Идентификационный номер сделки в Клиринговой системе'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.COMPANY_FULL_NAME IS 'Наименование биржи'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.TRADING_DATE IS 'Дата заключения сделки'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.EXCHANGE_EXECUTION_ID IS 'Идентификационный номер сделки в Торговой системе'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.EXCHANGE_EXECUTION_TIME IS 'Время заключения сделки в Торговой системе'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.SECURITY_SYMBOL IS 'Финансовый инструмент'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.SECURITY_FULL_NAME IS 'Наименование инструмента'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.SELLER_FULL_NAME IS 'Наименование продавца'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.SELLER_CLEARING_CODE IS 'Код продавца'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.SELLER_ACCOUNT IS 'Счет продавца'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.BUYER_FULL_NAME IS 'Наименование покупателя'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.BUYER_CLEARING_CODE IS 'Код покупателя'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.BUYER_ACCOUNT IS 'Счет покупателя'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.AMOUNT IS 'Сумма сделки'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.RESULT_STATUS IS 'Результат клиринга (linked to resultStatus)'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.CREATED_AT IS 'Время регистрации'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.UPDATED_AT IS 'Время изменения'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.CLEARING_DATE IS 'Дата клиринга'; + +-- reportRegister - Реестр отчетов +CREATE TABLE IF NOT EXISTS REPORT_REGISTER(COMPANY_FULL_NAME varchar(255), CLEARING_CODE varchar(255), SESSION_ID bigint, COMMENT varchar(255), NAME varchar(255), QUANTITY bigint, ID bigint PRIMARY KEY, CREATED_AT time, UPDATED_AT time, CLEARING_DATE date); +COMMENT ON TABLE REPORT_REGISTER IS 'Реестр отчетов'; + +COMMENT ON COLUMN REPORT_REGISTER.COMPANY_FULL_NAME IS 'Наименование участника'; + +COMMENT ON COLUMN REPORT_REGISTER.CLEARING_CODE IS 'Код клиринга'; + +COMMENT ON COLUMN REPORT_REGISTER.SESSION_ID IS 'Сессия (linked to moneyMarketSession)'; + +COMMENT ON COLUMN REPORT_REGISTER.COMMENT IS 'Комментарий'; + +COMMENT ON COLUMN REPORT_REGISTER.NAME IS 'Наименование'; + +COMMENT ON COLUMN REPORT_REGISTER.QUANTITY IS 'Количество записей'; + +COMMENT ON COLUMN REPORT_REGISTER.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN REPORT_REGISTER.CREATED_AT IS 'Время регистрации'; + +COMMENT ON COLUMN REPORT_REGISTER.UPDATED_AT IS 'Время изменения'; + +COMMENT ON COLUMN REPORT_REGISTER.CLEARING_DATE IS 'Дата клиринга'; + +-- contractRegister - Журнал регистрации договоров +CREATE TABLE IF NOT EXISTS CONTRACT_REGISTER(NAME varchar(255), NUMBER varchar(255), ISSUE_DATE date, COMPANY_FULL_NAME bigint, COMPANY_ID bigint, DOCUMENT_TYPE varchar(4), ISSUE_PLACE varchar(255), ISSUER varchar(255), ISSUER_CODE varchar(255), PLACE varchar(255), VALID_FROM_DATE date, VALID_TO_DATE date, CLOSE_DATE date, COMMENT varchar(255), ID bigint PRIMARY KEY, CREATED_AT time, UPDATED_AT time); +COMMENT ON TABLE CONTRACT_REGISTER IS 'Журнал регистрации договоров'; + +COMMENT ON COLUMN CONTRACT_REGISTER.NAME IS 'Наименование документа'; + +COMMENT ON COLUMN CONTRACT_REGISTER.NUMBER IS 'Номер документа'; + +COMMENT ON COLUMN CONTRACT_REGISTER.ISSUE_DATE IS 'Дата составления'; + +COMMENT ON COLUMN CONTRACT_REGISTER.COMPANY_FULL_NAME IS 'Наименование лица'; + +COMMENT ON COLUMN CONTRACT_REGISTER.COMPANY_ID IS 'Наименование Компании (linked to company)'; + +COMMENT ON COLUMN CONTRACT_REGISTER.DOCUMENT_TYPE IS 'Наименование типа документа (linked to documentType)'; + +COMMENT ON COLUMN CONTRACT_REGISTER.ISSUE_PLACE IS 'Место выдачи'; + +COMMENT ON COLUMN CONTRACT_REGISTER.ISSUER IS 'Кем выдан'; + +COMMENT ON COLUMN CONTRACT_REGISTER.ISSUER_CODE IS 'Код выдавшего органа'; + +COMMENT ON COLUMN CONTRACT_REGISTER.PLACE IS 'Место'; + +COMMENT ON COLUMN CONTRACT_REGISTER.VALID_FROM_DATE IS 'Дата начала срока действия'; + +COMMENT ON COLUMN CONTRACT_REGISTER.VALID_TO_DATE IS 'Дата окончания срока действия'; + +COMMENT ON COLUMN CONTRACT_REGISTER.CLOSE_DATE IS 'Дата расторжения'; + +COMMENT ON COLUMN CONTRACT_REGISTER.COMMENT IS 'Место'; + +COMMENT ON COLUMN CONTRACT_REGISTER.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN CONTRACT_REGISTER.CREATED_AT IS 'Дата и время регистрации документа'; + +COMMENT ON COLUMN CONTRACT_REGISTER.UPDATED_AT IS 'Время изменения сделки'; + +-- orderRegister - Реестра распоряжений +CREATE TABLE IF NOT EXISTS ORDER_REGISTER(CREDIT_LEG_ACCOUNT varchar, CREDIT_LEG_AMOUNT numeric(72,18), CREDIT_LEG_CURRENCY_CODE varchar(4), CREDIT_LEG_DIRECTION bigint, DEBIT_LEG_ACCOUNT varchar, SENDER varchar(255), ADDRESSEE varchar(255), DOCUMENT_NUMBER varchar(255), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date); +COMMENT ON TABLE ORDER_REGISTER IS 'Реестра распоряжений'; + +COMMENT ON COLUMN ORDER_REGISTER.CREDIT_LEG_ACCOUNT IS 'Счет отправителя'; + +COMMENT ON COLUMN ORDER_REGISTER.CREDIT_LEG_AMOUNT IS 'Сумма отправителя'; + +COMMENT ON COLUMN ORDER_REGISTER.CREDIT_LEG_CURRENCY_CODE IS 'Код валюты отправителя (linked to currency)'; + +COMMENT ON COLUMN ORDER_REGISTER.CREDIT_LEG_DIRECTION IS 'Направление отправителя (linked to inOutDirection)'; + +COMMENT ON COLUMN ORDER_REGISTER.DEBIT_LEG_ACCOUNT IS 'Счет получателя'; + +COMMENT ON COLUMN ORDER_REGISTER.SENDER IS 'Отправитель'; + +COMMENT ON COLUMN ORDER_REGISTER.ADDRESSEE IS 'Получатель'; + +COMMENT ON COLUMN ORDER_REGISTER.DOCUMENT_NUMBER IS 'Номер документа в сторонней системе'; + +COMMENT ON COLUMN ORDER_REGISTER.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN ORDER_REGISTER.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN ORDER_REGISTER.UPDATED_AT IS 'Дата и время изменения записи'; + +COMMENT ON COLUMN ORDER_REGISTER.CLEARING_DATE IS 'Дата расчета'; + +-- liabilitiesClaimsMoney - Требования и обязательства денежных средств +CREATE TABLE IF NOT EXISTS LIABILITIES_CLAIMS_MONEY(COMPANY_ID bigint, ACCOUNT_ID bigint, ACCOUNT_TYPE varchar(4), ACCOUNT varchar(50), LIABILITIES_AMOUNT numeric(72,2), CLAIMS_AMOUNT numeric(72,2), SETTLEMENT_DATE date, TRADING_DATE date, CURRENCY varchar(4), TRADING_CODE varchar(255), SHORT_NAME varchar(255), FULL_NAME varchar(255), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date); +COMMENT ON TABLE LIABILITIES_CLAIMS_MONEY IS 'Требования и обязательства денежных средств'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.COMPANY_ID IS 'Наименование участника (linked to company)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.ACCOUNT_ID IS 'Наименование счета (linked to account)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.ACCOUNT_TYPE IS 'Тип счета (linked to accountType)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.ACCOUNT IS 'Наименование счета'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.LIABILITIES_AMOUNT IS 'Регистр «Обязательства по денежным средствам, сформированные по результатам собственных сделок Участника клиринга», исключая проценты'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.CLAIMS_AMOUNT IS 'Сумма требований, исключая проценты'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.SETTLEMENT_DATE IS 'Дата расчета'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.TRADING_DATE IS 'Дата торгов'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.CURRENCY IS 'Код валюты (linked to currencyCode)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.TRADING_CODE IS 'Торговый код Участника (linked to company)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.SHORT_NAME IS 'Короткое наименование Участника (linked to company)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.FULL_NAME IS 'Полное наименование Участника (linked to company)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.UPDATED_AT IS 'Дата и время изменения записи'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.CLEARING_DATE IS 'Дата клиринга'; + +-- liabilitiesClaimsAssets - Требования и обязательства финансовых активов +CREATE TABLE IF NOT EXISTS LIABILITIES_CLAIMS_ASSETS(COMPANY_ID bigint, ACCOUNT_ID bigint, ACCOUNT_TYPE varchar(4), ACCOUNT varchar(50), LIABILITIES_QUANTITY numeric(72,18), CLAIMS_QUANTITY numeric(72,18), CURRENCY varchar(4), SETTLEMENT_DATE date, TRADING_DATE date, REFUND_DATE date, PRICE numeric(72,18), SECURITY_ID bigint, TRADING_CODE varchar(255), CLEARING_CODE varchar(255), SHORT_NAME varchar(255), CONTRACT varchar(255), COMMENT varchar(255), FULL_NAME varchar(255), PARENT_ID bigint, LIABILITIES_CLAIMS_MONEY_ID bigint, CLEARING_STATUS bigint, PAYMENT_ID bigint, REFUND_PAYMENT_ID bigint, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date); +COMMENT ON TABLE LIABILITIES_CLAIMS_ASSETS IS 'Требования и обязательства финансовых активов'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.COMPANY_ID IS 'Наименование участника (linked to company)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.ACCOUNT_ID IS 'Наименование счета (linked to account)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.ACCOUNT_TYPE IS 'Тип счета (linked to accountType)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.ACCOUNT IS 'Наименование счета'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.LIABILITIES_QUANTITY IS 'Сумма обязательств'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CLAIMS_QUANTITY IS 'Сумма требований'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CURRENCY IS 'Код валюты (linked to currencyCode)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.SETTLEMENT_DATE IS 'Дата расчета'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.TRADING_DATE IS 'Дата торгов'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.REFUND_DATE IS 'Дата возврата'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.PRICE IS 'Ставка по депозиту'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.SECURITY_ID IS 'Инструмент (linked to security)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.TRADING_CODE IS 'Торговый код Участника (linked to company)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CLEARING_CODE IS 'Клиринговый код Участника (linked to company)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.SHORT_NAME IS 'Короткое наименование Участника (linked to company)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CONTRACT IS 'Номер договора'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.COMMENT IS 'Комментарий'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.FULL_NAME IS 'Полное наименование Участника (linked to company)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.PARENT_ID IS 'Запись основного договора без разделения'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.LIABILITIES_CLAIMS_MONEY_ID IS 'Регистры денежных средств (linked to liabilitiesClaimsMoney)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CLEARING_STATUS IS 'Статус клиринга (linked to clearingStatus)'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.PAYMENT_ID IS 'Платеж'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.REFUND_PAYMENT_ID IS 'Обратный платежа'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.UPDATED_AT IS 'Дата и время изменения записи'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CLEARING_DATE IS 'Дата клиринга'; + +-- statement - Денежные средства от расчетной организации +CREATE TABLE IF NOT EXISTS STATEMENT(ADDRESSEE_ID bigint, SENDER_ID bigint, STATEMENT_TYPE varchar(4), COMMENT varchar(255), ACCOUNT_ID bigint, ACCOUNT varchar(50), IN_OUT_DIRECTION varchar(4), SETTLEMENT_DATE date, AMOUNT numeric(72,2), CASH_MOVEMENT_CURRENCY_CODE varchar(4), OPERATION_STATUS varchar(4), ERROR_CODE varchar(4), ERROR_TEXT varchar(4), IN_S_DF_ID bigint, OUT_S_DF_ID bigint, IN_OUT_S_DF_TYPE varchar(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date); +COMMENT ON TABLE STATEMENT IS 'Денежные средства от расчетной организации'; + +COMMENT ON COLUMN STATEMENT.ADDRESSEE_ID IS 'Наименование участника получателя (linked to company)'; + +COMMENT ON COLUMN STATEMENT.SENDER_ID IS 'Наименование участника отправителя (linked to company)'; + +COMMENT ON COLUMN STATEMENT.STATEMENT_TYPE IS 'Тип поступления средств (linked to statementType)'; + +COMMENT ON COLUMN STATEMENT.COMMENT IS 'Комментарий'; + +COMMENT ON COLUMN STATEMENT.ACCOUNT_ID IS 'Наименование счета (linked to account)'; + +COMMENT ON COLUMN STATEMENT.ACCOUNT IS 'Наименование счета'; + +COMMENT ON COLUMN STATEMENT.IN_OUT_DIRECTION IS 'Направление (linked to inOutDirection)'; + +COMMENT ON COLUMN STATEMENT.SETTLEMENT_DATE IS 'Дата расчетов'; + +COMMENT ON COLUMN STATEMENT.AMOUNT IS 'Объем'; + +COMMENT ON COLUMN STATEMENT.CASH_MOVEMENT_CURRENCY_CODE IS 'Код валюты (linked to currency)'; + +COMMENT ON COLUMN STATEMENT.OPERATION_STATUS IS 'Cтатус обработки (linked to operationStatus)'; + +COMMENT ON COLUMN STATEMENT.ERROR_CODE IS 'Код ошибки (linked to errorCode)'; + +COMMENT ON COLUMN STATEMENT.ERROR_TEXT IS 'Полный текст ошибки (linked to errorText)'; + +COMMENT ON COLUMN STATEMENT.IN_S_DF_ID IS 'Запись, инициировавшая изменения этой таблицы'; + +COMMENT ON COLUMN STATEMENT.OUT_S_DF_ID IS 'Запись, сформированная в результате изменения этой таблицы'; + +COMMENT ON COLUMN STATEMENT.IN_OUT_S_DF_TYPE IS 'Типы входящей и исходящей записей (linked to inOutSDfType)'; + +COMMENT ON COLUMN STATEMENT.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN STATEMENT.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN STATEMENT.UPDATED_AT IS 'Дата и время изменения записи'; + +COMMENT ON COLUMN STATEMENT.CLEARING_DATE IS 'Дата расчета'; + +-- tradeSettlement - Проводки на базе сделок торговой системы +CREATE TABLE IF NOT EXISTS TRADE_SETTLEMENT(ID bigint PRIMARY KEY, ADDRESSEE_ID bigint, SENDER_ID bigint, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, AMOUNT numeric(72,2), CURRENCY_CODE varchar(4), IN_OUT_DIRECTION bigint, ACCOUNT_ID bigint, ACCOUNT varchar(50), OPERATION_STATUS varchar(4)); +COMMENT ON TABLE TRADE_SETTLEMENT IS 'Проводки на базе сделок торговой системы'; + +COMMENT ON COLUMN TRADE_SETTLEMENT.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN TRADE_SETTLEMENT.ADDRESSEE_ID IS 'Идентификатор участника получателя (linked to company)'; + +COMMENT ON COLUMN TRADE_SETTLEMENT.SENDER_ID IS 'Идентификатор участника отправителя (linked to company)'; + +COMMENT ON COLUMN TRADE_SETTLEMENT.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN TRADE_SETTLEMENT.UPDATED_AT IS 'Дата и время изменения записи'; + +COMMENT ON COLUMN TRADE_SETTLEMENT.CLEARING_DATE IS 'Дата расчета'; + +COMMENT ON COLUMN TRADE_SETTLEMENT.AMOUNT IS 'Объем'; + +COMMENT ON COLUMN TRADE_SETTLEMENT.CURRENCY_CODE IS 'Код валюты (linked to currency)'; + +COMMENT ON COLUMN TRADE_SETTLEMENT.IN_OUT_DIRECTION IS 'Направление (linked to inOutDirection)'; + +COMMENT ON COLUMN TRADE_SETTLEMENT.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; + +COMMENT ON COLUMN TRADE_SETTLEMENT.ACCOUNT IS 'Счет'; + +COMMENT ON COLUMN TRADE_SETTLEMENT.OPERATION_STATUS IS 'Cтатус обработки (linked to operationStatus)'; + +-- operation - Проводки +CREATE TABLE IF NOT EXISTS OPERATION(ID bigint PRIMARY KEY, ADDRESSEE_ID bigint, SENDER_ID bigint, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, OPERATION_TYPE_ID bigint, OPERATION_STATUS varchar(4)); +COMMENT ON TABLE OPERATION IS 'Проводки'; + +COMMENT ON COLUMN OPERATION.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN OPERATION.ADDRESSEE_ID IS 'Идентификатор участника получателя (linked to company)'; + +COMMENT ON COLUMN OPERATION.SENDER_ID IS 'Идентификатор участника отправителя (linked to company)'; + +COMMENT ON COLUMN OPERATION.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN OPERATION.UPDATED_AT IS 'Дата и время изменения записи'; + +COMMENT ON COLUMN OPERATION.CLEARING_DATE IS 'Дата расчета'; + +COMMENT ON COLUMN OPERATION.OPERATION_TYPE_ID IS 'Тип проводки (linked to operationType)'; + +COMMENT ON COLUMN OPERATION.OPERATION_STATUS IS 'Cтатус обработки (linked to operationStatus)'; + +-- paymentInstruction - Информация о денежных средствах +CREATE TABLE IF NOT EXISTS PAYMENT_INSTRUCTION(SENDER_ID bigint, ADDRESSEE_ID bigint, ADRESSEE_BIC varchar(255), PAYEE_BANK_NAME varchar(255), PAYEE_BIC varchar(255), ADDRESSEE_BANK_NAME varchar(255), PAYMENT_DATE timestamp, PAYMENT_PURPOSE varchar(255), SETTLEMENT_DATE date, CREDIT_LEG_AMOUNT bigint, DEBIT_LEG_AMOUNT bigint, CREDIT_LEG_ACCOUNT_ID bigint, CREDIT_CS_ACCOUNT varchar(255), CREDIT_LEG_ACCOUNT varchar(50), DEBIT_LEG_ACCOUNT_ID bigint, DEBIT_CS_ACCOUNT varchar(255), DEBIT_LEG_ACCOUNT varchar(50), CREDIT_LEG_DIRECTION bigint, DEBIT_LEG_DIRECTION bigint, CREDIT_LEG_CURRENCY_CODE varchar(4), DEBIT_LEG_CURRENCY_CODE varchar(4), TRANSACTION_STATUS varchar(4), DOCUMENT_NUMBER varchar(255), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date); +COMMENT ON TABLE PAYMENT_INSTRUCTION IS 'Информация о денежных средствах'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.SENDER_ID IS 'Наименование участника отправителя (linked to company)'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.ADDRESSEE_ID IS 'Наименование участника получателя (linked to company)'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.ADRESSEE_BIC IS 'Банковский идентификационный код (БИК) получателя'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.PAYEE_BANK_NAME IS 'Банк отправителя'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.PAYEE_BIC IS 'Банковский идентификационный код (БИК) отправителя'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.ADDRESSEE_BANK_NAME IS 'Банк получателя'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.PAYMENT_DATE IS 'Дата и время платежа'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.PAYMENT_PURPOSE IS 'Назначение платежа'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.SETTLEMENT_DATE IS 'Дата расчетов'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_LEG_AMOUNT IS 'Сумма отправителя'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_LEG_AMOUNT IS 'Сумма получателя'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_LEG_ACCOUNT_ID IS 'Наименование счета отправителя (linked to account)'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_CS_ACCOUNT IS 'Корреспондентский счет отправителя'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_LEG_ACCOUNT IS 'Счет отправителя (linked to Account)'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_LEG_ACCOUNT_ID IS 'Наименование счета получателя (linked to account)'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_CS_ACCOUNT IS 'Корреспондентский счет получателя'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_LEG_ACCOUNT IS 'Счет получателя (linked to Account)'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_LEG_DIRECTION IS 'Направление отправителя (linked to inOutDirection)'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_LEG_DIRECTION IS 'Направление получателя (linked to inOutDirection)'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_LEG_CURRENCY_CODE IS 'Код валюты отправителя (linked to currency)'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_LEG_CURRENCY_CODE IS 'Код валюты получателя (linked to currency)'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.TRANSACTION_STATUS IS 'Cтатус транзакции (linked to transactionStatus)'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.DOCUMENT_NUMBER IS 'Номер документа в сторонней системе'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.UPDATED_AT IS 'Дата и время изменения записи'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.CLEARING_DATE IS 'Дата расчета'; + +-- marketData - Итоги торгов +CREATE TABLE IF NOT EXISTS MARKET_DATA(ID bigint PRIMARY KEY, SECURITIES_DEPOSIT_ID bigint, COMPANY_NAME varchar(255), MARKET varchar(4), COUNTER_PARTY_NUM bigint, TRADES_NUM bigint, AMOUNT numeric(72,2), OPEN_PRICE numeric(72,18), MAX_PRICE numeric(72,18), MIN_PRICE numeric(72,18), CLOSE_PRICE numeric(72,18), AVG_PRICE numeric(72,18), DURATION bigint, CREATED_AT time, UPDATED_AT time, TRADING_DATE date); +COMMENT ON TABLE MARKET_DATA IS 'Итоги торгов'; + +COMMENT ON COLUMN MARKET_DATA.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN MARKET_DATA.SECURITIES_DEPOSIT_ID IS 'Биржевой код инструмента (linked to security)'; + +COMMENT ON COLUMN MARKET_DATA.COMPANY_NAME IS 'Инициатор торгов'; + +COMMENT ON COLUMN MARKET_DATA.MARKET IS 'Секция (linked to market)'; + +COMMENT ON COLUMN MARKET_DATA.COUNTER_PARTY_NUM IS 'Количество участников, заключивших сделки'; + +COMMENT ON COLUMN MARKET_DATA.TRADES_NUM IS 'Количество сделок'; + +COMMENT ON COLUMN MARKET_DATA.AMOUNT IS 'Объем сделок, руб'; + +COMMENT ON COLUMN MARKET_DATA.OPEN_PRICE IS 'Откр.'; + +COMMENT ON COLUMN MARKET_DATA.MAX_PRICE IS 'Макс.'; + +COMMENT ON COLUMN MARKET_DATA.MIN_PRICE IS 'Мин.'; + +COMMENT ON COLUMN MARKET_DATA.CLOSE_PRICE IS 'Закр.'; + +COMMENT ON COLUMN MARKET_DATA.AVG_PRICE IS 'Ср.взв.'; + +COMMENT ON COLUMN MARKET_DATA.DURATION IS 'Срок, дней'; + +COMMENT ON COLUMN MARKET_DATA.CREATED_AT IS 'Время регистрации сделки'; + +COMMENT ON COLUMN MARKET_DATA.UPDATED_AT IS 'Время изменения сделки'; + +COMMENT ON COLUMN MARKET_DATA.TRADING_DATE IS 'Дата торгов'; + +-- chargeTariff - Тарифы комиссий +CREATE TABLE IF NOT EXISTS CHARGE_TARIFF(ID bigint PRIMARY KEY, MARKET varchar(4), CLEARING_MEMBER_CATEGORY varchar(4), CHARGE_TYPE_ID bigint, CHARGE_RATE numeric(72,18), CURRENCY bigint, VALID_FROM_DATE date, VALID_TO_DATE date, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE CHARGE_TARIFF IS 'Тарифы комиссий'; + +COMMENT ON COLUMN CHARGE_TARIFF.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN CHARGE_TARIFF.MARKET IS 'Секция (linked to market)'; + +COMMENT ON COLUMN CHARGE_TARIFF.CLEARING_MEMBER_CATEGORY IS 'Категория участника клиринга (linked to clearingCategory)'; + +COMMENT ON COLUMN CHARGE_TARIFF.CHARGE_TYPE_ID IS 'Тип комиссии (linked to chargeType)'; + +COMMENT ON COLUMN CHARGE_TARIFF.CHARGE_RATE IS 'Ставка комиссионного сбора'; + +COMMENT ON COLUMN CHARGE_TARIFF.CURRENCY IS 'Валюта начисления комиссии (linked to currencyCode)'; + +COMMENT ON COLUMN CHARGE_TARIFF.VALID_FROM_DATE IS 'Дата начала срока действия'; + +COMMENT ON COLUMN CHARGE_TARIFF.VALID_TO_DATE IS 'Дата окончания срока действия'; + +COMMENT ON COLUMN CHARGE_TARIFF.CREATED_AT IS 'Создано'; + +COMMENT ON COLUMN CHARGE_TARIFF.UPDATED_AT IS 'Изменено'; + + +-- History log of chargeTariff - Тарифы комиссий +CREATE TABLE IF NOT EXISTS CHARGE_TARIFF_HISTORY(CHARGE_TARIFF_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, MARKET varchar(4), CLEARING_MEMBER_CATEGORY varchar(4), CHARGE_TYPE_ID bigint, CHARGE_RATE numeric(72,18), CURRENCY bigint, VALID_FROM_DATE date, VALID_TO_DATE date, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE CHARGE_TARIFF_HISTORY IS 'История изменений таблицы chargeTariff'; +COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.CHARGE_TARIFF_ID IS 'Идентификатор записи в таблице CHARGE_TARIFF'; +COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.MARKET IS 'Секция (linked to market)'; + +COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.CLEARING_MEMBER_CATEGORY IS 'Категория участника клиринга (linked to clearingCategory)'; + +COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.CHARGE_TYPE_ID IS 'Тип комиссии (linked to chargeType)'; + +COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.CHARGE_RATE IS 'Ставка комиссионного сбора'; + +COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.CURRENCY IS 'Валюта начисления комиссии (linked to currencyCode)'; + +COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.VALID_FROM_DATE IS 'Дата начала срока действия'; + +COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.VALID_TO_DATE IS 'Дата окончания срока действия'; + +COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.CREATED_AT IS 'Создано'; + +COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.UPDATED_AT IS 'Изменено'; + +-- individualChargeTariff - Индивидуальные тарифы комиссий для Участника +CREATE TABLE IF NOT EXISTS INDIVIDUAL_CHARGE_TARIFF(ID bigint PRIMARY KEY, COMPANY_ID bigint, MARKET varchar(4), CLEARING_MEMBER_CATEGORY varchar(4), CHARGE_TYPE_ID bigint, CHARGE_RATE numeric(72,18), CURRENCY bigint, VALID_FROM_DATE date, VALID_TO_DATE date, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE INDIVIDUAL_CHARGE_TARIFF IS 'Индивидуальные тарифы комиссий для Участника'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.COMPANY_ID IS 'Участник (linked to company)'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.MARKET IS 'Секция (linked to market)'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.CLEARING_MEMBER_CATEGORY IS 'Категория участника клиринга (linked to clearingCategory)'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.CHARGE_TYPE_ID IS 'Тип комиссии (linked to chargeType)'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.CHARGE_RATE IS 'Ставка комиссионного сбора'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.CURRENCY IS 'Валюта начисления комиссии (linked to currencyCode)'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.VALID_FROM_DATE IS 'Дата начала срока действия'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.VALID_TO_DATE IS 'Дата окончания срока действия'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.CREATED_AT IS 'Создано'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.UPDATED_AT IS 'Изменено'; + + +-- History log of individualChargeTariff - Индивидуальные тарифы комиссий для Участника +CREATE TABLE IF NOT EXISTS INDIVIDUAL_CHARGE_TARIFF_HISTORY(INDIVIDUAL_CHARGE_TARIFF_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, COMPANY_ID bigint, MARKET varchar(4), CLEARING_MEMBER_CATEGORY varchar(4), CHARGE_TYPE_ID bigint, CHARGE_RATE numeric(72,18), CURRENCY bigint, VALID_FROM_DATE date, VALID_TO_DATE date, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE INDIVIDUAL_CHARGE_TARIFF_HISTORY IS 'История изменений таблицы individualChargeTariff'; +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.INDIVIDUAL_CHARGE_TARIFF_ID IS 'Идентификатор записи в таблице INDIVIDUAL_CHARGE_TARIFF'; +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.COMPANY_ID IS 'Участник (linked to company)'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.MARKET IS 'Секция (linked to market)'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.CLEARING_MEMBER_CATEGORY IS 'Категория участника клиринга (linked to clearingCategory)'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.CHARGE_TYPE_ID IS 'Тип комиссии (linked to chargeType)'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.CHARGE_RATE IS 'Ставка комиссионного сбора'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.CURRENCY IS 'Валюта начисления комиссии (linked to currencyCode)'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.VALID_FROM_DATE IS 'Дата начала срока действия'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.VALID_TO_DATE IS 'Дата окончания срока действия'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.CREATED_AT IS 'Создано'; + +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.UPDATED_AT IS 'Изменено'; + +-- companyTariff - Тарифы комиссий в разрезе Участника +CREATE TABLE IF NOT EXISTS COMPANY_TARIFF(ID bigint PRIMARY KEY, MARKET varchar(4), CLEARING_MEMBER_CATEGORY varchar(4), FULL_NAME varchar(255), CONTRACT varchar(255), CHARGE_TYPE_ID bigint, CHARGE_RATE numeric(72,18), CURRENCY bigint, VALID_FROM_DATE date, VALID_TO_DATE date, CREATED_AT timestamp, UPDATED_AT timestamp, COMPANY_ID bigint); +COMMENT ON TABLE COMPANY_TARIFF IS 'Тарифы комиссий в разрезе Участника'; + +COMMENT ON COLUMN COMPANY_TARIFF.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN COMPANY_TARIFF.MARKET IS 'Секция (linked to market)'; + +COMMENT ON COLUMN COMPANY_TARIFF.CLEARING_MEMBER_CATEGORY IS 'Категория участника клиринга (linked to clearingCategory)'; + +COMMENT ON COLUMN COMPANY_TARIFF.FULL_NAME IS 'Полное наименование Участника (linked to company)'; + +COMMENT ON COLUMN COMPANY_TARIFF.CONTRACT IS 'Номер договора'; + +COMMENT ON COLUMN COMPANY_TARIFF.CHARGE_TYPE_ID IS 'Тип комиссии (linked to chargeType)'; + +COMMENT ON COLUMN COMPANY_TARIFF.CHARGE_RATE IS 'Ставка комиссионного сбора'; + +COMMENT ON COLUMN COMPANY_TARIFF.CURRENCY IS 'Валюта начисления комиссии (linked to currencyCode)'; + +COMMENT ON COLUMN COMPANY_TARIFF.VALID_FROM_DATE IS 'Дата начала срока действия'; + +COMMENT ON COLUMN COMPANY_TARIFF.VALID_TO_DATE IS 'Дата окончания срока действия'; + +COMMENT ON COLUMN COMPANY_TARIFF.CREATED_AT IS 'Создано'; + +COMMENT ON COLUMN COMPANY_TARIFF.UPDATED_AT IS 'Изменено'; + +COMMENT ON COLUMN COMPANY_TARIFF.COMPANY_ID IS 'Участник (linked to company)'; + +-- errorText - Полные тексты ошибок +CREATE TABLE IF NOT EXISTS ERROR_TEXT(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, ERROR_CODE varchar(4), TEXT varchar(255), USER_ID bigint, CLEARING_DATE date); +COMMENT ON TABLE ERROR_TEXT IS 'Полные тексты ошибок'; + +COMMENT ON COLUMN ERROR_TEXT.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN ERROR_TEXT.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN ERROR_TEXT.UPDATED_AT IS 'Дата и время изменения записи'; + +COMMENT ON COLUMN ERROR_TEXT.ERROR_CODE IS 'Код ошибки (linked to errorCode)'; + +COMMENT ON COLUMN ERROR_TEXT.TEXT IS 'Полный текст ошибки'; + +COMMENT ON COLUMN ERROR_TEXT.USER_ID IS 'Автор сообщения (linked to userCls)'; + +COMMENT ON COLUMN ERROR_TEXT.CLEARING_DATE IS 'Текущая дата'; + +-- sDf01 - ДФ-01 Информация о денежных средствах, находящихся на торговых банковских счетах Участников клиринга +CREATE TABLE IF NOT EXISTS S_DF01(ID bigint PRIMARY KEY, CURR_CODE varchar(12), ACCOUNT varchar(35), REMAINDER varchar(22), DEAL varchar(10), ACC_CODE varchar(5), DAT varchar(8), MARKET varchar(1), ACC_NAME varchar(30), ACC_TYPE varchar(2), SUMENGAGE varchar(22), SUMUNBLOCK varchar(22), FILE_TYPE varchar(1), FILE_NAME varchar(255), GENERATION_TIME timestamp, GENERATION_ID bigint); +COMMENT ON TABLE S_DF01 IS 'ДФ-01 Информация о денежных средствах, находящихся на торговых банковских счетах Участников клиринга'; + +COMMENT ON COLUMN S_DF01.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN S_DF01.CURR_CODE IS 'Код валюты'; + +COMMENT ON COLUMN S_DF01.ACCOUNT IS 'Код счета участника клиринга'; + +COMMENT ON COLUMN S_DF01.REMAINDER IS 'Остаток денежных средств'; + +COMMENT ON COLUMN S_DF01.DEAL IS 'Биржевой код участника клиринга'; + +COMMENT ON COLUMN S_DF01.ACC_CODE IS 'Не используется в Системе'; + +COMMENT ON COLUMN S_DF01.DAT IS 'Дата расчетов'; + +COMMENT ON COLUMN S_DF01.MARKET IS 'Биржевая секция'; + +COMMENT ON COLUMN S_DF01.ACC_NAME IS 'Наименование участника клиринга'; + +COMMENT ON COLUMN S_DF01.ACC_TYPE IS 'Признак счета'; + +COMMENT ON COLUMN S_DF01.SUMENGAGE IS 'Не используется в Системе'; + +COMMENT ON COLUMN S_DF01.SUMUNBLOCK IS 'Не используется в Системе'; + +COMMENT ON COLUMN S_DF01.FILE_TYPE IS 'Не используется в Системе'; + +COMMENT ON COLUMN S_DF01.FILE_NAME IS 'Наименование входящего файла'; + +COMMENT ON COLUMN S_DF01.GENERATION_TIME IS 'Дата и время обработки файла'; + +COMMENT ON COLUMN S_DF01.GENERATION_ID IS 'Идентификатор взаимодействия'; + +-- sDf02 - ДФ-02 Уведомление об исполнении операции загрузки денежных средств или уведомление об ошибке +CREATE TABLE IF NOT EXISTS S_DF02(ID bigint PRIMARY KEY, CURR_CODE varchar(12), ACCOUNT varchar(35), REMAINDER varchar(22), DEAL varchar(10), ACC_CODE varchar(5), DAT varchar(8), MARKET varchar(1), ACC_NAME varchar(30), ACC_TYPE varchar(2), SUMENGAGE varchar(22), SUMUNBLOCK varchar(22), FILE_TYPE varchar(1), RESULT varchar(3), GENERATION_TIME timestamp, GENERATION_ID bigint, IN_S_DF01_ID bigint); +COMMENT ON TABLE S_DF02 IS 'ДФ-02 Уведомление об исполнении операции загрузки денежных средств или уведомление об ошибке'; + +COMMENT ON COLUMN S_DF02.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN S_DF02.CURR_CODE IS 'Код валюты'; + +COMMENT ON COLUMN S_DF02.ACCOUNT IS 'Код счета участника клиринга'; + +COMMENT ON COLUMN S_DF02.REMAINDER IS 'Остаток денежных средств'; + +COMMENT ON COLUMN S_DF02.DEAL IS 'Биржевой код участника клиринга'; + +COMMENT ON COLUMN S_DF02.ACC_CODE IS 'Не используется в Системе'; + +COMMENT ON COLUMN S_DF02.DAT IS 'Дата расчетов'; + +COMMENT ON COLUMN S_DF02.MARKET IS 'Биржевая секция'; + +COMMENT ON COLUMN S_DF02.ACC_NAME IS 'Наименование участника клиринга'; + +COMMENT ON COLUMN S_DF02.ACC_TYPE IS 'Признак счета'; + +COMMENT ON COLUMN S_DF02.SUMENGAGE IS 'Не используется в Системе'; + +COMMENT ON COLUMN S_DF02.SUMUNBLOCK IS 'Не используется в Системе'; + +COMMENT ON COLUMN S_DF02.FILE_TYPE IS 'Не используется в Системе'; + +COMMENT ON COLUMN S_DF02.RESULT IS 'Результат обработки каждой записи исходного файла ДФ-01'; + +COMMENT ON COLUMN S_DF02.GENERATION_TIME IS 'Дата и время создания записи'; + +COMMENT ON COLUMN S_DF02.GENERATION_ID IS 'Идентификатор взаимодействия'; + +COMMENT ON COLUMN S_DF02.IN_S_DF01_ID IS 'Идентификатор соответствующей записи из таблицы-источника'; + +-- sDf03 - ДФ-03 Сводное платежное поручение +CREATE TABLE IF NOT EXISTS S_DF03(ID bigint PRIMARY KEY, SEG_TYPE varchar(1), DOC_TYPE varchar, DOCNM_REF varchar(16), DOCNMPREV varchar(16), PRIORITY varchar(1), SBANKCODE varchar(12), C_ACC_DEB varchar(35), SBANKNAM1 varchar(35), SBANKNAM2 varchar(35), SBANKNAM3 varchar(35), SBANKNAM4 varchar(35), SBANKNAM5 varchar(35), RBANKCODE varchar(12), C_ACC_CRED varchar(35), RBANKNAM1 varchar(35), RBANKNAM2 varchar(35), RBANKNAM3 varchar(35), RBANKNAM4 varchar(35), RBANKNAM5 varchar(35), PAY_DATE varchar, EXT_DATE varchar, PAY_VAL varchar(12), SUM_DEB varchar, SCLIENTN1 varchar(35), SCLIENTN2 varchar(35), SCLIENTN3 varchar(35), SCLIENTN4 varchar(35), SC_CODE varchar(12), ACC_DEB varchar(35), RCLIENTN1 varchar(35), RCLIENTN2 varchar(35), RCLIENTN3 varchar(35), RCLIENTN4 varchar(35), ACC_KR_1 varchar(35), ACC_KR_2 varchar(35), SP_CODE varchar(2), SPECIF_1 varchar(35), SPECIF_2 varchar(35), SPECIF_3 varchar(35), SPECIF_4 varchar(35), SPECIF_5 varchar(35), SPECIF_6 varchar(35), SEND_TYPE varchar(10), SERVDATE varchar(8), DOC_RESULT varchar(2), IMP_RESULT varchar(3), GENERATION_TIME timestamp, GENERATION_ID bigint, PAYMENT_INSTRUCTION_ID bigint); +COMMENT ON TABLE S_DF03 IS 'ДФ-03 Сводное платежное поручение'; + +COMMENT ON COLUMN S_DF03.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN S_DF03.SEG_TYPE IS 'Код инициатора в КС'; + +COMMENT ON COLUMN S_DF03.DOC_TYPE IS 'Тип документа'; + +COMMENT ON COLUMN S_DF03.DOCNM_REF IS 'Ссылочный номер документа у отправителя'; + +COMMENT ON COLUMN S_DF03.DOCNMPREV IS 'Ссылка на предшестввующий документ'; + +COMMENT ON COLUMN S_DF03.PRIORITY IS 'Приоритет скорости отправления сообщения'; + +COMMENT ON COLUMN S_DF03.SBANKCODE IS 'Код банка-плательщика'; + +COMMENT ON COLUMN S_DF03.C_ACC_DEB IS 'Счет по дебету'; + +COMMENT ON COLUMN S_DF03.SBANKNAM1 IS 'Наименование банка-плательщика'; + +COMMENT ON COLUMN S_DF03.SBANKNAM2 IS ''; + +COMMENT ON COLUMN S_DF03.SBANKNAM3 IS ''; + +COMMENT ON COLUMN S_DF03.SBANKNAM4 IS ''; + +COMMENT ON COLUMN S_DF03.SBANKNAM5 IS ''; + +COMMENT ON COLUMN S_DF03.RBANKCODE IS 'Код банка-получателя'; + +COMMENT ON COLUMN S_DF03.C_ACC_CRED IS 'Счет по кредиту'; + +COMMENT ON COLUMN S_DF03.RBANKNAM1 IS 'Наименование банка-получателя'; + +COMMENT ON COLUMN S_DF03.RBANKNAM2 IS ''; + +COMMENT ON COLUMN S_DF03.RBANKNAM3 IS ''; + +COMMENT ON COLUMN S_DF03.RBANKNAM4 IS ''; + +COMMENT ON COLUMN S_DF03.RBANKNAM5 IS ''; + +COMMENT ON COLUMN S_DF03.PAY_DATE IS 'Платеж-дата'; + +COMMENT ON COLUMN S_DF03.EXT_DATE IS 'Дата по выписке'; + +COMMENT ON COLUMN S_DF03.PAY_VAL IS 'Валюта платежа'; + +COMMENT ON COLUMN S_DF03.SUM_DEB IS 'Сумма дебет '; + +COMMENT ON COLUMN S_DF03.SCLIENTN1 IS 'Наименование клиента-плательщика'; + +COMMENT ON COLUMN S_DF03.SCLIENTN2 IS ''; + +COMMENT ON COLUMN S_DF03.SCLIENTN3 IS ''; + +COMMENT ON COLUMN S_DF03.SCLIENTN4 IS ''; + +COMMENT ON COLUMN S_DF03.SC_CODE IS 'Код клиента-плательщика'; + +COMMENT ON COLUMN S_DF03.ACC_DEB IS 'Счет клиента-плательщика(дебет)'; + +COMMENT ON COLUMN S_DF03.RCLIENTN1 IS 'Наименование клиента-получателя'; + +COMMENT ON COLUMN S_DF03.RCLIENTN2 IS ''; + +COMMENT ON COLUMN S_DF03.RCLIENTN3 IS ''; + +COMMENT ON COLUMN S_DF03.RCLIENTN4 IS ''; + +COMMENT ON COLUMN S_DF03.ACC_KR_1 IS 'Счет кредит'; + +COMMENT ON COLUMN S_DF03.ACC_KR_2 IS ''; + +COMMENT ON COLUMN S_DF03.SP_CODE IS 'Код назначения платежа'; + +COMMENT ON COLUMN S_DF03.SPECIF_1 IS 'Назначение платежа'; + +COMMENT ON COLUMN S_DF03.SPECIF_2 IS ''; + +COMMENT ON COLUMN S_DF03.SPECIF_3 IS ''; + +COMMENT ON COLUMN S_DF03.SPECIF_4 IS ''; + +COMMENT ON COLUMN S_DF03.SPECIF_5 IS ''; + +COMMENT ON COLUMN S_DF03.SPECIF_6 IS ''; + +COMMENT ON COLUMN S_DF03.SEND_TYPE IS 'Тип отправления плат. поручения'; + +COMMENT ON COLUMN S_DF03.SERVDATE IS 'Дата получения товара, оказания услуг в плат. поручении'; + +COMMENT ON COLUMN S_DF03.DOC_RESULT IS ''; + +COMMENT ON COLUMN S_DF03.IMP_RESULT IS 'Результат приема'; + +COMMENT ON COLUMN S_DF03.GENERATION_TIME IS 'Дата и время создания записи'; + +COMMENT ON COLUMN S_DF03.GENERATION_ID IS 'Идентификатор взаимодействия'; + +COMMENT ON COLUMN S_DF03.PAYMENT_INSTRUCTION_ID IS 'Идентификатор соответствующей записи из таблицы-источника (linked to paymentInstruction)'; + +-- sDf04 - ДФ-04 Подтверждение переводов из Расчетной организации для СПВБ +CREATE TABLE IF NOT EXISTS S_DF04(ID bigint PRIMARY KEY, SEG_TYPE varchar(1), DOC_TYPE varchar, DOCNM_REF varchar(16), DOCNMPREV varchar(16), PRIORITY varchar(1), SBANKCODE varchar(12), C_ACC_DEB varchar(35), SBANKNAM1 varchar(35), SBANKNAM2 varchar(35), SBANKNAM3 varchar(35), SBANKNAM4 varchar(35), SBANKNAM5 varchar(35), RBANKCODE varchar(12), C_ACC_CRED varchar(35), RBANKNAM1 varchar(35), RBANKNAM2 varchar(35), RBANKNAM3 varchar(35), RBANKNAM4 varchar(35), RBANKNAM5 varchar(35), PAY_DATE varchar, EXT_DATE varchar, PAY_VAL varchar(12), SUM_DEB varchar, SCLIENTN1 varchar(35), SCLIENTN2 varchar(35), SCLIENTN3 varchar(35), SCLIENTN4 varchar(35), SC_CODE varchar(12), ACC_DEB varchar(35), RCLIENTN1 varchar(35), RCLIENTN2 varchar(35), RCLIENTN3 varchar(35), RCLIENTN4 varchar(35), ACC_KR_1 varchar(35), ACC_KR_2 varchar(35), SP_CODE varchar(2), SPECIF_1 varchar(35), SPECIF_2 varchar(35), SPECIF_3 varchar(35), SPECIF_4 varchar(35), SPECIF_5 varchar(35), SPECIF_6 varchar(35), SEND_TYPE varchar(10), SERVDATE varchar(8), DOC_RESULT varchar(2), IMP_RESULT varchar(3), FILE_NAME varchar(255), GENERATION_TIME timestamp, GENERATION_ID bigint); +COMMENT ON TABLE S_DF04 IS 'ДФ-04 Подтверждение переводов из Расчетной организации для СПВБ'; + +COMMENT ON COLUMN S_DF04.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN S_DF04.SEG_TYPE IS 'Код инициатора в КС'; + +COMMENT ON COLUMN S_DF04.DOC_TYPE IS 'Тип документа'; + +COMMENT ON COLUMN S_DF04.DOCNM_REF IS 'Ссылочный номер документа у отправителя'; + +COMMENT ON COLUMN S_DF04.DOCNMPREV IS 'Ссылка на предшестввующий документ'; + +COMMENT ON COLUMN S_DF04.PRIORITY IS 'Приоритет скорости отправления сообщения'; + +COMMENT ON COLUMN S_DF04.SBANKCODE IS 'Код банка-плательщика'; + +COMMENT ON COLUMN S_DF04.C_ACC_DEB IS 'Счет по дебету'; + +COMMENT ON COLUMN S_DF04.SBANKNAM1 IS 'Наименование банка-плательщика'; + +COMMENT ON COLUMN S_DF04.SBANKNAM2 IS ''; + +COMMENT ON COLUMN S_DF04.SBANKNAM3 IS ''; + +COMMENT ON COLUMN S_DF04.SBANKNAM4 IS ''; + +COMMENT ON COLUMN S_DF04.SBANKNAM5 IS ''; + +COMMENT ON COLUMN S_DF04.RBANKCODE IS 'Код банка-получателя'; + +COMMENT ON COLUMN S_DF04.C_ACC_CRED IS 'Счет по кредиту'; + +COMMENT ON COLUMN S_DF04.RBANKNAM1 IS 'Наименование банка-получателя'; + +COMMENT ON COLUMN S_DF04.RBANKNAM2 IS ''; + +COMMENT ON COLUMN S_DF04.RBANKNAM3 IS ''; + +COMMENT ON COLUMN S_DF04.RBANKNAM4 IS ''; + +COMMENT ON COLUMN S_DF04.RBANKNAM5 IS ''; + +COMMENT ON COLUMN S_DF04.PAY_DATE IS 'Платеж-дата'; + +COMMENT ON COLUMN S_DF04.EXT_DATE IS 'Дата по выписке'; + +COMMENT ON COLUMN S_DF04.PAY_VAL IS 'Валюта платежа'; + +COMMENT ON COLUMN S_DF04.SUM_DEB IS 'Сумма дебет '; + +COMMENT ON COLUMN S_DF04.SCLIENTN1 IS 'Наименование клиента-плательщика'; + +COMMENT ON COLUMN S_DF04.SCLIENTN2 IS ''; + +COMMENT ON COLUMN S_DF04.SCLIENTN3 IS ''; + +COMMENT ON COLUMN S_DF04.SCLIENTN4 IS ''; + +COMMENT ON COLUMN S_DF04.SC_CODE IS 'Код клиента-плательщика'; + +COMMENT ON COLUMN S_DF04.ACC_DEB IS 'Счет клиента-плательщика(дебет)'; + +COMMENT ON COLUMN S_DF04.RCLIENTN1 IS 'Наименование клиента-получателя'; + +COMMENT ON COLUMN S_DF04.RCLIENTN2 IS ''; + +COMMENT ON COLUMN S_DF04.RCLIENTN3 IS ''; + +COMMENT ON COLUMN S_DF04.RCLIENTN4 IS ''; + +COMMENT ON COLUMN S_DF04.ACC_KR_1 IS 'Счет кредит'; + +COMMENT ON COLUMN S_DF04.ACC_KR_2 IS ''; + +COMMENT ON COLUMN S_DF04.SP_CODE IS 'Код назначения платежа'; + +COMMENT ON COLUMN S_DF04.SPECIF_1 IS 'Назначение платежа'; + +COMMENT ON COLUMN S_DF04.SPECIF_2 IS ''; + +COMMENT ON COLUMN S_DF04.SPECIF_3 IS ''; + +COMMENT ON COLUMN S_DF04.SPECIF_4 IS ''; + +COMMENT ON COLUMN S_DF04.SPECIF_5 IS ''; + +COMMENT ON COLUMN S_DF04.SPECIF_6 IS ''; + +COMMENT ON COLUMN S_DF04.SEND_TYPE IS 'Тип отправления плат. поручения'; + +COMMENT ON COLUMN S_DF04.SERVDATE IS 'Дата получения товара, оказания услуг в плат. поручении'; + +COMMENT ON COLUMN S_DF04.DOC_RESULT IS ''; + +COMMENT ON COLUMN S_DF04.IMP_RESULT IS 'Результат приема'; + +COMMENT ON COLUMN S_DF04.FILE_NAME IS 'Наименование входящего файла'; + +COMMENT ON COLUMN S_DF04.GENERATION_TIME IS 'Дата и время обработки файла'; + +COMMENT ON COLUMN S_DF04.GENERATION_ID IS 'Идентификатор взаимодействия'; + +-- sDf05 - ДФ-05 Уведомление о завершении расчетов в ПРЦ +CREATE TABLE IF NOT EXISTS S_DF05(ID bigint PRIMARY KEY, TP numeric(72,18), DT date, TM time, PR varchar(1), GENERATION_TIME timestamp, GENERATION_ID bigint); +COMMENT ON TABLE S_DF05 IS 'ДФ-05 Уведомление о завершении расчетов в ПРЦ'; + +COMMENT ON COLUMN S_DF05.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN S_DF05.TP IS 'Тип документа'; + +COMMENT ON COLUMN S_DF05.DT IS 'Дата завершения расчетов'; + +COMMENT ON COLUMN S_DF05.TM IS 'Время завершения расчетов'; + +COMMENT ON COLUMN S_DF05.PR IS 'Результат обработки запроса'; + +COMMENT ON COLUMN S_DF05.GENERATION_TIME IS 'Дата и время создания записи'; + +COMMENT ON COLUMN S_DF05.GENERATION_ID IS 'Идентификатор взаимодействия'; + +-- sDf08 - ДФ-08 Запрос остатков по всем счетам +CREATE TABLE IF NOT EXISTS S_DF08(ID bigint PRIMARY KEY, NUMBER varchar(10), DATETIME varchar(13), GENERATION_TIME timestamp, GENERATION_ID bigint); +COMMENT ON TABLE S_DF08 IS 'ДФ-08 Запрос остатков по всем счетам'; + +COMMENT ON COLUMN S_DF08.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN S_DF08.NUMBER IS 'Номер запроса остатков по счетам'; + +COMMENT ON COLUMN S_DF08.DATETIME IS 'Дата и время сообщения'; + +COMMENT ON COLUMN S_DF08.GENERATION_TIME IS 'Дата и время создания записи'; + +COMMENT ON COLUMN S_DF08.GENERATION_ID IS 'Идентификатор взаимодействия'; + +-- sDf09 - ДФ-09 Уведомление о поступлении средств на клиринговый счет +CREATE TABLE IF NOT EXISTS S_DF09(ID bigint PRIMARY KEY, ACCOUNT varchar(20), SUM numeric(72,18), MARKET varchar(1), TYPE varchar(1), NUMBER numeric(72,18), INN numeric(72,18), FILE_NAME varchar(255), GENERATION_TIME timestamp, GENERATION_ID bigint); +COMMENT ON TABLE S_DF09 IS 'ДФ-09 Уведомление о поступлении средств на клиринговый счет'; + +COMMENT ON COLUMN S_DF09.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN S_DF09.ACCOUNT IS 'Номер счета участника торгов'; + +COMMENT ON COLUMN S_DF09.SUM IS 'Сумма платежного документа (операции)'; + +COMMENT ON COLUMN S_DF09.MARKET IS 'Код сегмента рынка'; + +COMMENT ON COLUMN S_DF09.TYPE IS 'Код типа платежного документа (операции)'; + +COMMENT ON COLUMN S_DF09.NUMBER IS 'Номер платежного документа (операции)'; + +COMMENT ON COLUMN S_DF09.INN IS 'ИНН'; + +COMMENT ON COLUMN S_DF09.FILE_NAME IS 'Наименование входящего файла'; + +COMMENT ON COLUMN S_DF09.GENERATION_TIME IS 'Дата и время обработки файла'; + +COMMENT ON COLUMN S_DF09.GENERATION_ID IS 'Идентификатор взаимодействия'; + +-- sDf10 - ДФ-10 Подтверждение о загрузке по поступлению на клиринговый счет +CREATE TABLE IF NOT EXISTS S_DF10(ID bigint PRIMARY KEY, ACCOUNT varchar(20), SUM numeric(72,18), MARKET varchar(1), TYPE varchar(1), NUMBER numeric(72,18), INN numeric(72,18), RESULT varchar(3), GENERATION_TIME timestamp, GENERATION_ID bigint, IN_S_DF09_ID bigint); +COMMENT ON TABLE S_DF10 IS 'ДФ-10 Подтверждение о загрузке по поступлению на клиринговый счет'; + +COMMENT ON COLUMN S_DF10.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN S_DF10.ACCOUNT IS 'Номер счета участника торгов'; + +COMMENT ON COLUMN S_DF10.SUM IS 'Сумма платежного документа (операции)'; + +COMMENT ON COLUMN S_DF10.MARKET IS 'Код сегмента рынка'; + +COMMENT ON COLUMN S_DF10.TYPE IS 'Код типа платежного документа (операции)'; + +COMMENT ON COLUMN S_DF10.NUMBER IS 'Номер платежного документа (операции)'; + +COMMENT ON COLUMN S_DF10.INN IS 'ИНН'; + +COMMENT ON COLUMN S_DF10.RESULT IS 'Результат приема'; + +COMMENT ON COLUMN S_DF10.GENERATION_TIME IS 'Дата и время создания записи'; + +COMMENT ON COLUMN S_DF10.GENERATION_ID IS 'Идентификатор взаимодействия'; + +COMMENT ON COLUMN S_DF10.IN_S_DF09_ID IS 'Идентификатор соответствующей записи из таблицы-источника'; + +-- sDf11 - ДФ-11 Из КС в ПРЦ Платежное распоряжение на перевод средств с ТБС Участника на КС Инициатора +CREATE TABLE IF NOT EXISTS S_DF11(ID bigint PRIMARY KEY, SEG_TYPE varchar(1), DOC_TYPE varchar, DOCNM_REF varchar(16), DOCNMPREV varchar(16), PRIORITY varchar(1), SBANKCODE varchar(12), C_ACC_DEB varchar(35), SBANKNAM1 varchar(35), SBANKNAM2 varchar(35), SBANKNAM3 varchar(35), SBANKNAM4 varchar(35), SBANKNAM5 varchar(35), RBANKCODE varchar(12), C_ACC_CRED varchar(35), RBANKNAM1 varchar(35), RBANKNAM2 varchar(35), RBANKNAM3 varchar(35), RBANKNAM4 varchar(35), RBANKNAM5 varchar(35), PAY_DATE varchar, EXT_DATE varchar, PAY_VAL varchar(12), SUM_DEB varchar, SCLIENTN1 varchar(35), SCLIENTN2 varchar(35), SCLIENTN3 varchar(35), SCLIENTN4 varchar(35), SC_CODE varchar(12), ACC_DEB varchar(35), RCLIENTN1 varchar(35), RCLIENTN2 varchar(35), RCLIENTN3 varchar(35), RCLIENTN4 varchar(35), ACC_KR_1 varchar(35), ACC_KR_2 varchar(35), SP_CODE varchar(2), SPECIF_1 varchar(35), SPECIF_2 varchar(35), SPECIF_3 varchar(35), SPECIF_4 varchar(35), SPECIF_5 varchar(35), SPECIF_6 varchar(35), SEND_TYPE varchar(10), SERVDATE varchar(8), DOC_RESULT varchar(2), GENERATION_TIME timestamp, GENERATION_ID bigint, PAYMENT_INSTRUCTION_ID bigint); +COMMENT ON TABLE S_DF11 IS 'ДФ-11 Из КС в ПРЦ Платежное распоряжение на перевод средств с ТБС Участника на КС Инициатора'; + +COMMENT ON COLUMN S_DF11.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN S_DF11.SEG_TYPE IS 'Код инициатора в КС'; + +COMMENT ON COLUMN S_DF11.DOC_TYPE IS 'Тип документа'; + +COMMENT ON COLUMN S_DF11.DOCNM_REF IS 'Ссылочный номер документа у отправителя'; + +COMMENT ON COLUMN S_DF11.DOCNMPREV IS 'Ссылка на предшестввующий документ'; + +COMMENT ON COLUMN S_DF11.PRIORITY IS 'Приоритет скорости отправления сообщения'; + +COMMENT ON COLUMN S_DF11.SBANKCODE IS 'Код банка-плательщика'; + +COMMENT ON COLUMN S_DF11.C_ACC_DEB IS 'Счет по дебету'; + +COMMENT ON COLUMN S_DF11.SBANKNAM1 IS 'Наименование банка-плательщика'; + +COMMENT ON COLUMN S_DF11.SBANKNAM2 IS ''; + +COMMENT ON COLUMN S_DF11.SBANKNAM3 IS ''; + +COMMENT ON COLUMN S_DF11.SBANKNAM4 IS ''; + +COMMENT ON COLUMN S_DF11.SBANKNAM5 IS ''; + +COMMENT ON COLUMN S_DF11.RBANKCODE IS 'Код банка-получателя'; + +COMMENT ON COLUMN S_DF11.C_ACC_CRED IS 'Счет по кредиту'; + +COMMENT ON COLUMN S_DF11.RBANKNAM1 IS 'Наименование банка-получателя'; + +COMMENT ON COLUMN S_DF11.RBANKNAM2 IS ''; + +COMMENT ON COLUMN S_DF11.RBANKNAM3 IS ''; + +COMMENT ON COLUMN S_DF11.RBANKNAM4 IS ''; + +COMMENT ON COLUMN S_DF11.RBANKNAM5 IS ''; + +COMMENT ON COLUMN S_DF11.PAY_DATE IS 'Платеж-дата'; + +COMMENT ON COLUMN S_DF11.EXT_DATE IS 'Дата по выписке'; + +COMMENT ON COLUMN S_DF11.PAY_VAL IS 'Валюта платежа'; + +COMMENT ON COLUMN S_DF11.SUM_DEB IS 'Сумма дебет '; + +COMMENT ON COLUMN S_DF11.SCLIENTN1 IS 'Наименование клиента-плательщика'; + +COMMENT ON COLUMN S_DF11.SCLIENTN2 IS ''; + +COMMENT ON COLUMN S_DF11.SCLIENTN3 IS ''; + +COMMENT ON COLUMN S_DF11.SCLIENTN4 IS ''; + +COMMENT ON COLUMN S_DF11.SC_CODE IS 'Код клиента-плательщика'; + +COMMENT ON COLUMN S_DF11.ACC_DEB IS 'Счет клиента-плательщика(дебет)'; + +COMMENT ON COLUMN S_DF11.RCLIENTN1 IS 'Наименование клиента-получателя'; + +COMMENT ON COLUMN S_DF11.RCLIENTN2 IS ''; + +COMMENT ON COLUMN S_DF11.RCLIENTN3 IS ''; + +COMMENT ON COLUMN S_DF11.RCLIENTN4 IS ''; + +COMMENT ON COLUMN S_DF11.ACC_KR_1 IS 'Счет кредит'; + +COMMENT ON COLUMN S_DF11.ACC_KR_2 IS ''; + +COMMENT ON COLUMN S_DF11.SP_CODE IS 'Код назначения платежа'; + +COMMENT ON COLUMN S_DF11.SPECIF_1 IS 'Назначение платежа'; + +COMMENT ON COLUMN S_DF11.SPECIF_2 IS ''; + +COMMENT ON COLUMN S_DF11.SPECIF_3 IS ''; + +COMMENT ON COLUMN S_DF11.SPECIF_4 IS ''; + +COMMENT ON COLUMN S_DF11.SPECIF_5 IS ''; + +COMMENT ON COLUMN S_DF11.SPECIF_6 IS ''; + +COMMENT ON COLUMN S_DF11.SEND_TYPE IS 'Тип отправления плат. поручения'; + +COMMENT ON COLUMN S_DF11.SERVDATE IS 'Дата получения товара, оказания услуг в плат. поручении'; + +COMMENT ON COLUMN S_DF11.DOC_RESULT IS ''; + +COMMENT ON COLUMN S_DF11.GENERATION_TIME IS 'Дата и время создания записи'; + +COMMENT ON COLUMN S_DF11.GENERATION_ID IS 'Идентификатор взаимодействия'; + +COMMENT ON COLUMN S_DF11.PAYMENT_INSTRUCTION_ID IS 'Идентификатор соответствующей записи из таблицы-источника (linked to paymentInstruction)'; + +-- sDf12 - ДФ-12 Из ПРЦ в КС Информация о блокировке/разблокировке/закрытии ТБС УК +CREATE TABLE IF NOT EXISTS S_DF12(ID bigint PRIMARY KEY, ACCOUNT varchar(25), DEAL varchar(4), STATUS bigint, FILE_NAME varchar(255), GENERATION_TIME timestamp, GENERATION_ID bigint); +COMMENT ON TABLE S_DF12 IS 'ДФ-12 Из ПРЦ в КС Информация о блокировке/разблокировке/закрытии ТБС УК'; + +COMMENT ON COLUMN S_DF12.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN S_DF12.ACCOUNT IS 'Код счета участника клиринга'; + +COMMENT ON COLUMN S_DF12.DEAL IS 'Биржевой код участника клиринга'; + +COMMENT ON COLUMN S_DF12.STATUS IS 'Статус счета'; + +COMMENT ON COLUMN S_DF12.FILE_NAME IS 'Наименование входящего файла'; + +COMMENT ON COLUMN S_DF12.GENERATION_TIME IS 'Дата и время обработки файла'; + +COMMENT ON COLUMN S_DF12.GENERATION_ID IS 'Идентификатор взаимодействия'; + +-- sDf13 - ДФ-13 Вывод свободных средств для инициаторов категории В с клирингового счета 30414/7 - платежное поручение АО СПВБ на вывод средств из РО +CREATE TABLE IF NOT EXISTS S_DF13(ID bigint PRIMARY KEY, SEG_TYPE varchar(1), DOC_TYPE varchar, DOCNM_REF varchar(16), DOCNMPREV varchar(16), PRIORITY varchar(1), SBANKCODE varchar(12), C_ACC_DEB varchar(35), SBANKNAM1 varchar(35), SBANKNAM2 varchar(35), SBANKNAM3 varchar(35), SBANKNAM4 varchar(35), SBANKNAM5 varchar(35), RBANKCODE varchar(12), C_ACC_CRED varchar(35), RBANKNAM1 varchar(35), OP_TYPE varchar(2), OP_ORDER varchar(1), RBANKNAM4 varchar(35), RBANKNAM5 varchar(35), PAY_DATE varchar, EXT_DATE varchar, PAY_VAL varchar(12), SUM_DEB varchar, SCLIENTN1 varchar(35), INN_DEB varchar(12), KPP_DEB varchar(9), SCLIENTN4 varchar(35), SC_CODE varchar(12), ACC_DEB varchar(35), RCLIENTN1 varchar(35), INN_CRED varchar(12), KPP_CRED varchar(9), RCLIENTN4 varchar(35), ACC_KR_1 varchar(35), ACC_KR_2 varchar(35), SP_CODE varchar(2), SPECIF_1 varchar(35), SPECIF_2 varchar(35), SPECIF_3 varchar(35), SPECIF_4 varchar(35), SPECIF_5 varchar(35), SPECIF_6 varchar(35), SEND_TYPE varchar(10), SERVDATE varchar(8), DOC_RESULT varchar(2), GENERATION_TIME timestamp, GENERATION_ID bigint); +COMMENT ON TABLE S_DF13 IS 'ДФ-13 Вывод свободных средств для инициаторов категории В с клирингового счета 30414/7 - платежное поручение АО СПВБ на вывод средств из РО'; + +COMMENT ON COLUMN S_DF13.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN S_DF13.SEG_TYPE IS 'Код инициатора в КС'; + +COMMENT ON COLUMN S_DF13.DOC_TYPE IS 'Тип документа'; + +COMMENT ON COLUMN S_DF13.DOCNM_REF IS 'Ссылочный номер документа у отправителя'; + +COMMENT ON COLUMN S_DF13.DOCNMPREV IS 'Ссылка на предшестввующий документ'; + +COMMENT ON COLUMN S_DF13.PRIORITY IS 'Приоритет скорости отправления сообщения'; + +COMMENT ON COLUMN S_DF13.SBANKCODE IS 'Код банка-плательщика'; + +COMMENT ON COLUMN S_DF13.C_ACC_DEB IS 'Кор счет банка - плательщика в системе - акт.'; + +COMMENT ON COLUMN S_DF13.SBANKNAM1 IS 'Наименование банка-плательщика'; + +COMMENT ON COLUMN S_DF13.SBANKNAM2 IS ''; + +COMMENT ON COLUMN S_DF13.SBANKNAM3 IS ''; + +COMMENT ON COLUMN S_DF13.SBANKNAM4 IS ''; + +COMMENT ON COLUMN S_DF13.SBANKNAM5 IS ''; + +COMMENT ON COLUMN S_DF13.RBANKCODE IS 'Код банка-получателя'; + +COMMENT ON COLUMN S_DF13.C_ACC_CRED IS 'Кор счет банка - получателя в системе - акт. '; + +COMMENT ON COLUMN S_DF13.RBANKNAM1 IS 'Наименование банка-получателя'; + +COMMENT ON COLUMN S_DF13.OP_TYPE IS 'Вид операции'; + +COMMENT ON COLUMN S_DF13.OP_ORDER IS 'Очередность платежа'; + +COMMENT ON COLUMN S_DF13.RBANKNAM4 IS ''; + +COMMENT ON COLUMN S_DF13.RBANKNAM5 IS ''; + +COMMENT ON COLUMN S_DF13.PAY_DATE IS 'Платеж-дата'; + +COMMENT ON COLUMN S_DF13.EXT_DATE IS 'Дата по выписке'; + +COMMENT ON COLUMN S_DF13.PAY_VAL IS 'Валюта платежа'; + +COMMENT ON COLUMN S_DF13.SUM_DEB IS 'Сумма дебет '; + +COMMENT ON COLUMN S_DF13.SCLIENTN1 IS 'Наименование клиента-плательщика'; + +COMMENT ON COLUMN S_DF13.INN_DEB IS 'ИНН клиента-плательщика'; + +COMMENT ON COLUMN S_DF13.KPP_DEB IS 'КПП клиента-плательщика'; + +COMMENT ON COLUMN S_DF13.SCLIENTN4 IS ''; + +COMMENT ON COLUMN S_DF13.SC_CODE IS 'Код клиента-плательщика'; + +COMMENT ON COLUMN S_DF13.ACC_DEB IS 'Счет клиента-плательщика(дебет)'; + +COMMENT ON COLUMN S_DF13.RCLIENTN1 IS 'Наименование клиента-получателя'; + +COMMENT ON COLUMN S_DF13.INN_CRED IS 'ИНН клиента-получателя'; + +COMMENT ON COLUMN S_DF13.KPP_CRED IS 'КПП клиента-получателя'; + +COMMENT ON COLUMN S_DF13.RCLIENTN4 IS ''; + +COMMENT ON COLUMN S_DF13.ACC_KR_1 IS 'Счет получателя'; + +COMMENT ON COLUMN S_DF13.ACC_KR_2 IS ''; + +COMMENT ON COLUMN S_DF13.SP_CODE IS 'Код назначения платежа'; + +COMMENT ON COLUMN S_DF13.SPECIF_1 IS 'Назначение платежа'; + +COMMENT ON COLUMN S_DF13.SPECIF_2 IS 'Назначение платежа'; + +COMMENT ON COLUMN S_DF13.SPECIF_3 IS 'Назначение платежа'; + +COMMENT ON COLUMN S_DF13.SPECIF_4 IS 'Назначение платежа'; + +COMMENT ON COLUMN S_DF13.SPECIF_5 IS 'Назначение платежа'; + +COMMENT ON COLUMN S_DF13.SPECIF_6 IS 'Назначение платежа'; + +COMMENT ON COLUMN S_DF13.SEND_TYPE IS 'Вид платежа'; + +COMMENT ON COLUMN S_DF13.SERVDATE IS 'Дата получения товара, оказания услуг в плат. поручении'; + +COMMENT ON COLUMN S_DF13.DOC_RESULT IS ''; + +COMMENT ON COLUMN S_DF13.GENERATION_TIME IS 'Дата и время создания записи'; + +COMMENT ON COLUMN S_DF13.GENERATION_ID IS 'Идентификатор взаимодействия'; + +-- sDf16 - ДФ-16 Формат запроса по возврату депозита или дозачисление/списание денежных средств +CREATE TABLE IF NOT EXISTS S_DF16(ID bigint PRIMARY KEY, ACCOUNT varchar(20), SUM numeric(72,18), MARKET varchar(1), TYPE varchar(1), INN numeric(72,18), BIC numeric(72,18), SPEC varchar(255), NUMBER numeric(72,18), FILE_NAME varchar(255), GENERATION_TIME timestamp, GENERATION_ID bigint); +COMMENT ON TABLE S_DF16 IS 'ДФ-16 Формат запроса по возврату депозита или дозачисление/списание денежных средств'; + +COMMENT ON COLUMN S_DF16.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN S_DF16.ACCOUNT IS 'Номер счета участника торгов'; + +COMMENT ON COLUMN S_DF16.SUM IS 'Сумма платежного документа (операции)'; + +COMMENT ON COLUMN S_DF16.MARKET IS 'Код сегмента рынка'; + +COMMENT ON COLUMN S_DF16.TYPE IS 'Код типа платежного документа (операции)'; + +COMMENT ON COLUMN S_DF16.INN IS 'ИНН'; + +COMMENT ON COLUMN S_DF16.BIC IS 'БИК'; + +COMMENT ON COLUMN S_DF16.SPEC IS 'Назначение'; + +COMMENT ON COLUMN S_DF16.NUMBER IS 'Номер платежного документа (операции)'; + +COMMENT ON COLUMN S_DF16.FILE_NAME IS 'Наименование входящего файла'; + +COMMENT ON COLUMN S_DF16.GENERATION_TIME IS 'Дата и время обработки файла'; + +COMMENT ON COLUMN S_DF16.GENERATION_ID IS 'Идентификатор взаимодействия'; + +-- sDf17 - ДФ-17 Формат ответа на запрос по возврату депозита или дозачисление/списание денежных средств +CREATE TABLE IF NOT EXISTS S_DF17(ID bigint PRIMARY KEY, ACCOUNT varchar(20), SUM numeric(72,18), MARKET varchar(1), TYPE varchar(1), INN numeric(72,18), BIC numeric(72,18), SPEC varchar(255), NUMBER numeric(72,18), RESULT numeric(72,18), GENERATION_TIME timestamp, GENERATION_ID bigint, IN_S_DF16_ID bigint); +COMMENT ON TABLE S_DF17 IS 'ДФ-17 Формат ответа на запрос по возврату депозита или дозачисление/списание денежных средств'; + +COMMENT ON COLUMN S_DF17.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN S_DF17.ACCOUNT IS 'Номер счета участника торгов'; + +COMMENT ON COLUMN S_DF17.SUM IS 'Сумма платежного документа (операции)'; + +COMMENT ON COLUMN S_DF17.MARKET IS 'Код сегмента рынка'; + +COMMENT ON COLUMN S_DF17.TYPE IS 'Код типа платежного документа (операции)'; + +COMMENT ON COLUMN S_DF17.INN IS 'ИНН'; + +COMMENT ON COLUMN S_DF17.BIC IS 'БИК'; + +COMMENT ON COLUMN S_DF17.SPEC IS 'Назначение'; + +COMMENT ON COLUMN S_DF17.NUMBER IS 'Номер платежного документа (операции)'; + +COMMENT ON COLUMN S_DF17.RESULT IS 'Код завершения операции'; + +COMMENT ON COLUMN S_DF17.GENERATION_TIME IS 'Дата и время создания записи'; + +COMMENT ON COLUMN S_DF17.GENERATION_ID IS 'Идентификатор взаимодействия'; + +COMMENT ON COLUMN S_DF17.IN_S_DF16_ID IS 'Идентификатор соответствующей записи из таблицы-источника'; + +-- sDf18 - ДФ-18 Из КС в ПРЦ Квитанция о получении информации о состоянии счета (блокировка/разблокировка/закрытие) +CREATE TABLE IF NOT EXISTS S_DF18(ID bigint PRIMARY KEY, ACCOUNT varchar(25), DEAL varchar(4), STATUS bigint, RESULT numeric(72,18), GENERATION_TIME timestamp, GENERATION_ID bigint, IN_S_DF12_ID bigint); +COMMENT ON TABLE S_DF18 IS 'ДФ-18 Из КС в ПРЦ Квитанция о получении информации о состоянии счета (блокировка/разблокировка/закрытие)'; + +COMMENT ON COLUMN S_DF18.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN S_DF18.ACCOUNT IS 'Код счета участника клиринга'; + +COMMENT ON COLUMN S_DF18.DEAL IS 'Биржевой код участника клиринга'; + +COMMENT ON COLUMN S_DF18.STATUS IS 'Статус счета'; + +COMMENT ON COLUMN S_DF18.RESULT IS 'Код завершения операции'; + +COMMENT ON COLUMN S_DF18.GENERATION_TIME IS 'Дата и время создания записи'; + +COMMENT ON COLUMN S_DF18.GENERATION_ID IS 'Идентификатор взаимодействия'; + +COMMENT ON COLUMN S_DF18.IN_S_DF12_ID IS 'Идентификатор соответствующей записи из таблицы-источника'; + +-- s_trade - Сделки из Торговой системы +CREATE TABLE IF NOT EXISTS S_TRADE(ID bigint PRIMARY KEY, TRADE_NUM bigint, SEC_CODE varchar(255), TRADE_DATE_TIME timestamp, SETTLE_DATE date, PRICE numeric(72,18), VALUE numeric(72,2), QTY numeric(72,2), ACCRUEDINT numeric(72,18), FIRM_ID varchar(255), CLIENT_CODE varchar(255), EXCHANGE_COMMISSION numeric(72,2), CLASS_CODE varchar(255), OPERATION varchar(255), ISSUE_ACCOUNT varchar(50), MONEY_ACCOUNT varchar(50), TRADE_TYPE varchar(50), DAYS_TO_MAT_DATE bigint, COLLATERAL varchar(50), SETTLE_CODE varchar(50)); +COMMENT ON TABLE S_TRADE IS 'Сделки из Торговой системы'; + +COMMENT ON COLUMN S_TRADE.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN S_TRADE.TRADE_NUM IS 'Номер сделки'; + +COMMENT ON COLUMN S_TRADE.SEC_CODE IS 'Код ценной бумаги'; + +COMMENT ON COLUMN S_TRADE.TRADE_DATE_TIME IS 'Дата-время сделки'; + +COMMENT ON COLUMN S_TRADE.SETTLE_DATE IS 'Плановая дата исполнения сделки'; + +COMMENT ON COLUMN S_TRADE.PRICE IS 'Цена сделки'; + +COMMENT ON COLUMN S_TRADE.VALUE IS 'Сумма сделки'; + +COMMENT ON COLUMN S_TRADE.QTY IS 'Количество лотов по сделке'; + +COMMENT ON COLUMN S_TRADE.ACCRUEDINT IS 'НКД за 1 ценную бумагу'; + +COMMENT ON COLUMN S_TRADE.FIRM_ID IS 'ID клиента в КС'; + +COMMENT ON COLUMN S_TRADE.CLIENT_CODE IS 'Код участника торгов = Код участника клиринга = Код участника расчетов'; + +COMMENT ON COLUMN S_TRADE.EXCHANGE_COMMISSION IS 'Комиссия по сделке'; + +COMMENT ON COLUMN S_TRADE.CLASS_CODE IS 'Код класса сделки из новой ТС'; + +COMMENT ON COLUMN S_TRADE.OPERATION IS 'Тип плеча (Купля/Продажа)'; + +COMMENT ON COLUMN S_TRADE.ISSUE_ACCOUNT IS 'Счет для учета ценной бумаги'; + +COMMENT ON COLUMN S_TRADE.MONEY_ACCOUNT IS 'Счет для учета денежных средств'; + +COMMENT ON COLUMN S_TRADE.TRADE_TYPE IS 'Первичное размещение/торги'; + +COMMENT ON COLUMN S_TRADE.DAYS_TO_MAT_DATE IS 'Количество дней до погашения'; + +COMMENT ON COLUMN S_TRADE.COLLATERAL IS 'Признак залога (не используется)'; + +COMMENT ON COLUMN S_TRADE.SETTLE_CODE IS 'Код периода сделки из новой ТС'; + +-- notification - Сообщения +CREATE TABLE IF NOT EXISTS NOTIFICATION(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, SENDER_ID bigint, ADDRESSEE_ID bigint, OBJECT_TYPE varchar(4), OBJECT_ID timestamp, NOTIFICATION_STATUS varchar(4)); +COMMENT ON TABLE NOTIFICATION IS 'Сообщения'; + +COMMENT ON COLUMN NOTIFICATION.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN NOTIFICATION.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN NOTIFICATION.UPDATED_AT IS 'Дата и время изменения записи'; + +COMMENT ON COLUMN NOTIFICATION.CLEARING_DATE IS 'Дата'; + +COMMENT ON COLUMN NOTIFICATION.SENDER_ID IS 'Идентификатор участника отправителя (linked to company)'; + +COMMENT ON COLUMN NOTIFICATION.ADDRESSEE_ID IS 'Идентификатор участника получателя (linked to company)'; + +COMMENT ON COLUMN NOTIFICATION.OBJECT_TYPE IS 'Тип объекта (linked to objectType)'; + +COMMENT ON COLUMN NOTIFICATION.OBJECT_ID IS 'Идентификатор объекта'; + +COMMENT ON COLUMN NOTIFICATION.NOTIFICATION_STATUS IS 'Статус сообщения (linked to notificationStatus)'; + + +-- History log of notification - Сообщения +CREATE TABLE IF NOT EXISTS NOTIFICATION_HISTORY(NOTIFICATION_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, SENDER_ID bigint, ADDRESSEE_ID bigint, OBJECT_TYPE varchar(4), OBJECT_ID timestamp, NOTIFICATION_STATUS varchar(4)); +COMMENT ON TABLE NOTIFICATION_HISTORY IS 'История изменений таблицы notification'; +COMMENT ON COLUMN NOTIFICATION_HISTORY.NOTIFICATION_ID IS 'Идентификатор записи в таблице NOTIFICATION'; +COMMENT ON COLUMN NOTIFICATION_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN NOTIFICATION_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN NOTIFICATION_HISTORY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN NOTIFICATION_HISTORY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN NOTIFICATION_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; + +COMMENT ON COLUMN NOTIFICATION_HISTORY.CLEARING_DATE IS 'Дата'; + +COMMENT ON COLUMN NOTIFICATION_HISTORY.SENDER_ID IS 'Идентификатор участника отправителя (linked to company)'; + +COMMENT ON COLUMN NOTIFICATION_HISTORY.ADDRESSEE_ID IS 'Идентификатор участника получателя (linked to company)'; + +COMMENT ON COLUMN NOTIFICATION_HISTORY.OBJECT_TYPE IS 'Тип объекта (linked to objectType)'; + +COMMENT ON COLUMN NOTIFICATION_HISTORY.OBJECT_ID IS 'Идентификатор объекта'; + +COMMENT ON COLUMN NOTIFICATION_HISTORY.NOTIFICATION_STATUS IS 'Статус сообщения (linked to notificationStatus)'; + +-- verificationResult - Результаты сверки +CREATE TABLE IF NOT EXISTS VERIFICATION_RESULT(CLEARING_CODE varchar(255), ACCOUNT_ID bigint, IN_SUM numeric(72,2), OUT_INT_SUM numeric(72,2), OUT_EXT_SUM numeric(72,2), DIFF_SUM numeric(72,2), GENERATION_ID bigint, GENERATION_STATUS varchar(4), RESULT_STATUS varchar(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp); +COMMENT ON TABLE VERIFICATION_RESULT IS 'Результаты сверки'; + +COMMENT ON COLUMN VERIFICATION_RESULT.CLEARING_CODE IS 'Код участника клиринга'; + +COMMENT ON COLUMN VERIFICATION_RESULT.ACCOUNT_ID IS 'Счет УК, по которому проводится сверка'; + +COMMENT ON COLUMN VERIFICATION_RESULT.IN_SUM IS 'Входящая сумма остатков'; + +COMMENT ON COLUMN VERIFICATION_RESULT.OUT_INT_SUM IS 'Исходящая сумма остатков, полученная в КС'; + +COMMENT ON COLUMN VERIFICATION_RESULT.OUT_EXT_SUM IS 'Исходящая сумма остатков из отчета ПРЦ'; + +COMMENT ON COLUMN VERIFICATION_RESULT.DIFF_SUM IS 'Сумма расхождений'; + +COMMENT ON COLUMN VERIFICATION_RESULT.GENERATION_ID IS 'Идентификатор взаимодействия'; + +COMMENT ON COLUMN VERIFICATION_RESULT.GENERATION_STATUS IS 'Общий статус сверки (linked to resultStatus)'; + +COMMENT ON COLUMN VERIFICATION_RESULT.RESULT_STATUS IS 'Статус сверки (linked to resultStatus)'; + +COMMENT ON COLUMN VERIFICATION_RESULT.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN VERIFICATION_RESULT.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN VERIFICATION_RESULT.UPDATED_AT IS 'Дата и время изменения записи'; + +-- session - Клиринговая сессия +CREATE TABLE IF NOT EXISTS SESSION(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, SESSION_STATUS varchar(4)); +COMMENT ON TABLE SESSION IS 'Клиринговая сессия'; + +COMMENT ON COLUMN SESSION.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN SESSION.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN SESSION.UPDATED_AT IS 'Дата и время изменения записи'; + +COMMENT ON COLUMN SESSION.CLEARING_DATE IS 'Дата'; + +COMMENT ON COLUMN SESSION.SESSION_STATUS IS 'Статус клиринговой сессии (linked to sessionStatus)'; + + +-- History log of session - Клиринговая сессия +CREATE TABLE IF NOT EXISTS SESSION_HISTORY(SESSION_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, SESSION_STATUS varchar(4)); +COMMENT ON TABLE SESSION_HISTORY IS 'История изменений таблицы session'; +COMMENT ON COLUMN SESSION_HISTORY.SESSION_ID IS 'Идентификатор записи в таблице SESSION'; +COMMENT ON COLUMN SESSION_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN SESSION_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN SESSION_HISTORY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN SESSION_HISTORY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN SESSION_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; + +COMMENT ON COLUMN SESSION_HISTORY.CLEARING_DATE IS 'Дата'; + +COMMENT ON COLUMN SESSION_HISTORY.SESSION_STATUS IS 'Статус клиринговой сессии (linked to sessionStatus)'; + +-- moneyMarketSession - Сессия денежного рынка +CREATE TABLE IF NOT EXISTS MONEY_MARKET_SESSION(ID bigint PRIMARY KEY, COMPANY_ID bigint, SECURITY_ID bigint, USER_ID bigint); +COMMENT ON TABLE MONEY_MARKET_SESSION IS 'Сессия денежного рынка'; + +COMMENT ON COLUMN MONEY_MARKET_SESSION.ID IS 'Идентификатор записи'; + IS 'Дата'; + IS 'Статус клиринговой сессии (linked to sessionStatus)'; + +COMMENT ON COLUMN MONEY_MARKET_SESSION.COMPANY_ID IS 'Идентификатор инициатора торгов (linked to company)'; + +COMMENT ON COLUMN MONEY_MARKET_SESSION.SECURITY_ID IS 'Идентификатор инструмента (linked to security)'; + +COMMENT ON COLUMN MONEY_MARKET_SESSION.USER_ID IS 'Идентификатор пользователя (linked to userCls)'; + + +-- History log of moneyMarketSession - Сессия денежного рынка +CREATE TABLE IF NOT EXISTS MONEY_MARKET_SESSION_HISTORY(MONEY_MARKET_SESSION_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, ID bigint PRIMARY KEY, COMPANY_ID bigint, SECURITY_ID bigint, USER_ID bigint); +COMMENT ON TABLE MONEY_MARKET_SESSION_HISTORY IS 'История изменений таблицы moneyMarketSession'; +COMMENT ON COLUMN MONEY_MARKET_SESSION_HISTORY.MONEY_MARKET_SESSION_ID IS 'Идентификатор записи в таблице MONEY_MARKET_SESSION'; +COMMENT ON COLUMN MONEY_MARKET_SESSION_HISTORY.EVENT_TIME IS 'Дата и время изменения'; +COMMENT ON COLUMN MONEY_MARKET_SESSION_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; + +COMMENT ON COLUMN MONEY_MARKET_SESSION_HISTORY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN MONEY_MARKET_SESSION_HISTORY.COMPANY_ID IS 'Идентификатор инициатора торгов (linked to company)'; + +COMMENT ON COLUMN MONEY_MARKET_SESSION_HISTORY.SECURITY_ID IS 'Идентификатор инструмента (linked to security)'; + +COMMENT ON COLUMN MONEY_MARKET_SESSION_HISTORY.USER_ID IS 'Идентификатор пользователя (linked to userCls)'; + + /* views */ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- Data types \ No newline at end of file diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java index 68991d4be..3cb9e7407 100644 --- a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java @@ -95,7 +95,6 @@ public class RunnableMapNamesForTesting { dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ErrorCodeDictionary, ErrorCodeDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_InOutDirectionDictionary, InOutDirectionDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_InstrumentTypeDictionary, InstrumentTypeDictionary.class)); - dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_InterestStatusDictionary, InterestStatusDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_LegalKindDictionary, LegalKindDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ManagementJournalPurposeDictionary, ManagementJournalPurposeDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ManagementJournalStatusDictionary, ManagementJournalStatusDictionary.class)); From 7a057e1ebf2cc09e9b05f604a37f289312e4bfde Mon Sep 17 00:00:00 2001 From: ialbert Date: Fri, 23 Dec 2022 13:14:12 +0300 Subject: [PATCH 063/234] UserSettings update fix --- .../domain/cud/utilities/UserSettingsUpdateRequest.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/UserSettingsUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/UserSettingsUpdateRequest.java index 8eb9093fe..15ad8fce4 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/UserSettingsUpdateRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/UserSettingsUpdateRequest.java @@ -1,16 +1,20 @@ package ru.spcex.clearing.platform.messaging.domain.cud.utilities; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonRawValue; +import com.fasterxml.jackson.databind.JsonNode; public class UserSettingsUpdateRequest { @JsonProperty public Long userId; @JsonProperty public String version; - @JsonRawValue public String json; + @JsonProperty("json") + public void unpackRawJson(JsonNode json) { + this.json = json.toString(); + } + public Long getUserId() { return userId; } From e278d65325e28a0b2b4648b5ed51649eedcd1b8e Mon Sep 17 00:00:00 2001 From: ialbert Date: Fri, 23 Dec 2022 15:40:59 +0300 Subject: [PATCH 064/234] =?UTF-8?q?=D0=BF=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=8D=D0=BA=D1=80=D0=B0=D0=BD=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20JSON=20=D0=B4=D0=BB=D1=8F=20Us?= =?UTF-8?q?erSettings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/cud/utilities/UserSettingsUpdateRequest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/UserSettingsUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/UserSettingsUpdateRequest.java index 15ad8fce4..80cd07844 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/UserSettingsUpdateRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/UserSettingsUpdateRequest.java @@ -1,6 +1,7 @@ package ru.spcex.clearing.platform.messaging.domain.cud.utilities; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonRawValue; import com.fasterxml.jackson.databind.JsonNode; public class UserSettingsUpdateRequest { @@ -8,6 +9,7 @@ public class UserSettingsUpdateRequest { public Long userId; @JsonProperty public String version; + @JsonRawValue public String json; @JsonProperty("json") From 095b2d86d102da5744a33f747310dabce96cba6c Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 26 Dec 2022 13:14:04 +0300 Subject: [PATCH 065/234] MoneyMarketSecurityUpdateRequest, CommonDeleteRequest -> WithId Planner, PlannerTemplate fill created/updated --- .../dbf-exporter/src/main/resources/application.properties | 2 +- .../ru/spcex/clearing/scheduler/service/PlannerService.java | 4 ++++ .../clearing/scheduler/service/PlannerTemplateService.java | 4 ++++ .../messaging/domain/cud/common/CommonDeleteRequest.java | 3 ++- .../cud/securitites/MoneyMarketSecurityUpdateRequest.java | 3 ++- 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/clearing-parent/dbf-exporter/src/main/resources/application.properties b/clearing-parent/dbf-exporter/src/main/resources/application.properties index e0f15cb7a..9deff00b5 100644 --- a/clearing-parent/dbf-exporter/src/main/resources/application.properties +++ b/clearing-parent/dbf-exporter/src/main/resources/application.properties @@ -9,7 +9,7 @@ export-dbf-service.hazelcast.password=dev-pass export-dbf-service.common.encoding=cp866 export-dbf-service.common.threads-count=10 -export-dbf-service.store.out-dir=/opt/clearing/file/exporter/ +export-dbf-service.store.out-dir=d:\\trash\\clearing\\exporter\\out\\ export-dbf-service.kafka-consumer.bootstrap-servers=localhost:9092 export-dbf-service.kafka-consumer.group-id=dev-group-balance-service diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerService.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerService.java index 79361ca59..199c12ab4 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerService.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerService.java @@ -18,6 +18,8 @@ import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import java.time.Instant; + @Service public class PlannerService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -48,6 +50,7 @@ public class PlannerService extends QueueConsumer implements InitializingBean { PlannerNewRequest req = userRequest.getRequestPayload(); log.debug("PlannerNewRequest received"); Planner planner = new Planner(); + planner.setCreated(Instant.now()); planner.setTask(req.getTask()); planner.setTaskTime(req.getTaskTime()); planner.setClearingDate(req.getClearingDate()); @@ -63,6 +66,7 @@ public class PlannerService extends QueueConsumer implements InitializingBean { PlannerUpdateRequest req = userRequest.getRequestPayload(); log.debug("PlannerUpdateRequest received id = {}", req.getId()); Planner planner = plannerMap.getSingleObjectByID(req.getId()); + planner.setUpdated(Instant.now()); planner.setTask(req.getTask()); planner.setTaskTime(req.getTaskTime()); planner.setClearingDate(req.getClearingDate()); diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerTemplateService.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerTemplateService.java index e39a6e48c..491e884dc 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerTemplateService.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerTemplateService.java @@ -18,6 +18,8 @@ import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import java.time.Instant; + @Service public class PlannerTemplateService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -48,6 +50,7 @@ public class PlannerTemplateService extends QueueConsumer implements Initializin PlannerTemplateNewRequest req = userRequest.getRequestPayload(); log.debug("PlannerTemplateNewRequest received"); PlannerTemplate plannerTemplate = new PlannerTemplate(); + plannerTemplate.setCreated(Instant.now()); plannerTemplate.setTask(req.getTask()); plannerTemplate.setTaskTime(req.getTaskTime()); plannerTemplate.setTaskStatus(req.getTaskStatus()); @@ -61,6 +64,7 @@ public class PlannerTemplateService extends QueueConsumer implements Initializin PlannerTemplateUpdateRequest req = userRequest.getRequestPayload(); log.debug("PlannerTemplateUpdateRequest received"); PlannerTemplate plannerTemplate = plannerTemplateMap.getSingleObjectByID(req.getId()); + plannerTemplate.setUpdated(Instant.now()); plannerTemplate.setTask(req.getTask()); plannerTemplate.setTaskTime(req.getTaskTime()); plannerTemplate.setTaskStatus(req.getTaskStatus()); diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/common/CommonDeleteRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/common/CommonDeleteRequest.java index b14778666..5ad1de612 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/common/CommonDeleteRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/common/CommonDeleteRequest.java @@ -1,8 +1,9 @@ package ru.spcex.clearing.platform.messaging.domain.cud.common; import com.fasterxml.jackson.annotation.JsonProperty; +import ru.spcex.platform.classes.base.interfaces.WithId; -public class CommonDeleteRequest { +public class CommonDeleteRequest implements WithId { @JsonProperty public Long id; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/MoneyMarketSecurityUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/MoneyMarketSecurityUpdateRequest.java index 6af0bbbd6..15b584b24 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/MoneyMarketSecurityUpdateRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/MoneyMarketSecurityUpdateRequest.java @@ -7,11 +7,12 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer; import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer; import ru.spcex.platform.classes.base.interfaces.WithEndDt; +import ru.spcex.platform.classes.base.interfaces.WithId; import ru.spcex.platform.classes.base.interfaces.WithStartDt; import java.time.LocalDate; -public class MoneyMarketSecurityUpdateRequest implements WithStartDt, WithEndDt { +public class MoneyMarketSecurityUpdateRequest implements WithId, WithStartDt, WithEndDt { @JsonProperty public Long id; @JsonFormat(pattern = "yyyy-MM-dd", timezone = "Europe/Moscow") From 17b298b5a4da0ac2d9a298e21532ab6795e8c007 Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 26 Dec 2022 14:22:21 +0300 Subject: [PATCH 066/234] meta.xml 2.4.1.0 --- .../src/main/resources/meta/meta.xml | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/clearing-parent/backend-api/src/main/resources/meta/meta.xml b/clearing-parent/backend-api/src/main/resources/meta/meta.xml index ce5377bf7..6b432b31c 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/meta.xml +++ b/clearing-parent/backend-api/src/main/resources/meta/meta.xml @@ -1,6 +1,6 @@ - + @@ -293,7 +293,7 @@ - + @@ -303,7 +303,7 @@ - + @@ -311,7 +311,7 @@ - + @@ -349,7 +349,7 @@ - + @@ -361,7 +361,7 @@ - + @@ -371,7 +371,7 @@ - + @@ -385,7 +385,7 @@ - + @@ -408,7 +408,7 @@ - + @@ -421,12 +421,12 @@ + + - - @@ -740,7 +740,7 @@ - + @@ -750,7 +750,7 @@ - +
@@ -887,9 +887,9 @@ - - - + + + @@ -912,9 +912,9 @@ - - - + + + @@ -1059,7 +1059,7 @@ - + @@ -1122,7 +1122,7 @@ - + @@ -1153,7 +1153,7 @@ - + @@ -1613,9 +1613,9 @@ - - - + + + From eed33ce35b0f95a36701c87419a763e7e815a206 Mon Sep 17 00:00:00 2001 From: akulikov Date: Mon, 26 Dec 2022 14:38:31 +0300 Subject: [PATCH 067/234] insert values in docx (raw) --- .../reports/services/DOCXService.java | 5 ++++ .../services/builders/DOCXReportBuilder.java | 12 ++++++++ .../services/builders/FileReportBuilder.java | 29 +++++++++++++++++++ .../services/builders/XMLReportBuilder.java | 19 ++++++++++++ .../iml/hazelcast/adapter/ImdgHazelcast.java | 9 ++++++ 5 files changed, 74 insertions(+) create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/DOCXService.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/DOCXService.java index ac1a078ea..86483a38b 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/DOCXService.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/DOCXService.java @@ -15,6 +15,11 @@ import java.util.stream.Collectors; /** * Сервис для работы с DOCX файлами * Читает шаблон .docx и во всех текстовых элементах меняет переданные ключи на соответствующие им значения + * Пример ключа по умолчанию: ${ключ} + * + * При использовании нового шаблона, необходимо отредактировать docx документ так, чтобы ключ содержался в одном + * элементе. Для этого нужно вырезать ключ и в это же место вставить его как текст, без форматирования. Если нужно, + * идентификатору потом можно установить стиль, который будет применён к вставляемой строке. */ public class DOCXService { /** diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java new file mode 100644 index 000000000..ab27e7d9b --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java @@ -0,0 +1,12 @@ +package ru.spcex.clearing.reports.services.builders; + +import org.slf4j.Logger; +import ru.spcex.clearing.reports.reports.AbstractReport; + +import java.io.IOException; + +public abstract class DOCXReportBuilder extends FileReportBuilder { + protected DOCXReportBuilder(Class reportClass, Logger log, String filename) throws IOException { + super(reportClass, log, filename); + } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java new file mode 100644 index 000000000..01ffe19bb --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java @@ -0,0 +1,29 @@ +package ru.spcex.clearing.reports.services.builders; + +import org.slf4j.Logger; +import ru.spcex.clearing.reports.reports.AbstractReport; + +import java.io.File; +import java.io.IOException; + +public abstract class FileReportBuilder { + protected final Class reportClass; + protected final Logger log; + protected final String filename; + protected final File file; + + protected FileReportBuilder(Class reportClass, Logger log, String filename) throws IOException { + this.reportClass = reportClass; + this.log = log; + this.filename = filename; + this.file = new File(filename); + if (file.exists()) { + if (file.isFile()) { + log.warn("Файл {} существует и будет перезаписан", filename); + boolean deleteOk = file.delete(); + if (!deleteOk) throw new IOException("Не удалось удалить файл " + filename); + } else throw new IOException(filename + " существует, но не является файлом"); + } + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java new file mode 100644 index 000000000..ce85af837 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java @@ -0,0 +1,19 @@ +package ru.spcex.clearing.reports.services.builders; + +import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.io.naming.NoNameCoder; +import com.thoughtworks.xstream.io.xml.XppDriver; +import org.slf4j.Logger; +import ru.spcex.clearing.reports.reports.AbstractReport; + +import java.io.IOException; + +public abstract class XMLReportBuilder extends FileReportBuilder { + protected final XStream xStream; + + protected XMLReportBuilder(Class reportClass, Logger log, String filename) throws IOException { + super(reportClass, log, filename); + this.xStream = new XStream(new XppDriver(new NoNameCoder())); + xStream.processAnnotations(reportClass); + } +} diff --git a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java index ac3b60fa3..43aad9a39 100644 --- a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java +++ b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java @@ -135,6 +135,15 @@ public class ImdgHazelcast implements Imdg { return searchResult; } + @Override + public Collection getCollectionObjectsBySQL(String paramString) { + SqlPredicate sqlPredicate = new SqlPredicate(paramString); + Set> found = map.entrySet(sqlPredicate); + List result = new ArrayList<>(found.size()); + for (Map.Entry entry : found) result.add(entry.getValue()); + return result; + } + @Override public Long nextIDSequenceFor() { return idGenerator.newId(); From e18d8c96647cf8d06fc07b985e1526081e3cced8 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 26 Dec 2022 15:21:48 +0300 Subject: [PATCH 068/234] =?UTF-8?q?reports-service=20=D0=B4=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B9=D0=BA=D1=83=20ReportModuleOut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../element/ReportsServiceSettings.java | 34 ++++++++----------- .../src/main/resources/application.properties | 1 + 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java index 7cb550e10..a79eaa702 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java @@ -3,18 +3,19 @@ package ru.spcex.clearing.reports.config.element; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; -//import ru.spcex.clearing.platform.messaging.config.element.KafkaConsumerSettings; -//import ru.spcex.clearing.platform.messaging.config.element.KafkaProducerSettings; import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams; +/** + * Параметр запуска: XMLReportBuilder + * --spring.config.location=E:/MFD_GIT_REPO/clearing/clearing-parent/reports-service/src/main/resources + * + */ @Component @PropertySource("file:${spring.config.location}/application.properties") -//todo for test @PropertySource("classpath:application.properties") @ConfigurationProperties("reports-service") public class ReportsServiceSettings { private HazelcastClientParams hazelcast; -// private KafkaConsumerSettings kafkaConsumer; -// private KafkaProducerSettings kafkaProducer; + private String reportModuleOut; public HazelcastClientParams getHazelcast() { return hazelcast; @@ -24,19 +25,12 @@ public class ReportsServiceSettings { this.hazelcast = hazelcast; } -// public KafkaConsumerSettings getKafkaConsumer() { -// return kafkaConsumer; -// } -// -// public void setKafkaConsumer(KafkaConsumerSettings kafkaConsumer) { -// this.kafkaConsumer = kafkaConsumer; -// } -// -// public KafkaProducerSettings getKafkaProducer() { -// return kafkaProducer; -// } -// -// public void setKafkaProducer(KafkaProducerSettings kafkaProducer) { -// this.kafkaProducer = kafkaProducer; -// } + + public String getReportModuleOut() { + return reportModuleOut; + } + + public void setReportModuleOut(String reportModuleOut) { + this.reportModuleOut = reportModuleOut; + } } diff --git a/clearing-parent/reports-service/src/main/resources/application.properties b/clearing-parent/reports-service/src/main/resources/application.properties index 514eaa82e..6c2158643 100644 --- a/clearing-parent/reports-service/src/main/resources/application.properties +++ b/clearing-parent/reports-service/src/main/resources/application.properties @@ -5,3 +5,4 @@ spring.main.web-application-type=servlet reports-service.hazelcast.cluster-members=127.0.0.1:5701 reports-service.hazelcast.login=dev reports-service.hazelcast.password=dev-pass +reports-service.ReportModuleOut=./report_out From a5320f36f3dbbc1341639251d97d710427bba80f Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 26 Dec 2022 15:22:52 +0300 Subject: [PATCH 069/234] MoneyMarketSecurity GET filter --- .../securities/CudMoneyMarketSecurityController.java | 5 ++++- .../spcex/clearing/backendapi/service/IStateLoader.java | 1 + .../backendapi/service/impl/StateLoaderImpl.java | 9 +++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/CudMoneyMarketSecurityController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/CudMoneyMarketSecurityController.java index 7feceaedb..197c0fe52 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/CudMoneyMarketSecurityController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/CudMoneyMarketSecurityController.java @@ -20,6 +20,7 @@ import ru.spcex.clearing.backendapi.service.IOperator; import ru.spcex.clearing.backendapi.service.IStateLoader; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.platform.enumeration.Status; import java.util.Collection; import java.util.Map; @@ -75,7 +76,9 @@ public class CudMoneyMarketSecurityController extends AbstractQueueController { @RequestMapping(method = RequestMethod.GET) @ResponseBody public CommonGetAllResponse getAll() { - Collection> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class); + Collection> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_MoneyMarketSecurity, + MoneyMarketSecurity.class, + Map.of("workflowStatus", Status.Active.getKey())); CommonGetAllResponse response = new CommonGetAllResponse(); response.fromEntity(all); return response; diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IStateLoader.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IStateLoader.java index c8caa0caa..b5fd01105 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IStateLoader.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IStateLoader.java @@ -13,4 +13,5 @@ public interface IStateLoader { Optional getById(Long id, String mapName, Class clazz); Collection getAll(String mapName, Class clazz); Collection> getAllMetaTransform(String mapName, Class clazz); + Collection> getAllMetaTransform(String mapName, Class clazz, Map> conditions); } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/StateLoaderImpl.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/StateLoaderImpl.java index 8d21ba817..afd00a665 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/StateLoaderImpl.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/StateLoaderImpl.java @@ -44,6 +44,15 @@ public class StateLoaderImpl implements IStateLoader { return responseFactory.responseFromObjectCollection(all); } + @Override + public Collection> getAllMetaTransform(String mapName, + Class clazz, + Map> conditions) { + Imdg imdg = getImdg(mapName, clazz); + Collection all = imdg.getCollectionObjectsByFieldValues(conditions); + return responseFactory.responseFromObjectCollection(all); + } + @SuppressWarnings("unchecked") private Imdg getImdg(String mapName, Class clazz) { return (Imdg) allImdgMaps.computeIfAbsent(mapName, (mapName1) -> imdgProvider.getImdg(mapName, clazz)); From 22598b867f9dc4fa9d148b5fcbb14a4843960c89 Mon Sep 17 00:00:00 2001 From: akulikov Date: Mon, 26 Dec 2022 15:45:07 +0300 Subject: [PATCH 070/234] reportName --- .../ru/spcex/clearing/reports/ReportWithPeriod.java | 2 +- .../spcex/clearing/reports/reports/AbstractReport.java | 7 +++++++ .../reports/reports/bt_12_2/ReportPA_BT2_B.java | 10 ++++++++++ .../reports/reports/bt_12_2/ReportPA_BT2_IV.java | 10 ++++++++++ .../clearing/reports/reports/bt_13/Report_BT13_11.java | 7 +++++++ .../clearing/reports/reports/bt_13/Report_BT13_12.java | 8 ++++++++ .../reports/reports/bt_16_5/Report_BT16_5.java | 8 ++++++++ .../reports/reports/bt_17_1/ReportBR_0420315_P1.java | 10 ++++++++++ .../reports/reports/bt_17_1/ReportBR_0420315_P2.java | 10 ++++++++++ .../reports/reports/bt_17_2/ReportBR_0420317.java | 10 ++++++++++ .../reports/reports/bt_17_3/ReportBR_0420318.java | 10 ++++++++++ .../reports/reports/bt_17_4/ReportBR_0420314_P1.java | 10 ++++++++++ .../reports/reports/bt_17_4/ReportBR_0420314_P2.java | 10 ++++++++++ .../reports/reports/bt_17_5/ReportBR_0420312_P1.java | 10 ++++++++++ .../reports/reports/bt_17_5/ReportBR_0420312_P10.java | 10 ++++++++++ .../reports/reports/bt_17_5/ReportBR_0420312_P2.java | 10 ++++++++++ .../reports/reports/bt_17_5/ReportBR_0420312_P3.java | 9 +++++++++ .../reports/reports/bt_17_5/ReportBR_0420312_P4.java | 9 +++++++++ .../reports/reports/bt_17_5/ReportBR_0420312_P5.java | 10 ++++++++++ .../reports/reports/bt_17_5/ReportBR_0420312_P6.java | 10 ++++++++++ .../reports/reports/bt_17_5/ReportBR_0420312_P7.java | 10 ++++++++++ .../reports/reports/bt_17_5/ReportBR_0420312_P8.java | 10 ++++++++++ .../reports/reports/bt_17_5/ReportBR_0420312_P9.java | 10 ++++++++++ 23 files changed, 209 insertions(+), 1 deletion(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportWithPeriod.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportWithPeriod.java index 07caffd69..77a00ec6e 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportWithPeriod.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportWithPeriod.java @@ -11,7 +11,7 @@ import java.time.LocalDate; /** * Шапка для отчётов, содержащих startDate и endDate */ -public class ReportWithPeriod extends AbstractReport { +public abstract class ReportWithPeriod extends AbstractReport { @XStreamAsAttribute @XStreamAlias("startDate") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java index df56feb45..2c56605e1 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java @@ -3,10 +3,15 @@ package ru.spcex.clearing.reports.reports; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + /** * Общая шапка (атрибуты) для всех отчетов */ public abstract class AbstractReport { + public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy"); + public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy'T'HH:mm:ss"); @XStreamAsAttribute @XStreamAlias("version") @@ -28,4 +33,6 @@ public abstract class AbstractReport { this.name = name; } + abstract public String getReportName(LocalDateTime reportDateTime); + } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_B.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_B.java index c527ee2b5..ac062d5fb 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_B.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_B.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; +import java.time.LocalDateTime; @XStreamAlias("netPositionBank") public class ReportPA_BT2_B extends ReportWithPeriod { @@ -93,6 +94,15 @@ public class ReportPA_BT2_B extends ReportWithPeriod { this.total = new Total(claimsAmount, liabilitiesAmount, paymentAmount); } + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "REPPA.BT12.2.B.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } + @XStreamAlias("total") public static class Total { @XStreamAlias("claimsAmount") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_IV.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_IV.java index 04ddbdc22..e10ac91bb 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_IV.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_IV.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; +import java.time.LocalDateTime; @XStreamAlias("netPositionInitiator") public class ReportPA_BT2_IV extends ReportWithPeriod { @@ -93,6 +94,15 @@ public class ReportPA_BT2_IV extends ReportWithPeriod { this.total = new Total(claimsAmount, liabilitiesAmount, paymentAmount); } + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "REPPA.BT12.2.IV.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } + @XStreamAlias("total") public static class Total { @XStreamAlias("claimsAmount") diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_11.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_11.java index 0bb6fce3f..893c204ab 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_11.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_11.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.reports.AbstractReport; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.LocalTime; @XStreamAlias("incomingDocuments") @@ -91,4 +92,10 @@ public class Report_BT13_11 extends AbstractReport { this.inDocumentJournalReceiptDate = inDocumentJournalReceiptDate; } + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "DOCIN.%s".formatted( + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_12.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_12.java index 9e7a36639..de765fe63 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_12.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_12.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.reports.AbstractReport; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.LocalTime; @XStreamAlias("outgoingDocuments") @@ -119,4 +120,11 @@ public class Report_BT13_12 extends AbstractReport { this.outDocumentJournalDossierNumber = outDocumentJournalDossierNumber; this.outDocumentJournalPostDate = outDocumentJournalPostDate; } + + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "DOCOUT.%s".formatted( + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_16_5/Report_BT16_5.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_16_5/Report_BT16_5.java index 0b3db0ccc..3dc1d5737 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_16_5/Report_BT16_5.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_16_5/Report_BT16_5.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.reports.AbstractReport; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.LocalTime; @XStreamAlias("accountBalanceInfo") @@ -69,4 +70,11 @@ public class Report_BT16_5 extends AbstractReport { this.accountBalanceCloseAmount = accountBalanceCloseAmount; } + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "INACCNT.%s.%s".formatted( + companyClearingCode, + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java index ab2700296..47600c673 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.reports.ReportWithClearingStatus; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -76,4 +77,13 @@ public class ReportBR_0420315_P1 extends ReportWithClearingStatus { } } + + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "REPBR.0420315.P1.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P2.java index 450b87e0f..a7c87f98d 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P2.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P2.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; +import java.time.LocalDateTime; @XStreamAlias("clearedLiabilitiesTotal") public class ReportBR_0420315_P2 extends ReportWithPeriod { @@ -68,4 +69,13 @@ public class ReportBR_0420315_P2 extends ReportWithPeriod { } + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "REPBR.0420315.P2.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } + } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_2/ReportBR_0420317.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_2/ReportBR_0420317.java index 8ad1f2bcd..2357530a0 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_2/ReportBR_0420317.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_2/ReportBR_0420317.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -89,4 +90,13 @@ public class ReportBR_0420317 extends ReportWithPeriod { this.relationComment = relationComment; } } + + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "REPBR.0420317.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java index c48422636..73dc19c81 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.reports.ReportWithClearingStatus; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -114,4 +115,13 @@ public class ReportBR_0420318 extends ReportWithClearingStatus { this.liabilitiesClaimsAssetsFullNames = liabilitiesClaimsAssetsFullNames; } } + + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "REPBR.0420318.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P1.java index cc6dfed89..0940041db 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P1.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.reports.ReportWithClearingStatus; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -90,4 +91,13 @@ public class ReportBR_0420314_P1 extends ReportWithClearingStatus { this.liabilitiesClaimsAssetsLiabilitiesQuantity = liabilitiesClaimsAssetsLiabilitiesQuantity; } } + + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "REPBR.0420314.P1.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P2.java index 6c924222a..478698b15 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P2.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P2.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -83,4 +84,13 @@ public class ReportBR_0420314_P2 extends ReportWithPeriod { } } + + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "REPBR.0420314.P2.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java index a19956e75..af4884919 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; +import java.time.LocalDateTime; @XStreamAlias("clearingCoverage1") public class ReportBR_0420312_P1 extends ReportWithPeriod { @@ -87,4 +88,13 @@ public class ReportBR_0420312_P1 extends ReportWithPeriod { } } + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "REPBR.0420312_р1-1.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } + } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P10.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P10.java index e7196690b..0f79fe269 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P10.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P10.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; +import java.time.LocalDateTime; @XStreamAlias("clearingCoverage10") public class ReportBR_0420312_P10 extends ReportWithPeriod { @@ -37,4 +38,13 @@ public class ReportBR_0420312_P10 extends ReportWithPeriod { this.liabilitiesAmount = liabilitiesAmount; } } + + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "REPBR.0420312_р3-3.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P2.java index 0cf73c838..84dbf562d 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P2.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P2.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; +import java.time.LocalDateTime; @XStreamAlias("clearingCoverage2") public class ReportBR_0420312_P2 extends ReportWithPeriod { @@ -45,4 +46,13 @@ public class ReportBR_0420312_P2 extends ReportWithPeriod { } } + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "REPBR.0420312_р1-2.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } + } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P3.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P3.java index 0c92c0676..97442b1a9 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P3.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P3.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; +import java.time.LocalDateTime; @XStreamAlias("clearingCoverage3") public class ReportBR_0420312_P3 extends ReportWithPeriod { @@ -46,4 +47,12 @@ public class ReportBR_0420312_P3 extends ReportWithPeriod { } } + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "REPBR.0420312_р1-3.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P4.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P4.java index ee1d00f29..d4725b978 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P4.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P4.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; +import java.time.LocalDateTime; @XStreamAlias("clearingCoverage4") public class ReportBR_0420312_P4 extends ReportWithPeriod { @@ -38,4 +39,12 @@ public class ReportBR_0420312_P4 extends ReportWithPeriod { } } + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "REPBR.0420312_р1-4.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P5.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P5.java index 57318d940..1af1850eb 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P5.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P5.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; +import java.time.LocalDateTime; @XStreamAlias("clearingCoverage5") public class ReportBR_0420312_P5 extends ReportWithPeriod { @@ -37,4 +38,13 @@ public class ReportBR_0420312_P5 extends ReportWithPeriod { this.liabilitiesAmount = liabilitiesAmount; } } + + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "REPBR.0420312_р1-5.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P6.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P6.java index b03bf0069..6b5126f7e 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P6.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P6.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; +import java.time.LocalDateTime; @XStreamAlias("clearingCoverage6") public class ReportBR_0420312_P6 extends ReportWithPeriod { @@ -37,4 +38,13 @@ public class ReportBR_0420312_P6 extends ReportWithPeriod { this.liabilitiesAmount = liabilitiesAmount; } } + + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "REPBR.0420312_р1-6.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P7.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P7.java index 72a57f10b..81b539868 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P7.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P7.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; +import java.time.LocalDateTime; @XStreamAlias("clearingCoverage7") public class ReportBR_0420312_P7 extends ReportWithPeriod { @@ -37,4 +38,13 @@ public class ReportBR_0420312_P7 extends ReportWithPeriod { this.liabilitiesAmount = liabilitiesAmount; } } + + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "REPBR.0420312_р1-7.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P8.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P8.java index 8f6f431a5..563ffc599 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P8.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P8.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; +import java.time.LocalDateTime; @XStreamAlias("clearingCoverage8") public class ReportBR_0420312_P8 extends ReportWithPeriod { @@ -85,4 +86,13 @@ public class ReportBR_0420312_P8 extends ReportWithPeriod { this.clearingMemberCategoryClearingMemberCategory = clearingMemberCategoryClearingMemberCategory; } } + + @Override + public String getReportName(LocalDateTime reportDateTime) { + return " REPBR.0420312_р3-1.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P9.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P9.java index d508df865..3438b9d05 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P9.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P9.java @@ -5,6 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; +import java.time.LocalDateTime; @XStreamAlias("clearingCoverage9") public class ReportBR_0420312_P9 extends ReportWithPeriod { @@ -61,4 +62,13 @@ public class ReportBR_0420312_P9 extends ReportWithPeriod { this.liabilitiesClaimsAssetsLiabilities = liabilitiesClaimsAssetsLiabilities; } } + + @Override + public String getReportName(LocalDateTime reportDateTime) { + return "REPBR.0420312_р3-2.%s-%s.%s".formatted( + DATE_FORMATTER.format(startDate), + DATE_FORMATTER.format(endDate), + DATE_TIME_FORMATTER.format(reportDateTime) + ); + } } From 2c5dbe914366aa81ccde123a3a68db0935a3a927 Mon Sep 17 00:00:00 2001 From: akulikov Date: Mon, 26 Dec 2022 15:51:54 +0300 Subject: [PATCH 071/234] reportName --- .../ru/spcex/clearing/reports/reports/AbstractReport.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java index 2c56605e1..7f82058a3 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java @@ -10,8 +10,8 @@ import java.time.format.DateTimeFormatter; * Общая шапка (атрибуты) для всех отчетов */ public abstract class AbstractReport { - public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy"); - public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy'T'HH:mm:ss"); + protected static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy"); + protected static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy'T'HH:mm:ss"); @XStreamAsAttribute @XStreamAlias("version") From 6a3433c26fccbff4cff7c5e34fa83729736f737f Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 26 Dec 2022 15:55:42 +0300 Subject: [PATCH 072/234] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-25?= =?UTF-8?q?=20http://jira.mfd.msk:8088/browse/CLS-26=20=D1=80=D0=B5=D1=84?= =?UTF-8?q?=D0=B0=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D0=BD=D0=B3=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BB=D0=BB=D0=B5=D0=BA=D1=82=D0=BE=D1=80=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reports/services/ReportDataCollector.java | 4 +- .../collector/Bt17_1_P1_collector.java | 35 ++++++++--------- .../services/collector/Bt17_2_collector.java | 7 ++-- .../services/ReportDataCollectorTest.java | 39 +++++++++++++++++++ .../platform/enumeration/DocumentTypes.java | 39 +++++++++++++++++++ 5 files changed, 102 insertions(+), 22 deletions(-) create mode 100644 clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportDataCollectorTest.java create mode 100644 platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/DocumentTypes.java diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java index e2e2ea972..71c1b41f2 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java @@ -7,6 +7,7 @@ import ru.spcex.clearing.reports.reports.AbstractReport; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.List; @@ -38,6 +39,7 @@ public abstract class ReportDataCollector { * @param dateTimeNow LocalDateTime.now() * @return */ + @Deprecated abstract public String getFileName(LocalDate startDate, LocalDate endDate, LocalDateTime dateTimeNow); @@ -48,6 +50,6 @@ public abstract class ReportDataCollector { protected String toString(Instant val) { if (val == null) return null; - return DATE_TIME_FORMATTER.format(val);//todo проверить работает ли - юниттест. + return DATE_TIME_FORMATTER.format(val.atZone(ZoneId.systemDefault())); } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java index f704921f3..923144b98 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java @@ -42,6 +42,18 @@ public class Bt17_1_P1_collector extends ReportDataCollector(); + qParam.put("market", onMarket.getKey()); + qParam.put("securityId", securityId); + return listingImdg.getSingleObjectByFieldValues(qParam); + } + @Override public List collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { if (startDate.isAfter(endDate)) { @@ -67,33 +79,20 @@ public class Bt17_1_P1_collector extends ReportDataCollector I, V log.trace("Filtered ClearingMemberCategory[{}].ClearingMemberCategory={}", - cmc == null ? null : cmc.getId(), cmc == null ? null : cmc.getClearingMemberCategory()); + cmc == null ? null : cmc.getId(), checkCategory); continue; } -// ClearingStatusDictionary clearingStatus = clearingStatusDictionaryImdg.getSingleObjectByID(liability.getClearingStatus()); -// if (clearingStatus == null || !ALLOW_CLEARING_STATUS.contains(clearingStatus.getCode())) { -// // фильтруются <> "OK" уже была, never -// log.warn("Found after filter LiabilitiesClaimsAssets[{}].getClearingStatus={}", liability.getId(), liability.getClearingStatus()); -// continue; -// } ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(startDate, endDate, "BR", cmc.getClearingMemberCategory(), ALLOW_CLEARING_STATUS //clearingStatus.getCode() "OK" ); - Listing listing; - { - Map qParam = new HashMap<>(); - qParam.put("market", Market.MKRS.getKey()); - qParam.put("securityId", liability.getSecurityId()); - listing = listingImdg.getSingleObjectByFieldValues(qParam); - } - + Listing listing = findListing(Market.mkrs, liability.getSecurityId()); List allContract = indexByCompany.get(companyId); long contractorQty; @@ -101,7 +100,7 @@ public class Bt17_1_P1_collector extends ReportDataCollector collectedToSumm = new HashSet<>(); // чтобы дважды не посчитать 1 и тот же контракт for (LiabilitiesClaimsAssets lContract : allContract) { - if (lContract.getPrice()!=null && StringUtils.isNotEmpty(lContract.getContract()) + if (lContract.getPrice() != null && StringUtils.isNotEmpty(lContract.getContract()) && !collectedToSumm.contains(lContract.getContract())) { collectedToSumm.add(lContract.getContract()); liabilitiesAmount += lContract.getLiabilitiesQuantity().doubleValue(); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java index f9377c2fb..6c7b61300 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java @@ -8,6 +8,7 @@ import ru.clearing.classes.statics.data.company.relation.Relation; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.reports.reports.bt_17_2.ReportBR_0420317; import ru.spcex.clearing.reports.services.ReportDataCollector; +import ru.spcex.platform.enumeration.DocumentTypes; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -47,13 +48,13 @@ public class Bt17_2_collector extends ReportDataCollector Date: Mon, 26 Dec 2022 16:23:55 +0300 Subject: [PATCH 073/234] reports-service http://jira.mfd.msk:8088/browse/CLS-25 refactoring --- .../services/collector/Bt17_1_P1_collector.java | 15 +++++++-------- .../services/collector/Bt17_1_P2_collector.java | 1 - 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java index 923144b98..d7ff636d9 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java @@ -61,20 +61,19 @@ public class Bt17_1_P1_collector extends ReportDataCollector result = new ArrayList<>(); - String ql = String.format("'%s' <= refundDate and refundDate <= '%s'", startDate, endDate); - Collection liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql); - ClearingStatusDictionary allowClearingStatus = clearingStatusDictionaryImdg.getSingleObjectByFieldValues(Map.of("code", ALLOW_CLEARING_STATUS)); if (allowClearingStatus == null) { throw new IllegalStateException("ClearingStatusDictionary with code=\"" + ALLOW_CLEARING_STATUS + "\" not fount"); } final Long allowClearingStatusId = allowClearingStatus.getId(); // "OK" - Collection filteredLiabilities = liabilities.stream() - .filter(liability -> allowClearingStatusId.equals(liability.getClearingStatus())) - .collect(Collectors.toList()); - Map> indexByCompany = MapUtil.indexList(filteredLiabilities, LiabilitiesClaimsAssets::getCompanyId); - for (LiabilitiesClaimsAssets liability : filteredLiabilities) { + String ql = String.format("'%s' <= refundDate and refundDate <= '%s' and clearingStatus=", + startDate, endDate, allowClearingStatusId); + Collection liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql); + + Map> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId); + + for (LiabilitiesClaimsAssets liability : liabilities) { final Long companyId = liability.getCompanyId(); Company company = companyImdg.getSingleObjectByID(companyId); if (company != null) { diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java index 2fd59d0f0..02e5587e3 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java @@ -3,7 +3,6 @@ package ru.spcex.clearing.reports.services.collector; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.transaction.data.execution.LiabilitiesClaimsAssets; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.reports.reports.bt_17_1.ReportBR_0420315_P2; From 2ad1b73300f9589325e3cbcc965f86b357f25d3e Mon Sep 17 00:00:00 2001 From: aalehin Date: Mon, 26 Dec 2022 16:55:51 +0300 Subject: [PATCH 074/234] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-78?= =?UTF-8?q?=20---=20=D0=9F=D1=80=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B8=20=D0=B2=20plannerTemplate=20=D0=B8=20clearingCalendar?= =?UTF-8?q?=20=D0=B2=20=D0=BF=D0=BE=D0=BB=D0=B5=20createdAt=20=D1=81=D0=BE?= =?UTF-8?q?=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D1=81=D1=82=D0=B2=D1=83=D1=8E?= =?UTF-8?q?=D1=89=D0=B8=D1=85=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=20?= =?UTF-8?q?=D0=BD=D0=B5=20=D0=B7=D0=B0=D0=BF=D0=BE=D0=BB=D0=BD=D1=8F=D0=BB?= =?UTF-8?q?=D0=BE=D1=81=D1=8C=20=D0=B2=D1=80=D0=B5=D0=BC=D1=8F=20=D1=81?= =?UTF-8?q?=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B7=D0=B0=D0=BF?= =?UTF-8?q?=D0=B8=D1=81=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ClearingCalendarService.java | 18 ++- .../service/PlannerTemplateService.java | 6 +- .../HazelcastServiceTestConfiguration.java | 68 +++++++++ .../service/ClearingCalendarServiceTest.java | 138 +++++++++++++++++ .../service/PlannerTemplateServiceTest.java | 141 ++++++++++++++++++ .../scheduler/utils/MatcherFactory.java | 38 +++++ 6 files changed, 401 insertions(+), 8 deletions(-) create mode 100644 clearing-parent/scheduler-service/src/test/java/ru/specx/clearing/scheduler/config/HazelcastServiceTestConfiguration.java create mode 100644 clearing-parent/scheduler-service/src/test/java/ru/specx/clearing/scheduler/service/ClearingCalendarServiceTest.java create mode 100644 clearing-parent/scheduler-service/src/test/java/ru/specx/clearing/scheduler/service/PlannerTemplateServiceTest.java create mode 100644 clearing-parent/scheduler-service/src/test/java/ru/specx/clearing/scheduler/utils/MatcherFactory.java diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/ClearingCalendarService.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/ClearingCalendarService.java index 70bd24147..3a86684b7 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/ClearingCalendarService.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/ClearingCalendarService.java @@ -18,6 +18,8 @@ import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import java.time.Instant; + @Service public class ClearingCalendarService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -33,21 +35,23 @@ public class ClearingCalendarService extends QueueConsumer implements Initializi @Override public void afterPropertiesSet() { callback(ClearingCalendarNewRequest.class) - .setConsumer(this::newTradingCalendar) + .setConsumer(this::newClearingCalendar) .forDestination(Consts.DESTINATION_CLEARING_CALENDAR_NEW, callbacks::put); callback(ClearingCalendarUpdateRequest.class) - .setConsumer(this::updateTradingCalendar) + .setConsumer(this::updateClearingCalendar) .forDestination(Consts.DESTINATION_CLEARING_CALENDAR_UPDATE, callbacks::put); callback(CommonDeleteRequest.class) - .setConsumer(this::deleteTradingCalendar) + .setConsumer(this::deleteClearingCalendar) .forDestination(Consts.DESTINATION_CLEARING_CALENDAR_DELETE, callbacks::put); init(); } - private void newTradingCalendar(BaseRequest userRequest) { + private void newClearingCalendar(BaseRequest userRequest) { ClearingCalendarNewRequest req = userRequest.getRequestPayload(); log.debug("ClearingCalendarNewRequest received"); ClearingCalendar clearingCalendar = new ClearingCalendar(); + Instant created = Instant.now(); + clearingCalendar.setCreated(created); clearingCalendar.setClearingDate(req.getClearingDate()); clearingCalendar.setCompanyId(req.getCompanyId()); clearingCalendar.setDayStatus(req.getDayStatus()); @@ -55,18 +59,20 @@ public class ClearingCalendarService extends QueueConsumer implements Initializi log.debug("successfully processed, new id {}", clearingCalendar.getId()); } - private void updateTradingCalendar(BaseRequest userRequest) { + private void updateClearingCalendar(BaseRequest userRequest) { ClearingCalendarUpdateRequest req = userRequest.getRequestPayload(); log.debug("ClearingCalendarUpdateRequest received"); + Instant updated = Instant.now(); ClearingCalendar clearingCalendar = clearingCalendarMap.getSingleObjectByID(req.getId()); clearingCalendar.setClearingDate(req.getClearingDate()); clearingCalendar.setCompanyId(req.getCompanyId()); clearingCalendar.setDayStatus(req.getDayStatus()); + clearingCalendar.setUpdated(updated); clearingCalendarMap.update(clearingCalendar); log.debug("successfully processed, new id {}", clearingCalendar.getId()); } - private void deleteTradingCalendar(BaseRequest userRequest) { + private void deleteClearingCalendar(BaseRequest userRequest) { CommonDeleteRequest req = userRequest.getRequestPayload(); log.debug("CommonDeleteRequest received id = {}", req.getId()); ClearingCalendar clearingCalendar = clearingCalendarMap.getSingleObjectByID(req.getId()); diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerTemplateService.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerTemplateService.java index 491e884dc..77a1466a0 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerTemplateService.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerTemplateService.java @@ -50,7 +50,8 @@ public class PlannerTemplateService extends QueueConsumer implements Initializin PlannerTemplateNewRequest req = userRequest.getRequestPayload(); log.debug("PlannerTemplateNewRequest received"); PlannerTemplate plannerTemplate = new PlannerTemplate(); - plannerTemplate.setCreated(Instant.now()); + Instant created = Instant.now(); + plannerTemplate.setCreated(created); plannerTemplate.setTask(req.getTask()); plannerTemplate.setTaskTime(req.getTaskTime()); plannerTemplate.setTaskStatus(req.getTaskStatus()); @@ -64,7 +65,8 @@ public class PlannerTemplateService extends QueueConsumer implements Initializin PlannerTemplateUpdateRequest req = userRequest.getRequestPayload(); log.debug("PlannerTemplateUpdateRequest received"); PlannerTemplate plannerTemplate = plannerTemplateMap.getSingleObjectByID(req.getId()); - plannerTemplate.setUpdated(Instant.now()); + Instant updated = Instant.now(); + plannerTemplate.setUpdated(updated); plannerTemplate.setTask(req.getTask()); plannerTemplate.setTaskTime(req.getTaskTime()); plannerTemplate.setTaskStatus(req.getTaskStatus()); diff --git a/clearing-parent/scheduler-service/src/test/java/ru/specx/clearing/scheduler/config/HazelcastServiceTestConfiguration.java b/clearing-parent/scheduler-service/src/test/java/ru/specx/clearing/scheduler/config/HazelcastServiceTestConfiguration.java new file mode 100644 index 000000000..af55150d0 --- /dev/null +++ b/clearing-parent/scheduler-service/src/test/java/ru/specx/clearing/scheduler/config/HazelcastServiceTestConfiguration.java @@ -0,0 +1,68 @@ +package ru.specx.clearing.scheduler.config; + +import com.hazelcast.config.*; +import com.hazelcast.core.Hazelcast; +import com.hazelcast.core.HazelcastInstance; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams; +import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; +import ru.spcex.platform.imdg.iml.hazelcast.util.HazelcastHelper; + +import java.util.List; +import java.util.Random; + +@Configuration +public class HazelcastServiceTestConfiguration { + private HazelcastInstance hazelcastInstance; + + private static ThreadPoolTaskExecutor createThreadPoolTaskExecutor(int maxPoolSz, boolean waitForCompletion) { + ThreadPoolTaskExecutor pool = new ThreadPoolTaskExecutor(); + if (maxPoolSz > 2) { + pool.setKeepAliveSeconds(60); + pool.setAllowCoreThreadTimeOut(true); + } + pool.setCorePoolSize(maxPoolSz); + pool.setWaitForTasksToCompleteOnShutdown(waitForCompletion); + return pool; + } + + @Bean(name = "hazelcastServiceTest") + public HazelcastService hazelcastService(@Qualifier("taskExecutorHazelcastClientInitializer") ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer, @Qualifier("taskExecutorIdGeneratorAwaiter") ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter, HazelcastClientParams params) { + Config cfg = new Config(); + cfg.setInstanceName("localhost"); + + NetworkConfig networkConfig = new NetworkConfig(); + JoinConfig joinConfig = new JoinConfig(); + joinConfig.setMulticastConfig(new MulticastConfig().setEnabled(false)); + joinConfig.setTcpIpConfig(new TcpIpConfig().setEnabled(true).setMembers(List.of("127.0.0.1"))); + networkConfig.setJoin(joinConfig); + cfg.setNetworkConfig(networkConfig); + hazelcastInstance = Hazelcast.newHazelcastInstance(cfg); + HazelcastHelper.otcSystem_setStorageState(true, hazelcastInstance); + return new HazelcastService(taskExecutorHazelcastClientInitializer, taskExecutorIdGeneratorAwaiter, params); + } + + @Bean(name = "taskExecutorHazelcastClientInitializer") + public ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer() { + return createThreadPoolTaskExecutor(1, true); + } + + @Bean(name = "taskExecutorIdGeneratorAwaiter") + public ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter() { + return createThreadPoolTaskExecutor(1, false); + } + + @Bean(name = "hazelcastClientParams") + public HazelcastClientParams getHazelcastClientParams() { + HazelcastClientParams params = new HazelcastClientParams(); + params.setLogin("dev"); + params.setPassword("dev-pass"); + params.setClusterMembers("127.0.0.1"); + params.setInstanceName("hzTestClient" + new Random().nextInt()); + params.setNearCacheConfig(new NearCacheConfig()); + return params; + } +} diff --git a/clearing-parent/scheduler-service/src/test/java/ru/specx/clearing/scheduler/service/ClearingCalendarServiceTest.java b/clearing-parent/scheduler-service/src/test/java/ru/specx/clearing/scheduler/service/ClearingCalendarServiceTest.java new file mode 100644 index 000000000..7307966f9 --- /dev/null +++ b/clearing-parent/scheduler-service/src/test/java/ru/specx/clearing/scheduler/service/ClearingCalendarServiceTest.java @@ -0,0 +1,138 @@ +package ru.specx.clearing.scheduler.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.hazelcast.core.IMap; +import com.hazelcast.map.listener.EntryRemovedListener; +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.MockConsumer; +import org.apache.kafka.clients.consumer.OffsetResetStrategy; +import org.apache.kafka.clients.producer.MockProducer; +import org.apache.kafka.common.TopicPartition; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import ru.clearing.classes.statics.data.profile.Contact; +import ru.clearing.classes.statics.data.scheduler.ClearingCalendar; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.ActionType; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.schedule.ClearingCalendarNewRequest; +import ru.spcex.clearing.scheduler.service.ClearingCalendarService; +import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; +import ru.specx.clearing.scheduler.config.HazelcastServiceTestConfiguration; + +import java.time.Instant; +import java.time.LocalDate; +import java.util.Collections; +import java.util.HashMap; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = { + HazelcastServiceTestConfiguration.class}) +class ClearingCalendarServiceTest { + + private static final int PARTITION = 0; + private static final String TOPIC_CLEARING_CALENDAR_NEW = Consts.DESTINATION_CLEARING_CALENDAR_NEW; + private static final Long ID = 0L; + + @Autowired + @Qualifier("hazelcastServiceTest") + private HazelcastService hazelcastServiceTest; + private MockConsumer mockConsumer; + private MockProducer mockProducer; + + @BeforeEach + void setUp() { + mockConsumer = new MockConsumer<>(OffsetResetStrategy.EARLIEST); + mockProducer = new MockProducer<>(); + } + + /** + * {@link ClearingCalendarService#newTradingCalendar(BaseRequest)}(BaseRequest)}
+ * Тест проверяет создание сущности {@link ClearingCalendar} в Hazelcast при передаче из Apache Kafka.
+ * Входной запрос {@link ClearingCalendarNewRequest}:
+ */ + @Test + public void newClearingCalendarInQueue() throws InterruptedException { + //ARRANGE + + ClearingCalendar clearingCalendar = new ClearingCalendar(); + Instant created = Instant.now(); + clearingCalendar.setCreated(created); + clearingCalendar.setClearingDate(LocalDate.now()); + clearingCalendar.setCompanyId(0L); + clearingCalendar.setDayStatus("STATUS"); + + ClearingCalendarNewRequest clearingCalendarNewRequest = new ClearingCalendarNewRequest(); + clearingCalendarNewRequest.setClearingDate(clearingCalendar.getClearingDate()); + clearingCalendarNewRequest.setCompanyId(clearingCalendar.getCompanyId()); + clearingCalendarNewRequest.setDayStatus(clearingCalendar.getDayStatus()); + + BaseRequest baseNewRequest = new BaseRequest<>(); + baseNewRequest.setRequestPayload(clearingCalendarNewRequest); + baseNewRequest.setId(ID); + baseNewRequest.setActionType(ActionType.NEW); + String jsonBaseForRequest; + ObjectMapper objectMapper = new ObjectMapper(); + try { + jsonBaseForRequest = objectMapper.writeValueAsString(baseNewRequest); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + + //ACT + //service set up + ClearingCalendarService clearingCalendarService = new ClearingCalendarService(mockConsumer, mockProducer, hazelcastServiceTest); + + //callbacks set up + clearingCalendarService.afterPropertiesSet(); + IMap iMap = hazelcastServiceTest.getHazelcast().getMap(IMDGDistributedNames.Map_ClearingCalendar); + //KAFKA + HashMap startOffsetsUpdating = new HashMap<>(); + TopicPartition topic = new TopicPartition(TOPIC_CLEARING_CALENDAR_NEW, PARTITION); + startOffsetsUpdating.put(topic, 0L); + mockConsumer.updateBeginningOffsets(startOffsetsUpdating); + + mockConsumer.schedulePollTask(() -> { + mockConsumer.rebalance(Collections.singletonList(new TopicPartition(TOPIC_CLEARING_CALENDAR_NEW, PARTITION))); + mockConsumer.addRecord(new ConsumerRecord<>(TOPIC_CLEARING_CALENDAR_NEW, PARTITION, 0, "key", jsonBaseForRequest)); + }); + + //waiting for hazelcast map item removes + Object waiter = new Object(); + String listenerID = iMap.addEntryListener((EntryRemovedListener) entryEvent -> { + System.out.println("Checking If pushed.."); + + try { + waiter.wait(100); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + synchronized (waiter) { + waiter.notify(); + } + }, false); + + synchronized (waiter) { + waiter.wait(100); + } + ClearingCalendar clearingCalendarRes = iMap.get(iMap.keySet().stream().findFirst().get()); + //ASSERT + Assertions.assertEquals(1, iMap.size()); + + Assertions.assertNotNull(clearingCalendarRes.getCreated()); + Assertions.assertEquals(clearingCalendar.getClearingDate(), clearingCalendarRes.getClearingDate()); + Assertions.assertEquals(clearingCalendar.getCompanyId(), clearingCalendarRes.getCompanyId()); + Assertions.assertEquals(clearingCalendar.getDayStatus(), clearingCalendarRes.getDayStatus()); + + //preparing hazelcastImdgProvider for next test + iMap.removeEntryListener(listenerID); + } +} \ No newline at end of file diff --git a/clearing-parent/scheduler-service/src/test/java/ru/specx/clearing/scheduler/service/PlannerTemplateServiceTest.java b/clearing-parent/scheduler-service/src/test/java/ru/specx/clearing/scheduler/service/PlannerTemplateServiceTest.java new file mode 100644 index 000000000..ff5ac8109 --- /dev/null +++ b/clearing-parent/scheduler-service/src/test/java/ru/specx/clearing/scheduler/service/PlannerTemplateServiceTest.java @@ -0,0 +1,141 @@ +package ru.specx.clearing.scheduler.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.hazelcast.core.IMap; +import com.hazelcast.map.listener.EntryRemovedListener; +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.MockConsumer; +import org.apache.kafka.clients.consumer.OffsetResetStrategy; +import org.apache.kafka.clients.producer.MockProducer; +import org.apache.kafka.common.TopicPartition; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import ru.clearing.classes.statics.data.profile.Contact; +import ru.clearing.classes.statics.data.scheduler.PlannerTemplate; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.ActionType; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerTemplateNewRequest; +import ru.spcex.clearing.scheduler.service.PlannerTemplateService; +import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; +import ru.specx.clearing.scheduler.config.HazelcastServiceTestConfiguration; + +import java.time.Instant; +import java.time.LocalTime; +import java.util.Collections; +import java.util.HashMap; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = { + HazelcastServiceTestConfiguration.class}) +class PlannerTemplateServiceTest { + + private static final int PARTITION = 0; + private static final String TOPIC_PLANNER_TEMPLATE_NEW = Consts.DESTINATION_PLANNER_TEMPLATE_NEW; + private static final Long ID = 0L; + + @Autowired + @Qualifier("hazelcastServiceTest") + private HazelcastService hazelcastServiceTest; + private MockConsumer mockConsumer; + private MockProducer mockProducer; + + @BeforeEach + void setUp() { + mockConsumer = new MockConsumer<>(OffsetResetStrategy.EARLIEST); + mockProducer = new MockProducer<>(); + } + + /** + * {@link PlannerTemplateService#newTimetable(BaseRequest)}(BaseRequest)}
+ * Тест проверяет создание сущности {@link ru.clearing.classes.statics.data.scheduler.PlannerTemplate} в Hazelcast при передаче из Apache Kafka.
+ * Входной запрос {@link PlannerTemplateNewRequest}:
+ */ + @Test + public void newPlannerTemplateInQueue() throws InterruptedException { + //ARRANGE + Instant created = Instant.now(); + PlannerTemplate plannerTemplate = new PlannerTemplate(); + plannerTemplate.setTask("TASK"); + plannerTemplate.setTaskTime(LocalTime.MIDNIGHT); + plannerTemplate.setTaskStatus("TASK_STATUS"); + plannerTemplate.setCompanyId(0L); + plannerTemplate.setSecurityId(10L); + + PlannerTemplateNewRequest plannerTemplateNewRequest = new PlannerTemplateNewRequest(); + plannerTemplateNewRequest.setTask(plannerTemplate.getTask()); + plannerTemplateNewRequest.setTaskTime(plannerTemplate.getTaskTime()); + plannerTemplateNewRequest.setTaskStatus(plannerTemplate.getTaskStatus()); + plannerTemplateNewRequest.setCompanyId(plannerTemplate.getCompanyId()); + plannerTemplateNewRequest.setSecurityId(plannerTemplate.getSecurityId()); + + BaseRequest plannerTemplateRequest = new BaseRequest<>(); + plannerTemplateRequest.setRequestPayload(plannerTemplateNewRequest); + plannerTemplateRequest.setId(ID); + plannerTemplateRequest.setActionType(ActionType.NEW); + String jsonBaseForDeleteRequest; + ObjectMapper objectMapper = new ObjectMapper(); + try { + jsonBaseForDeleteRequest = objectMapper.writeValueAsString(plannerTemplateRequest); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + + //ACT + //service set up + PlannerTemplateService plannerTemplateService = new PlannerTemplateService(mockConsumer, mockProducer, hazelcastServiceTest); + + //callbacks set up + plannerTemplateService.afterPropertiesSet(); + IMap iMap = hazelcastServiceTest.getHazelcast().getMap(IMDGDistributedNames.Map_PlannerTemplate); + //KAFKA + HashMap startOffsetsUpdating = new HashMap<>(); + TopicPartition topic = new TopicPartition(TOPIC_PLANNER_TEMPLATE_NEW, PARTITION); + startOffsetsUpdating.put(topic, 0L); + mockConsumer.updateBeginningOffsets(startOffsetsUpdating); + + mockConsumer.schedulePollTask(() -> { + mockConsumer.rebalance(Collections.singletonList(new TopicPartition(TOPIC_PLANNER_TEMPLATE_NEW, PARTITION))); + mockConsumer.addRecord(new ConsumerRecord<>(TOPIC_PLANNER_TEMPLATE_NEW, PARTITION, 0, "key", jsonBaseForDeleteRequest)); + }); + + //waiting for hazelcast map item removes + Object waiter = new Object(); + String listenerID = iMap.addEntryListener((EntryRemovedListener) entryEvent -> { + System.out.println("Checking If pushed.."); + + try { + waiter.wait(100); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + synchronized (waiter) { + waiter.notify(); + } + }, false); + + synchronized (waiter) { + waiter.wait(100); + } + PlannerTemplate plannerTemplateRes = iMap.get(iMap.keySet().stream().findFirst().get()); + //ASSERT + Assertions.assertEquals(1, iMap.size()); + + Assertions.assertNotNull(plannerTemplateRes.getCreated()); + Assertions.assertEquals(plannerTemplate.getTask(), plannerTemplateRes.getTask()); + Assertions.assertEquals(plannerTemplate.getTaskTime(), plannerTemplateRes.getTaskTime()); + Assertions.assertEquals(plannerTemplate.getTaskStatus(), plannerTemplateRes.getTaskStatus()); + Assertions.assertEquals(plannerTemplate.getCompanyId(), plannerTemplateRes.getCompanyId()); + Assertions.assertEquals(plannerTemplate.getSecurityId(), plannerTemplateRes.getSecurityId()); + //preparing hazelcastImdgProvider for next test + iMap.removeEntryListener(listenerID); + } +} \ No newline at end of file diff --git a/clearing-parent/scheduler-service/src/test/java/ru/specx/clearing/scheduler/utils/MatcherFactory.java b/clearing-parent/scheduler-service/src/test/java/ru/specx/clearing/scheduler/utils/MatcherFactory.java new file mode 100644 index 000000000..c214393ea --- /dev/null +++ b/clearing-parent/scheduler-service/src/test/java/ru/specx/clearing/scheduler/utils/MatcherFactory.java @@ -0,0 +1,38 @@ +package ru.specx.clearing.scheduler.utils; + +import java.util.Arrays; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Factory for creating test matchers. + *

+ * Comparing actual and expected objects via AssertJ + */ +public class MatcherFactory { + + public static Matcher usingIgnoringFieldsComparator(String... fieldsToIgnore) { + return new Matcher<>(fieldsToIgnore); + } + + public static class Matcher { + private final String[] fieldsToIgnore; + + private Matcher(String... fieldsToIgnore) { + this.fieldsToIgnore = fieldsToIgnore; + } + + public void assertMatch(T actual, T expected) { + assertThat(actual).usingRecursiveComparison().ignoringFields(fieldsToIgnore).isEqualTo(expected); + } + + @SafeVarargs + public final void assertMatch(Iterable actual, T... expected) { + assertMatch(actual, Arrays.asList(expected)); + } + + public void assertMatch(Iterable actual, Iterable expected) { + assertThat(actual).usingRecursiveFieldByFieldElementComparatorIgnoringFields(fieldsToIgnore).isEqualTo(expected); + } + } +} From 47df118474e3ed8ead6b8393dccf86702e9c0e77 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 26 Dec 2022 17:04:58 +0300 Subject: [PATCH 075/234] =?UTF-8?q?reports-service=20http://jira.mfd.msk:8?= =?UTF-8?q?088/browse/CLS-25=20=D0=BF=D0=BE=D0=BD=D1=8F=D0=BB=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=20=D0=B2=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../collector/Bt17_1_P1_collector.java | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java index d7ff636d9..33ddce3d0 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java @@ -23,7 +23,7 @@ import java.util.*; import java.util.stream.Collectors; @Component -public class Bt17_1_P1_collector extends ReportDataCollector> { +public class Bt17_1_P1_collector extends ReportDataCollector { protected static final List ALLOW_CLEARING_MEMBER_CATEGORY = Arrays.asList(ClearingCategory.I.getKey(), ClearingCategory.V.getKey()); protected static final String ALLOW_CLEARING_STATUS = ClearingStatus.OK.getKey(); @@ -55,11 +55,15 @@ public class Bt17_1_P1_collector extends ReportDataCollector collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { + public ReportBR_0420315_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { if (startDate.isAfter(endDate)) { throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")"); } - List result = new ArrayList<>(); + ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(startDate, endDate, + "BR", + "I,V", // cmc.getClearingMemberCategory() + ALLOW_CLEARING_STATUS //clearingStatus.getCode() "OK" + ); ClearingStatusDictionary allowClearingStatus = clearingStatusDictionaryImdg.getSingleObjectByFieldValues(Map.of("code", ALLOW_CLEARING_STATUS)); if (allowClearingStatus == null) { @@ -72,33 +76,35 @@ public class Bt17_1_P1_collector extends ReportDataCollector liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql); Map> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId); - - for (LiabilitiesClaimsAssets liability : liabilities) { - final Long companyId = liability.getCompanyId(); + for (Map.Entry> companyEntry : indexByCompany.entrySet()) { + final Long companyId = companyEntry.getKey(); + List liabilitiesOfCompany = companyEntry.getValue(); Company company = companyImdg.getSingleObjectByID(companyId); if (company != null) { ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId)); String checkCategory = cmc == null ? null : cmc.getClearingMemberCategory(); if (!ALLOW_CLEARING_MEMBER_CATEGORY.contains(checkCategory)) { // фильтруются <> I, V - log.trace("Filtered ClearingMemberCategory[{}].ClearingMemberCategory={}", - cmc == null ? null : cmc.getId(), checkCategory); + log.trace("Filtered company[{}] ClearingMemberCategory[{}].ClearingMemberCategory={}", + companyId, cmc == null ? null : cmc.getId(), checkCategory); continue; } - ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(startDate, endDate, - "BR", - cmc.getClearingMemberCategory(), - ALLOW_CLEARING_STATUS //clearingStatus.getCode() "OK" - ); - Listing listing = findListing(Market.mkrs, liability.getSecurityId()); + HashSet onMarket = new HashSet<>(); - List allContract = indexByCompany.get(companyId); long contractorQty; double liabilitiesAmount = 0; { HashSet collectedToSumm = new HashSet<>(); // чтобы дважды не посчитать 1 и тот же контракт - for (LiabilitiesClaimsAssets lContract : allContract) { + HashSet onMarketSecurity=new HashSet<>(); + for (LiabilitiesClaimsAssets lContract : liabilitiesOfCompany) { + if (!onMarketSecurity.contains(lContract.getSecurityId())) { + Listing listing = findListing(Market.mkrs, lContract.getSecurityId()); + if (listing!= null) { + onMarket.add(listing.getMarket()); + } + onMarketSecurity.add(lContract.getSecurityId()); + } if (lContract.getPrice() != null && StringUtils.isNotEmpty(lContract.getContract()) && !collectedToSumm.contains(lContract.getContract())) { collectedToSumm.add(lContract.getContract()); @@ -107,18 +113,20 @@ public class Bt17_1_P1_collector extends ReportDataCollector Date: Mon, 26 Dec 2022 17:20:54 +0300 Subject: [PATCH 076/234] =?UTF-8?q?reports-service=20=D0=BF=D0=BE=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=82=D0=B8=D0=BF=20ReportDat?= =?UTF-8?q?aCollector?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clearing/reports/services/ReportDataCollector.java | 10 ++++++---- .../services/collector/Bt17_1_P1_collector.java | 2 +- .../services/collector/Bt17_1_P2_collector.java | 2 +- .../reports/services/collector/Bt17_2_collector.java | 2 +- .../services/collector/Bt17_5_P1_collector.java | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java index 71c1b41f2..69101ef75 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java @@ -11,7 +11,7 @@ import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.List; -public abstract class ReportDataCollector { +public abstract class ReportDataCollector { public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy"); public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy'T'HH:mm:ss"); @@ -22,7 +22,7 @@ public abstract class ReportDataCollector { * T extends ReportWithPeriod * @return */ - abstract public R collectReportWithPeriod(LocalDate startDate, LocalDate endDate); + abstract public T collectReportWithPeriod(LocalDate startDate, LocalDate endDate); // /** // * T extends ReportWithClearingStatus @@ -33,14 +33,16 @@ public abstract class ReportDataCollector { // abstract public List collectReportWithClearingStatus(LocalDate startDate, LocalDate endDate, String clearingStatus); /** - * + * todo убрать метод, он уже лишний * @param startDate * @param endDate * @param dateTimeNow LocalDateTime.now() * @return */ @Deprecated - abstract public String getFileName(LocalDate startDate, LocalDate endDate, LocalDateTime dateTimeNow); + public String getFileName(LocalDate startDate, LocalDate endDate, LocalDateTime dateTimeNow) { + throw new IllegalArgumentException("deprecated"); + } protected String toString(Long val) { diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java index 33ddce3d0..073f8d7b2 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java @@ -23,7 +23,7 @@ import java.util.*; import java.util.stream.Collectors; @Component -public class Bt17_1_P1_collector extends ReportDataCollector { +public class Bt17_1_P1_collector extends ReportDataCollector { protected static final List ALLOW_CLEARING_MEMBER_CATEGORY = Arrays.asList(ClearingCategory.I.getKey(), ClearingCategory.V.getKey()); protected static final String ALLOW_CLEARING_STATUS = ClearingStatus.OK.getKey(); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java index 02e5587e3..9c3db398c 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java @@ -15,7 +15,7 @@ import java.time.LocalDateTime; import java.util.*; @Component -public class Bt17_1_P2_collector extends ReportDataCollector { +public class Bt17_1_P2_collector extends ReportDataCollector { private Imdg liabilitiesClaimsAssetsImdg; @Autowired diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java index 6c7b61300..65aa7b0a8 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java @@ -18,7 +18,7 @@ import java.time.LocalDateTime; import java.util.*; @Component -public class Bt17_2_collector extends ReportDataCollector { +public class Bt17_2_collector extends ReportDataCollector { private Imdg companyImdg; private Imdg relationImdg; private Imdg companySymbolsImdg; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java index fcf6c50a5..d89f4383b 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java @@ -18,7 +18,7 @@ import java.util.Collection; import java.util.Map; @Component -public class Bt17_5_P1_collector extends ReportDataCollector { +public class Bt17_5_P1_collector extends ReportDataCollector { private Imdg companyImdg; private Imdg relationImdg; private Imdg companySymbolsImdg; From a8f15eff9dd016a7c41b92b3cdb0f00cf63a517b Mon Sep 17 00:00:00 2001 From: akulikov Date: Mon, 26 Dec 2022 17:40:40 +0300 Subject: [PATCH 077/234] reportName --- .../services/builders/DOCXReportBuilder.java | 8 +++- .../services/builders/FileReportBuilder.java | 19 +--------- .../services/builders/XMLReportBuilder.java | 38 +++++++++++++++++-- 3 files changed, 42 insertions(+), 23 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java index ab27e7d9b..ebf56d43d 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java @@ -1,12 +1,16 @@ package ru.spcex.clearing.reports.services.builders; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import ru.spcex.clearing.reports.reports.AbstractReport; +import java.io.File; import java.io.IOException; public abstract class DOCXReportBuilder extends FileReportBuilder { - protected DOCXReportBuilder(Class reportClass, Logger log, String filename) throws IOException { - super(reportClass, log, filename); + private final Logger log = LoggerFactory.getLogger(getClass()); + + protected DOCXReportBuilder(Class reportClass, File templateResource) throws IOException { + super(reportClass); } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java index 01ffe19bb..ee7db9533 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java @@ -1,29 +1,12 @@ package ru.spcex.clearing.reports.services.builders; -import org.slf4j.Logger; import ru.spcex.clearing.reports.reports.AbstractReport; -import java.io.File; -import java.io.IOException; - public abstract class FileReportBuilder { protected final Class reportClass; - protected final Logger log; - protected final String filename; - protected final File file; - protected FileReportBuilder(Class reportClass, Logger log, String filename) throws IOException { + protected FileReportBuilder(Class reportClass) { this.reportClass = reportClass; - this.log = log; - this.filename = filename; - this.file = new File(filename); - if (file.exists()) { - if (file.isFile()) { - log.warn("Файл {} существует и будет перезаписан", filename); - boolean deleteOk = file.delete(); - if (!deleteOk) throw new IOException("Не удалось удалить файл " + filename); - } else throw new IOException(filename + " существует, но не является файлом"); - } } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java index ce85af837..a1b2e0849 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java @@ -4,16 +4,48 @@ import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.naming.NoNameCoder; import com.thoughtworks.xstream.io.xml.XppDriver; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import ru.spcex.clearing.reports.reports.AbstractReport; +import ru.spcex.clearing.reports.services.ReportDataCollector; +import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; +import java.time.LocalDate; +import java.time.LocalDateTime; + +public class XMLReportBuilder extends FileReportBuilder { + private final Logger log = LoggerFactory.getLogger(getClass()); -public abstract class XMLReportBuilder extends FileReportBuilder { protected final XStream xStream; - protected XMLReportBuilder(Class reportClass, Logger log, String filename) throws IOException { - super(reportClass, log, filename); + protected final ReportDataCollector collector; + + public XMLReportBuilder(Class reportClass, ReportDataCollector collector) { + super(reportClass); + this.collector = collector; this.xStream = new XStream(new XppDriver(new NoNameCoder())); xStream.processAnnotations(reportClass); } + + public File createReport(LocalDate startDate, LocalDate endDate) throws IOException { + R report = collector.collectReportWithPeriod(startDate, endDate); + String reportName = report.getReportName(LocalDateTime.now()); + + if (System.getProperty("os.name").contains("windows")) reportName = reportName.replace(":", "_"); + + String reportFileName = reportName + ".xml"; + File reportFile = new File(reportFileName); + if (reportFile.exists()) { + if (reportFile.isFile()) { + log.warn("Файл {} существует и будет перезаписан", reportFileName); + boolean deleteOk = reportFile.delete(); + if (!deleteOk) throw new IOException("Не удалось удалить файл " + reportFileName); + } else throw new IOException(reportFileName + " существует, но не является файлом"); + } + try (FileOutputStream fos = new FileOutputStream(reportFile)) { + xStream.toXML(report, fos); + } + return reportFile; + } } From 4b5667747a9663bd398654486a80fe601b3086e1 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 26 Dec 2022 18:09:07 +0300 Subject: [PATCH 078/234] =?UTF-8?q?reports-service=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BA=D1=80=D1=83=D1=82=D0=B8=D0=BB=20=D0=B3=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D1=80=D0=B0=D1=86=D0=B8=D1=8E=20=D1=82=D0=B5=D1=81=D1=82=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=BF=D1=80=D0=B8=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81?= =?UTF-8?q?=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reports/ReportsServiceApplication.java | 28 +++++++++++++++++-- .../reports/services/ReportDataCollector.java | 1 + .../collector/Bt17_1_P1_collector.java | 5 ++++ .../collector/Bt17_1_P2_collector.java | 5 ++++ .../services/collector/Bt17_2_collector.java | 5 ++++ .../collector/Bt17_5_P1_collector.java | 5 ++++ .../services/ReportDataCollectorTest.java | 8 +++++- 7 files changed, 54 insertions(+), 3 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java index f95d0af68..19185ae84 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java @@ -1,18 +1,42 @@ package ru.spcex.clearing.reports; +import org.apache.commons.lang3.exception.ExceptionUtils; +import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.context.ConfigurableApplicationContext; +import ru.spcex.clearing.reports.services.ReportDataCollector; import ru.spcex.clearing.reports.services.ReportsService; +import ru.spcex.clearing.reports.services.builders.XMLReportBuilder; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.time.LocalDate; +import java.util.Map; @SpringBootApplication public class ReportsServiceApplication { public static void main(String[] args) { try { SpringApplicationBuilder builder = new SpringApplicationBuilder(ReportsServiceApplication.class); - builder.run(args); + ConfigurableApplicationContext context = builder.run(args); + + //todo это тест. Переписать код: + Logger log = LoggerFactory.getLogger(ReportsServiceApplication.class); + ImdgProvider imdg = context.getBean(ImdgProvider.class); + log.info("Wait IMDG..."); + imdg.waitAvailable(); + log.info("Run generate report."); + Map allReports = context.getBeansOfType(ReportDataCollector.class); + System.out.println(allReports); + for (ReportDataCollector collector:allReports.values()) { + XMLReportBuilder xmlReportBuilder = new XMLReportBuilder(collector.getReportClass(), collector); + LocalDate date2 = LocalDate.now(); + LocalDate date1 = LocalDate.of(date2.getYear(), date2.getMonth(), 1);//date2.minusMonths(1); + xmlReportBuilder.createReport(date1, date2); + } } catch (Throwable e) { - LoggerFactory.getLogger(ReportsServiceApplication.class).error("DBF-Loader start failed: {} -> {}", e.getClass().getSimpleName(), e.getMessage()); + LoggerFactory.getLogger(ReportsServiceApplication.class).error("DBF-Loader start failed: {} -> {}", e.getClass().getSimpleName(), ExceptionUtils.getStackTrace(e)); System.exit(-1); } ReportsService reportsService = new ReportsService(); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java index 69101ef75..739c83759 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java @@ -44,6 +44,7 @@ public abstract class ReportDataCollector { throw new IllegalArgumentException("deprecated"); } + abstract public Class getReportClass(); protected String toString(Long val) { if (val == null) return null; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java index 073f8d7b2..a81b79c22 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java @@ -135,4 +135,9 @@ public class Bt17_1_P1_collector extends ReportDataCollector getReportClass() { + return ReportBR_0420315_P1.class; + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java index 9c3db398c..8bc56a177 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java @@ -58,4 +58,9 @@ public class Bt17_1_P2_collector extends ReportDataCollector getReportClass() { + return ReportBR_0420315_P2.class; + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java index 65aa7b0a8..6081329ea 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java @@ -74,4 +74,9 @@ public class Bt17_2_collector extends ReportDataCollector { return String.format("REPBR.0420317.%s-%s.%s", DATE_FORMATTER.format(startDate), DATE_FORMATTER.format(endDate), DATE_TIME_FORMATTER.format(dateTimeNow)); } + + @Override + public Class getReportClass() { + return ReportBR_0420317.class; + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java index d89f4383b..463f6ba36 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java @@ -61,4 +61,9 @@ public class Bt17_5_P1_collector extends ReportDataCollector getReportClass() { + return ReportBR_0420312_P1.class; + } } diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportDataCollectorTest.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportDataCollectorTest.java index 9dbff0808..7341332e7 100644 --- a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportDataCollectorTest.java +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportDataCollectorTest.java @@ -1,6 +1,7 @@ package ru.spcex.clearing.reports.services; import org.junit.jupiter.api.Test; +import ru.spcex.clearing.reports.reports.AbstractReport; import java.time.Instant; import java.time.LocalDate; @@ -28,7 +29,7 @@ class ReportDataCollectorTest extends ReportDataCollector { } @Override - public Object collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { + public AbstractReport collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { throw new IllegalStateException("test"); } @@ -36,4 +37,9 @@ class ReportDataCollectorTest extends ReportDataCollector { public String getFileName(LocalDate startDate, LocalDate endDate, LocalDateTime dateTimeNow) { throw new IllegalStateException("test"); } + + @Override + public Class getReportClass() { + return AbstractReport.class; + } } \ No newline at end of file From 2b0167803b7b34a4613056eba15a4587ae2db768 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 26 Dec 2022 18:26:48 +0300 Subject: [PATCH 079/234] =?UTF-8?q?reports-service=20=D0=BF=D0=BE=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=BC=D0=B5=D0=BB=D0=BA=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B1=D0=B0=D0=B3=D0=B8,=20=D0=BF=D0=BE=D0=B4=D0=BA?= =?UTF-8?q?=D0=BB=D1=8E=D1=87=D0=B8=D0=BB=D1=81=D1=8F=20=D0=BA=20=D1=82?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=BE=D0=B2=D0=BE=D0=BC=D1=83=20=D1=81=D0=B5?= =?UTF-8?q?=D1=80=D0=B2=D0=B5=D1=80=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/spcex/clearing/reports/ReportsServiceApplication.java | 5 +++-- .../clearing/reports/services/builders/XMLReportBuilder.java | 2 +- .../reports/services/collector/Bt17_1_P1_collector.java | 2 +- .../src/main/resources/application.properties | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java index 19185ae84..113de634c 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java @@ -28,15 +28,16 @@ public class ReportsServiceApplication { imdg.waitAvailable(); log.info("Run generate report."); Map allReports = context.getBeansOfType(ReportDataCollector.class); - System.out.println(allReports); + log.info("Report types: {}", allReports); for (ReportDataCollector collector:allReports.values()) { + log.info("Make report {}", collector); XMLReportBuilder xmlReportBuilder = new XMLReportBuilder(collector.getReportClass(), collector); LocalDate date2 = LocalDate.now(); LocalDate date1 = LocalDate.of(date2.getYear(), date2.getMonth(), 1);//date2.minusMonths(1); xmlReportBuilder.createReport(date1, date2); } } catch (Throwable e) { - LoggerFactory.getLogger(ReportsServiceApplication.class).error("DBF-Loader start failed: {} -> {}", e.getClass().getSimpleName(), ExceptionUtils.getStackTrace(e)); + LoggerFactory.getLogger(ReportsServiceApplication.class).error("Report-service start failed: {} -> {}", e.getClass().getSimpleName(), ExceptionUtils.getStackTrace(e)); System.exit(-1); } ReportsService reportsService = new ReportsService(); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java index a1b2e0849..ed8ac24bf 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java @@ -32,7 +32,7 @@ public class XMLReportBuilder extends FileReportBuilde R report = collector.collectReportWithPeriod(startDate, endDate); String reportName = report.getReportName(LocalDateTime.now()); - if (System.getProperty("os.name").contains("windows")) reportName = reportName.replace(":", "_"); + if (System.getProperty("os.name").toLowerCase().contains("windows")) reportName = reportName.replace(":", "_"); String reportFileName = reportName + ".xml"; File reportFile = new File(reportFileName); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java index a81b79c22..229eb2a8a 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java @@ -71,7 +71,7 @@ public class Bt17_1_P1_collector extends ReportDataCollector liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql); diff --git a/clearing-parent/reports-service/src/main/resources/application.properties b/clearing-parent/reports-service/src/main/resources/application.properties index 6c2158643..52d18bea7 100644 --- a/clearing-parent/reports-service/src/main/resources/application.properties +++ b/clearing-parent/reports-service/src/main/resources/application.properties @@ -2,7 +2,7 @@ server.port=8080 server.servlet.context-path=/reports_service spring.main.web-application-type=servlet -reports-service.hazelcast.cluster-members=127.0.0.1:5701 +reports-service.hazelcast.cluster-members=127.0.0.1:5701,10.200.200.181:5701 reports-service.hazelcast.login=dev reports-service.hazelcast.password=dev-pass reports-service.ReportModuleOut=./report_out From ae3b24c8a1d074f45e84eec7525aae8d72688abd Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 26 Dec 2022 19:30:17 +0300 Subject: [PATCH 080/234] =?UTF-8?q?reports-service=20=D0=B4=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20kafka,=20=D0=BD?= =?UTF-8?q?=D0=B0=D1=87=D0=B0=D0=BB=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- clearing-parent/reports-service/pom.xml | 4 ++ .../clearing/reports/config/KafkaConfig.java | 28 +++++++++++ .../element/ReportsServiceSettings.java | 22 ++++++--- .../reports/services/QCommandExecutor.java | 49 +++++++++++++++++++ .../src/main/resources/application.properties | 17 +++++++ 5 files changed, 114 insertions(+), 6 deletions(-) create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/KafkaConfig.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/QCommandExecutor.java diff --git a/clearing-parent/reports-service/pom.xml b/clearing-parent/reports-service/pom.xml index 54846a228..457291ada 100644 --- a/clearing-parent/reports-service/pom.xml +++ b/clearing-parent/reports-service/pom.xml @@ -62,6 +62,10 @@ ru.spcex.platform platform-imdg-api-hazelcast-impl + + ru.spcex.platform + platform-messaging + org.junit.jupiter diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/KafkaConfig.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/KafkaConfig.java new file mode 100644 index 000000000..cd3b73821 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/KafkaConfig.java @@ -0,0 +1,28 @@ +package ru.spcex.clearing.reports.config; + +import org.apache.kafka.clients.consumer.Consumer; +import org.apache.kafka.clients.producer.Producer; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; +import ru.spcex.clearing.platform.messaging.config.KafkaConsumerFactory; +import ru.spcex.clearing.platform.messaging.config.KafkaProducerFactory; +import ru.spcex.clearing.reports.config.element.ReportsServiceSettings; + +@Configuration +public class KafkaConfig { + @Autowired + @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) + @Bean + public Consumer createConsumer(ReportsServiceSettings settings) { + return KafkaConsumerFactory.consumer(settings.getKafkaConsumer()); + } + +// @Autowired +// @Bean +// public Producer createProducer(ReportsServiceSettings settings) { +// return KafkaProducerFactory.producer(settings.getKafkaProducer()); +// } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java index a79eaa702..d3aa03d8a 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java @@ -3,6 +3,8 @@ package ru.spcex.clearing.reports.config.element; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; +import ru.spcex.clearing.platform.messaging.config.element.KafkaConsumerSettings; +import ru.spcex.clearing.platform.messaging.config.element.KafkaProducerSettings; import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams; /** @@ -15,7 +17,8 @@ import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams; @ConfigurationProperties("reports-service") public class ReportsServiceSettings { private HazelcastClientParams hazelcast; - private String reportModuleOut; + private KafkaConsumerSettings kafkaConsumer; + private KafkaProducerSettings kafkaProducer; public HazelcastClientParams getHazelcast() { return hazelcast; @@ -25,12 +28,19 @@ public class ReportsServiceSettings { this.hazelcast = hazelcast; } - - public String getReportModuleOut() { - return reportModuleOut; + public KafkaConsumerSettings getKafkaConsumer() { + return kafkaConsumer; } - public void setReportModuleOut(String reportModuleOut) { - this.reportModuleOut = reportModuleOut; + public void setKafkaConsumer(KafkaConsumerSettings kafkaConsumer) { + this.kafkaConsumer = kafkaConsumer; + } + + public KafkaProducerSettings getKafkaProducer() { + return kafkaProducer; + } + + public void setKafkaProducer(KafkaProducerSettings kafkaProducer) { + this.kafkaProducer = kafkaProducer; } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/QCommandExecutor.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/QCommandExecutor.java new file mode 100644 index 000000000..a093f6eec --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/QCommandExecutor.java @@ -0,0 +1,49 @@ +package ru.spcex.clearing.reports.services; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.InitializingBean; +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; + +import org.apache.kafka.clients.consumer.Consumer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +//import ru.spcex.clearing.platform.messaging.domain.cud.balance.ExportToFileRequest; todo use class? +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; +import ru.spcex.platform.enumeration.Task; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgId; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.util.List; + +public class QCommandExecutor extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); +// private final ImdgId idGenerator; +// private final KafkaSender kafkaReqProducer; + + + public QCommandExecutor(Consumer kafkaQueue, ImdgProvider imdgProvider, + List listOfCollectors) { + super(kafkaQueue); +// todo constructor + } + + @Override + public void afterPropertiesSet() { + log.debug("Init queue listener {}", getClass().getSimpleName()); +// callback(Object.class) +// .setConsumer(this::newReportDo) +// .forDestination(Task.getVerification!!!.topic(), callbacks::put); // todo здесь надо указать команду из ТЗ или согласовать с фронтэндом +// init(); + } + + private void newReportDo(BaseRequest userRequest) { + log.debug("newReportDo request received"); + // todo logic + log.debug("successfully processed"); + } +} diff --git a/clearing-parent/reports-service/src/main/resources/application.properties b/clearing-parent/reports-service/src/main/resources/application.properties index 52d18bea7..c7765a7fe 100644 --- a/clearing-parent/reports-service/src/main/resources/application.properties +++ b/clearing-parent/reports-service/src/main/resources/application.properties @@ -2,7 +2,24 @@ server.port=8080 server.servlet.context-path=/reports_service spring.main.web-application-type=servlet + +reports-service.kafka-consumer.bootstrap-servers=localhost:9092 +reports-service.kafka-consumer.group-id=dev-group-balance-service +reports-service.kafka-consumer.enable-auto-commit=false +reports-service.kafka-consumer.session-timeout-ms=30000 +reports-service.kafka-consumer.auto-offset-reset=latest +reports-service.kafka-consumer.linger-ms=1 +reports-service.kafka-consumer.buffer-memory=33554432 + +#reports-service.kafka-producer.bootstrap-servers=localhost:9092 +#reports-service.kafka-producer.acks=all +#reports-service.kafka-producer.retries=0 +#reports-service.kafka-producer.batch-size=16384 +#reports-service.kafka-producer.linger-ms=1 +#reports-service.kafka-producer.buffer-memory=33554432 + reports-service.hazelcast.cluster-members=127.0.0.1:5701,10.200.200.181:5701 reports-service.hazelcast.login=dev reports-service.hazelcast.password=dev-pass + reports-service.ReportModuleOut=./report_out From 41147002f71cb5d810268867c0c465134192f489 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 26 Dec 2022 19:36:34 +0300 Subject: [PATCH 081/234] reports-service refactoring --- .../reports/services/ReportDataCollector.java | 12 ---------- .../services/builders/FileReportBuilder.java | 4 ++++ .../services/builders/XMLReportBuilder.java | 4 +--- .../collector/Bt17_1_P1_collector.java | 7 ------ .../collector/Bt17_1_P2_collector.java | 6 ----- .../services/collector/Bt17_2_collector.java | 7 ------ .../collector/Bt17_5_P1_collector.java | 6 ----- .../services/ReportDataCollectorTest.java | 5 ---- .../services/impl/Bt17_1_collectorTest.java | 24 ------------------- 9 files changed, 5 insertions(+), 70 deletions(-) delete mode 100644 clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/impl/Bt17_1_collectorTest.java diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java index 739c83759..f7dc466ba 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java @@ -32,18 +32,6 @@ public abstract class ReportDataCollector { // */ // abstract public List collectReportWithClearingStatus(LocalDate startDate, LocalDate endDate, String clearingStatus); - /** - * todo убрать метод, он уже лишний - * @param startDate - * @param endDate - * @param dateTimeNow LocalDateTime.now() - * @return - */ - @Deprecated - public String getFileName(LocalDate startDate, LocalDate endDate, LocalDateTime dateTimeNow) { - throw new IllegalArgumentException("deprecated"); - } - abstract public Class getReportClass(); protected String toString(Long val) { diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java index ee7db9533..d22e38111 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java @@ -9,4 +9,8 @@ public abstract class FileReportBuilder { this.reportClass = reportClass; } + protected String makeFileName(String reportName, String extension) { + if (System.getProperty("os.name").toLowerCase().contains("windows")) reportName = reportName.replace(":", "_"); + return reportName + extension; + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java index ed8ac24bf..0d25b8cf6 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java @@ -31,10 +31,8 @@ public class XMLReportBuilder extends FileReportBuilde public File createReport(LocalDate startDate, LocalDate endDate) throws IOException { R report = collector.collectReportWithPeriod(startDate, endDate); String reportName = report.getReportName(LocalDateTime.now()); + String reportFileName = makeFileName(reportName, ".xml"); - if (System.getProperty("os.name").toLowerCase().contains("windows")) reportName = reportName.replace(":", "_"); - - String reportFileName = reportName + ".xml"; File reportFile = new File(reportFileName); if (reportFile.exists()) { if (reportFile.isFile()) { diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java index 229eb2a8a..d11b7e256 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java @@ -129,13 +129,6 @@ public class Bt17_1_P1_collector extends ReportDataCollector getReportClass() { return ReportBR_0420315_P1.class; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java index 8bc56a177..3c18e6922 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java @@ -53,12 +53,6 @@ public class Bt17_1_P2_collector extends ReportDataCollector getReportClass() { return ReportBR_0420315_P2.class; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java index 6081329ea..4d9b8ddae 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java @@ -68,13 +68,6 @@ public class Bt17_2_collector extends ReportDataCollector { return reportBR_0420317; } - - @Override - public String getFileName(LocalDate startDate, LocalDate endDate, LocalDateTime dateTimeNow) { - return String.format("REPBR.0420317.%s-%s.%s", DATE_FORMATTER.format(startDate), DATE_FORMATTER.format(endDate), - DATE_TIME_FORMATTER.format(dateTimeNow)); - } - @Override public Class getReportClass() { return ReportBR_0420317.class; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java index 463f6ba36..23e4b2d38 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java @@ -56,12 +56,6 @@ public class Bt17_5_P1_collector extends ReportDataCollector getReportClass() { return ReportBR_0420312_P1.class; diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportDataCollectorTest.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportDataCollectorTest.java index 7341332e7..0e730578b 100644 --- a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportDataCollectorTest.java +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportDataCollectorTest.java @@ -33,11 +33,6 @@ class ReportDataCollectorTest extends ReportDataCollector { throw new IllegalStateException("test"); } - @Override - public String getFileName(LocalDate startDate, LocalDate endDate, LocalDateTime dateTimeNow) { - throw new IllegalStateException("test"); - } - @Override public Class getReportClass() { return AbstractReport.class; diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/impl/Bt17_1_collectorTest.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/impl/Bt17_1_collectorTest.java deleted file mode 100644 index cef49c50c..000000000 --- a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/impl/Bt17_1_collectorTest.java +++ /dev/null @@ -1,24 +0,0 @@ -package ru.spcex.clearing.reports.services.impl; - -import org.junit.jupiter.api.Test; -import org.mockito.Mockito; -import ru.spcex.clearing.reports.services.collector.Bt17_1_P1_collector; - -import java.time.LocalDate; -import java.time.LocalDateTime; - -import static org.junit.jupiter.api.Assertions.*; - -class Bt17_1_collectorTest { - - @Test - void getFileName() { - Bt17_1_P1_collector collector = Mockito.mock(Bt17_1_P1_collector.class); - Mockito.when(collector.getFileName(Mockito.any(),Mockito.any(),Mockito.any())).thenCallRealMethod(); - - String str = collector.getFileName(LocalDate.of(2020,1,1), - LocalDate.of(2020,1,31), - LocalDateTime.of(2021,4,20,12,20,44)); - assertEquals("REPBR.0420315.P1.01.01.2020-31.01.2020.20.04.2021T12:20:44", str); - } -} \ No newline at end of file From 1d63a859c6dda3a4ef8e36932141dca8c1b56564 Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 26 Dec 2022 20:20:04 +0300 Subject: [PATCH 082/234] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-213?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=81=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D1=80=D0=B8=20=D0=B2=20=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dictionary/DictionaryBackendGetAll.java | 34 +++++++++++++--- .../DictionaryBackendGetFields.java | 2 +- .../DictionaryBackendGetSingleValueV2.java | 25 ++++++++++++ .../entity/dictionary/IDictionaryPayload.java | 4 ++ .../system/DictionaryController.java | 28 +++++++------ .../meta/ClearingDictionaryExtracted.java | 22 +++++++++++ .../backendapi/meta/GetResponseFactory.java | 15 +++++++ .../clearing/backendapi/meta/MetaServer.java | 39 +++++++++++++++++++ .../backendapi/meta/ObjectExtracted.java | 12 +++--- 9 files changed, 158 insertions(+), 23 deletions(-) create mode 100644 clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/dictionary/DictionaryBackendGetSingleValueV2.java create mode 100644 clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/dictionary/IDictionaryPayload.java create mode 100644 clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/ClearingDictionaryExtracted.java diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/dictionary/DictionaryBackendGetAll.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/dictionary/DictionaryBackendGetAll.java index 3d6c11aeb..c6c9b71f3 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/dictionary/DictionaryBackendGetAll.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/dictionary/DictionaryBackendGetAll.java @@ -9,25 +9,34 @@ import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Map; @ApiModel(description = "Ответ при получении объектов словаря.") public class DictionaryBackendGetAll extends BasicSpcexResponse { @JsonProperty @ApiModelProperty(value = "Полезная нагрузка") - private DictionaryBackendPayload payload = new DictionaryBackendPayload(); + private IDictionaryPayload payload; public void fromEntity(Collection dictionaryValues) { - var payload = this.getPayload(); + this.payload = new GeneralDictionaryBackendPayload(); + GeneralDictionaryBackendPayload castedPayload = (GeneralDictionaryBackendPayload) payload; for (AbstractDictionary dictionaryValue : dictionaryValues) { var singleItem = new DictionaryBackendGetFields(); singleItem.fromEntity(dictionaryValue); - payload.getItems().add(singleItem); + castedPayload.getItems().add(singleItem); } } + public void addMap(Map m) { + if (this.payload == null) { + this.payload = new SpecificDictionaryBackendPayload(); + } + SpecificDictionaryBackendPayload payloadCasted = (SpecificDictionaryBackendPayload) this.payload; + payloadCasted.getItems().add(m); + } - private static class DictionaryBackendPayload { + public static class GeneralDictionaryBackendPayload implements IDictionaryPayload { private List items = new ArrayList<>(); public List getItems() { @@ -39,11 +48,24 @@ public class DictionaryBackendGetAll extends BasicSpcexResponse { } } - public DictionaryBackendPayload getPayload() { + public static class SpecificDictionaryBackendPayload implements IDictionaryPayload { + @JsonProperty + private List> items = new ArrayList<>(); + + public List> getItems() { + return items; + } + + public void setItems(List> items) { + this.items = items; + } + } + + public IDictionaryPayload getPayload() { return payload; } - public void setPayload(DictionaryBackendPayload payload) { + public void setPayload(IDictionaryPayload payload) { this.payload = payload; } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/dictionary/DictionaryBackendGetFields.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/dictionary/DictionaryBackendGetFields.java index fa27898c9..eb91fba9a 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/dictionary/DictionaryBackendGetFields.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/dictionary/DictionaryBackendGetFields.java @@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModelProperty; import ru.clearing.platform.dictionary.AbstractDictionary; -public class DictionaryBackendGetFields { +public class DictionaryBackendGetFields implements IDictionaryPayload { @JsonProperty @ApiModelProperty(value = "Идентификатор", example = "1234") private Long id; diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/dictionary/DictionaryBackendGetSingleValueV2.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/dictionary/DictionaryBackendGetSingleValueV2.java new file mode 100644 index 000000000..4db4ef922 --- /dev/null +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/dictionary/DictionaryBackendGetSingleValueV2.java @@ -0,0 +1,25 @@ +package ru.spcex.clearing.backendapi.controller.response.entity.dictionary; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; + +import java.util.HashMap; +import java.util.Map; + +@ApiModel(description = "Ответ при получении объекта словаря.") +public class DictionaryBackendGetSingleValueV2 extends BasicSpcexResponse { + + @JsonProperty + @ApiModelProperty(value = "Поля объекта") + private Map payload = new HashMap<>(); + + public Map getPayload() { + return payload; + } + + public void setPayload(Map payload) { + this.payload = payload; + } +} \ No newline at end of file diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/dictionary/IDictionaryPayload.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/dictionary/IDictionaryPayload.java new file mode 100644 index 000000000..2cba7bac3 --- /dev/null +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/dictionary/IDictionaryPayload.java @@ -0,0 +1,4 @@ +package ru.spcex.clearing.backendapi.controller.response.entity.dictionary; + +public interface IDictionaryPayload { +} diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/system/DictionaryController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/system/DictionaryController.java index 425bd1876..138735915 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/system/DictionaryController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/system/DictionaryController.java @@ -13,10 +13,11 @@ import org.springframework.web.bind.annotation.*; import ru.clearing.platform.dictionary.AbstractDictionary; import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; import ru.spcex.clearing.backendapi.controller.response.entity.dictionary.DictionaryBackendGetAll; -import ru.spcex.clearing.backendapi.controller.response.entity.dictionary.DictionaryBackendGetSingleValue; +import ru.spcex.clearing.backendapi.controller.response.entity.dictionary.DictionaryBackendGetSingleValueV2; import ru.spcex.clearing.backendapi.errors.ActionValidationException; import ru.spcex.clearing.backendapi.errors.BackEndError; import ru.spcex.clearing.backendapi.errors.NotFound404Exception; +import ru.spcex.clearing.backendapi.meta.GetResponseFactory; import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -33,10 +34,12 @@ public class DictionaryController { private final Logger log = LoggerFactory.getLogger(getClass()); private final Map> allDictionaryMaps; private final ImdgProvider imdgProvider; + private final GetResponseFactory responseFactory; @Autowired - public DictionaryController(ImdgProvider imdgProvider) { + public DictionaryController(ImdgProvider imdgProvider, GetResponseFactory responseFactory) { this.imdgProvider = imdgProvider; + this.responseFactory = responseFactory; this.allDictionaryMaps = new ConcurrentHashMap<>(); } @@ -49,39 +52,42 @@ public class DictionaryController { Imdg dictionary = extractDictionaryImdgFromUrlParameter(dictionaryName, AbstractDictionary.class); Collection allValues = dictionary.getAllValues(); DictionaryBackendGetAll response = new DictionaryBackendGetAll(); - response.fromEntity(allValues); + for (AbstractDictionary val : allValues) { + Map fromMeta = responseFactory.responseFromDictionary(dictionaryName, val); + response.addMap(fromMeta); + } return response; } @ApiOperation(value = "get dictionary value by id.") - @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = DictionaryBackendGetSingleValue.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)}) + @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = DictionaryBackendGetSingleValueV2.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)}) @RequestMapping(value = "/{dictionary-name}/{id}", method = RequestMethod.GET) @ResponseBody - public DictionaryBackendGetSingleValue getById(@ApiParam(value = "Название словаря", required = true, example = "moneyFlowSide") + public DictionaryBackendGetSingleValueV2 getById(@ApiParam(value = "Название словаря", required = true, example = "moneyFlowSide") @PathVariable("dictionary-name") String dictionaryName, @ApiParam(value = "Идентификатор объекта", required = true, example = "1234") @PathVariable("id") Long id) { Imdg dictionary = extractDictionaryImdgFromUrlParameter(dictionaryName, AbstractDictionary.class); AbstractDictionary value = dictionary.getSingleObjectByID(id); if (value == null) throw new NotFound404Exception(dictionaryName + " id='" + id + "'"); - DictionaryBackendGetSingleValue response = new DictionaryBackendGetSingleValue(); - response.fromEntity(value); + DictionaryBackendGetSingleValueV2 response = new DictionaryBackendGetSingleValueV2(); + response.setPayload(responseFactory.responseFromDictionary(dictionaryName, value)); return response; } @ApiOperation(value = "get dictionary value by code.") - @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = DictionaryBackendGetSingleValue.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)}) + @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = DictionaryBackendGetSingleValueV2.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)}) @RequestMapping(value = "/{dictionary-name}/code/{code}", method = RequestMethod.GET) @ResponseBody - public DictionaryBackendGetSingleValue getByCode(@ApiParam(value = "Название словаря", required = true, example = "moneyFlowSide") + public DictionaryBackendGetSingleValueV2 getByCode(@ApiParam(value = "Название словаря", required = true, example = "moneyFlowSide") @PathVariable("dictionary-name") String dictionaryName, @ApiParam(value = "Код словаря", required = true, example = "1234") @PathVariable("code") String code) { Imdg dictionary = extractDictionaryImdgFromUrlParameter(dictionaryName, AbstractDictionary.class); AbstractDictionary value = dictionary.getSingleObjectByFieldValues(Map.of("code", code)); if (value == null) throw new NotFound404Exception(dictionaryName + " code='" + code + "'"); - DictionaryBackendGetSingleValue response = new DictionaryBackendGetSingleValue(); - response.fromEntity(value); + DictionaryBackendGetSingleValueV2 response = new DictionaryBackendGetSingleValueV2(); + response.setPayload(responseFactory.responseFromDictionary(dictionaryName, value)); return response; } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/ClearingDictionaryExtracted.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/ClearingDictionaryExtracted.java new file mode 100644 index 000000000..dabb4f653 --- /dev/null +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/ClearingDictionaryExtracted.java @@ -0,0 +1,22 @@ +package ru.spcex.clearing.backendapi.meta; + +import java.util.List; + +public class ClearingDictionaryExtracted extends ObjectExtracted { + + public ClearingDictionaryExtracted(String clazz, List actionFields) { + for (ActionField field : actionFields) { + if (field.getVirtual() != null && field.isVirtual()){ + continue; + } + FieldExtracted fe = getImplFieldExtracted(field); + fields.add(fe); + fieldByCode.put(field.getCode(), fe); + } + } + + @Override + public FieldExtracted getImplFieldExtracted(ActionField field) { + return new ClearingFieldExtracted(field); + } +} diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/GetResponseFactory.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/GetResponseFactory.java index 86f3cb2c1..e6e23ff8d 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/GetResponseFactory.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/GetResponseFactory.java @@ -31,11 +31,26 @@ public class GetResponseFactory { .collect(Collectors.toList()); } + /** + * dictionaryName - это имя тэга внутри + */ + public Map responseFromDictionary(String dictionaryName, Object o) { + ObjectExtracted objectExtracted = meta.getEnumsExtractedByTagName().get(dictionaryName); + if (objectExtracted == null) { + throw new RuntimeException("cannot find dictionary in meta for " + dictionaryName); + } + return responseFromObjectExtracted(o, objectExtracted); + } + public Map responseFromObject(Object o) { ObjectExtracted objExtr = meta.getObjectsExtractedByClazz().get(o.getClass().getCanonicalName()); if (objExtr == null) { throw new RuntimeException("cannot find object in meta for " + o.getClass().getCanonicalName()); } + return responseFromObjectExtracted(o, objExtr); + } + + private Map responseFromObjectExtracted(Object o, ObjectExtracted objExtr) { Map r = new LinkedHashMap<>(); FieldExtracted currentField = null; try { diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/MetaServer.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/MetaServer.java index be7392a9b..452a5e9af 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/MetaServer.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/MetaServer.java @@ -2,6 +2,7 @@ package ru.spcex.clearing.backendapi.meta; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import ru.spcex.platform.utils.log.ExceptionUtils; import java.lang.reflect.Constructor; import java.lang.reflect.Method; @@ -17,6 +18,8 @@ public class MetaServer extends MetaBase { private Map objectsExtractedByDestination; private Map actionObjectsExtracted; private Map objectElementByDestination; + private Map enumsExtractedByTagName; + private final static Set dictionaryDefaultFields = Set.of("id", "code", "name"); protected ObjectExtracted getImplInstanceObjectExtracted(String clazz, List actionFields) { return new ClearingObjectExtracted(clazz, actionFields); @@ -31,6 +34,7 @@ public class MetaServer extends MetaBase { objectsExtractedByClazz = new ConcurrentHashMap<>(); objectsExtractedByDestination = new ConcurrentHashMap<>(); objectElementByDestination = new ConcurrentHashMap<>(); + enumsExtractedByTagName = new ConcurrentHashMap<>(); try { Map objects = getObjects(); log.info("Meta objects:\n{}", @@ -84,6 +88,37 @@ public class MetaServer extends MetaBase { } catch (Throwable e) { throw new ClearingMetaServerValidationException(e.getLocalizedMessage()); } + try { + Map enums = getEnums(); + for (String key : enums.keySet()) { + ObjectExtracted oe; + ObjectEnumElement objectElement = enums.get(key); + try { + oe = new ClearingDictionaryExtracted(objectElement.getClazz(), objectElement.getFields()); + } catch (Throwable e) { + log.warn("{} {}", key, ExceptionUtils.getStackTrace(e)); + continue; + } + /** + * можно было бы хранить только для нестандартных словарей (где не только id, name, code) + */ +// List dictFields = oe.getFields(); +// boolean add = false; +// for (FieldExtracted dictField : dictFields) { +// if (!dictionaryDefaultFields.contains(dictField.getMemberName())) { +// add = true; +// break; +// } +// } +// if (add) { +// enumsExtractedByTagName.put(key, oe); +// } + enumsExtractedByTagName.put(key, oe); + } + + } catch (Throwable e) { + throw new ClearingMetaServerValidationException(e.getLocalizedMessage()); + } } for (ObjectExtracted o : this.objectsExtracted) { try { @@ -196,4 +231,8 @@ public class MetaServer extends MetaBase { } return partSize; } + + public Map getEnumsExtractedByTagName() { + return enumsExtractedByTagName; + } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/ObjectExtracted.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/ObjectExtracted.java index 5f75b9de5..8e4fc3cda 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/ObjectExtracted.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/ObjectExtracted.java @@ -5,12 +5,14 @@ import java.util.*; import java.util.concurrent.ConcurrentHashMap; public abstract class ObjectExtracted { - private String className; - private Class clazz; - private List fields = new LinkedList<>(); - private Map fieldByCode = new ConcurrentHashMap<>(); - private boolean isArray = false; + protected String className; + protected Class clazz; + protected List fields = new LinkedList<>(); + protected Map fieldByCode = new ConcurrentHashMap<>(); + protected boolean isArray = false; + public ObjectExtracted() { + } public ObjectExtracted(String clazz, List actionFields) { this.className = clazz; From c5c56f5d79338f0f904cc7b8c4316402975c8808 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 26 Dec 2022 20:28:31 +0300 Subject: [PATCH 083/234] =?UTF-8?q?reports-service=20http://jira.mfd.msk:8?= =?UTF-8?q?088/browse/CLS-29=20=D0=BD=D0=B0=D1=87=D0=B0=D0=BB=D0=BE,=20?= =?UTF-8?q?=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D0=BD?= =?UTF-8?q?=D0=B3=20=D0=BE=D0=BF=D1=8F=D1=82=D1=8C.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reports/bt_17_5/ReportBR_0420312_P1.java | 35 +++++++--- .../reports/services/ReportDataCollector.java | 6 ++ .../collector/Bt17_1_P1_collector.java | 4 +- .../collector/Bt17_1_P2_collector.java | 4 +- .../services/collector/Bt17_2_collector.java | 4 +- .../collector/Bt17_5_P1_collector.java | 65 +++++++++++++------ 6 files changed, 79 insertions(+), 39 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java index af4884919..dce10d12a 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java @@ -6,6 +6,8 @@ import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; @XStreamAlias("clearingCoverage1") public class ReportBR_0420312_P1 extends ReportWithPeriod { @@ -13,9 +15,27 @@ public class ReportBR_0420312_P1 extends ReportWithPeriod { @XStreamAlias("destination") private String destination; - @XStreamAlias("part_1") - private final Info_0420312_P1 part_1; + @XStreamAlias("rows") + private final List rows = new ArrayList<>(); + + public ReportBR_0420312_P1(LocalDate startDate, + LocalDate endDate, + String destination) { + super("0.0.1", + "0420312", + "Сведения о клиринговом обеспечении, часть 1", + startDate, + endDate); + this.destination = destination; + } + + + public List getRows() { + return rows; + } + + @Deprecated public ReportBR_0420312_P1(LocalDate startDate, LocalDate endDate, String companyClearingCode, @@ -26,19 +46,14 @@ public class ReportBR_0420312_P1 extends ReportWithPeriod { String companySymbolValue, String companyInfoCountryCode, String clearingMemberCategoryClearingMemberCategory) { - super("0.0.1", - "0420312", - "Сведения о клиринговом обеспечении, часть 1", - startDate, - endDate); - this.destination = destination; - part_1 = new Info_0420312_P1(companyClearingCode, + this(startDate, endDate, destination); + getRows().add(new Info_0420312_P1(companyClearingCode, liabilitiesClaimsAssetsCompanyId, liabilitiesClaimsAssetsFullName, companySymbolCode, companySymbolValue, companyInfoCountryCode, - clearingMemberCategoryClearingMemberCategory); + clearingMemberCategoryClearingMemberCategory)); } public static class Info_0420312_P1 { diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java index f7dc466ba..82a8d0001 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java @@ -34,6 +34,12 @@ public abstract class ReportDataCollector { abstract public Class getReportClass(); + protected void validateDateRange(LocalDate startDate, LocalDate endDate) throws IllegalArgumentException { + if (startDate.isAfter(endDate)) { + throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")"); + } + } + protected String toString(Long val) { if (val == null) return null; return val.toString(); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java index d11b7e256..824306394 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java @@ -56,9 +56,7 @@ public class Bt17_1_P1_collector extends ReportDataCollector endDate(" + endDate + ")"); - } + validateDateRange(startDate, endDate); ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(startDate, endDate, "BR", "I,V", // cmc.getClearingMemberCategory() diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java index 3c18e6922..bed4787d1 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java @@ -25,9 +25,7 @@ public class Bt17_1_P2_collector extends ReportDataCollector endDate(" + endDate + ")"); - } + validateDateRange(startDate, endDate); String ql = String.format("'%s' <= refundDate and refundDate <= '%s'", startDate, endDate); Collection liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java index 4d9b8ddae..b85eed586 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java @@ -32,9 +32,7 @@ public class Bt17_2_collector extends ReportDataCollector { @Override public ReportBR_0420317 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { - if (startDate.isAfter(endDate)) { - throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")"); - } + validateDateRange(startDate, endDate); String ql = String.format("'%s' <= updated and updated <= '%s' and service='MKR'", startDate, endDate); // todo обговорить про updatedAt updated, todo enum MKR diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java index 23e4b2d38..11ccb81d6 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java @@ -5,52 +5,77 @@ import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.company.relation.Relation; +import ru.clearing.classes.statics.data.generated.ClearingMemberCategory; +import ru.clearing.classes.transaction.data.execution.LiabilitiesClaimsAssets; +import ru.clearing.platform.dictionary.CountryCodeDictionary; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_2.ReportBR_0420317; import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P1; import ru.spcex.clearing.reports.services.ReportDataCollector; +import ru.spcex.platform.enumeration.DocumentTypes; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import java.time.LocalDate; -import java.time.LocalDateTime; import java.util.Collection; +import java.util.List; import java.util.Map; @Component public class Bt17_5_P1_collector extends ReportDataCollector { private Imdg companyImdg; - private Imdg relationImdg; + // private Imdg relationImdg; private Imdg companySymbolsImdg; + private Imdg countryCodeDictionaryImdg; + private Imdg clearingMemberCategoryImdg; + private Imdg liabilitiesClaimsAssetsImdg; @Autowired public Bt17_5_P1_collector(ImdgProvider imdgProvider) { companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); - relationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class); + liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); +// relationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class); companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); + countryCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CountryCodeDictionary, CountryCodeDictionary.class); + } + + protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) { + CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of( + "companySymbol", docType.getKey(), + "companyId", companyId + )); + return companySymbol; } @Override public ReportBR_0420312_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { - if (startDate.isAfter(endDate)) { - throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")"); - } + validateDateRange(startDate, endDate); - // TODO ВСЁ по CLS-29... - String ql = String.format("'%s' <= updated and updated <= '%s' and service='MKR'", startDate, endDate); + ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(startDate, endDate, "BR"); // todo обговорить про updatedAt updated, todo enum MKR - Collection relations = relationImdg.getCollectionObjectsBySQL(ql); - ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(LocalDate.now(), - LocalDate.now(), - "companyClearingCode", - "BR", - "liabilitesClaimsAssetsCompanyId", - "liabilitesClaimsAssetsFullName", - "companySymbolCode", - "companySymbolValue", - "companyInfoCountryCode", - "clearingMemberCategory"); + String ql = String.format("'%s' <= refundDate and refundDate <= '%s'", + startDate, endDate); + Collection liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql); + Map> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId); + for (Map.Entry> companyEntry : indexByCompany.entrySet()) { + final Long companyId = companyEntry.getKey(); + Company company = companyImdg.getSingleObjectByID(companyId); + CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId()); + CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId()); + ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId)); + String clearingMemberCategory = cmc == null ? null : cmc.getClearingMemberCategory(); + ReportBR_0420312_P1.Info_0420312_P1 info_0420312_p1 = new ReportBR_0420312_P1.Info_0420312_P1( + company.getClearingCode(), + toString(companyId), + company.getFullName(), + companySymbolINN == null ? null : companySymbolINN.getCompanySymbolValue(), + companySymbolOGRN == null ? null : companySymbolOGRN.getCompanySymbolValue(), + company.getProfile().getCountryCode(), + clearingMemberCategory + ); + reportBR_0420312P1.getRows().add(info_0420312_p1); + } return reportBR_0420312P1; } From 5ce07b54046f428c1fb7c53ea4001dfbbf04cdb7 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 26 Dec 2022 20:31:40 +0300 Subject: [PATCH 084/234] =?UTF-8?q?reports-service=20=D0=B7=D0=B0=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=88=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D1=8B=20=D1=81=D1=80=D0=B0=D0=B7=D1=83=20(=D0=B4?= =?UTF-8?q?=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0=D1=82=D1=8C=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D0=B0,=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B8=D0=B7=20=D0=BA=D0=BE=D0=BD=D1=81=D0=BE?= =?UTF-8?q?=D0=BB=D0=B8=20=D0=B2=D1=8B=D0=BA=D0=BB=D1=8E=D1=87=D0=B8=D1=82?= =?UTF-8?q?=D1=81=D1=8F=20=D1=81=D1=80=D0=B0=D0=B7=D1=83)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/spcex/clearing/reports/ReportsServiceApplication.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java index 113de634c..c12ab17d1 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java @@ -36,6 +36,8 @@ public class ReportsServiceApplication { LocalDate date1 = LocalDate.of(date2.getYear(), date2.getMonth(), 1);//date2.minusMonths(1); xmlReportBuilder.createReport(date1, date2); } + log.info("Shutdown application after work"); + context.close(); // todo если будет запущен как сервис, сделать выход опционально, по другому. } catch (Throwable e) { LoggerFactory.getLogger(ReportsServiceApplication.class).error("Report-service start failed: {} -> {}", e.getClass().getSimpleName(), ExceptionUtils.getStackTrace(e)); System.exit(-1); From d0267aa78ca892dafc9389001231bdbbc7920124 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 26 Dec 2022 19:30:17 +0300 Subject: [PATCH 085/234] =?UTF-8?q?reports-service=20=D0=B4=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20kafka,=20=D0=BD?= =?UTF-8?q?=D0=B0=D1=87=D0=B0=D0=BB=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- clearing-parent/reports-service/pom.xml | 4 ++ .../clearing/reports/config/KafkaConfig.java | 28 +++++++++++ .../element/ReportsServiceSettings.java | 22 ++++++--- .../reports/services/QCommandExecutor.java | 49 +++++++++++++++++++ .../src/main/resources/application.properties | 17 +++++++ 5 files changed, 114 insertions(+), 6 deletions(-) create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/KafkaConfig.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/QCommandExecutor.java diff --git a/clearing-parent/reports-service/pom.xml b/clearing-parent/reports-service/pom.xml index 54846a228..457291ada 100644 --- a/clearing-parent/reports-service/pom.xml +++ b/clearing-parent/reports-service/pom.xml @@ -62,6 +62,10 @@ ru.spcex.platform platform-imdg-api-hazelcast-impl + + ru.spcex.platform + platform-messaging + org.junit.jupiter diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/KafkaConfig.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/KafkaConfig.java new file mode 100644 index 000000000..cd3b73821 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/KafkaConfig.java @@ -0,0 +1,28 @@ +package ru.spcex.clearing.reports.config; + +import org.apache.kafka.clients.consumer.Consumer; +import org.apache.kafka.clients.producer.Producer; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; +import ru.spcex.clearing.platform.messaging.config.KafkaConsumerFactory; +import ru.spcex.clearing.platform.messaging.config.KafkaProducerFactory; +import ru.spcex.clearing.reports.config.element.ReportsServiceSettings; + +@Configuration +public class KafkaConfig { + @Autowired + @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) + @Bean + public Consumer createConsumer(ReportsServiceSettings settings) { + return KafkaConsumerFactory.consumer(settings.getKafkaConsumer()); + } + +// @Autowired +// @Bean +// public Producer createProducer(ReportsServiceSettings settings) { +// return KafkaProducerFactory.producer(settings.getKafkaProducer()); +// } +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java index a79eaa702..d3aa03d8a 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/element/ReportsServiceSettings.java @@ -3,6 +3,8 @@ package ru.spcex.clearing.reports.config.element; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; +import ru.spcex.clearing.platform.messaging.config.element.KafkaConsumerSettings; +import ru.spcex.clearing.platform.messaging.config.element.KafkaProducerSettings; import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams; /** @@ -15,7 +17,8 @@ import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams; @ConfigurationProperties("reports-service") public class ReportsServiceSettings { private HazelcastClientParams hazelcast; - private String reportModuleOut; + private KafkaConsumerSettings kafkaConsumer; + private KafkaProducerSettings kafkaProducer; public HazelcastClientParams getHazelcast() { return hazelcast; @@ -25,12 +28,19 @@ public class ReportsServiceSettings { this.hazelcast = hazelcast; } - - public String getReportModuleOut() { - return reportModuleOut; + public KafkaConsumerSettings getKafkaConsumer() { + return kafkaConsumer; } - public void setReportModuleOut(String reportModuleOut) { - this.reportModuleOut = reportModuleOut; + public void setKafkaConsumer(KafkaConsumerSettings kafkaConsumer) { + this.kafkaConsumer = kafkaConsumer; + } + + public KafkaProducerSettings getKafkaProducer() { + return kafkaProducer; + } + + public void setKafkaProducer(KafkaProducerSettings kafkaProducer) { + this.kafkaProducer = kafkaProducer; } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/QCommandExecutor.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/QCommandExecutor.java new file mode 100644 index 000000000..a093f6eec --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/QCommandExecutor.java @@ -0,0 +1,49 @@ +package ru.spcex.clearing.reports.services; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.InitializingBean; +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; + +import org.apache.kafka.clients.consumer.Consumer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +//import ru.spcex.clearing.platform.messaging.domain.cud.balance.ExportToFileRequest; todo use class? +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; +import ru.spcex.platform.enumeration.Task; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgId; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.util.List; + +public class QCommandExecutor extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); +// private final ImdgId idGenerator; +// private final KafkaSender kafkaReqProducer; + + + public QCommandExecutor(Consumer kafkaQueue, ImdgProvider imdgProvider, + List listOfCollectors) { + super(kafkaQueue); +// todo constructor + } + + @Override + public void afterPropertiesSet() { + log.debug("Init queue listener {}", getClass().getSimpleName()); +// callback(Object.class) +// .setConsumer(this::newReportDo) +// .forDestination(Task.getVerification!!!.topic(), callbacks::put); // todo здесь надо указать команду из ТЗ или согласовать с фронтэндом +// init(); + } + + private void newReportDo(BaseRequest userRequest) { + log.debug("newReportDo request received"); + // todo logic + log.debug("successfully processed"); + } +} diff --git a/clearing-parent/reports-service/src/main/resources/application.properties b/clearing-parent/reports-service/src/main/resources/application.properties index 52d18bea7..c7765a7fe 100644 --- a/clearing-parent/reports-service/src/main/resources/application.properties +++ b/clearing-parent/reports-service/src/main/resources/application.properties @@ -2,7 +2,24 @@ server.port=8080 server.servlet.context-path=/reports_service spring.main.web-application-type=servlet + +reports-service.kafka-consumer.bootstrap-servers=localhost:9092 +reports-service.kafka-consumer.group-id=dev-group-balance-service +reports-service.kafka-consumer.enable-auto-commit=false +reports-service.kafka-consumer.session-timeout-ms=30000 +reports-service.kafka-consumer.auto-offset-reset=latest +reports-service.kafka-consumer.linger-ms=1 +reports-service.kafka-consumer.buffer-memory=33554432 + +#reports-service.kafka-producer.bootstrap-servers=localhost:9092 +#reports-service.kafka-producer.acks=all +#reports-service.kafka-producer.retries=0 +#reports-service.kafka-producer.batch-size=16384 +#reports-service.kafka-producer.linger-ms=1 +#reports-service.kafka-producer.buffer-memory=33554432 + reports-service.hazelcast.cluster-members=127.0.0.1:5701,10.200.200.181:5701 reports-service.hazelcast.login=dev reports-service.hazelcast.password=dev-pass + reports-service.ReportModuleOut=./report_out From af8ff434ec37895fcb8ef01e43f746c5bcbbee5f Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 26 Dec 2022 19:36:34 +0300 Subject: [PATCH 086/234] reports-service refactoring --- .../reports/services/ReportDataCollector.java | 12 ---------- .../services/builders/FileReportBuilder.java | 4 ++++ .../services/builders/XMLReportBuilder.java | 4 +--- .../collector/Bt17_1_P1_collector.java | 7 ------ .../collector/Bt17_1_P2_collector.java | 6 ----- .../services/collector/Bt17_2_collector.java | 7 ------ .../collector/Bt17_5_P1_collector.java | 6 ----- .../services/ReportDataCollectorTest.java | 5 ---- .../services/impl/Bt17_1_collectorTest.java | 24 ------------------- 9 files changed, 5 insertions(+), 70 deletions(-) delete mode 100644 clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/impl/Bt17_1_collectorTest.java diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java index 739c83759..f7dc466ba 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java @@ -32,18 +32,6 @@ public abstract class ReportDataCollector { // */ // abstract public List collectReportWithClearingStatus(LocalDate startDate, LocalDate endDate, String clearingStatus); - /** - * todo убрать метод, он уже лишний - * @param startDate - * @param endDate - * @param dateTimeNow LocalDateTime.now() - * @return - */ - @Deprecated - public String getFileName(LocalDate startDate, LocalDate endDate, LocalDateTime dateTimeNow) { - throw new IllegalArgumentException("deprecated"); - } - abstract public Class getReportClass(); protected String toString(Long val) { diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java index ee7db9533..d22e38111 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java @@ -9,4 +9,8 @@ public abstract class FileReportBuilder { this.reportClass = reportClass; } + protected String makeFileName(String reportName, String extension) { + if (System.getProperty("os.name").toLowerCase().contains("windows")) reportName = reportName.replace(":", "_"); + return reportName + extension; + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java index ed8ac24bf..0d25b8cf6 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java @@ -31,10 +31,8 @@ public class XMLReportBuilder extends FileReportBuilde public File createReport(LocalDate startDate, LocalDate endDate) throws IOException { R report = collector.collectReportWithPeriod(startDate, endDate); String reportName = report.getReportName(LocalDateTime.now()); + String reportFileName = makeFileName(reportName, ".xml"); - if (System.getProperty("os.name").toLowerCase().contains("windows")) reportName = reportName.replace(":", "_"); - - String reportFileName = reportName + ".xml"; File reportFile = new File(reportFileName); if (reportFile.exists()) { if (reportFile.isFile()) { diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java index 229eb2a8a..d11b7e256 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java @@ -129,13 +129,6 @@ public class Bt17_1_P1_collector extends ReportDataCollector getReportClass() { return ReportBR_0420315_P1.class; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java index 8bc56a177..3c18e6922 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java @@ -53,12 +53,6 @@ public class Bt17_1_P2_collector extends ReportDataCollector getReportClass() { return ReportBR_0420315_P2.class; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java index 6081329ea..4d9b8ddae 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java @@ -68,13 +68,6 @@ public class Bt17_2_collector extends ReportDataCollector { return reportBR_0420317; } - - @Override - public String getFileName(LocalDate startDate, LocalDate endDate, LocalDateTime dateTimeNow) { - return String.format("REPBR.0420317.%s-%s.%s", DATE_FORMATTER.format(startDate), DATE_FORMATTER.format(endDate), - DATE_TIME_FORMATTER.format(dateTimeNow)); - } - @Override public Class getReportClass() { return ReportBR_0420317.class; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java index 463f6ba36..23e4b2d38 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java @@ -56,12 +56,6 @@ public class Bt17_5_P1_collector extends ReportDataCollector getReportClass() { return ReportBR_0420312_P1.class; diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportDataCollectorTest.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportDataCollectorTest.java index 7341332e7..0e730578b 100644 --- a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportDataCollectorTest.java +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportDataCollectorTest.java @@ -33,11 +33,6 @@ class ReportDataCollectorTest extends ReportDataCollector { throw new IllegalStateException("test"); } - @Override - public String getFileName(LocalDate startDate, LocalDate endDate, LocalDateTime dateTimeNow) { - throw new IllegalStateException("test"); - } - @Override public Class getReportClass() { return AbstractReport.class; diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/impl/Bt17_1_collectorTest.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/impl/Bt17_1_collectorTest.java deleted file mode 100644 index cef49c50c..000000000 --- a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/impl/Bt17_1_collectorTest.java +++ /dev/null @@ -1,24 +0,0 @@ -package ru.spcex.clearing.reports.services.impl; - -import org.junit.jupiter.api.Test; -import org.mockito.Mockito; -import ru.spcex.clearing.reports.services.collector.Bt17_1_P1_collector; - -import java.time.LocalDate; -import java.time.LocalDateTime; - -import static org.junit.jupiter.api.Assertions.*; - -class Bt17_1_collectorTest { - - @Test - void getFileName() { - Bt17_1_P1_collector collector = Mockito.mock(Bt17_1_P1_collector.class); - Mockito.when(collector.getFileName(Mockito.any(),Mockito.any(),Mockito.any())).thenCallRealMethod(); - - String str = collector.getFileName(LocalDate.of(2020,1,1), - LocalDate.of(2020,1,31), - LocalDateTime.of(2021,4,20,12,20,44)); - assertEquals("REPBR.0420315.P1.01.01.2020-31.01.2020.20.04.2021T12:20:44", str); - } -} \ No newline at end of file From 363a809afca71d49d99006a0aa73f1ec26f7b461 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 26 Dec 2022 20:28:31 +0300 Subject: [PATCH 087/234] =?UTF-8?q?reports-service=20http://jira.mfd.msk:8?= =?UTF-8?q?088/browse/CLS-29=20=D0=BD=D0=B0=D1=87=D0=B0=D0=BB=D0=BE,=20?= =?UTF-8?q?=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D0=BD?= =?UTF-8?q?=D0=B3=20=D0=BE=D0=BF=D1=8F=D1=82=D1=8C.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reports/bt_17_5/ReportBR_0420312_P1.java | 35 +++++++--- .../reports/services/ReportDataCollector.java | 6 ++ .../collector/Bt17_1_P1_collector.java | 4 +- .../collector/Bt17_1_P2_collector.java | 4 +- .../services/collector/Bt17_2_collector.java | 4 +- .../collector/Bt17_5_P1_collector.java | 65 +++++++++++++------ 6 files changed, 79 insertions(+), 39 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java index af4884919..dce10d12a 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java @@ -6,6 +6,8 @@ import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; @XStreamAlias("clearingCoverage1") public class ReportBR_0420312_P1 extends ReportWithPeriod { @@ -13,9 +15,27 @@ public class ReportBR_0420312_P1 extends ReportWithPeriod { @XStreamAlias("destination") private String destination; - @XStreamAlias("part_1") - private final Info_0420312_P1 part_1; + @XStreamAlias("rows") + private final List rows = new ArrayList<>(); + + public ReportBR_0420312_P1(LocalDate startDate, + LocalDate endDate, + String destination) { + super("0.0.1", + "0420312", + "Сведения о клиринговом обеспечении, часть 1", + startDate, + endDate); + this.destination = destination; + } + + + public List getRows() { + return rows; + } + + @Deprecated public ReportBR_0420312_P1(LocalDate startDate, LocalDate endDate, String companyClearingCode, @@ -26,19 +46,14 @@ public class ReportBR_0420312_P1 extends ReportWithPeriod { String companySymbolValue, String companyInfoCountryCode, String clearingMemberCategoryClearingMemberCategory) { - super("0.0.1", - "0420312", - "Сведения о клиринговом обеспечении, часть 1", - startDate, - endDate); - this.destination = destination; - part_1 = new Info_0420312_P1(companyClearingCode, + this(startDate, endDate, destination); + getRows().add(new Info_0420312_P1(companyClearingCode, liabilitiesClaimsAssetsCompanyId, liabilitiesClaimsAssetsFullName, companySymbolCode, companySymbolValue, companyInfoCountryCode, - clearingMemberCategoryClearingMemberCategory); + clearingMemberCategoryClearingMemberCategory)); } public static class Info_0420312_P1 { diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java index f7dc466ba..82a8d0001 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportDataCollector.java @@ -34,6 +34,12 @@ public abstract class ReportDataCollector { abstract public Class getReportClass(); + protected void validateDateRange(LocalDate startDate, LocalDate endDate) throws IllegalArgumentException { + if (startDate.isAfter(endDate)) { + throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")"); + } + } + protected String toString(Long val) { if (val == null) return null; return val.toString(); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java index d11b7e256..824306394 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java @@ -56,9 +56,7 @@ public class Bt17_1_P1_collector extends ReportDataCollector endDate(" + endDate + ")"); - } + validateDateRange(startDate, endDate); ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(startDate, endDate, "BR", "I,V", // cmc.getClearingMemberCategory() diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java index 3c18e6922..bed4787d1 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P2_collector.java @@ -25,9 +25,7 @@ public class Bt17_1_P2_collector extends ReportDataCollector endDate(" + endDate + ")"); - } + validateDateRange(startDate, endDate); String ql = String.format("'%s' <= refundDate and refundDate <= '%s'", startDate, endDate); Collection liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java index 4d9b8ddae..b85eed586 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_2_collector.java @@ -32,9 +32,7 @@ public class Bt17_2_collector extends ReportDataCollector { @Override public ReportBR_0420317 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { - if (startDate.isAfter(endDate)) { - throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")"); - } + validateDateRange(startDate, endDate); String ql = String.format("'%s' <= updated and updated <= '%s' and service='MKR'", startDate, endDate); // todo обговорить про updatedAt updated, todo enum MKR diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java index 23e4b2d38..11ccb81d6 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_5_P1_collector.java @@ -5,52 +5,77 @@ import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.company.relation.Relation; +import ru.clearing.classes.statics.data.generated.ClearingMemberCategory; +import ru.clearing.classes.transaction.data.execution.LiabilitiesClaimsAssets; +import ru.clearing.platform.dictionary.CountryCodeDictionary; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.reports.reports.bt_17_2.ReportBR_0420317; import ru.spcex.clearing.reports.reports.bt_17_5.ReportBR_0420312_P1; import ru.spcex.clearing.reports.services.ReportDataCollector; +import ru.spcex.platform.enumeration.DocumentTypes; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import java.time.LocalDate; -import java.time.LocalDateTime; import java.util.Collection; +import java.util.List; import java.util.Map; @Component public class Bt17_5_P1_collector extends ReportDataCollector { private Imdg companyImdg; - private Imdg relationImdg; + // private Imdg relationImdg; private Imdg companySymbolsImdg; + private Imdg countryCodeDictionaryImdg; + private Imdg clearingMemberCategoryImdg; + private Imdg liabilitiesClaimsAssetsImdg; @Autowired public Bt17_5_P1_collector(ImdgProvider imdgProvider) { companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); - relationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class); + liabilitiesClaimsAssetsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class); +// relationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class); companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); + countryCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CountryCodeDictionary, CountryCodeDictionary.class); + } + + protected CompanySymbols findSymbol(DocumentTypes docType, Long companyId) { + CompanySymbols companySymbol = companySymbolsImdg.getSingleObjectByFieldValues(Map.of( + "companySymbol", docType.getKey(), + "companyId", companyId + )); + return companySymbol; } @Override public ReportBR_0420312_P1 collectReportWithPeriod(LocalDate startDate, LocalDate endDate) { - if (startDate.isAfter(endDate)) { - throw new IllegalArgumentException("startDate(" + startDate + ") > endDate(" + endDate + ")"); - } + validateDateRange(startDate, endDate); - // TODO ВСЁ по CLS-29... - String ql = String.format("'%s' <= updated and updated <= '%s' and service='MKR'", startDate, endDate); + ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(startDate, endDate, "BR"); // todo обговорить про updatedAt updated, todo enum MKR - Collection relations = relationImdg.getCollectionObjectsBySQL(ql); - ReportBR_0420312_P1 reportBR_0420312P1 = new ReportBR_0420312_P1(LocalDate.now(), - LocalDate.now(), - "companyClearingCode", - "BR", - "liabilitesClaimsAssetsCompanyId", - "liabilitesClaimsAssetsFullName", - "companySymbolCode", - "companySymbolValue", - "companyInfoCountryCode", - "clearingMemberCategory"); + String ql = String.format("'%s' <= refundDate and refundDate <= '%s'", + startDate, endDate); + Collection liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsBySQL(ql); + Map> indexByCompany = MapUtil.indexList(liabilities, LiabilitiesClaimsAssets::getCompanyId); + for (Map.Entry> companyEntry : indexByCompany.entrySet()) { + final Long companyId = companyEntry.getKey(); + Company company = companyImdg.getSingleObjectByID(companyId); + CompanySymbols companySymbolINN = findSymbol(DocumentTypes.inn, company.getId()); + CompanySymbols companySymbolOGRN = findSymbol(DocumentTypes.ogrn, company.getId()); + ClearingMemberCategory cmc = clearingMemberCategoryImdg.getSingleObjectByFieldValues(Map.of("companyId", companyId)); + String clearingMemberCategory = cmc == null ? null : cmc.getClearingMemberCategory(); + ReportBR_0420312_P1.Info_0420312_P1 info_0420312_p1 = new ReportBR_0420312_P1.Info_0420312_P1( + company.getClearingCode(), + toString(companyId), + company.getFullName(), + companySymbolINN == null ? null : companySymbolINN.getCompanySymbolValue(), + companySymbolOGRN == null ? null : companySymbolOGRN.getCompanySymbolValue(), + company.getProfile().getCountryCode(), + clearingMemberCategory + ); + reportBR_0420312P1.getRows().add(info_0420312_p1); + } return reportBR_0420312P1; } From 960d0e6b68002453ce87c251be68951ba6faf652 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Mon, 26 Dec 2022 20:31:40 +0300 Subject: [PATCH 088/234] =?UTF-8?q?reports-service=20=D0=B7=D0=B0=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=88=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D1=8B=20=D1=81=D1=80=D0=B0=D0=B7=D1=83=20(=D0=B4?= =?UTF-8?q?=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0=D1=82=D1=8C=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D0=B0,=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B8=D0=B7=20=D0=BA=D0=BE=D0=BD=D1=81=D0=BE?= =?UTF-8?q?=D0=BB=D0=B8=20=D0=B2=D1=8B=D0=BA=D0=BB=D1=8E=D1=87=D0=B8=D1=82?= =?UTF-8?q?=D1=81=D1=8F=20=D1=81=D1=80=D0=B0=D0=B7=D1=83)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/spcex/clearing/reports/ReportsServiceApplication.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java index 113de634c..c12ab17d1 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java @@ -36,6 +36,8 @@ public class ReportsServiceApplication { LocalDate date1 = LocalDate.of(date2.getYear(), date2.getMonth(), 1);//date2.minusMonths(1); xmlReportBuilder.createReport(date1, date2); } + log.info("Shutdown application after work"); + context.close(); // todo если будет запущен как сервис, сделать выход опционально, по другому. } catch (Throwable e) { LoggerFactory.getLogger(ReportsServiceApplication.class).error("Report-service start failed: {} -> {}", e.getClass().getSimpleName(), ExceptionUtils.getStackTrace(e)); System.exit(-1); From 19add71925d4a2aeb9e1b81210acf29fbf5e6e43 Mon Sep 17 00:00:00 2001 From: aalehin Date: Mon, 26 Dec 2022 20:35:51 +0300 Subject: [PATCH 089/234] http://jira.mfd.msk:8088/browse/CLS-201 --- ProfileDocumentService set up --- .../account/service/AccountService.java | 4 + .../company/DeleteCompanyController.java | 3 +- .../company/config/KafkaSenderConfig.java | 32 ++++++++ .../service/ProfileDocumentService.java | 77 +++++++++++++++++++ .../AccountUpdateWithBrakeRequest.java | 4 + 5 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/KafkaSenderConfig.java create mode 100644 clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ProfileDocumentService.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/brake/document/AccountUpdateWithBrakeRequest.java diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java index ec596586e..f02a5e94e 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java @@ -59,6 +59,10 @@ public class AccountService extends QueueConsumer implements InitializingBean { log.debug("successfully processed, grouping id={}, processed number={}", req.getGroupingSdf01Id(), accountToStatement.size()); } + private void accountUpdateWithBrake(BaseRequest userRequest) { + + } + private AccountSdfToStatementRequestPart responsePart(Long sdf01Id) { AccountSdfToStatementRequestPart responsePart = new AccountSdfToStatementRequestPart(); responsePart.setSdfId(sdf01Id); diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/DeleteCompanyController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/DeleteCompanyController.java index 35dcd9432..d6555064d 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/DeleteCompanyController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/DeleteCompanyController.java @@ -30,7 +30,8 @@ public class DeleteCompanyController extends AbstractQueueController { private final IStateLoader stateLoader; @Autowired - public DeleteCompanyController(IOperator operator, IStateLoader stateLoader) { + public DeleteCompanyController(IOperator operator, + IStateLoader stateLoader) { super(operator); this.stateLoader = stateLoader; } diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/KafkaSenderConfig.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/KafkaSenderConfig.java new file mode 100644 index 000000000..16e63b03d --- /dev/null +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/KafkaSenderConfig.java @@ -0,0 +1,32 @@ +package ru.spcex.clearing.company.config; + +import org.apache.kafka.clients.producer.Producer; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.service.RequestInfo; +import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgId; +import ru.spcex.platform.imdg.api.ImdgProvider; + +@Configuration +public class KafkaSenderConfig { + + @Autowired + @Bean + public KafkaSender kafkaSender(Producer kafkaProducer, + ImdgProvider imdgProvider) { + ImdgId imdgIdGenerator = imdgProvider.getImdgIdGenerator(); + return KafkaSender + .setup() + .producer(kafkaProducer) + .idGenerator(imdgIdGenerator::nextId) + .imdgProvider(s -> { + Imdg imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_RequestInfo, RequestInfo.class); + return imdg::insert; + }) + .build(); + } +} diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ProfileDocumentService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ProfileDocumentService.java new file mode 100644 index 000000000..28990c9f5 --- /dev/null +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ProfileDocumentService.java @@ -0,0 +1,77 @@ +package ru.spcex.clearing.company.service; + +import org.apache.kafka.clients.consumer.Consumer; +import org.apache.kafka.clients.producer.Producer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.lang.NonNull; +import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.profile.ProfileDocument; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest; +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +public class ProfileDocumentService extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); + private Imdg profileDocumentMap; + private Imdg companyMap; + private ImdgProvider imdgProvider; + private KafkaSender kafkaReqProducer; + + @Autowired + public ProfileDocumentService(Consumer kafkaQueue, + Producer kafkaProducer, + KafkaSender kafkaReqProducer, + ImdgProvider imdgProvider) { + super(kafkaQueue, kafkaProducer); + this.imdgProvider = imdgProvider; + this.kafkaReqProducer = kafkaReqProducer; + } + + @Override + public void afterPropertiesSet() { + this.profileDocumentMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class); + this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); + + callback(ProfileDocumentNewRequest.class) + .setConsumer(this::newProfileDocument) + .forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_NEW, callbacks::put); + init(); + } + + @NonNull + private void newProfileDocument(BaseRequest profileDocumentNewRequestBaseRequest) { + log.trace("Start processing ProfileDocumentNewRequest!"); + ProfileDocumentNewRequest profileDocumentNewRequest = profileDocumentNewRequestBaseRequest.getRequestPayload(); + Long companyId = profileDocumentNewRequest.getCompanyId(); + Company company = companyMap.getSingleObjectByID(companyId); + if (company != null && !company.getWorkflowStatus().equalsIgnoreCase("ACTV")) { + throw new IllegalStateException("Wrong company with ID " + companyId + " and workflow status " + company.getWorkflowStatus()); + } + ProfileDocument profileDocument = new ProfileDocument(); + profileDocument.setCompanyId(profileDocumentNewRequest.getCompanyId()); + profileDocument.setDocumentType(profileDocumentNewRequest.getDocumentType()); + profileDocument.setIssueDate(profileDocumentNewRequest.getIssueDate()); + profileDocument.setIssuePlace(profileDocumentNewRequest.getIssuePlace()); + profileDocument.setIssuer(profileDocumentNewRequest.getIssuer()); + profileDocument.setIssuerCode(profileDocumentNewRequest.getIssuerCode()); + profileDocument.setName(profileDocumentNewRequest.getName()); + profileDocument.setNumber(profileDocumentNewRequest.getNumber()); + profileDocument.setPlace(profileDocumentNewRequest.getPlace()); + profileDocument.setValidFromDate(profileDocumentNewRequest.getValidFromDate()); + profileDocument.setValidToDate(profileDocumentNewRequest.getValidToDate()); + profileDocument.setLink(profileDocumentNewRequest.getLink()); + profileDocumentMap.insert(profileDocument); + if (profileDocument.getDocumentType().equalsIgnoreCase("XCNT")) { + + //kafkaReqProducer.sendRequestToQueue(Consts.EXPORT_PROCESS, exportRequest); + } + } +} diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/brake/document/AccountUpdateWithBrakeRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/brake/document/AccountUpdateWithBrakeRequest.java new file mode 100644 index 000000000..8064c3ab5 --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/brake/document/AccountUpdateWithBrakeRequest.java @@ -0,0 +1,4 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.account.brake.document; + +public class AccountUpdateWithBrakeRequest { +} From 59a93ee43f101f11dea2bcefa4f0803382482125 Mon Sep 17 00:00:00 2001 From: akulikov Date: Tue, 27 Dec 2022 11:27:50 +0300 Subject: [PATCH 090/234] kafka reports --- .../reports/ReportsServiceApplication.java | 6 +- .../reports/reports/AbstractReport.java | 8 ++- .../clearing/reports/reports/ReportId.java | 24 ++++++++ .../reports/ReportWithClearingStatus.java | 6 +- .../{ => reports}/ReportWithPeriod.java | 8 +-- .../reports/bt_12_2/ReportPA_BT2_B.java | 8 +-- .../reports/bt_12_2/ReportPA_BT2_IV.java | 8 +-- .../reports/reports/bt_13/Report_BT13_11.java | 4 +- .../reports/reports/bt_13/Report_BT13_12.java | 38 +----------- .../reports/bt_16_5/Report_BT16_5.java | 6 +- .../reports/bt_17_1/ReportBR_0420315_P1.java | 4 +- .../reports/bt_17_1/ReportBR_0420315_P2.java | 6 +- .../reports/bt_17_2/ReportBR_0420317.java | 6 +- .../reports/bt_17_3/ReportBR_0420318.java | 4 +- .../reports/bt_17_4/ReportBR_0420314_P1.java | 4 +- .../reports/bt_17_4/ReportBR_0420314_P2.java | 6 +- .../reports/bt_17_5/ReportBR_0420312_P1.java | 6 +- .../reports/bt_17_5/ReportBR_0420312_P10.java | 6 +- .../reports/bt_17_5/ReportBR_0420312_P2.java | 6 +- .../reports/bt_17_5/ReportBR_0420312_P3.java | 6 +- .../reports/bt_17_5/ReportBR_0420312_P4.java | 6 +- .../reports/bt_17_5/ReportBR_0420312_P5.java | 6 +- .../reports/bt_17_5/ReportBR_0420312_P6.java | 6 +- .../reports/bt_17_5/ReportBR_0420312_P7.java | 6 +- .../reports/bt_17_5/ReportBR_0420312_P8.java | 6 +- .../reports/bt_17_5/ReportBR_0420312_P9.java | 6 +- .../reports/services/QCommandExecutor.java | 61 +++++++++++++------ .../services/builders/DOCXReportBuilder.java | 10 ++- .../services/builders/FileReportBuilder.java | 11 +++- .../services/builders/XMLReportBuilder.java | 14 ++--- .../ru/spcex/platform/enumeration/Task.java | 3 +- .../domain/cud/reports/ReportRequest.java | 23 +++++++ .../cud/reports/ReportWithPeriodRequest.java | 40 ++++++++++++ 33 files changed, 248 insertions(+), 120 deletions(-) create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportId.java rename clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/{ => reports}/ReportWithPeriod.java (85%) create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequest.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportWithPeriodRequest.java diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java index c12ab17d1..9d5ddc570 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java @@ -6,6 +6,7 @@ import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.context.ConfigurableApplicationContext; +import ru.spcex.clearing.reports.reports.AbstractReport; import ru.spcex.clearing.reports.services.ReportDataCollector; import ru.spcex.clearing.reports.services.ReportsService; import ru.spcex.clearing.reports.services.builders.XMLReportBuilder; @@ -31,10 +32,11 @@ public class ReportsServiceApplication { log.info("Report types: {}", allReports); for (ReportDataCollector collector:allReports.values()) { log.info("Make report {}", collector); - XMLReportBuilder xmlReportBuilder = new XMLReportBuilder(collector.getReportClass(), collector); + XMLReportBuilder xmlReportBuilder = new XMLReportBuilder<>(collector.getReportClass()); LocalDate date2 = LocalDate.now(); LocalDate date1 = LocalDate.of(date2.getYear(), date2.getMonth(), 1);//date2.minusMonths(1); - xmlReportBuilder.createReport(date1, date2); + AbstractReport report = collector.collectReportWithPeriod(date1, date2); + xmlReportBuilder.createReport(report); } log.info("Shutdown application after work"); context.close(); // todo если будет запущен как сервис, сделать выход опционально, по другому. diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java index 7f82058a3..8a1293fb1 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/AbstractReport.java @@ -2,6 +2,7 @@ package ru.spcex.clearing.reports.reports; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import com.thoughtworks.xstream.annotations.XStreamOmitField; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -13,6 +14,9 @@ public abstract class AbstractReport { protected static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy"); protected static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy'T'HH:mm:ss"); + @XStreamOmitField + protected ReportId reportId; + @XStreamAsAttribute @XStreamAlias("version") protected String version; @@ -25,9 +29,11 @@ public abstract class AbstractReport { @XStreamAlias("name") protected String name; - public AbstractReport(String version, + public AbstractReport(ReportId reportId, + String version, String code, String name) { + this.reportId = reportId; this.version = version; this.code = code; this.name = name; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportId.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportId.java new file mode 100644 index 000000000..e00830a7f --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportId.java @@ -0,0 +1,24 @@ +package ru.spcex.clearing.reports.reports; + +/** + * Идентификаторы отчётов + */ +public enum ReportId { + PA_BT2_B, PA_BT2_IV, + + BT13_11, BT13_12, + + BT16_5, + + BR_0420315_P1, BR_0420315_P2, + + BR_0420317, + + BR_0420318, + + BR_0420314_P1, BR_0420314_P2, + + BR_0420312_P1, BR_0420312_P2, BR_0420312_P3, BR_0420312_P4, + BR_0420312_P5, BR_0420312_P6, BR_0420312_P7, BR_0420312_P8, + BR_0420312_P9, BR_0420312_P10, +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithClearingStatus.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithClearingStatus.java index e211edeea..e86e5007c 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithClearingStatus.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithClearingStatus.java @@ -2,7 +2,6 @@ package ru.spcex.clearing.reports.reports; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.ReportWithPeriod; import java.time.LocalDate; @@ -11,13 +10,14 @@ public abstract class ReportWithClearingStatus extends ReportWithPeriod { @XStreamAlias("clearingStatus") protected String clearingStatus; - public ReportWithClearingStatus(String version, + public ReportWithClearingStatus(ReportId reportId, + String version, String code, String name, LocalDate startDate, LocalDate endDate, String clearingStatus) { - super(version, code, name, startDate, endDate); + super(reportId, version, code, name, startDate, endDate); this.clearingStatus = clearingStatus; } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportWithPeriod.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithPeriod.java similarity index 85% rename from clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportWithPeriod.java rename to clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithPeriod.java index 77a00ec6e..2895b8b4b 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportWithPeriod.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ReportWithPeriod.java @@ -1,9 +1,8 @@ -package ru.spcex.clearing.reports; +package ru.spcex.clearing.reports.reports; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamConverter; -import ru.spcex.clearing.reports.reports.AbstractReport; import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter; import java.time.LocalDate; @@ -24,12 +23,13 @@ public abstract class ReportWithPeriod extends AbstractReport { protected LocalDate endDate; - public ReportWithPeriod(String version, + public ReportWithPeriod(ReportId reportId, + String version, String code, String name, LocalDate startDate, LocalDate endDate) { - super(version, code, name); + super(reportId, version, code, name); this.startDate = startDate; this.endDate = endDate; } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_B.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_B.java index ac062d5fb..ff587a3b4 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_B.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_B.java @@ -2,19 +2,18 @@ package ru.spcex.clearing.reports.reports.bt_12_2; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.ReportWithPeriod; +import ru.spcex.clearing.reports.reports.ReportId; +import ru.spcex.clearing.reports.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; @XStreamAlias("netPositionBank") public class ReportPA_BT2_B extends ReportWithPeriod { - @XStreamAsAttribute @XStreamAlias("clearingMemberCategory") private String clearingMemberCategory; - @XStreamAlias("liabilitiesClaimsAssets_fullName") private String liabilitiesClaimsAssetsFullName; @@ -73,7 +72,8 @@ public class ReportPA_BT2_B extends ReportWithPeriod { String claimsAmount, String liabilitiesAmount, String paymentAmount) { - super("0.0.1", + super(ReportId.PA_BT2_B, + "0.0.1", "BT2", "Отчет по нетто-позиции участника клиринга в секции МКР (Уполномоченный банк)", startDate, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_IV.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_IV.java index e10ac91bb..dfae151ed 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_IV.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_BT2_IV.java @@ -2,19 +2,18 @@ package ru.spcex.clearing.reports.reports.bt_12_2; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.ReportWithPeriod; +import ru.spcex.clearing.reports.reports.ReportId; +import ru.spcex.clearing.reports.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; @XStreamAlias("netPositionInitiator") public class ReportPA_BT2_IV extends ReportWithPeriod { - @XStreamAsAttribute @XStreamAlias("clearingMemberCategory") private String clearingMemberCategory; - @XStreamAlias("liabilitiesClaimsAssets_fullName") private String liabilitiesClaimsAssetsFullName; @@ -73,7 +72,8 @@ public class ReportPA_BT2_IV extends ReportWithPeriod { String claimsAmount, String liabilitiesAmount, String paymentAmount) { - super("0.0.1", + super(ReportId.PA_BT2_IV, + "0.0.1", "BT2", "Отчет по нетто-позиции участника клиринга в секции МКР (Вкладчик)", startDate, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_11.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_11.java index 893c204ab..c2e631be7 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_11.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_11.java @@ -3,6 +3,7 @@ package ru.spcex.clearing.reports.reports.bt_13; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.reports.AbstractReport; +import ru.spcex.clearing.reports.reports.ReportId; import java.time.LocalDate; import java.time.LocalDateTime; @@ -18,7 +19,6 @@ public class Report_BT13_11 extends AbstractReport { @XStreamAlias("time") private LocalTime time; - @XStreamAlias("inDocumentJournal_registrationDate") private String inDocumentJournalRegistrationDate; @@ -74,7 +74,7 @@ public class Report_BT13_11 extends AbstractReport { String inDocumentJournalDossierNumber, String inDocumentJournalComment, String inDocumentJournalReceiptDate) { - super("0.0.1", "BT 13.11", "Журнал Входящих документов"); + super(ReportId.BT13_11, "0.0.1", "BT 13.11", "Журнал Входящих документов"); this.date = date; this.time = time; this.inDocumentJournalRegistrationDate = inDocumentJournalRegistrationDate; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_12.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_12.java index de765fe63..34a98c0ac 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_12.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_13/Report_BT13_12.java @@ -3,6 +3,7 @@ package ru.spcex.clearing.reports.reports.bt_13; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.reports.AbstractReport; +import ru.spcex.clearing.reports.reports.ReportId; import java.time.LocalDate; import java.time.LocalDateTime; @@ -18,7 +19,6 @@ public class Report_BT13_12 extends AbstractReport { @XStreamAlias("time") private LocalTime time; - @XStreamAlias("outDocumentJournal_registrationDate") private String outDocumentJournalRegistrationDate; @@ -70,41 +70,7 @@ public class Report_BT13_12 extends AbstractReport { String outDocumentJournalAmount, String outDocumentJournalDossierNumber, String outDocumentJournalPostDate) { - super("0.0.1", "BT 13.12", "Журнал Исходящих документов"); - this.date = date; - this.time = time; - this.outDocumentJournalRegistrationDate = outDocumentJournalRegistrationDate; - this.outDocumentJournalRegistrationTime = outDocumentJournalRegistrationTime; - this.outDocumentJournalRegistrationNumber = outDocumentJournalRegistrationNumber; - this.outDocumentJournalDocumentName = outDocumentJournalDocumentName; - this.outDocumentJournalAddress = outDocumentJournalAddress; - this.outDocumentJournalQuantity = outDocumentJournalQuantity; - this.outDocumentJournalClearingCode = outDocumentJournalClearingCode; - this.outDocumentJournalCourierType = outDocumentJournalCourierType; - this.outDocumentJournal_emailDate = outDocumentJournal_emailDate; - this.outDocumentJournalAmount = outDocumentJournalAmount; - this.outDocumentJournalDossierNumber = outDocumentJournalDossierNumber; - this.outDocumentJournalPostDate = outDocumentJournalPostDate; - } - - public Report_BT13_12(String version, - String code, - String name, - LocalDate date, - LocalTime time, - String outDocumentJournalRegistrationDate, - String outDocumentJournalRegistrationTime, - String outDocumentJournalRegistrationNumber, - String outDocumentJournalDocumentName, - String outDocumentJournalAddress, - String outDocumentJournalQuantity, - String outDocumentJournalClearingCode, - String outDocumentJournalCourierType, - String outDocumentJournal_emailDate, - String outDocumentJournalAmount, - String outDocumentJournalDossierNumber, - String outDocumentJournalPostDate) { - super(version, code, name); + super(ReportId.BT13_12, "0.0.1", "BT 13.12", "Журнал Исходящих документов"); this.date = date; this.time = time; this.outDocumentJournalRegistrationDate = outDocumentJournalRegistrationDate; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_16_5/Report_BT16_5.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_16_5/Report_BT16_5.java index 3dc1d5737..79424f6ed 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_16_5/Report_BT16_5.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_16_5/Report_BT16_5.java @@ -3,6 +3,7 @@ package ru.spcex.clearing.reports.reports.bt_16_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.reports.AbstractReport; +import ru.spcex.clearing.reports.reports.ReportId; import java.time.LocalDate; import java.time.LocalDateTime; @@ -57,7 +58,10 @@ public class Report_BT16_5 extends AbstractReport { String accountBalanceDebitAmount, String accountBalanceCreditAmount, String accountBalanceCloseAmount) { - super("0.0.1", "BT 16.5", "Отчет о денежных средствах на счете внутреннего учета (клиринговом регистре) Участника клиринга"); + super(ReportId.BT16_5, + "0.0.1", + "BT 16.5", + "Отчет о денежных средствах на счете внутреннего учета (клиринговом регистре) Участника клиринга"); this.date = date; this.time = time; this.clearingHouse = clearingHouse; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java index 47600c673..4e39e10ff 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java @@ -2,6 +2,7 @@ package ru.spcex.clearing.reports.reports.bt_17_1; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports.reports.ReportId; import ru.spcex.clearing.reports.reports.ReportWithClearingStatus; import java.time.LocalDate; @@ -28,7 +29,8 @@ public class ReportBR_0420315_P1 extends ReportWithClearingStatus { String destination, String clearingMemberCategory, String clearingStatus) { - super("0.0.1", + super(ReportId.BR_0420315_P1, + "0.0.1", "0420315", "Сведения об исполненных обязательствах, допущенных к клирингу, за отчетный период, часть 1", startDate, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P2.java index a7c87f98d..8fe84ff00 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P2.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P2.java @@ -2,7 +2,8 @@ package ru.spcex.clearing.reports.reports.bt_17_1; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.ReportWithPeriod; +import ru.spcex.clearing.reports.reports.ReportId; +import ru.spcex.clearing.reports.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; @@ -21,7 +22,8 @@ public class ReportBR_0420315_P2 extends ReportWithPeriod { String destination, String contractQty, String liabilitiesAmount) { - super("0.0.1", + super(ReportId.BR_0420315_P2, + "0.0.1", "0420315", "Сведения об исполненных обязательствах, допущенных к клирингу, за отчетный период, часть 2", startDate, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_2/ReportBR_0420317.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_2/ReportBR_0420317.java index 2357530a0..71ef299a7 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_2/ReportBR_0420317.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_2/ReportBR_0420317.java @@ -2,7 +2,8 @@ package ru.spcex.clearing.reports.reports.bt_17_2; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.ReportWithPeriod; +import ru.spcex.clearing.reports.reports.ReportId; +import ru.spcex.clearing.reports.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; @@ -19,7 +20,8 @@ public class ReportBR_0420317 extends ReportWithPeriod { private final List rows = new ArrayList<>(); public ReportBR_0420317(LocalDate startDate, LocalDate endDate, String destination) { - super("0.0.1", + super(ReportId.BR_0420317, + "0.0.1", "0420317", "Сведения о предоставлении, прекращении, приостановке," + " возобновлении допуска к клиринговому обслуживанию", diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java index 73dc19c81..507b07940 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_3/ReportBR_0420318.java @@ -2,6 +2,7 @@ package ru.spcex.clearing.reports.reports.bt_17_3; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports.reports.ReportId; import ru.spcex.clearing.reports.reports.ReportWithClearingStatus; import java.time.LocalDate; @@ -19,7 +20,8 @@ public class ReportBR_0420318 extends ReportWithClearingStatus { private final List rows = new ArrayList<>(); public ReportBR_0420318(LocalDate startDate, LocalDate endDate, String clearingStatus, String destination) { - super("0.0.1", + super(ReportId.BR_0420318, + "0.0.1", "0420318", "Сведения о неисполненных обязательствах", startDate, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P1.java index 0940041db..e59e2757c 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P1.java @@ -2,6 +2,7 @@ package ru.spcex.clearing.reports.reports.bt_17_4; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import ru.spcex.clearing.reports.reports.ReportId; import ru.spcex.clearing.reports.reports.ReportWithClearingStatus; import java.time.LocalDate; @@ -19,7 +20,8 @@ public class ReportBR_0420314_P1 extends ReportWithClearingStatus { private final List rows = new ArrayList<>(); public ReportBR_0420314_P1(LocalDate startDate, LocalDate endDate, String clearingStatus, String destination) { - super("0.0.1", + super(ReportId.BR_0420314_P1, + "0.0.1", "0420314", "Сведения об УК и операциях, проведенных по торговым счетам, часть 1", startDate, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P2.java index 478698b15..10bfcfb72 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P2.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_4/ReportBR_0420314_P2.java @@ -2,7 +2,8 @@ package ru.spcex.clearing.reports.reports.bt_17_4; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.ReportWithPeriod; +import ru.spcex.clearing.reports.reports.ReportId; +import ru.spcex.clearing.reports.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; @@ -23,7 +24,8 @@ public class ReportBR_0420314_P2 extends ReportWithPeriod { private final List rows = new ArrayList<>(); public ReportBR_0420314_P2(LocalDate startDate, LocalDate endDate, String transactionStatus, String destination) { - super("0.0.1", + super(ReportId.BR_0420314_P2, + "0.0.1", "0420314", "Сведения об УК и операциях, проведенных по торговым счетам, часть 2", startDate, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java index dce10d12a..13f432afb 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java @@ -2,7 +2,8 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.ReportWithPeriod; +import ru.spcex.clearing.reports.reports.ReportId; +import ru.spcex.clearing.reports.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; @@ -22,7 +23,8 @@ public class ReportBR_0420312_P1 extends ReportWithPeriod { public ReportBR_0420312_P1(LocalDate startDate, LocalDate endDate, String destination) { - super("0.0.1", + super(ReportId.BR_0420312_P1, + "0.0.1", "0420312", "Сведения о клиринговом обеспечении, часть 1", startDate, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P10.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P10.java index 0f79fe269..04dc1bc7f 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P10.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P10.java @@ -2,7 +2,8 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.ReportWithPeriod; +import ru.spcex.clearing.reports.reports.ReportId; +import ru.spcex.clearing.reports.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; @@ -20,7 +21,8 @@ public class ReportBR_0420312_P10 extends ReportWithPeriod { LocalDate endDate, String destination, String liabilitiesAmount) { - super("0.0.5", + super(ReportId.BR_0420312_P10, + "0.0.5", "0420312", "Сведения о клиринговом обеспечении, часть 10", startDate, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P2.java index 84dbf562d..4623ebdcf 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P2.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P2.java @@ -2,7 +2,8 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.ReportWithPeriod; +import ru.spcex.clearing.reports.reports.ReportId; +import ru.spcex.clearing.reports.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; @@ -21,7 +22,8 @@ public class ReportBR_0420312_P2 extends ReportWithPeriod { String destination, String liabilitiesClaimsAssetsCompanyId, String liabilitiesClaimsAssetsLiabilities) { - super("0.0.1", + super(ReportId.BR_0420312_P2, + "0.0.1", "0420312", "Сведения о клиринговом обеспечении, часть 2", startDate, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P3.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P3.java index 97442b1a9..466573a88 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P3.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P3.java @@ -2,7 +2,8 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.ReportWithPeriod; +import ru.spcex.clearing.reports.reports.ReportId; +import ru.spcex.clearing.reports.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; @@ -21,7 +22,8 @@ public class ReportBR_0420312_P3 extends ReportWithPeriod { String destination, String liabilitiesClaimsAssetsCompanyId, String liabilitiesClaimsAssetsLiabilities) { - super("0.0.5", + super(ReportId.BR_0420312_P3, + "0.0.5", "0420312", "Сведения о клиринговом обеспечении, часть 3", startDate, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P4.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P4.java index d4725b978..89aeb0761 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P4.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P4.java @@ -2,7 +2,8 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.ReportWithPeriod; +import ru.spcex.clearing.reports.reports.ReportId; +import ru.spcex.clearing.reports.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; @@ -20,7 +21,8 @@ public class ReportBR_0420312_P4 extends ReportWithPeriod { LocalDate endDate, String destination, String liabilitiesAmount) { - super("0.0.5", + super(ReportId.BR_0420312_P4, + "0.0.5", "0420312", "Сведения о клиринговом обеспечении, часть 4", startDate, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P5.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P5.java index 1af1850eb..e3117b3b9 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P5.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P5.java @@ -2,7 +2,8 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.ReportWithPeriod; +import ru.spcex.clearing.reports.reports.ReportId; +import ru.spcex.clearing.reports.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; @@ -20,7 +21,8 @@ public class ReportBR_0420312_P5 extends ReportWithPeriod { LocalDate endDate, String destination, String liabilitiesAmount) { - super("0.0.5", + super(ReportId.BR_0420312_P5, + "0.0.5", "0420312", "Сведения о клиринговом обеспечении, часть 5", startDate, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P6.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P6.java index 6b5126f7e..997a7243b 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P6.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P6.java @@ -2,7 +2,8 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.ReportWithPeriod; +import ru.spcex.clearing.reports.reports.ReportId; +import ru.spcex.clearing.reports.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; @@ -20,7 +21,8 @@ public class ReportBR_0420312_P6 extends ReportWithPeriod { LocalDate endDate, String destination, String liabilitiesAmount) { - super("0.0.5", + super(ReportId.BR_0420312_P6, + "0.0.5", "0420312", "Сведения о клиринговом обеспечении, часть 6", startDate, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P7.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P7.java index 81b539868..5c7e6523b 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P7.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P7.java @@ -2,7 +2,8 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.ReportWithPeriod; +import ru.spcex.clearing.reports.reports.ReportId; +import ru.spcex.clearing.reports.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; @@ -20,7 +21,8 @@ public class ReportBR_0420312_P7 extends ReportWithPeriod { LocalDate endDate, String destination, String liabilitiesAmount) { - super("0.0.5", + super(ReportId.BR_0420312_P7, + "0.0.5", "0420312", "Сведения о клиринговом обеспечении, часть 7", startDate, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P8.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P8.java index 563ffc599..686540b2f 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P8.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P8.java @@ -2,7 +2,8 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.ReportWithPeriod; +import ru.spcex.clearing.reports.reports.ReportId; +import ru.spcex.clearing.reports.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; @@ -26,7 +27,8 @@ public class ReportBR_0420312_P8 extends ReportWithPeriod { String companySymbolValue, String companyInfoCountryCode, String clearingMemberCategoryClearingMemberCategory) { - super("0.0.5", + super(ReportId.BR_0420312_P8, + "0.0.5", "0420312", "Сведения о клиринговом обеспечении, часть 8", startDate, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P9.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P9.java index 3438b9d05..5973b8bbc 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P9.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P9.java @@ -2,7 +2,8 @@ package ru.spcex.clearing.reports.reports.bt_17_5; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; -import ru.spcex.clearing.reports.ReportWithPeriod; +import ru.spcex.clearing.reports.reports.ReportId; +import ru.spcex.clearing.reports.reports.ReportWithPeriod; import java.time.LocalDate; import java.time.LocalDateTime; @@ -23,7 +24,8 @@ public class ReportBR_0420312_P9 extends ReportWithPeriod { String liabilitiesClaimsAssetsCompanyId, String liabilitiesClaimsMoneyCurrencyCode, String liabilitiesClaimsAssetsLiabilities) { - super("0.0.5", + super(ReportId.BR_0420312_P9, + "0.0.5", "0420312", "Сведения о клиринговом обеспечении, часть 9", startDate, diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/QCommandExecutor.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/QCommandExecutor.java index a093f6eec..90b95ed39 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/QCommandExecutor.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/QCommandExecutor.java @@ -1,27 +1,28 @@ package ru.spcex.clearing.reports.services; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.InitializingBean; -import ru.spcex.clearing.platform.messaging.service.QueueConsumer; - import org.apache.kafka.clients.consumer.Consumer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.InitializingBean; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; -import ru.spcex.clearing.platform.messaging.domain.Consts; -//import ru.spcex.clearing.platform.messaging.domain.cud.balance.ExportToFileRequest; todo use class? +import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportWithPeriodRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; -import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; +import ru.spcex.clearing.reports.reports.AbstractReport; +import ru.spcex.clearing.reports.reports.ReportId; +import ru.spcex.clearing.reports.services.builders.XMLReportBuilder; import ru.spcex.platform.enumeration.Task; -import ru.spcex.platform.imdg.api.Imdg; -import ru.spcex.platform.imdg.api.ImdgId; import ru.spcex.platform.imdg.api.ImdgProvider; +import java.io.File; +import java.io.IOException; +import java.time.LocalDate; +import java.util.HashMap; import java.util.List; +import java.util.Map; public class QCommandExecutor extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); + private final Map collectorForReport = new HashMap<>(); // private final ImdgId idGenerator; // private final KafkaSender kafkaReqProducer; @@ -29,21 +30,45 @@ public class QCommandExecutor extends QueueConsumer implements InitializingBean public QCommandExecutor(Consumer kafkaQueue, ImdgProvider imdgProvider, List listOfCollectors) { super(kafkaQueue); -// todo constructor } @Override public void afterPropertiesSet() { log.debug("Init queue listener {}", getClass().getSimpleName()); -// callback(Object.class) -// .setConsumer(this::newReportDo) -// .forDestination(Task.getVerification!!!.topic(), callbacks::put); // todo здесь надо указать команду из ТЗ или согласовать с фронтэндом -// init(); + callback(ReportWithPeriodRequest.class) + .setConsumer(this::newReportWithPeriod) + .forDestination(Task.createReport.topic(), callbacks::put); } - private void newReportDo(BaseRequest userRequest) { - log.debug("newReportDo request received"); - // todo logic + private void newReportWithPeriod(BaseRequest reportRequest) { + log.debug("newReportWithPeriod request received"); + + ReportWithPeriodRequest request = reportRequest.getRequestPayload(); + + if (request.getReportId() == null || request.getReportId().isBlank()) + throw new IllegalStateException("ReportID is empty"); + ReportId reportId = ReportId.valueOf(request.getReportId()); + ReportDataCollector reportDataCollector = collectorForReport.get(reportId); + if (reportDataCollector == null) + throw new IllegalStateException("Collector for ReportID " + reportId + " not implemented yet"); + + if (request.getStartDate() == null || request.getEndDate() == null) + throw new IllegalStateException("StartDate or EndDate is null"); + LocalDate startDate = request.getStartDate(); + LocalDate endDate = request.getEndDate(); + if (startDate.isAfter(endDate)) throw new IllegalStateException("StartDate > EndDate"); + + XMLReportBuilder reportBuilder = new XMLReportBuilder(reportDataCollector.getReportClass()); + AbstractReport report = reportDataCollector.collectReportWithPeriod(startDate, endDate); + File reportFile = null; + try { + reportFile = reportBuilder.createReport(report); + } catch (IOException e) { + } + + if (reportFile != null) { + // put file in folder + } log.debug("successfully processed"); } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java index ebf56d43d..2788ca791 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/DOCXReportBuilder.java @@ -7,10 +7,16 @@ import ru.spcex.clearing.reports.reports.AbstractReport; import java.io.File; import java.io.IOException; -public abstract class DOCXReportBuilder extends FileReportBuilder { +public class DOCXReportBuilder extends FileReportBuilder { private final Logger log = LoggerFactory.getLogger(getClass()); - protected DOCXReportBuilder(Class reportClass, File templateResource) throws IOException { + protected DOCXReportBuilder(Class reportClass, File templateResource) throws IOException { super(reportClass); } + + @Override + public File createReport(AbstractReport report) throws IOException { + // todo implement + return null; + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java index d22e38111..dcde34308 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java @@ -2,10 +2,13 @@ package ru.spcex.clearing.reports.services.builders; import ru.spcex.clearing.reports.reports.AbstractReport; -public abstract class FileReportBuilder { - protected final Class reportClass; +import java.io.File; +import java.io.IOException; - protected FileReportBuilder(Class reportClass) { +public abstract class FileReportBuilder { + protected final Class reportClass; + + protected FileReportBuilder(Class reportClass) { this.reportClass = reportClass; } @@ -13,4 +16,6 @@ public abstract class FileReportBuilder { if (System.getProperty("os.name").toLowerCase().contains("windows")) reportName = reportName.replace(":", "_"); return reportName + extension; } + + public abstract File createReport(AbstractReport report) throws IOException; } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java index 0d25b8cf6..61995cab6 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/XMLReportBuilder.java @@ -6,30 +6,24 @@ import com.thoughtworks.xstream.io.xml.XppDriver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ru.spcex.clearing.reports.reports.AbstractReport; -import ru.spcex.clearing.reports.services.ReportDataCollector; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; -import java.time.LocalDate; import java.time.LocalDateTime; -public class XMLReportBuilder extends FileReportBuilder { +public class XMLReportBuilder extends FileReportBuilder { private final Logger log = LoggerFactory.getLogger(getClass()); - protected final XStream xStream; - protected final ReportDataCollector collector; - - public XMLReportBuilder(Class reportClass, ReportDataCollector collector) { + public XMLReportBuilder(Class reportClass) { super(reportClass); - this.collector = collector; this.xStream = new XStream(new XppDriver(new NoNameCoder())); xStream.processAnnotations(reportClass); } - public File createReport(LocalDate startDate, LocalDate endDate) throws IOException { - R report = collector.collectReportWithPeriod(startDate, endDate); + @Override + public File createReport(AbstractReport report) throws IOException { String reportName = report.getReportName(LocalDateTime.now()); String reportFileName = makeFileName(reportName, ".xml"); diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java index 8233a188e..3d5a6ddcd 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java @@ -14,7 +14,8 @@ public enum Task implements IEnumKey { startPostClearing("SPOC"),// Запуск постклиринга createOrder("CORD"), createOrderConfirm("CORC"), - getAllBalance("GALB"); + getAllBalance("GALB"), + createReport("RPRT");// Создание отчёта (report-service) private final String key; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequest.java new file mode 100644 index 000000000..17952def1 --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequest.java @@ -0,0 +1,23 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.reports; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Запрос отчёта (без параметров) report-service + */ +public class ReportRequest { + /** + * Идентификатор отчёта + * см. {@link ru.spcex.clearing.reports.reports.ReportsEnum} + */ + @JsonProperty + protected String reportId; + + public String getReportId() { + return reportId; + } + + public void setReportId(String reportId) { + this.reportId = reportId; + } +} diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportWithPeriodRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportWithPeriodRequest.java new file mode 100644 index 000000000..4f4c80c75 --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportWithPeriodRequest.java @@ -0,0 +1,40 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.reports; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer; + +import java.time.LocalDate; + +/** + * Запрос отчёта с периодом report-service + */ +public class ReportWithPeriodRequest extends ReportRequest { + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) + @JsonProperty + protected LocalDate startDate; + + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) + @JsonProperty + protected LocalDate endDate; + + public LocalDate getStartDate() { + return startDate; + } + + public void setStartDate(LocalDate startDate) { + this.startDate = startDate; + } + + public LocalDate getEndDate() { + return endDate; + } + + public void setEndDate(LocalDate endDate) { + this.endDate = endDate; + } +} From cf06177fa166c5ffe9f0b2b64827e59df553df8f Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 27 Dec 2022 14:29:52 +0300 Subject: [PATCH 091/234] meta.xml 2.4.2.0 --- .../src/main/resources/meta/meta.xml | 277 ++++++++++-------- 1 file changed, 149 insertions(+), 128 deletions(-) diff --git a/clearing-parent/backend-api/src/main/resources/meta/meta.xml b/clearing-parent/backend-api/src/main/resources/meta/meta.xml index 6b432b31c..693d0161e 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/meta.xml +++ b/clearing-parent/backend-api/src/main/resources/meta/meta.xml @@ -1,25 +1,25 @@ - + - + - + - + - + @@ -39,7 +39,7 @@ - + @@ -49,200 +49,200 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -254,14 +254,14 @@ - + - + @@ -274,7 +274,7 @@ - + @@ -387,40 +387,61 @@ - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + - + @@ -436,7 +457,7 @@ - + @@ -470,7 +491,7 @@ - + @@ -488,7 +509,7 @@ - + @@ -501,7 +522,7 @@ - + @@ -532,7 +553,7 @@ - + @@ -545,7 +566,7 @@ - + @@ -575,12 +596,12 @@ - + - + @@ -606,12 +627,12 @@ - + - + @@ -622,7 +643,7 @@ - + @@ -640,7 +661,7 @@ - + @@ -685,19 +706,19 @@ - + - + - + @@ -710,12 +731,12 @@ - + - + @@ -754,7 +775,7 @@ - + @@ -766,7 +787,7 @@ - + @@ -777,7 +798,7 @@ - + @@ -820,7 +841,7 @@ - + @@ -834,7 +855,7 @@ - + @@ -851,7 +872,7 @@ - + @@ -984,7 +1005,7 @@ - + @@ -996,7 +1017,7 @@ - + @@ -1015,7 +1036,7 @@ - + @@ -1098,7 +1119,7 @@ - + @@ -1112,7 +1133,7 @@ - + @@ -1122,24 +1143,24 @@ - + - + - + - + - - + + - + @@ -1151,7 +1172,7 @@ - + @@ -1169,7 +1190,7 @@ - + @@ -1181,7 +1202,7 @@ - + @@ -1194,7 +1215,7 @@ - + @@ -1218,7 +1239,7 @@ - + @@ -1236,7 +1257,7 @@ - + @@ -1255,7 +1276,7 @@ - + @@ -1307,7 +1328,7 @@ - + @@ -1359,7 +1380,7 @@ - +
@@ -1368,14 +1389,14 @@ - + - + @@ -1387,7 +1408,7 @@ - + @@ -1400,7 +1421,7 @@ - + @@ -1451,7 +1472,7 @@ - + @@ -1460,7 +1481,7 @@ - + @@ -1510,7 +1531,7 @@ - + @@ -1524,7 +1545,7 @@ - + @@ -1539,7 +1560,7 @@ - + @@ -1549,7 +1570,7 @@ - + @@ -1571,7 +1592,7 @@ - + @@ -1588,7 +1609,7 @@ - + @@ -1602,14 +1623,14 @@ - + - + From d80ab056d100d877f523eeb38a316927a49848b7 Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 27 Dec 2022 15:06:49 +0300 Subject: [PATCH 092/234] data.xml --- .../backend-api/src/main/resources/meta/data.xml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/clearing-parent/backend-api/src/main/resources/meta/data.xml b/clearing-parent/backend-api/src/main/resources/meta/data.xml index fb7903874..dd892e3c3 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/data.xml +++ b/clearing-parent/backend-api/src/main/resources/meta/data.xml @@ -12,15 +12,13 @@ - - + - - + From c6c44b4549b17d4d039fc46d5057fb7384d55eba Mon Sep 17 00:00:00 2001 From: AKurakin Date: Tue, 27 Dec 2022 15:25:37 +0300 Subject: [PATCH 093/234] =?UTF-8?q?reports-service=20=D0=BC=D0=B5=D0=BB?= =?UTF-8?q?=D0=BA=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/spcex/clearing/reports/ReportsServiceApplication.java | 2 +- .../reports/services/collector/Bt17_1_P1_collector.java | 2 +- .../reports/services/collector/Bt17_1_P2_collector.java | 2 +- .../reports-service/src/main/resources/application.properties | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java index 9d5ddc570..99a580de8 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java @@ -32,7 +32,7 @@ public class ReportsServiceApplication { log.info("Report types: {}", allReports); for (ReportDataCollector collector:allReports.values()) { log.info("Make report {}", collector); - XMLReportBuilder xmlReportBuilder = new XMLReportBuilder<>(collector.getReportClass()); + XMLReportBuilder xmlReportBuilder = new XMLReportBuilder(collector.getReportClass()); LocalDate date2 = LocalDate.now(); LocalDate date1 = LocalDate.of(date2.getYear(), date2.getMonth(), 1);//date2.minusMonths(1); AbstractReport report = collector.collectReportWithPeriod(date1, date2); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java index 824306394..c2a42a5bf 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/Bt17_1_P1_collector.java @@ -103,7 +103,7 @@ public class Bt17_1_P1_collector extends ReportDataCollector collectedToSumm = new HashSet<>(); for (LiabilitiesClaimsAssets lContract : liabilities) { - if (lContract.getPrice() != null && StringUtils.isNotEmpty(lContract.getContract()) + if (lContract.getLiabilitiesQuantity() != null && StringUtils.isNotEmpty(lContract.getContract()) && !collectedToSumm.contains(lContract.getContract())) { collectedToSumm.add(lContract.getContract()); liabilitiesAmount += lContract.getLiabilitiesQuantity().doubleValue(); diff --git a/clearing-parent/reports-service/src/main/resources/application.properties b/clearing-parent/reports-service/src/main/resources/application.properties index c7765a7fe..f4aec6b47 100644 --- a/clearing-parent/reports-service/src/main/resources/application.properties +++ b/clearing-parent/reports-service/src/main/resources/application.properties @@ -19,6 +19,7 @@ reports-service.kafka-consumer.buffer-memory=33554432 #reports-service.kafka-producer.buffer-memory=33554432 reports-service.hazelcast.cluster-members=127.0.0.1:5701,10.200.200.181:5701 + #,10.200.200.181:5701 reports-service.hazelcast.login=dev reports-service.hazelcast.password=dev-pass From f7d66bf1b15cb66e3c12ca5b82c9450f10fd9267 Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 27 Dec 2022 16:19:25 +0300 Subject: [PATCH 094/234] http://jira.mfd.msk:8088/browse/CLS-63 --- .../controller/request/cud/utilities/UserAuthAction.java | 1 + 1 file changed, 1 insertion(+) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/UserAuthAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/UserAuthAction.java index f7f55519d..f922f4200 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/UserAuthAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/utilities/UserAuthAction.java @@ -45,6 +45,7 @@ public class UserAuthAction implements IAction { public UserAuthRequest toRequest() { UserAuthRequest userAuthRequest = new UserAuthRequest(); userAuthRequest.setServerIp(serverIp); + userAuthRequest.setClientIp(clientIp); userAuthRequest.setUsername(username); userAuthRequest.setRoles(roles); userAuthRequest.setTime(time); From 94fb771834492f196e26d4ffb7dc5f1b925ac13c Mon Sep 17 00:00:00 2001 From: psemenkov Date: Wed, 28 Dec 2022 11:36:26 +0300 Subject: [PATCH 095/234] =?UTF-8?q?=D0=A2=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20?= =?UTF-8?q?=D0=BF=D1=83=D1=82=D0=B8=20=D0=B4=D0=BB=D1=8F=20AllMapStoreTest?= =?UTF-8?q?=20=D1=81=D0=B5=D1=82=D0=B8=D1=82=D1=81=D1=8F=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BD=D0=BE.=20=D0=98=D1=81?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1?= =?UTF-8?q?=D0=BA=D0=B8:=20=D0=BD=D0=B5=20=D1=81=D0=BE=D1=85=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D0=BB=D0=B8=D1=81=D1=8C=20=D0=BF=D0=BE=D0=BB=D1=8F=20"AC?= =?UTF-8?q?COUNT",=20"COMPANY=5FID"=20=D1=83=20=D0=BC=D0=B0=D0=BF=D1=81?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BE=D0=B2=20AccountHistoryMapStore,=20Bank?= =?UTF-8?q?AccountHistoryMapStore.=20=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=D1=81=D1=8F=20=D1=82=D0=B8=D0=BF=20=D1=83=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D1=8F=20result=20=D0=B2=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81?= =?UTF-8?q?=D0=B5=20SDf17=20(=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D0=BD?= =?UTF-8?q?=D1=83=D0=B6=D0=B5=D0=BD=20BigDecimal,=20=D0=B1=D1=8B=D0=BB=20I?= =?UTF-8?q?nteger=20=D0=B5=D0=B3=D0=BE=20=D0=BD=D0=B5=20=D1=85=D0=B2=D0=B0?= =?UTF-8?q?=D1=82=D0=B0=D0=B5=D1=82).=20=D0=9F=D0=BE=20=D1=86=D0=B5=D0=BF?= =?UTF-8?q?=D0=BE=D1=87=D0=BA=D0=B5=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=20Sdf16Executor,=20SDf17MapStore.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../balance/service/Sdf16Executor.java | 14 +- .../classes/statics/data/sdf/SDf17.java | 6 +- .../businessevent/AccountHistoryMapStore.java | 5 +- .../BankAccountHistoryMapStore.java | 4 +- .../clearing/imdg/object/SDf17MapStore.java | 2 +- .../spcex/clearing/imdg/AllMapStoreTest.java | 13 +- .../imdg/src/test/resources/ddl.sql | 1450 +++++++++-------- 7 files changed, 766 insertions(+), 728 deletions(-) diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java index 373a4e0b1..9118ec4d7 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java @@ -24,6 +24,7 @@ import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.validation.IValidator; +import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; import java.time.format.DateTimeFormatter; @@ -34,9 +35,8 @@ import java.util.function.Function; @Service public class Sdf16Executor extends AbstractExecutor { - private final Logger log = LoggerFactory.getLogger(getClass()); - private final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy"); + private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg statementImdg; private final Function sDf16Validator; private final LoggingService errorLogger; @@ -200,15 +200,15 @@ public class Sdf16Executor extends AbstractExecutor { successSdf.setGenerationId(generationIdForGroup); successSdf.setGenerationTime(Instant.now()); successSdf.setInSDf16Id(sdf.getId()); - successSdf.setResult(0); + successSdf.setResult(new BigDecimal(0)); return successSdf; } - private Integer obtainResultNum(EnumMessage error){ + private BigDecimal obtainResultNum(EnumMessage error) { if (BalanceError.AccountNotPresent.equalsById(error.getSubject().getId())) - return 1; + return new BigDecimal(1); if (BalanceError.BalanceNotEnough.equalsById(error.getSubject().getId())) - return 1; - return 9; + return new BigDecimal(1); + return new BigDecimal(9); } } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java index d55f50c5b..21aad630a 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java @@ -23,7 +23,7 @@ public class SDf17 extends SpcexObjectBase implements WithAccount { private BigDecimal bic; private String spec; private BigDecimal number; - private Integer result; + private BigDecimal result; private Instant generationTime; private Long generationId; private Long inSDf16Id; @@ -93,11 +93,11 @@ public class SDf17 extends SpcexObjectBase implements WithAccount { this.number = value; } - public Integer getResult() { + public BigDecimal getResult() { return result; } - public void setResult(Integer value) { + public void setResult(BigDecimal value) { this.result = value; } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/AccountHistoryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/AccountHistoryMapStore.java index 7121aeec3..696dedba4 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/AccountHistoryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/AccountHistoryMapStore.java @@ -28,7 +28,7 @@ public class AccountHistoryMapStore extends TemplateEventMapStore { object.setBic(resultSet.getObject("BIC", BigDecimal.class)); object.setSpec(resultSet.getObject("SPEC", String.class)); object.setNumber(resultSet.getObject("NUMBER", BigDecimal.class)); - object.setResult(resultSet.getObject("RESULT", Integer.class)); + object.setResult(resultSet.getObject("RESULT", BigDecimal.class)); object.setGenerationTime(getInstantFromTimestamp(resultSet, "GENERATION_TIME")); object.setGenerationId(resultSet.getObject("GENERATION_ID", Long.class)); object.setInSDf16Id(resultSet.getObject("IN_S_DF16_ID", Long.class)); diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/AllMapStoreTest.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/AllMapStoreTest.java index d67cd2448..a46974f66 100644 --- a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/AllMapStoreTest.java +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/AllMapStoreTest.java @@ -6,6 +6,7 @@ import com.hazelcast.core.IMap; import org.apache.commons.lang3.exception.ExceptionUtils; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.slf4j.Logger; @@ -18,7 +19,6 @@ import org.springframework.jdbc.core.SqlTypeValue; import org.springframework.jdbc.core.StatementCreatorUtils; import org.springframework.lang.NonNull; import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.CompanyHistory; @@ -39,6 +39,8 @@ import ru.spcex.platform.utils.text.TextUtil; import javax.annotation.PostConstruct; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.nio.file.Path; +import java.nio.file.Paths; import java.sql.*; import java.util.*; import java.util.stream.Collectors; @@ -51,7 +53,7 @@ import static ru.spcex.clearing.imdg.utils.DbDataUtils.generatingRandomString; TestConfiguration.class, DbTestConnectionConfig.class}) @ExtendWith(SpringExtension.class) -@TestPropertySource(properties = "spring.config.location=D:/repo/mfd/clearing/clearing-parent/imdg/src/main/resources") +//@TestPropertySource(properties = "spring.config.location=D:/repo/mfd/clearing/clearing-parent/imdg/src/main/resources") @TestPropertySource(locations = "/AllMapStoreTest.properties") public class AllMapStoreTest { private static final Long ID = 1000000L; private final Logger log = LoggerFactory.getLogger(this.getClass()); @@ -61,6 +63,13 @@ public class AllMapStoreTest { @Autowired JdbcTemplate jdbcTemplate; + @BeforeAll + static void setProperty() { + Path path = Paths.get("src", "main", "resources"); + String currentPath = path.toAbsolutePath().toString(); + System.setProperty("spring.config.location", currentPath); + } + @PostConstruct public void initTestObjects() { try { diff --git a/clearing-parent/imdg/src/test/resources/ddl.sql b/clearing-parent/imdg/src/test/resources/ddl.sql index a4031fc19..61f8d16aa 100644 --- a/clearing-parent/imdg/src/test/resources/ddl.sql +++ b/clearing-parent/imdg/src/test/resources/ddl.sql @@ -1,4 +1,4 @@ --- DB version: 2.4.0.0 +-- DB version: 2.4.2.0 /* Dictionaries */ -- chargeDirection - Направление начисления комиссии @@ -49,22 +49,6 @@ COMMENT ON COLUMN COURIER_TYPE_DICTIONARY.CODE IS 'Код'; COMMENT ON COLUMN COURIER_TYPE_DICTIONARY.NAME IS 'Способ доставки'; --- interestStatus - Справочник статусов возвращения процентов -DROP TABLE IF EXISTS INTEREST_STATUS_DICTIONARY; -CREATE TABLE INTEREST_STATUS_DICTIONARY -( - ID bigint PRIMARY KEY, - CODE varchar(4), - NAME varchar(255) -); -COMMENT ON TABLE INTEREST_STATUS_DICTIONARY IS 'Справочник статусов возвращения процентов'; - -COMMENT ON COLUMN INTEREST_STATUS_DICTIONARY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN INTEREST_STATUS_DICTIONARY.CODE IS 'Код'; - -COMMENT ON COLUMN INTEREST_STATUS_DICTIONARY.NAME IS 'Наименование'; - -- termType - Справочник видов инструментов денежного рынка DROP TABLE IF EXISTS TERM_TYPE_DICTIONARY; CREATE TABLE TERM_TYPE_DICTIONARY @@ -870,8 +854,8 @@ CREATE TABLE USER_CONNECT USER_ID bigint, CONNECTION_TIME timestamp, DISCONNECTION_TIME timestamp, - SERVER_I_P varchar(250), - CLIENT_I_P varchar(250), + SERVER_IP varchar(250), + CLIENT_IP varchar(250), CONNECTION_STATE varchar(4), CLEARING_DATE date, ERROR_CODE bigint, @@ -891,9 +875,9 @@ COMMENT ON COLUMN USER_CONNECT.CONNECTION_TIME IS 'Последнее соеди COMMENT ON COLUMN USER_CONNECT.DISCONNECTION_TIME IS 'Разрыв соединения'; -COMMENT ON COLUMN USER_CONNECT.SERVER_I_P IS 'IP адрес сервера'; +COMMENT ON COLUMN USER_CONNECT.SERVER_IP IS 'IP адрес сервера'; -COMMENT ON COLUMN USER_CONNECT.CLIENT_I_P IS 'IP адрес клиента'; +COMMENT ON COLUMN USER_CONNECT.CLIENT_IP IS 'IP адрес клиента'; COMMENT ON COLUMN USER_CONNECT.CONNECTION_STATE IS 'Статус соединения (linked to connectionState)'; @@ -917,8 +901,8 @@ CREATE TABLE USER_CONNECT_HISTORY USER_ID bigint, CONNECTION_TIME timestamp, DISCONNECTION_TIME timestamp, - SERVER_I_P varchar(250), - CLIENT_I_P varchar(250), + SERVER_IP varchar(250), + CLIENT_IP varchar(250), CONNECTION_STATE varchar(4), CLEARING_DATE date, ERROR_CODE bigint, @@ -941,9 +925,9 @@ COMMENT ON COLUMN USER_CONNECT_HISTORY.CONNECTION_TIME IS 'Последнее с COMMENT ON COLUMN USER_CONNECT_HISTORY.DISCONNECTION_TIME IS 'Разрыв соединения'; -COMMENT ON COLUMN USER_CONNECT_HISTORY.SERVER_I_P IS 'IP адрес сервера'; +COMMENT ON COLUMN USER_CONNECT_HISTORY.SERVER_IP IS 'IP адрес сервера'; -COMMENT ON COLUMN USER_CONNECT_HISTORY.CLIENT_I_P IS 'IP адрес клиента'; +COMMENT ON COLUMN USER_CONNECT_HISTORY.CLIENT_IP IS 'IP адрес клиента'; COMMENT ON COLUMN USER_CONNECT_HISTORY.CONNECTION_STATE IS 'Статус соединения (linked to connectionState)'; @@ -957,104 +941,112 @@ COMMENT ON COLUMN USER_CONNECT_HISTORY.ERROR_TEXT IS 'Полный текст о DROP TABLE IF EXISTS PLANNER_TEMPLATE; CREATE TABLE PLANNER_TEMPLATE ( - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, TASK varchar(4), TASK_TIME time, - TASK_STATUS varchar(4) + TASK_STATUS varchar(4), + COMPANY_ID bigint, + SECURITY_ID bigint, + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE PLANNER_TEMPLATE IS 'Шаблон расписания операционного дня'; +COMMENT ON COLUMN PLANNER_TEMPLATE.TASK IS 'Наименование задачи (linked to task)'; + +COMMENT ON COLUMN PLANNER_TEMPLATE.TASK_TIME IS 'Время задачи'; + +COMMENT ON COLUMN PLANNER_TEMPLATE.TASK_STATUS IS 'Статус (linked to taskStatus)'; + +COMMENT ON COLUMN PLANNER_TEMPLATE.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN PLANNER_TEMPLATE.SECURITY_ID IS 'Инструмент (linked to moneyMarketSecurity)'; + COMMENT ON COLUMN PLANNER_TEMPLATE.ID IS 'Идентификатор'; COMMENT ON COLUMN PLANNER_TEMPLATE.CREATED_AT IS 'Создано'; COMMENT ON COLUMN PLANNER_TEMPLATE.UPDATED_AT IS 'Изменено'; -COMMENT ON COLUMN PLANNER_TEMPLATE.TASK IS 'Идентификатор задачи (linked to task)'; - -COMMENT ON COLUMN PLANNER_TEMPLATE.TASK_TIME IS 'Время задачи'; - -COMMENT ON COLUMN PLANNER_TEMPLATE.TASK_STATUS IS 'Статус (linked to taskStatus)'; - -- clearingCalendar - Рабочие и нерабочие дни DROP TABLE IF EXISTS CLEARING_CALENDAR; CREATE TABLE CLEARING_CALENDAR ( - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, CLEARING_DATE date, COMPANY_ID bigint, - DAY_STATUS varchar(4) + DAY_STATUS varchar(4), + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE CLEARING_CALENDAR IS 'Рабочие и нерабочие дни'; -COMMENT ON COLUMN CLEARING_CALENDAR.ID IS 'Идентификатор'; - -COMMENT ON COLUMN CLEARING_CALENDAR.CREATED_AT IS 'Создано'; - -COMMENT ON COLUMN CLEARING_CALENDAR.UPDATED_AT IS 'Изменено'; - COMMENT ON COLUMN CLEARING_CALENDAR.CLEARING_DATE IS 'Дата'; COMMENT ON COLUMN CLEARING_CALENDAR.COMPANY_ID IS 'Компания (linked to company)'; COMMENT ON COLUMN CLEARING_CALENDAR.DAY_STATUS IS 'Статус (linked to dayStatus)'; +COMMENT ON COLUMN CLEARING_CALENDAR.ID IS 'Идентификатор'; + +COMMENT ON COLUMN CLEARING_CALENDAR.CREATED_AT IS 'Создано'; + +COMMENT ON COLUMN CLEARING_CALENDAR.UPDATED_AT IS 'Изменено'; + -- planner - Расписание DROP TABLE IF EXISTS PLANNER; CREATE TABLE PLANNER ( - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, TASK varchar(4), TASK_TIME time, CLEARING_DATE date, MARKET varchar(4), TASK_STATUS varchar(4), - SECURITY_ID bigint + COMPANY_ID bigint, + SECURITY_ID bigint, + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE PLANNER IS 'Расписание'; +COMMENT ON COLUMN PLANNER.TASK IS 'Наименование задачи (linked to task)'; + +COMMENT ON COLUMN PLANNER.TASK_TIME IS 'Время задачи'; + +COMMENT ON COLUMN PLANNER.CLEARING_DATE IS 'Дата задачи'; + +COMMENT ON COLUMN PLANNER.MARKET IS 'Секция (linked to market)'; + +COMMENT ON COLUMN PLANNER.TASK_STATUS IS 'Статус (linked to taskStatus)'; + +COMMENT ON COLUMN PLANNER.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN PLANNER.SECURITY_ID IS 'Инструмент (linked to moneyMarketSecurity)'; + COMMENT ON COLUMN PLANNER.ID IS 'Идентификатор'; COMMENT ON COLUMN PLANNER.CREATED_AT IS 'Создано'; COMMENT ON COLUMN PLANNER.UPDATED_AT IS 'Изменено'; -COMMENT ON COLUMN PLANNER.TASK IS 'Идентификатор задачи (linked to task)'; - -COMMENT ON COLUMN PLANNER.TASK_TIME IS 'Время'; - -COMMENT ON COLUMN PLANNER.CLEARING_DATE IS 'Дата'; - -COMMENT ON COLUMN PLANNER.MARKET IS 'Секция (linked to market)'; - -COMMENT ON COLUMN PLANNER.TASK_STATUS IS 'Статус (linked to taskStatus)'; - -COMMENT ON COLUMN PLANNER.SECURITY_ID IS 'Инструмент (linked to security)'; - -- plannerAllToday - Расписание на текущий день DROP TABLE IF EXISTS PLANNER_ALL_TODAY; CREATE TABLE PLANNER_ALL_TODAY ( - ID bigint PRIMARY KEY, TASK varchar(4), TASK_TIME time, CLEARING_DATE date, MARKET varchar(4), TASK_STATUS varchar(4), + COMPANY_ID bigint, SECURITY_ID bigint, PARENT varchar(4), - PARENT_ID bigint + PARENT_ID bigint, + ID bigint PRIMARY KEY ); COMMENT ON TABLE PLANNER_ALL_TODAY IS 'Расписание на текущий день'; -COMMENT ON COLUMN PLANNER_ALL_TODAY.ID IS 'Идентификатор'; - COMMENT ON COLUMN PLANNER_ALL_TODAY.TASK IS 'Идентификатор задачи (linked to task)'; COMMENT ON COLUMN PLANNER_ALL_TODAY.TASK_TIME IS 'Время'; @@ -1065,55 +1057,57 @@ COMMENT ON COLUMN PLANNER_ALL_TODAY.MARKET IS 'Секция (linked to market)'; COMMENT ON COLUMN PLANNER_ALL_TODAY.TASK_STATUS IS 'Статус (linked to taskStatus)'; -COMMENT ON COLUMN PLANNER_ALL_TODAY.SECURITY_ID IS 'Инструмент (linked to security)'; +COMMENT ON COLUMN PLANNER_ALL_TODAY.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN PLANNER_ALL_TODAY.SECURITY_ID IS 'Инструмент (linked to moneyMarketSecurity)'; COMMENT ON COLUMN PLANNER_ALL_TODAY.PARENT IS 'Источник записи расписания (linked to parent)'; -COMMENT ON COLUMN PLANNER_ALL_TODAY.PARENT_ID IS 'Идентификатор источника'; +COMMENT ON COLUMN PLANNER_ALL_TODAY.PARENT_ID IS 'Идентификатор записи в таблице-источнике'; + +COMMENT ON COLUMN PLANNER_ALL_TODAY.ID IS 'Идентификатор'; -- launcher - Запуск задачи DROP TABLE IF EXISTS LAUNCHER; CREATE TABLE LAUNCHER ( + SENDER_ID bigint, + TASK varchar(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, - UPDATED_AT timestamp, - SENDER_ID bigint, - TASK varchar(4) + UPDATED_AT timestamp ); COMMENT ON TABLE LAUNCHER IS 'Запуск задачи'; +COMMENT ON COLUMN LAUNCHER.SENDER_ID IS 'Отправитель (linked to userCls)'; + +COMMENT ON COLUMN LAUNCHER.TASK IS 'Задача (linked to task)'; + COMMENT ON COLUMN LAUNCHER.ID IS 'Идентификатор'; COMMENT ON COLUMN LAUNCHER.CREATED_AT IS 'Создано'; COMMENT ON COLUMN LAUNCHER.UPDATED_AT IS 'Изменено'; -COMMENT ON COLUMN LAUNCHER.SENDER_ID IS 'Отправитель (linked to userCls)'; - -COMMENT ON COLUMN LAUNCHER.TASK IS 'Задача (linked to task)'; - -- company - Компании DROP TABLE IF EXISTS COMPANY; CREATE TABLE COMPANY ( - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, + SHORT_NAME varchar(255), + FULL_NAME varchar(255), TRADING_CODE varchar(255), CLEARING_CODE varchar(255), REGISTRATION_CODE varchar(255), WORKFLOW_STATUS varchar(4), - SHORT_NAME varchar(255), - FULL_NAME varchar(255) + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE COMPANY IS 'Компании'; -COMMENT ON COLUMN COMPANY.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN COMPANY.SHORT_NAME IS 'Краткое наименование Компании'; -COMMENT ON COLUMN COMPANY.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN COMPANY.UPDATED_AT IS 'Дата и время изменения записи'; +COMMENT ON COLUMN COMPANY.FULL_NAME IS 'Полное наименование Компании'; COMMENT ON COLUMN COMPANY.TRADING_CODE IS 'Код участника торгов'; @@ -1123,9 +1117,11 @@ COMMENT ON COLUMN COMPANY.REGISTRATION_CODE IS 'Регистрационный COMMENT ON COLUMN COMPANY.WORKFLOW_STATUS IS 'Статус (linked to workflowStatus)'; -COMMENT ON COLUMN COMPANY.SHORT_NAME IS 'Краткое наименование Компании'; +COMMENT ON COLUMN COMPANY.ID IS 'Идентификатор записи'; -COMMENT ON COLUMN COMPANY.FULL_NAME IS 'Полное наименование Компании'; +COMMENT ON COLUMN COMPANY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN COMPANY.UPDATED_AT IS 'Дата и время изменения записи'; -- History log of company - Компании @@ -1135,26 +1131,24 @@ CREATE TABLE COMPANY_HISTORY COMPANY_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, + SHORT_NAME varchar(255), + FULL_NAME varchar(255), TRADING_CODE varchar(255), CLEARING_CODE varchar(255), REGISTRATION_CODE varchar(255), WORKFLOW_STATUS varchar(4), - SHORT_NAME varchar(255), - FULL_NAME varchar(255) + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE COMPANY_HISTORY IS 'История изменений таблицы company'; COMMENT ON COLUMN COMPANY_HISTORY.COMPANY_ID IS 'Идентификатор записи в таблице COMPANY'; COMMENT ON COLUMN COMPANY_HISTORY.EVENT_TIME IS 'Дата и время изменения'; COMMENT ON COLUMN COMPANY_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; -COMMENT ON COLUMN COMPANY_HISTORY.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN COMPANY_HISTORY.SHORT_NAME IS 'Краткое наименование Компании'; -COMMENT ON COLUMN COMPANY_HISTORY.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN COMPANY_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; +COMMENT ON COLUMN COMPANY_HISTORY.FULL_NAME IS 'Полное наименование Компании'; COMMENT ON COLUMN COMPANY_HISTORY.TRADING_CODE IS 'Код участника торгов'; @@ -1164,15 +1158,16 @@ COMMENT ON COLUMN COMPANY_HISTORY.REGISTRATION_CODE IS 'Регистрацион COMMENT ON COLUMN COMPANY_HISTORY.WORKFLOW_STATUS IS 'Статус (linked to workflowStatus)'; -COMMENT ON COLUMN COMPANY_HISTORY.SHORT_NAME IS 'Краткое наименование Компании'; +COMMENT ON COLUMN COMPANY_HISTORY.ID IS 'Идентификатор записи'; -COMMENT ON COLUMN COMPANY_HISTORY.FULL_NAME IS 'Полное наименование Компании'; +COMMENT ON COLUMN COMPANY_HISTORY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN COMPANY_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; -- companyInfo - Профили Компаний DROP TABLE IF EXISTS COMPANY_INFO; CREATE TABLE COMPANY_INFO ( - ID bigint PRIMARY KEY, COMPANY_ID bigint, CORPORATION_SOLE_TYPE varchar(4), COUNTRY_CODE varchar(4), @@ -1187,27 +1182,26 @@ CREATE TABLE COMPANY_INFO FULL_NAME varchar(255), TRADING_CODE varchar(255), CLEARING_CODE varchar(255), - REGISTRATION_CODE varchar(255) + REGISTRATION_CODE varchar(255), + ID bigint PRIMARY KEY ); COMMENT ON TABLE COMPANY_INFO IS 'Профили Компаний'; -COMMENT ON COLUMN COMPANY_INFO.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN COMPANY_INFO.COMPANY_ID IS 'Наименование Компании (linked to company)'; -COMMENT ON COLUMN COMPANY_INFO.COMPANY_ID IS 'Идентификатор Компании (linked to company)'; +COMMENT ON COLUMN COMPANY_INFO.CORPORATION_SOLE_TYPE IS 'Единоличный исполнительный орган (linked to corporationSoleType)'; -COMMENT ON COLUMN COMPANY_INFO.CORPORATION_SOLE_TYPE IS 'Идентификатор единоличного исполнительного органа (linked to corporationSoleType)'; +COMMENT ON COLUMN COMPANY_INFO.COUNTRY_CODE IS 'Юрисдикция (linked to countryCode)'; -COMMENT ON COLUMN COMPANY_INFO.COUNTRY_CODE IS 'Идентификатор кода страны (linked to countryCode)'; - -COMMENT ON COLUMN COMPANY_INFO.DESCRIPTION IS 'Описание'; +COMMENT ON COLUMN COMPANY_INFO.DESCRIPTION IS 'Описание Участника'; COMMENT ON COLUMN COMPANY_INFO.PROFESSIONAL_SIGN IS 'Признак проф. Участника (linked to allowed)'; -COMMENT ON COLUMN COMPANY_INFO.LEGAL_KIND IS 'Идентификатор вида субъекта (linked to legalKind)'; +COMMENT ON COLUMN COMPANY_INFO.LEGAL_KIND IS 'Вид субъекта (linked to legalKind)'; -COMMENT ON COLUMN COMPANY_INFO.ORGANIZATION_TYPE IS 'Идентификатор типа организации (linked to organizationType)'; +COMMENT ON COLUMN COMPANY_INFO.ORGANIZATION_TYPE IS 'Тип организации (linked to organizationType)'; -COMMENT ON COLUMN COMPANY_INFO.RESIDENCE IS 'Идентификатор кода страны (linked to countryCode)'; +COMMENT ON COLUMN COMPANY_INFO.RESIDENCE IS 'Резиденция (linked to countryCode)'; COMMENT ON COLUMN COMPANY_INFO.SHORT_NAME_ENG IS 'Краткое наименование Компании на английском'; @@ -1223,6 +1217,8 @@ COMMENT ON COLUMN COMPANY_INFO.CLEARING_CODE IS 'Код участника кл COMMENT ON COLUMN COMPANY_INFO.REGISTRATION_CODE IS 'Регистрационный код участника'; +COMMENT ON COLUMN COMPANY_INFO.ID IS 'Идентификатор записи'; + -- History log of companyInfo - Профили Компаний DROP TABLE IF EXISTS COMPANY_INFO_HISTORY; @@ -1231,7 +1227,6 @@ CREATE TABLE COMPANY_INFO_HISTORY COMPANY_INFO_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, - ID bigint PRIMARY KEY, COMPANY_ID bigint, CORPORATION_SOLE_TYPE varchar(4), COUNTRY_CODE varchar(4), @@ -1246,30 +1241,29 @@ CREATE TABLE COMPANY_INFO_HISTORY FULL_NAME varchar(255), TRADING_CODE varchar(255), CLEARING_CODE varchar(255), - REGISTRATION_CODE varchar(255) + REGISTRATION_CODE varchar(255), + ID bigint PRIMARY KEY ); COMMENT ON TABLE COMPANY_INFO_HISTORY IS 'История изменений таблицы companyInfo'; COMMENT ON COLUMN COMPANY_INFO_HISTORY.COMPANY_INFO_ID IS 'Идентификатор записи в таблице COMPANY_INFO'; COMMENT ON COLUMN COMPANY_INFO_HISTORY.EVENT_TIME IS 'Дата и время изменения'; COMMENT ON COLUMN COMPANY_INFO_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; -COMMENT ON COLUMN COMPANY_INFO_HISTORY.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN COMPANY_INFO_HISTORY.COMPANY_ID IS 'Наименование Компании (linked to company)'; -COMMENT ON COLUMN COMPANY_INFO_HISTORY.COMPANY_ID IS 'Идентификатор Компании (linked to company)'; +COMMENT ON COLUMN COMPANY_INFO_HISTORY.CORPORATION_SOLE_TYPE IS 'Единоличный исполнительный орган (linked to corporationSoleType)'; -COMMENT ON COLUMN COMPANY_INFO_HISTORY.CORPORATION_SOLE_TYPE IS 'Идентификатор единоличного исполнительного органа (linked to corporationSoleType)'; +COMMENT ON COLUMN COMPANY_INFO_HISTORY.COUNTRY_CODE IS 'Юрисдикция (linked to countryCode)'; -COMMENT ON COLUMN COMPANY_INFO_HISTORY.COUNTRY_CODE IS 'Идентификатор кода страны (linked to countryCode)'; - -COMMENT ON COLUMN COMPANY_INFO_HISTORY.DESCRIPTION IS 'Описание'; +COMMENT ON COLUMN COMPANY_INFO_HISTORY.DESCRIPTION IS 'Описание Участника'; COMMENT ON COLUMN COMPANY_INFO_HISTORY.PROFESSIONAL_SIGN IS 'Признак проф. Участника (linked to allowed)'; -COMMENT ON COLUMN COMPANY_INFO_HISTORY.LEGAL_KIND IS 'Идентификатор вида субъекта (linked to legalKind)'; +COMMENT ON COLUMN COMPANY_INFO_HISTORY.LEGAL_KIND IS 'Вид субъекта (linked to legalKind)'; -COMMENT ON COLUMN COMPANY_INFO_HISTORY.ORGANIZATION_TYPE IS 'Идентификатор типа организации (linked to organizationType)'; +COMMENT ON COLUMN COMPANY_INFO_HISTORY.ORGANIZATION_TYPE IS 'Тип организации (linked to organizationType)'; -COMMENT ON COLUMN COMPANY_INFO_HISTORY.RESIDENCE IS 'Идентификатор кода страны (linked to countryCode)'; +COMMENT ON COLUMN COMPANY_INFO_HISTORY.RESIDENCE IS 'Резиденция (linked to countryCode)'; COMMENT ON COLUMN COMPANY_INFO_HISTORY.SHORT_NAME_ENG IS 'Краткое наименование Компании на английском'; @@ -1285,46 +1279,47 @@ COMMENT ON COLUMN COMPANY_INFO_HISTORY.CLEARING_CODE IS 'Код участник COMMENT ON COLUMN COMPANY_INFO_HISTORY.REGISTRATION_CODE IS 'Регистрационный код участника'; +COMMENT ON COLUMN COMPANY_INFO_HISTORY.ID IS 'Идентификатор записи'; + -- clearingMemberCategory - Категории Участника клиринга DROP TABLE IF EXISTS CLEARING_MEMBER_CATEGORY; CREATE TABLE CLEARING_MEMBER_CATEGORY ( - ID bigint PRIMARY KEY, COMPANY_ID bigint, - CLEARING_MEMBER_CATEGORY varchar(4) + CLEARING_MEMBER_CATEGORY varchar(4), + ID bigint PRIMARY KEY ); COMMENT ON TABLE CLEARING_MEMBER_CATEGORY IS 'Категории Участника клиринга'; +COMMENT ON COLUMN CLEARING_MEMBER_CATEGORY.COMPANY_ID IS 'Наименование Компании (linked to company)'; + +COMMENT ON COLUMN CLEARING_MEMBER_CATEGORY.CLEARING_MEMBER_CATEGORY IS 'Категория участника клиринга (linked to clearingCategory)'; + COMMENT ON COLUMN CLEARING_MEMBER_CATEGORY.ID IS 'Идентификатор записи'; -COMMENT ON COLUMN CLEARING_MEMBER_CATEGORY.COMPANY_ID IS 'Идентификатор Компании (linked to company)'; - -COMMENT ON COLUMN CLEARING_MEMBER_CATEGORY.CLEARING_MEMBER_CATEGORY IS 'Идентификатор категории участника клиринга (linked to clearingCategory)'; - -- contact - Контакты Компании DROP TABLE IF EXISTS CONTACT; CREATE TABLE CONTACT ( - ID bigint PRIMARY KEY, COMPANY_ID bigint, CONTACT_TYPE varchar(4), - CONTACT_VALUE varchar(255) + CONTACT_VALUE varchar(255), + ID bigint PRIMARY KEY ); COMMENT ON TABLE CONTACT IS 'Контакты Компании'; -COMMENT ON COLUMN CONTACT.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN CONTACT.COMPANY_ID IS 'Наименование Компании (linked to company)'; -COMMENT ON COLUMN CONTACT.COMPANY_ID IS 'Идентификатор Компании (linked to company)'; - -COMMENT ON COLUMN CONTACT.CONTACT_TYPE IS 'Идентификатор справочника (linked to contactType)'; +COMMENT ON COLUMN CONTACT.CONTACT_TYPE IS 'Наименование справочника (linked to contactType)'; COMMENT ON COLUMN CONTACT.CONTACT_VALUE IS 'Значение справочника'; +COMMENT ON COLUMN CONTACT.ID IS 'Идентификатор записи'; + -- profileDocument - Досье Компании DROP TABLE IF EXISTS PROFILE_DOCUMENT; CREATE TABLE PROFILE_DOCUMENT ( - ID bigint PRIMARY KEY, COMPANY_ID bigint, DOCUMENT_TYPE varchar(4), ISSUE_DATE date, @@ -1336,15 +1331,14 @@ CREATE TABLE PROFILE_DOCUMENT PLACE varchar(255), VALID_FROM_DATE date, VALID_TO_DATE date, - LINK varchar(255) + LINK varchar(255), + ID bigint PRIMARY KEY ); COMMENT ON TABLE PROFILE_DOCUMENT IS 'Досье Компании'; -COMMENT ON COLUMN PROFILE_DOCUMENT.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN PROFILE_DOCUMENT.COMPANY_ID IS 'Наименование Компании (linked to company)'; -COMMENT ON COLUMN PROFILE_DOCUMENT.COMPANY_ID IS 'Идентификатор Компании (linked to company)'; - -COMMENT ON COLUMN PROFILE_DOCUMENT.DOCUMENT_TYPE IS 'Идентификатор типа документа (linked to documentType)'; +COMMENT ON COLUMN PROFILE_DOCUMENT.DOCUMENT_TYPE IS 'Тип документа (linked to documentType)'; COMMENT ON COLUMN PROFILE_DOCUMENT.ISSUE_DATE IS 'Дата выдачи'; @@ -1356,7 +1350,7 @@ COMMENT ON COLUMN PROFILE_DOCUMENT.ISSUER_CODE IS 'Код выдавшего о COMMENT ON COLUMN PROFILE_DOCUMENT.NAME IS 'Наименование'; -COMMENT ON COLUMN PROFILE_DOCUMENT.NUMBER IS 'Номер'; +COMMENT ON COLUMN PROFILE_DOCUMENT.NUMBER IS 'Номер документа'; COMMENT ON COLUMN PROFILE_DOCUMENT.PLACE IS 'Место'; @@ -1366,32 +1360,31 @@ COMMENT ON COLUMN PROFILE_DOCUMENT.VALID_TO_DATE IS 'Дата окончания COMMENT ON COLUMN PROFILE_DOCUMENT.LINK IS 'Ссылка на документ'; +COMMENT ON COLUMN PROFILE_DOCUMENT.ID IS 'Идентификатор записи'; + -- companySymbols - Реквизиты Компании DROP TABLE IF EXISTS COMPANY_SYMBOLS; CREATE TABLE COMPANY_SYMBOLS ( - ID bigint PRIMARY KEY, COMPANY_ID bigint, COMPANY_SYMBOL varchar(4), - COMPANY_SYMBOL_VALUE varchar(255) + COMPANY_SYMBOL_VALUE varchar(255), + ID bigint PRIMARY KEY ); COMMENT ON TABLE COMPANY_SYMBOLS IS 'Реквизиты Компании'; -COMMENT ON COLUMN COMPANY_SYMBOLS.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN COMPANY_SYMBOLS.COMPANY_ID IS 'Наименование Компании (linked to company)'; -COMMENT ON COLUMN COMPANY_SYMBOLS.COMPANY_ID IS 'Идентификатор Компании (linked to company)'; - -COMMENT ON COLUMN COMPANY_SYMBOLS.COMPANY_SYMBOL IS 'Идентификатор справочника (linked to companySymbol)'; +COMMENT ON COLUMN COMPANY_SYMBOLS.COMPANY_SYMBOL IS 'Справочник (linked to companySymbol)'; COMMENT ON COLUMN COMPANY_SYMBOLS.COMPANY_SYMBOL_VALUE IS 'Значение справочника'; --- clearmemberRegistry - Реестр участников клиринга -DROP TABLE IF EXISTS CLEARMEMBER_REGISTRY; -CREATE TABLE CLEARMEMBER_REGISTRY +COMMENT ON COLUMN COMPANY_SYMBOLS.ID IS 'Идентификатор записи'; + +-- clearmemberRegister - Реестр участников клиринга +DROP TABLE IF EXISTS CLEARMEMBER_REGISTER; +CREATE TABLE CLEARMEMBER_REGISTER ( - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, TRADING_CODE varchar(255), CLEARING_CODE varchar(255), FULL_NAME varchar(255), @@ -1416,154 +1409,160 @@ CREATE TABLE CLEARMEMBER_REGISTRY CLOSE_DATE timestamp, EXCLUSION_DATE timestamp, ADDRESS varchar(255), - EMAIL varchar(255) + EMAIL varchar(255), + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); -COMMENT ON TABLE CLEARMEMBER_REGISTRY IS 'Реестр участников клиринга'; +COMMENT ON TABLE CLEARMEMBER_REGISTER IS 'Реестр участников клиринга'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.TRADING_CODE IS 'Код участника торгов'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.CREATED_AT IS 'Дата и время создания записи'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.CLEARING_CODE IS 'Код участника клиринга'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.UPDATED_AT IS 'Дата и время изменения записи'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.FULL_NAME IS 'Полное наименование участника клиринга'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.TRADING_CODE IS 'Код участника торгов'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.SHORT_NAME IS 'Краткое наименование участника клиринга'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.CLEARING_CODE IS 'Код участника клиринга'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.CATEGORY_LIST IS 'Категория участника клиринга (linked to clearingCategory)'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.FULL_NAME IS 'Полное наименование участника клиринга'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.CORPORATION_SOLE IS 'Единоличный исполнительный орган (linked to corporationSoleType)'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.SHORT_NAME IS 'Краткое наименование участника клиринга'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.ACCOUNT IS 'Счета'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.CATEGORY_LIST IS 'Идентификатор категории участника клиринга (linked to clearingCategory)'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.BANK IS 'Наименование банка (linked to bankAccount)'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.CORPORATION_SOLE IS 'Идентификатор единоличного исполнительного органа (linked to corporationSoleType)'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.BANK_NAME IS 'Наименование банка'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.ACCOUNT IS 'Cчета'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.INN IS 'Идентификационный номер налогоплательщика (ИНН)'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.BANK IS 'Банк (linked to bankAccount)'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.BIC IS 'Банковский идентификационный код (БИК)'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.BANK_NAME IS 'Наименование банка'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.OGRN IS 'Основной государственный регистрационный номер'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.INN IS 'Идентификационный номер налогоплательщика (ИНН)'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.CPP IS 'Код причины постановки (КПП)'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.BIC IS 'Банковский идентификационный код (БИК)'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.OCPO IS 'Код в Общероссийском классификаторе предприятий'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.OGRN IS 'Основной государственный регистрационный номер'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.CONTRACT_NUMBER IS 'Номер договора'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.CPP IS 'Код причины постановки (КПП)'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.CONTRACT_DATE IS 'Дата выдачи'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.OCPO IS 'Код в Общероссийском классификаторе предприятий'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.REGISTRATION_DATE IS 'Дата регистрации'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.CONTRACT_NUMBER IS 'Номер договора'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.SYSTEM_DATE IS 'Системная дата'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.CONTRACT_DATE IS 'Дата выдачи'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.ACCESS_DATE IS 'Дата допуска к КО'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.REGISTRATION_DATE IS 'Дата регистрации'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.SUSPENTION_DATE IS 'Дата приостановления'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.SYSTEM_DATE IS 'Системная дата'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.REOPENING_DATE IS 'Дата возобновления'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.ACCESS_DATE IS 'Дата допуска к КО'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.CLOSE_DATE IS 'Дата прекращения'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.SUSPENTION_DATE IS 'Дата приостановления'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.EXCLUSION_DATE IS 'Дата исключения из реестра'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.REOPENING_DATE IS 'Дата возобновления'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.ADDRESS IS 'Адрес местонахождения'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.CLOSE_DATE IS 'Дата прекращения'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.EMAIL IS 'Электронная почта'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.EXCLUSION_DATE IS 'Дата исключения из реестра'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.ID IS 'Идентификатор записи'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.ADDRESS IS 'Адрес местонахождения'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.CREATED_AT IS 'Дата и время создания записи'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY.EMAIL IS 'Электронная почта'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER.UPDATED_AT IS 'Дата и время изменения записи'; --- clearmemberRegistryChange - Журнал изменений информации участников клиринга -DROP TABLE IF EXISTS CLEARMEMBER_REGISTRY_CHANGE; -CREATE TABLE CLEARMEMBER_REGISTRY_CHANGE +-- clearmemberRegisterChange - Журнал изменений информации участников клиринга +DROP TABLE IF EXISTS CLEARMEMBER_REGISTER_CHANGE; +CREATE TABLE CLEARMEMBER_REGISTER_CHANGE ( DATE timestamp, CLEARING_CODE varchar(255), COMMENT varchar(255) ); -COMMENT ON TABLE CLEARMEMBER_REGISTRY_CHANGE IS 'Журнал изменений информации участников клиринга'; +COMMENT ON TABLE CLEARMEMBER_REGISTER_CHANGE IS 'Журнал изменений информации участников клиринга'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY_CHANGE.DATE IS 'Дата и время изменения записи'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER_CHANGE.DATE IS 'Дата и время изменения записи'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY_CHANGE.CLEARING_CODE IS 'Код участника клиринга'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER_CHANGE.CLEARING_CODE IS 'Код участника клиринга'; -COMMENT ON COLUMN CLEARMEMBER_REGISTRY_CHANGE.COMMENT IS 'Комментарий'; +COMMENT ON COLUMN CLEARMEMBER_REGISTER_CHANGE.COMMENT IS 'Комментарий'; -- keyRate - Ключевая ставка ЦБ DROP TABLE IF EXISTS KEY_RATE; CREATE TABLE KEY_RATE ( - ID bigint PRIMARY KEY, RATE numeric(72, 18), START_DATE date, END_DATE date, DOCUMENT varchar(255), - WORKFLOW_STATUS varchar(4) + WORKFLOW_STATUS varchar(4), + ID bigint PRIMARY KEY ); COMMENT ON TABLE KEY_RATE IS 'Ключевая ставка ЦБ'; -COMMENT ON COLUMN KEY_RATE.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN KEY_RATE.RATE IS 'Ключевая ставка ЦБ РФ'; +COMMENT ON COLUMN KEY_RATE.RATE IS 'Ключевая ставка ЦБ'; COMMENT ON COLUMN KEY_RATE.START_DATE IS 'Дата начала действия ключевой ставки'; COMMENT ON COLUMN KEY_RATE.END_DATE IS 'Дата окончания действия ключевой ставки'; -COMMENT ON COLUMN KEY_RATE.DOCUMENT IS 'Документ ЦБ РФ, регламентирующий установку величины ключевой ставки'; +COMMENT ON COLUMN KEY_RATE.DOCUMENT IS 'Документ ЦБ, регламентирующий установку величины ключевой ставки'; COMMENT ON COLUMN KEY_RATE.WORKFLOW_STATUS IS 'Статус (linked to workflowStatus)'; +COMMENT ON COLUMN KEY_RATE.ID IS 'Идентификатор записи'; + -- companyRoleSet - Таблица ролей Компании DROP TABLE IF EXISTS COMPANY_ROLE_SET; CREATE TABLE COMPANY_ROLE_SET ( - ID bigint PRIMARY KEY, COMPANY_ID bigint, - ROLE_ID bigint + ROLE_ID bigint, + ID bigint PRIMARY KEY ); COMMENT ON TABLE COMPANY_ROLE_SET IS 'Таблица ролей Компании'; -COMMENT ON COLUMN COMPANY_ROLE_SET.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN COMPANY_ROLE_SET.COMPANY_ID IS 'Идентификатор списка ролей Компании (linked to company)'; +COMMENT ON COLUMN COMPANY_ROLE_SET.COMPANY_ID IS 'Список ролей Компании (linked to company)'; COMMENT ON COLUMN COMPANY_ROLE_SET.ROLE_ID IS 'Значение справочника (linked to companyRole)'; +COMMENT ON COLUMN COMPANY_ROLE_SET.ID IS 'Идентификатор записи'; + -- account - Счета DROP TABLE IF EXISTS ACCOUNT; CREATE TABLE ACCOUNT ( - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, ACCOUNT varchar(50), ACCOUNT_TYPE varchar(4), RELATION_ID bigint, ACCOUNT_STATUS varchar(4), - PROCESSING_SIGN varchar(4) + PROCESSING_SIGN varchar(4), + COMPANY_ID bigint, + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE ACCOUNT IS 'Счета'; -COMMENT ON COLUMN ACCOUNT.ID IS 'Идентификатор'; +COMMENT ON COLUMN ACCOUNT.ACCOUNT IS 'Номер счета'; + +COMMENT ON COLUMN ACCOUNT.ACCOUNT_TYPE IS 'Тип счета (linked to accountType)'; + +COMMENT ON COLUMN ACCOUNT.RELATION_ID IS 'Договорные отношения (linked to relation)'; + +COMMENT ON COLUMN ACCOUNT.ACCOUNT_STATUS IS 'Статус (linked to accountStatus)'; + +COMMENT ON COLUMN ACCOUNT.PROCESSING_SIGN IS 'Признак обработки счета (linked to allowed)'; + +COMMENT ON COLUMN ACCOUNT.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN ACCOUNT.ID IS 'Идентификатор записи'; COMMENT ON COLUMN ACCOUNT.CREATED_AT IS 'Дата и время создания записи'; COMMENT ON COLUMN ACCOUNT.UPDATED_AT IS 'Дата и время изменения записи'; -COMMENT ON COLUMN ACCOUNT.ACCOUNT IS 'Номер счета'; - -COMMENT ON COLUMN ACCOUNT.ACCOUNT_TYPE IS 'Идентификатор типа счета (linked to accountType)'; - -COMMENT ON COLUMN ACCOUNT.RELATION_ID IS 'Идентификатор договорных отношений (linked to relation)'; - -COMMENT ON COLUMN ACCOUNT.ACCOUNT_STATUS IS 'Идентификатор статуса (linked to accountStatus)'; - -COMMENT ON COLUMN ACCOUNT.PROCESSING_SIGN IS 'Признак обработки счета (linked to allowed)'; - -- History log of account - Счета DROP TABLE IF EXISTS ACCOUNT_HISTORY; @@ -1572,70 +1571,73 @@ CREATE TABLE ACCOUNT_HISTORY ACCOUNT_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, ACCOUNT varchar(50), ACCOUNT_TYPE varchar(4), RELATION_ID bigint, ACCOUNT_STATUS varchar(4), - PROCESSING_SIGN varchar(4) + PROCESSING_SIGN varchar(4), + COMPANY_ID bigint, + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE ACCOUNT_HISTORY IS 'История изменений таблицы account'; COMMENT ON COLUMN ACCOUNT_HISTORY.ACCOUNT_ID IS 'Идентификатор записи в таблице ACCOUNT'; COMMENT ON COLUMN ACCOUNT_HISTORY.EVENT_TIME IS 'Дата и время изменения'; COMMENT ON COLUMN ACCOUNT_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; -COMMENT ON COLUMN ACCOUNT_HISTORY.ID IS 'Идентификатор'; +COMMENT ON COLUMN ACCOUNT_HISTORY.ACCOUNT IS 'Номер счета'; + +COMMENT ON COLUMN ACCOUNT_HISTORY.ACCOUNT_TYPE IS 'Тип счета (linked to accountType)'; + +COMMENT ON COLUMN ACCOUNT_HISTORY.RELATION_ID IS 'Договорные отношения (linked to relation)'; + +COMMENT ON COLUMN ACCOUNT_HISTORY.ACCOUNT_STATUS IS 'Статус (linked to accountStatus)'; + +COMMENT ON COLUMN ACCOUNT_HISTORY.PROCESSING_SIGN IS 'Признак обработки счета (linked to allowed)'; + +COMMENT ON COLUMN ACCOUNT_HISTORY.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN ACCOUNT_HISTORY.ID IS 'Идентификатор записи'; COMMENT ON COLUMN ACCOUNT_HISTORY.CREATED_AT IS 'Дата и время создания записи'; COMMENT ON COLUMN ACCOUNT_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; -COMMENT ON COLUMN ACCOUNT_HISTORY.ACCOUNT IS 'Номер счета'; - -COMMENT ON COLUMN ACCOUNT_HISTORY.ACCOUNT_TYPE IS 'Идентификатор типа счета (linked to accountType)'; - -COMMENT ON COLUMN ACCOUNT_HISTORY.RELATION_ID IS 'Идентификатор договорных отношений (linked to relation)'; - -COMMENT ON COLUMN ACCOUNT_HISTORY.ACCOUNT_STATUS IS 'Идентификатор статуса (linked to accountStatus)'; - -COMMENT ON COLUMN ACCOUNT_HISTORY.PROCESSING_SIGN IS 'Признак обработки счета (linked to allowed)'; - -- relation - Договорные отношения DROP TABLE IF EXISTS RELATION; CREATE TABLE RELATION ( - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, CONSUMER_ID bigint, SUPPLIER_ID bigint, SERVICE_STATUS varchar(4), SERVICE varchar(4), SERVICE_PRODUCT varchar(4), - COMMENT varchar(255) + COMMENT varchar(255), + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE RELATION IS 'Договорные отношения'; +COMMENT ON COLUMN RELATION.CONSUMER_ID IS 'Компания пользователя услуги (linked to company)'; + +COMMENT ON COLUMN RELATION.SUPPLIER_ID IS 'Компания поставщика услуги (linked to company)'; + +COMMENT ON COLUMN RELATION.SERVICE_STATUS IS 'Статус (linked to serviceStatus)'; + +COMMENT ON COLUMN RELATION.SERVICE IS 'Наименование услуги (linked to service)'; + +COMMENT ON COLUMN RELATION.SERVICE_PRODUCT IS 'Наименование продукта (linked to serviceProduct)'; + +COMMENT ON COLUMN RELATION.COMMENT IS 'Текст причины'; + COMMENT ON COLUMN RELATION.ID IS 'Идентификатор записи'; COMMENT ON COLUMN RELATION.CREATED_AT IS 'Дата и время создания записи'; COMMENT ON COLUMN RELATION.UPDATED_AT IS 'Дата и время изменения записи'; -COMMENT ON COLUMN RELATION.CONSUMER_ID IS 'Идентификатор Компании пользователя услуги (linked to company)'; - -COMMENT ON COLUMN RELATION.SUPPLIER_ID IS 'Идентификатор Компании поставщика услуги (linked to company)'; - -COMMENT ON COLUMN RELATION.SERVICE_STATUS IS 'Идентификатор статуса (linked to workflowStatus)'; - -COMMENT ON COLUMN RELATION.SERVICE IS 'Идентификатор сервиса (linked to service)'; - -COMMENT ON COLUMN RELATION.SERVICE_PRODUCT IS 'Идентификатор продукта (linked to serviceProduct)'; - -COMMENT ON COLUMN RELATION.COMMENT IS 'Текст причины'; - -- History log of relation - Договорные отношения DROP TABLE IF EXISTS RELATION_HISTORY; @@ -1644,44 +1646,43 @@ CREATE TABLE RELATION_HISTORY RELATION_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, CONSUMER_ID bigint, SUPPLIER_ID bigint, SERVICE_STATUS varchar(4), SERVICE varchar(4), SERVICE_PRODUCT varchar(4), - COMMENT varchar(255) + COMMENT varchar(255), + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE RELATION_HISTORY IS 'История изменений таблицы relation'; COMMENT ON COLUMN RELATION_HISTORY.RELATION_ID IS 'Идентификатор записи в таблице RELATION'; COMMENT ON COLUMN RELATION_HISTORY.EVENT_TIME IS 'Дата и время изменения'; COMMENT ON COLUMN RELATION_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; +COMMENT ON COLUMN RELATION_HISTORY.CONSUMER_ID IS 'Компания пользователя услуги (linked to company)'; + +COMMENT ON COLUMN RELATION_HISTORY.SUPPLIER_ID IS 'Компания поставщика услуги (linked to company)'; + +COMMENT ON COLUMN RELATION_HISTORY.SERVICE_STATUS IS 'Статус (linked to serviceStatus)'; + +COMMENT ON COLUMN RELATION_HISTORY.SERVICE IS 'Наименование услуги (linked to service)'; + +COMMENT ON COLUMN RELATION_HISTORY.SERVICE_PRODUCT IS 'Наименование продукта (linked to serviceProduct)'; + +COMMENT ON COLUMN RELATION_HISTORY.COMMENT IS 'Текст причины'; + COMMENT ON COLUMN RELATION_HISTORY.ID IS 'Идентификатор записи'; COMMENT ON COLUMN RELATION_HISTORY.CREATED_AT IS 'Дата и время создания записи'; COMMENT ON COLUMN RELATION_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; -COMMENT ON COLUMN RELATION_HISTORY.CONSUMER_ID IS 'Идентификатор Компании пользователя услуги (linked to company)'; - -COMMENT ON COLUMN RELATION_HISTORY.SUPPLIER_ID IS 'Идентификатор Компании поставщика услуги (linked to company)'; - -COMMENT ON COLUMN RELATION_HISTORY.SERVICE_STATUS IS 'Идентификатор статуса (linked to workflowStatus)'; - -COMMENT ON COLUMN RELATION_HISTORY.SERVICE IS 'Идентификатор сервиса (linked to service)'; - -COMMENT ON COLUMN RELATION_HISTORY.SERVICE_PRODUCT IS 'Идентификатор продукта (linked to serviceProduct)'; - -COMMENT ON COLUMN RELATION_HISTORY.COMMENT IS 'Текст причины'; - -- bankAccount - Банковские реквизиты для перечисления денежных средств DROP TABLE IF EXISTS BANK_ACCOUNT; CREATE TABLE BANK_ACCOUNT ( - ID bigint PRIMARY KEY, ACCOUNT_ID bigint, BANK_IDENTIFICATION_CODE varchar(255), BANK_NAME varchar(255), @@ -1693,13 +1694,14 @@ CREATE TABLE BANK_ACCOUNT INTERNATIONAL_TRANSFER_SIGN varchar(4), SWIFT_CODE varchar(255), TAXPAYER_IDENTIFICATION_NUMBER varchar(255), - TAX_REGISTRATION_REASON_CODE varchar(255) + TAX_REGISTRATION_REASON_CODE varchar(255), + ACCOUNT varchar(50), + COMPANY_ID bigint, + ID bigint PRIMARY KEY ); COMMENT ON TABLE BANK_ACCOUNT IS 'Банковские реквизиты для перечисления денежных средств'; -COMMENT ON COLUMN BANK_ACCOUNT.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN BANK_ACCOUNT.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; +COMMENT ON COLUMN BANK_ACCOUNT.ACCOUNT_ID IS 'Номер счета (linked to account)'; COMMENT ON COLUMN BANK_ACCOUNT.BANK_IDENTIFICATION_CODE IS 'Банковский идентификационный код (БИК)'; @@ -1709,9 +1711,9 @@ COMMENT ON COLUMN BANK_ACCOUNT.CORRESPONDENT_ACCOUNT IS 'Корреспонде COMMENT ON COLUMN BANK_ACCOUNT.CORRESPONDENT_ACCOUNT_NAME IS 'Наименование корреспондентского счета'; -COMMENT ON COLUMN BANK_ACCOUNT.CURRENCY IS 'Идентификатор валюты (linked to currencyCode)'; +COMMENT ON COLUMN BANK_ACCOUNT.CURRENCY IS 'Валюты (linked to currencyCode)'; -COMMENT ON COLUMN BANK_ACCOUNT.DESTINATION IS 'Назначение'; +COMMENT ON COLUMN BANK_ACCOUNT.DESTINATION IS 'Назначение платежа'; COMMENT ON COLUMN BANK_ACCOUNT.IBAN IS 'Международный номер банковского счета'; @@ -1723,6 +1725,12 @@ COMMENT ON COLUMN BANK_ACCOUNT.TAXPAYER_IDENTIFICATION_NUMBER IS 'Идентиф COMMENT ON COLUMN BANK_ACCOUNT.TAX_REGISTRATION_REASON_CODE IS 'Код причины постановки (КПП)'; +COMMENT ON COLUMN BANK_ACCOUNT.ACCOUNT IS 'Номер счета'; + +COMMENT ON COLUMN BANK_ACCOUNT.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN BANK_ACCOUNT.ID IS 'Идентификатор записи'; + -- History log of bankAccount - Банковские реквизиты для перечисления денежных средств DROP TABLE IF EXISTS BANK_ACCOUNT_HISTORY; @@ -1731,7 +1739,6 @@ CREATE TABLE BANK_ACCOUNT_HISTORY BANK_ACCOUNT_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, - ID bigint PRIMARY KEY, ACCOUNT_ID bigint, BANK_IDENTIFICATION_CODE varchar(255), BANK_NAME varchar(255), @@ -1743,16 +1750,17 @@ CREATE TABLE BANK_ACCOUNT_HISTORY INTERNATIONAL_TRANSFER_SIGN varchar(4), SWIFT_CODE varchar(255), TAXPAYER_IDENTIFICATION_NUMBER varchar(255), - TAX_REGISTRATION_REASON_CODE varchar(255) + TAX_REGISTRATION_REASON_CODE varchar(255), + ACCOUNT varchar(50), + COMPANY_ID bigint, + ID bigint PRIMARY KEY ); COMMENT ON TABLE BANK_ACCOUNT_HISTORY IS 'История изменений таблицы bankAccount'; COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.BANK_ACCOUNT_ID IS 'Идентификатор записи в таблице BANK_ACCOUNT'; COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.EVENT_TIME IS 'Дата и время изменения'; COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.ACCOUNT_ID IS 'Номер счета (linked to account)'; COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.BANK_IDENTIFICATION_CODE IS 'Банковский идентификационный код (БИК)'; @@ -1762,9 +1770,9 @@ COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.CORRESPONDENT_ACCOUNT IS 'Корресп COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.CORRESPONDENT_ACCOUNT_NAME IS 'Наименование корреспондентского счета'; -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.CURRENCY IS 'Идентификатор валюты (linked to currencyCode)'; +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.CURRENCY IS 'Валюты (linked to currencyCode)'; -COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.DESTINATION IS 'Назначение'; +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.DESTINATION IS 'Назначение платежа'; COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.IBAN IS 'Международный номер банковского счета'; @@ -1776,22 +1784,31 @@ COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.TAXPAYER_IDENTIFICATION_NUMBER IS 'Иде COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.TAX_REGISTRATION_REASON_CODE IS 'Код причины постановки (КПП)'; +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.ACCOUNT IS 'Номер счета'; + +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.COMPANY_ID IS 'Компания (linked to company)'; + +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.ID IS 'Идентификатор записи'; + -- informationAccount - Информационные счета DROP TABLE IF EXISTS INFORMATION_ACCOUNT; CREATE TABLE INFORMATION_ACCOUNT ( - ID bigint PRIMARY KEY, ACCOUNT_ID bigint, - CLEARING_ACCOUNT_ID bigint + CLEARING_ACCOUNT_ID bigint, + COMPANY_ID bigint, + ID bigint PRIMARY KEY ); COMMENT ON TABLE INFORMATION_ACCOUNT IS 'Информационные счета'; +COMMENT ON COLUMN INFORMATION_ACCOUNT.ACCOUNT_ID IS 'Счет (linked to account)'; + +COMMENT ON COLUMN INFORMATION_ACCOUNT.CLEARING_ACCOUNT_ID IS 'Счета (linked to account)'; + +COMMENT ON COLUMN INFORMATION_ACCOUNT.COMPANY_ID IS 'Компания (linked to company)'; + COMMENT ON COLUMN INFORMATION_ACCOUNT.ID IS 'Идентификатор записи'; -COMMENT ON COLUMN INFORMATION_ACCOUNT.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; - -COMMENT ON COLUMN INFORMATION_ACCOUNT.CLEARING_ACCOUNT_ID IS 'Идентификатор клирингового счета (linked to account)'; - -- History log of informationAccount - Информационные счета DROP TABLE IF EXISTS INFORMATION_ACCOUNT_HISTORY; @@ -1800,21 +1817,24 @@ CREATE TABLE INFORMATION_ACCOUNT_HISTORY INFORMATION_ACCOUNT_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, - ID bigint PRIMARY KEY, ACCOUNT_ID bigint, - CLEARING_ACCOUNT_ID bigint + CLEARING_ACCOUNT_ID bigint, + COMPANY_ID bigint, + ID bigint PRIMARY KEY ); COMMENT ON TABLE INFORMATION_ACCOUNT_HISTORY IS 'История изменений таблицы informationAccount'; COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.INFORMATION_ACCOUNT_ID IS 'Идентификатор записи в таблице INFORMATION_ACCOUNT'; COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.EVENT_TIME IS 'Дата и время изменения'; COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; +COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.ACCOUNT_ID IS 'Счет (linked to account)'; + +COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.CLEARING_ACCOUNT_ID IS 'Счета (linked to account)'; + +COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.COMPANY_ID IS 'Компания (linked to company)'; + COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.ID IS 'Идентификатор записи'; -COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; - -COMMENT ON COLUMN INFORMATION_ACCOUNT_HISTORY.CLEARING_ACCOUNT_ID IS 'Идентификатор клирингового счета (linked to account)'; - -- accountRouting - Маршрутизация счета DROP TABLE IF EXISTS ACCOUNT_ROUTING; CREATE TABLE ACCOUNT_ROUTING @@ -1830,7 +1850,7 @@ COMMENT ON COLUMN ACCOUNT_ROUTING.ID IS 'Идентификатор записи COMMENT ON COLUMN ACCOUNT_ROUTING.DESTINATION_ID IS 'Счет-назначение (зачисления) (linked to account)'; -COMMENT ON COLUMN ACCOUNT_ROUTING.RELATION_ID IS 'Идентификатор договорных отношений (linked to relation)'; +COMMENT ON COLUMN ACCOUNT_ROUTING.RELATION_ID IS 'Договорные отношения (linked to relation)'; COMMENT ON COLUMN ACCOUNT_ROUTING.SOURCE_ID IS 'Счет-источник (списания) (linked to account)'; @@ -1856,7 +1876,7 @@ COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.ID IS 'Идентификатор за COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.DESTINATION_ID IS 'Счет-назначение (зачисления) (linked to account)'; -COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.RELATION_ID IS 'Идентификатор договорных отношений (linked to relation)'; +COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.RELATION_ID IS 'Договорные отношения (linked to relation)'; COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.SOURCE_ID IS 'Счет-источник (списания) (linked to account)'; @@ -1864,9 +1884,6 @@ COMMENT ON COLUMN ACCOUNT_ROUTING_HISTORY.SOURCE_ID IS 'Счет-источни DROP TABLE IF EXISTS SECURITY; CREATE TABLE SECURITY ( - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, INSTRUMENT_TYPE varchar(4), ISSUER_ID bigint, SHORT_NAME varchar(255), @@ -1874,19 +1891,16 @@ CREATE TABLE SECURITY SHORT_NAME_ENG varchar(255), FULL_NAME_ENG varchar(255), SECURITY_SYMBOL varchar(255), - WORKFLOW_STATUS varchar(4) + WORKFLOW_STATUS varchar(4), + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE SECURITY IS 'Инструменты'; -COMMENT ON COLUMN SECURITY.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN SECURITY.INSTRUMENT_TYPE IS 'Наименование типа инструмента (linked to instrumentType)'; -COMMENT ON COLUMN SECURITY.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN SECURITY.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN SECURITY.INSTRUMENT_TYPE IS 'Идентификатор типа инструмента (linked to instrumentType)'; - -COMMENT ON COLUMN SECURITY.ISSUER_ID IS 'Идентификатор эмитента (linked to company)'; +COMMENT ON COLUMN SECURITY.ISSUER_ID IS 'Наименование эмитента (linked to company)'; COMMENT ON COLUMN SECURITY.SHORT_NAME IS 'Краткое наименование инструмента'; @@ -1898,7 +1912,13 @@ COMMENT ON COLUMN SECURITY.FULL_NAME_ENG IS 'Полное наименовани COMMENT ON COLUMN SECURITY.SECURITY_SYMBOL IS 'Код инструмента'; -COMMENT ON COLUMN SECURITY.WORKFLOW_STATUS IS 'Идентификатор статуса (linked to workflowStatus)'; +COMMENT ON COLUMN SECURITY.WORKFLOW_STATUS IS 'Наименование статуса (linked to workflowStatus)'; + +COMMENT ON COLUMN SECURITY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN SECURITY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN SECURITY.UPDATED_AT IS 'Дата и время изменения записи'; -- History log of security - Инструменты @@ -1908,9 +1928,6 @@ CREATE TABLE SECURITY_HISTORY SECURITY_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, INSTRUMENT_TYPE varchar(4), ISSUER_ID bigint, SHORT_NAME varchar(255), @@ -1918,22 +1935,19 @@ CREATE TABLE SECURITY_HISTORY SHORT_NAME_ENG varchar(255), FULL_NAME_ENG varchar(255), SECURITY_SYMBOL varchar(255), - WORKFLOW_STATUS varchar(4) + WORKFLOW_STATUS varchar(4), + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE SECURITY_HISTORY IS 'История изменений таблицы security'; COMMENT ON COLUMN SECURITY_HISTORY.SECURITY_ID IS 'Идентификатор записи в таблице SECURITY'; COMMENT ON COLUMN SECURITY_HISTORY.EVENT_TIME IS 'Дата и время изменения'; COMMENT ON COLUMN SECURITY_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; -COMMENT ON COLUMN SECURITY_HISTORY.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN SECURITY_HISTORY.INSTRUMENT_TYPE IS 'Наименование типа инструмента (linked to instrumentType)'; -COMMENT ON COLUMN SECURITY_HISTORY.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN SECURITY_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN SECURITY_HISTORY.INSTRUMENT_TYPE IS 'Идентификатор типа инструмента (linked to instrumentType)'; - -COMMENT ON COLUMN SECURITY_HISTORY.ISSUER_ID IS 'Идентификатор эмитента (linked to company)'; +COMMENT ON COLUMN SECURITY_HISTORY.ISSUER_ID IS 'Наименование эмитента (linked to company)'; COMMENT ON COLUMN SECURITY_HISTORY.SHORT_NAME IS 'Краткое наименование инструмента'; @@ -1945,24 +1959,30 @@ COMMENT ON COLUMN SECURITY_HISTORY.FULL_NAME_ENG IS 'Полное наимено COMMENT ON COLUMN SECURITY_HISTORY.SECURITY_SYMBOL IS 'Код инструмента'; -COMMENT ON COLUMN SECURITY_HISTORY.WORKFLOW_STATUS IS 'Идентификатор статуса (linked to workflowStatus)'; +COMMENT ON COLUMN SECURITY_HISTORY.WORKFLOW_STATUS IS 'Наименование статуса (linked to workflowStatus)'; + +COMMENT ON COLUMN SECURITY_HISTORY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN SECURITY_HISTORY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN SECURITY_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; -- currency - Инструменты Валюты DROP TABLE IF EXISTS CURRENCY; CREATE TABLE CURRENCY ( - ID bigint PRIMARY KEY, COUNTRY_CODE varchar(4), - CURRENCY_CODE varchar(4) + CURRENCY_CODE varchar(4), + ID bigint PRIMARY KEY ); COMMENT ON TABLE CURRENCY IS 'Инструменты Валюты'; +COMMENT ON COLUMN CURRENCY.COUNTRY_CODE IS 'Код страны (linked to countryCode)'; + +COMMENT ON COLUMN CURRENCY.CURRENCY_CODE IS 'Код валюты (linked to currencyCode)'; + COMMENT ON COLUMN CURRENCY.ID IS 'Идентификатор записи'; -COMMENT ON COLUMN CURRENCY.COUNTRY_CODE IS 'Идентификатор кода страны (linked to countryCode)'; - -COMMENT ON COLUMN CURRENCY.CURRENCY_CODE IS 'Идентификатор кода валюты (linked to currencyCode)'; - -- History log of currency - Инструменты Валюты DROP TABLE IF EXISTS CURRENCY_HISTORY; @@ -1971,26 +1991,25 @@ CREATE TABLE CURRENCY_HISTORY CURRENCY_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, - ID bigint PRIMARY KEY, COUNTRY_CODE varchar(4), - CURRENCY_CODE varchar(4) + CURRENCY_CODE varchar(4), + ID bigint PRIMARY KEY ); COMMENT ON TABLE CURRENCY_HISTORY IS 'История изменений таблицы currency'; COMMENT ON COLUMN CURRENCY_HISTORY.CURRENCY_ID IS 'Идентификатор записи в таблице CURRENCY'; COMMENT ON COLUMN CURRENCY_HISTORY.EVENT_TIME IS 'Дата и время изменения'; COMMENT ON COLUMN CURRENCY_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; +COMMENT ON COLUMN CURRENCY_HISTORY.COUNTRY_CODE IS 'Код страны (linked to countryCode)'; + +COMMENT ON COLUMN CURRENCY_HISTORY.CURRENCY_CODE IS 'Код валюты (linked to currencyCode)'; + COMMENT ON COLUMN CURRENCY_HISTORY.ID IS 'Идентификатор записи'; -COMMENT ON COLUMN CURRENCY_HISTORY.COUNTRY_CODE IS 'Идентификатор кода страны (linked to countryCode)'; - -COMMENT ON COLUMN CURRENCY_HISTORY.CURRENCY_CODE IS 'Идентификатор кода валюты (linked to currencyCode)'; - -- moneyMarketSecurity - Инструменты Денежного рынка DROP TABLE IF EXISTS MONEY_MARKET_SECURITY; CREATE TABLE MONEY_MARKET_SECURITY ( - ID bigint PRIMARY KEY, SECURITY_ID bigint, DESCRIPTION varchar(255), START_DATE date, @@ -2000,13 +2019,13 @@ CREATE TABLE MONEY_MARKET_SECURITY INSTRUMENT_TYPE varchar(4), FULL_NAME varchar(255), SECURITY_SYMBOL varchar(255), - TERM_TYPE varchar(4) + TERM_TYPE varchar(4), + LOT_SIZE numeric(72, 2), + ID bigint PRIMARY KEY ); COMMENT ON TABLE MONEY_MARKET_SECURITY IS 'Инструменты Денежного рынка'; -COMMENT ON COLUMN MONEY_MARKET_SECURITY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN MONEY_MARKET_SECURITY.SECURITY_ID IS 'Идентификатор инструмента (linked to security)'; +COMMENT ON COLUMN MONEY_MARKET_SECURITY.SECURITY_ID IS 'Наименование инструмента (linked to security)'; COMMENT ON COLUMN MONEY_MARKET_SECURITY.DESCRIPTION IS 'Описание'; @@ -2018,13 +2037,17 @@ COMMENT ON COLUMN MONEY_MARKET_SECURITY.NOMINAL_VALUE IS 'Номинал'; COMMENT ON COLUMN MONEY_MARKET_SECURITY.NOMINAL_CURRENCY IS 'Валюта номинала (linked to currencyCode)'; -COMMENT ON COLUMN MONEY_MARKET_SECURITY.INSTRUMENT_TYPE IS 'Идентификатор типа инструмента (linked to instrumentType)'; +COMMENT ON COLUMN MONEY_MARKET_SECURITY.INSTRUMENT_TYPE IS 'Наименование типа инструмента (linked to instrumentType)'; COMMENT ON COLUMN MONEY_MARKET_SECURITY.FULL_NAME IS 'Полное наименование инструмента'; COMMENT ON COLUMN MONEY_MARKET_SECURITY.SECURITY_SYMBOL IS 'Код инструмента'; -COMMENT ON COLUMN MONEY_MARKET_SECURITY.TERM_TYPE IS 'Идентификатор вида инструмента (linked to termType)'; +COMMENT ON COLUMN MONEY_MARKET_SECURITY.TERM_TYPE IS 'Наименование вида инструмента (linked to termType)'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY.LOT_SIZE IS 'Размер лота (linked to listing)'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY.ID IS 'Идентификатор записи'; -- History log of moneyMarketSecurity - Инструменты Денежного рынка @@ -2034,7 +2057,6 @@ CREATE TABLE MONEY_MARKET_SECURITY_HISTORY MONEY_MARKET_SECURITY_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, - ID bigint PRIMARY KEY, SECURITY_ID bigint, DESCRIPTION varchar(255), START_DATE date, @@ -2045,16 +2067,15 @@ CREATE TABLE MONEY_MARKET_SECURITY_HISTORY FULL_NAME varchar(255), SECURITY_SYMBOL varchar(255), TERM_TYPE varchar(4), - ID numeric(72, 2) PRIMARY KEY + LOT_SIZE numeric(72, 2), + ID bigint PRIMARY KEY ); COMMENT ON TABLE MONEY_MARKET_SECURITY_HISTORY IS 'История изменений таблицы moneyMarketSecurity'; COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.MONEY_MARKET_SECURITY_ID IS 'Идентификатор записи в таблице MONEY_MARKET_SECURITY'; COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.EVENT_TIME IS 'Дата и время изменения'; COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; -COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.SECURITY_ID IS 'Идентификатор инструмента (linked to security)'; +COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.SECURITY_ID IS 'Наименование инструмента (linked to security)'; COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.DESCRIPTION IS 'Описание'; @@ -2066,40 +2087,36 @@ COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.NOMINAL_VALUE IS 'Номинал COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.NOMINAL_CURRENCY IS 'Валюта номинала (linked to currencyCode)'; -COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.INSTRUMENT_TYPE IS 'Идентификатор типа инструмента (linked to instrumentType)'; +COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.INSTRUMENT_TYPE IS 'Наименование типа инструмента (linked to instrumentType)'; COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.FULL_NAME IS 'Полное наименование инструмента'; COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.SECURITY_SYMBOL IS 'Код инструмента'; -COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.TERM_TYPE IS 'Идентификатор вида инструмента (linked to termType)'; +COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.TERM_TYPE IS 'Наименование вида инструмента (linked to termType)'; -COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.ID IS 'Размер лота (linked to listing)'; +COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.LOT_SIZE IS 'Размер лота (linked to listing)'; + +COMMENT ON COLUMN MONEY_MARKET_SECURITY_HISTORY.ID IS 'Идентификатор записи'; -- listing - Листинг инструментов DROP TABLE IF EXISTS LISTING; CREATE TABLE LISTING ( - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, SECURITY_ID bigint, LOT_SIZE numeric(72, 2), MARKET varchar(4), SYMBOL_CODE varchar(255), SYMBOL_NAME varchar(255), TRADING_CURRENCY varchar(4), - WORKFLOW_STATUS varchar(4) + WORKFLOW_STATUS varchar(4), + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE LISTING IS 'Листинг инструментов'; -COMMENT ON COLUMN LISTING.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN LISTING.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN LISTING.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN LISTING.SECURITY_ID IS 'Идентификатор инструмента (linked to security)'; +COMMENT ON COLUMN LISTING.SECURITY_ID IS 'Наименование инструмента (linked to security)'; COMMENT ON COLUMN LISTING.LOT_SIZE IS 'Размер лота'; @@ -2109,9 +2126,15 @@ COMMENT ON COLUMN LISTING.SYMBOL_CODE IS 'Код инструмента на т COMMENT ON COLUMN LISTING.SYMBOL_NAME IS 'Название инструмента на торговой площадке'; -COMMENT ON COLUMN LISTING.TRADING_CURRENCY IS 'Идентификатор кода валюты расчета (linked to currency)'; +COMMENT ON COLUMN LISTING.TRADING_CURRENCY IS 'Наименование кода валюты расчета (linked to currency)'; -COMMENT ON COLUMN LISTING.WORKFLOW_STATUS IS 'Идентификатор статуса листинга в системе (linked to workflowStatus)'; +COMMENT ON COLUMN LISTING.WORKFLOW_STATUS IS 'Наименование статуса листинга в системе (linked to workflowStatus)'; + +COMMENT ON COLUMN LISTING.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN LISTING.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN LISTING.UPDATED_AT IS 'Дата и время изменения записи'; -- History log of listing - Листинг инструментов @@ -2121,29 +2144,23 @@ CREATE TABLE LISTING_HISTORY LISTING_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, SECURITY_ID bigint, LOT_SIZE numeric(72, 2), MARKET varchar(4), SYMBOL_CODE varchar(255), SYMBOL_NAME varchar(255), TRADING_CURRENCY varchar(4), - WORKFLOW_STATUS varchar(4) + WORKFLOW_STATUS varchar(4), + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE LISTING_HISTORY IS 'История изменений таблицы listing'; COMMENT ON COLUMN LISTING_HISTORY.LISTING_ID IS 'Идентификатор записи в таблице LISTING'; COMMENT ON COLUMN LISTING_HISTORY.EVENT_TIME IS 'Дата и время изменения'; COMMENT ON COLUMN LISTING_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; -COMMENT ON COLUMN LISTING_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN LISTING_HISTORY.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN LISTING_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN LISTING_HISTORY.SECURITY_ID IS 'Идентификатор инструмента (linked to security)'; +COMMENT ON COLUMN LISTING_HISTORY.SECURITY_ID IS 'Наименование инструмента (linked to security)'; COMMENT ON COLUMN LISTING_HISTORY.LOT_SIZE IS 'Размер лота'; @@ -2153,35 +2170,35 @@ COMMENT ON COLUMN LISTING_HISTORY.SYMBOL_CODE IS 'Код инструмента COMMENT ON COLUMN LISTING_HISTORY.SYMBOL_NAME IS 'Название инструмента на торговой площадке'; -COMMENT ON COLUMN LISTING_HISTORY.TRADING_CURRENCY IS 'Идентификатор кода валюты расчета (linked to currency)'; +COMMENT ON COLUMN LISTING_HISTORY.TRADING_CURRENCY IS 'Наименование кода валюты расчета (linked to currency)'; -COMMENT ON COLUMN LISTING_HISTORY.WORKFLOW_STATUS IS 'Идентификатор статуса листинга в системе (linked to workflowStatus)'; +COMMENT ON COLUMN LISTING_HISTORY.WORKFLOW_STATUS IS 'Наименование статуса листинга в системе (linked to workflowStatus)'; + +COMMENT ON COLUMN LISTING_HISTORY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN LISTING_HISTORY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN LISTING_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; -- market - Торговые секции DROP TABLE IF EXISTS MARKET; CREATE TABLE MARKET ( - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, DESCRIPTION varchar(255), EXCHANGE_ID bigint, NAME varchar(255), CODE varchar(4), SETTLEMENT_CURRENCY varchar(4), - SECTOR varchar(4) + SECTOR varchar(4), + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE MARKET IS 'Торговые секции'; -COMMENT ON COLUMN MARKET.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN MARKET.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN MARKET.UPDATED_AT IS 'Дата и время изменения записи'; - COMMENT ON COLUMN MARKET.DESCRIPTION IS 'Описание'; -COMMENT ON COLUMN MARKET.EXCHANGE_ID IS 'Идентификатор площадки (linked to company)'; +COMMENT ON COLUMN MARKET.EXCHANGE_ID IS 'Наименование площадки (linked to company)'; COMMENT ON COLUMN MARKET.NAME IS 'Наименование'; @@ -2189,7 +2206,13 @@ COMMENT ON COLUMN MARKET.CODE IS 'Секция'; COMMENT ON COLUMN MARKET.SETTLEMENT_CURRENCY IS 'Валютный код расчетов (linked to currency)'; -COMMENT ON COLUMN MARKET.SECTOR IS 'Идентификатор секции (linked to sector)'; +COMMENT ON COLUMN MARKET.SECTOR IS 'Наименование секции (linked to sector)'; + +COMMENT ON COLUMN MARKET.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN MARKET.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN MARKET.UPDATED_AT IS 'Дата и время изменения записи'; -- History log of market - Торговые секции @@ -2199,30 +2222,24 @@ CREATE TABLE MARKET_HISTORY MARKET_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, DESCRIPTION varchar(255), EXCHANGE_ID bigint, NAME varchar(255), CODE varchar(4), SETTLEMENT_CURRENCY varchar(4), - SECTOR varchar(4) + SECTOR varchar(4), + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE MARKET_HISTORY IS 'История изменений таблицы market'; COMMENT ON COLUMN MARKET_HISTORY.MARKET_ID IS 'Идентификатор записи в таблице MARKET'; COMMENT ON COLUMN MARKET_HISTORY.EVENT_TIME IS 'Дата и время изменения'; COMMENT ON COLUMN MARKET_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; -COMMENT ON COLUMN MARKET_HISTORY.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN MARKET_HISTORY.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN MARKET_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; - COMMENT ON COLUMN MARKET_HISTORY.DESCRIPTION IS 'Описание'; -COMMENT ON COLUMN MARKET_HISTORY.EXCHANGE_ID IS 'Идентификатор площадки (linked to company)'; +COMMENT ON COLUMN MARKET_HISTORY.EXCHANGE_ID IS 'Наименование площадки (linked to company)'; COMMENT ON COLUMN MARKET_HISTORY.NAME IS 'Наименование'; @@ -2230,16 +2247,19 @@ COMMENT ON COLUMN MARKET_HISTORY.CODE IS 'Секция'; COMMENT ON COLUMN MARKET_HISTORY.SETTLEMENT_CURRENCY IS 'Валютный код расчетов (linked to currency)'; -COMMENT ON COLUMN MARKET_HISTORY.SECTOR IS 'Идентификатор секции (linked to sector)'; +COMMENT ON COLUMN MARKET_HISTORY.SECTOR IS 'Наименование секции (linked to sector)'; + +COMMENT ON COLUMN MARKET_HISTORY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN MARKET_HISTORY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN MARKET_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; -- accountBalance - Информация об остатках ден. средств DROP TABLE IF EXISTS ACCOUNT_BALANCE; CREATE TABLE ACCOUNT_BALANCE ( - ID bigint PRIMARY KEY, COMPANY_ID bigint, - CREATED_AT timestamp, - UPDATED_AT timestamp, ACCOUNT_ID bigint, ACCOUNT_TYPE varchar(4), ACCOUNT varchar(50), @@ -2257,23 +2277,20 @@ CREATE TABLE ACCOUNT_BALANCE CURRENCY_CODE varchar(4), TRADING_CODE varchar(255), SHORT_NAME varchar(255), - FULL_NAME varchar(255) + FULL_NAME varchar(255), + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE ACCOUNT_BALANCE IS 'Информация об остатках ден. средств'; -COMMENT ON COLUMN ACCOUNT_BALANCE.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN ACCOUNT_BALANCE.COMPANY_ID IS 'Наименование участника (linked to company)'; -COMMENT ON COLUMN ACCOUNT_BALANCE.COMPANY_ID IS 'Идентификатор участника (linked to company)'; - -COMMENT ON COLUMN ACCOUNT_BALANCE.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN ACCOUNT_BALANCE.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN ACCOUNT_BALANCE.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; +COMMENT ON COLUMN ACCOUNT_BALANCE.ACCOUNT_ID IS 'Наименование счета (linked to account)'; COMMENT ON COLUMN ACCOUNT_BALANCE.ACCOUNT_TYPE IS 'Тип счета (linked to account)'; -COMMENT ON COLUMN ACCOUNT_BALANCE.ACCOUNT IS 'Счет'; +COMMENT ON COLUMN ACCOUNT_BALANCE.ACCOUNT IS 'Наименование счета'; COMMENT ON COLUMN ACCOUNT_BALANCE.OPEN_BALANCE_AMOUNT IS 'Начальная сумма после расчетной организации'; @@ -2305,6 +2322,12 @@ COMMENT ON COLUMN ACCOUNT_BALANCE.SHORT_NAME IS 'Короткое наимено COMMENT ON COLUMN ACCOUNT_BALANCE.FULL_NAME IS 'Полное наименование Участника (linked to company)'; +COMMENT ON COLUMN ACCOUNT_BALANCE.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN ACCOUNT_BALANCE.UPDATED_AT IS 'Дата и время изменения записи'; + -- History log of accountBalance - Информация об остатках ден. средств DROP TABLE IF EXISTS ACCOUNT_BALANCE_HISTORY; @@ -2313,10 +2336,7 @@ CREATE TABLE ACCOUNT_BALANCE_HISTORY ACCOUNT_BALANCE_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, - ID bigint PRIMARY KEY, COMPANY_ID bigint, - CREATED_AT timestamp, - UPDATED_AT timestamp, ACCOUNT_ID bigint, ACCOUNT_TYPE varchar(4), ACCOUNT varchar(50), @@ -2334,26 +2354,23 @@ CREATE TABLE ACCOUNT_BALANCE_HISTORY CURRENCY_CODE varchar(4), TRADING_CODE varchar(255), SHORT_NAME varchar(255), - FULL_NAME varchar(255) + FULL_NAME varchar(255), + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE ACCOUNT_BALANCE_HISTORY IS 'История изменений таблицы accountBalance'; COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT_BALANCE_ID IS 'Идентификатор записи в таблице ACCOUNT_BALANCE'; COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.EVENT_TIME IS 'Дата и время изменения'; COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.COMPANY_ID IS 'Наименование участника (linked to company)'; -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.COMPANY_ID IS 'Идентификатор участника (linked to company)'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT_ID IS 'Наименование счета (linked to account)'; COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT_TYPE IS 'Тип счета (linked to account)'; -COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT IS 'Счет'; +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ACCOUNT IS 'Наименование счета'; COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.OPEN_BALANCE_AMOUNT IS 'Начальная сумма после расчетной организации'; @@ -2385,13 +2402,16 @@ COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.SHORT_NAME IS 'Короткое наи COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.FULL_NAME IS 'Полное наименование Участника (linked to company)'; --- balanceRegistry - Реестр остатков денежных средств -DROP TABLE IF EXISTS BALANCE_REGISTRY; -CREATE TABLE BALANCE_REGISTRY +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN ACCOUNT_BALANCE_HISTORY.UPDATED_AT IS 'Дата и время изменения записи'; + +-- balanceRegister - Реестр остатков денежных средств +DROP TABLE IF EXISTS BALANCE_REGISTER; +CREATE TABLE BALANCE_REGISTER ( - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, S_DF01_DATE timestamp, CURRENCY_CODE varchar(4), SET_HOUSE_NAME varchar(255), @@ -2404,47 +2424,52 @@ CREATE TABLE BALANCE_REGISTRY MARKET bigint, FULL_NAME varchar(255), TYPE_REMAINS varchar(4), - DOC_NUMBER varchar(255) + DOC_NUMBER varchar(255), + COMPANY_ID bigint, + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); -COMMENT ON TABLE BALANCE_REGISTRY IS 'Реестр остатков денежных средств'; +COMMENT ON TABLE BALANCE_REGISTER IS 'Реестр остатков денежных средств'; -COMMENT ON COLUMN BALANCE_REGISTRY.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN BALANCE_REGISTER.S_DF01_DATE IS 'Дата создания записи в S_DF01'; -COMMENT ON COLUMN BALANCE_REGISTRY.CREATED_AT IS 'Дата и время создания записи'; +COMMENT ON COLUMN BALANCE_REGISTER.CURRENCY_CODE IS 'Код валюты (linked to currencyCode)'; -COMMENT ON COLUMN BALANCE_REGISTRY.UPDATED_AT IS 'Дата и время изменения записи'; +COMMENT ON COLUMN BALANCE_REGISTER.SET_HOUSE_NAME IS 'Наименование РО'; -COMMENT ON COLUMN BALANCE_REGISTRY.S_DF01_DATE IS 'Дата создания записи в S_DF01'; +COMMENT ON COLUMN BALANCE_REGISTER.ACCOUNT IS 'Номер торгового/клирингового счета'; -COMMENT ON COLUMN BALANCE_REGISTRY.CURRENCY_CODE IS 'Код валюты (linked to currencyCode)'; +COMMENT ON COLUMN BALANCE_REGISTER.INFO_ACCOUNT IS 'Номер счета внутреннего учета СПВБ'; -COMMENT ON COLUMN BALANCE_REGISTRY.SET_HOUSE_NAME IS 'Наименование РО'; +COMMENT ON COLUMN BALANCE_REGISTER.REMAINDER_SUM IS 'Остаток денежных средст'; -COMMENT ON COLUMN BALANCE_REGISTRY.ACCOUNT IS 'Номер торгового/клирингового счета'; +COMMENT ON COLUMN BALANCE_REGISTER.BLOCKED_SUM IS 'Сумма блокированных денежных средств'; -COMMENT ON COLUMN BALANCE_REGISTRY.INFO_ACCOUNT IS 'Номер счета внутреннего учета СПВБ'; +COMMENT ON COLUMN BALANCE_REGISTER.UNBLOCKED_SUM IS 'Сумма свободных денежных средств'; -COMMENT ON COLUMN BALANCE_REGISTRY.REMAINDER_SUM IS 'Остаток денежных средст'; +COMMENT ON COLUMN BALANCE_REGISTER.INN IS 'Идентификационный номер налогоплательщика (ИНН)'; -COMMENT ON COLUMN BALANCE_REGISTRY.BLOCKED_SUM IS 'Сумма блокированных денежных средств'; +COMMENT ON COLUMN BALANCE_REGISTER.MARKET IS 'Сегмент рынка (linked to market)'; -COMMENT ON COLUMN BALANCE_REGISTRY.UNBLOCKED_SUM IS 'Сумма свободных денежных средств'; +COMMENT ON COLUMN BALANCE_REGISTER.FULL_NAME IS 'Наименование Участника Клиринга'; -COMMENT ON COLUMN BALANCE_REGISTRY.INN IS 'Идентификационный номер налогоплательщика (ИНН)'; +COMMENT ON COLUMN BALANCE_REGISTER.TYPE_REMAINS IS 'Тип остатка'; -COMMENT ON COLUMN BALANCE_REGISTRY.MARKET IS 'Сегмент рынка (linked to market)'; +COMMENT ON COLUMN BALANCE_REGISTER.DOC_NUMBER IS 'Номер документа'; -COMMENT ON COLUMN BALANCE_REGISTRY.FULL_NAME IS 'Наименование Участника Клиринга'; +COMMENT ON COLUMN BALANCE_REGISTER.COMPANY_ID IS 'Компания (linked to company)'; -COMMENT ON COLUMN BALANCE_REGISTRY.TYPE_REMAINS IS 'Тип остатка'; +COMMENT ON COLUMN BALANCE_REGISTER.ID IS 'Идентификатор записи'; -COMMENT ON COLUMN BALANCE_REGISTRY.DOC_NUMBER IS 'Номер документа'; +COMMENT ON COLUMN BALANCE_REGISTER.CREATED_AT IS 'Дата и время создания записи'; --- managementJournal - Журнал монитора и контроля +COMMENT ON COLUMN BALANCE_REGISTER.UPDATED_AT IS 'Дата и время изменения записи'; + +-- managementJournal - Журнал мониторинга и контроля DROP TABLE IF EXISTS MANAGEMENT_JOURNAL; CREATE TABLE MANAGEMENT_JOURNAL ( - ID bigint PRIMARY KEY, COMPANY_ID bigint, USER_ID bigint, MANAGEMENT_JOURNAL_TYPE varchar(4), @@ -2454,12 +2479,11 @@ CREATE TABLE MANAGEMENT_JOURNAL CHANGE_ACCESS_SIGN varchar(4), CHANGE_DATA_SIGN varchar(4), EVENT_DATE timestamp, - UPDATED_AT timestamp, - CREATED_AT timestamp + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); -COMMENT ON TABLE MANAGEMENT_JOURNAL IS 'Журнал монитора и контроля'; - -COMMENT ON COLUMN MANAGEMENT_JOURNAL.ID IS 'Идентификатор'; +COMMENT ON TABLE MANAGEMENT_JOURNAL IS 'Журнал мониторинга и контроля'; COMMENT ON COLUMN MANAGEMENT_JOURNAL.COMPANY_ID IS 'Участник (linked to company)'; @@ -2479,15 +2503,16 @@ COMMENT ON COLUMN MANAGEMENT_JOURNAL.CHANGE_DATA_SIGN IS 'Признак изм COMMENT ON COLUMN MANAGEMENT_JOURNAL.EVENT_DATE IS 'Дата события ЕГРЮЛ'; -COMMENT ON COLUMN MANAGEMENT_JOURNAL.UPDATED_AT IS 'Изменено'; +COMMENT ON COLUMN MANAGEMENT_JOURNAL.ID IS 'Идентификатор записи'; COMMENT ON COLUMN MANAGEMENT_JOURNAL.CREATED_AT IS 'Создано'; +COMMENT ON COLUMN MANAGEMENT_JOURNAL.UPDATED_AT IS 'Изменено'; + -- inDocumentJournal - Журнал входящих документов DROP TABLE IF EXISTS IN_DOCUMENT_JOURNAL; CREATE TABLE IN_DOCUMENT_JOURNAL ( - ID bigint PRIMARY KEY, REGISTRATION_DATE date, REGISTRATION_TIME time, REGISTRATION_NUMBER bigint, @@ -2501,12 +2526,11 @@ CREATE TABLE IN_DOCUMENT_JOURNAL DOSSIER_NUMBER varchar(50), COMMENT varchar(255), RECEIPT_DATE date, - RESULT_STATUS varchar(4) + RESULT_STATUS varchar(4), + ID bigint PRIMARY KEY ); COMMENT ON TABLE IN_DOCUMENT_JOURNAL IS 'Журнал входящих документов'; -COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.ID IS 'Идентификатор'; - COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.REGISTRATION_DATE IS 'Дата регистрации'; COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.REGISTRATION_TIME IS 'Время регистрации'; @@ -2535,11 +2559,12 @@ COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.RECEIPT_DATE IS 'Дата получени COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.RESULT_STATUS IS 'Статус загрузки документа (linked to resultStatus)'; +COMMENT ON COLUMN IN_DOCUMENT_JOURNAL.ID IS 'Идентификатор записи'; + -- outDocumentJournal - Журнал исходящих документов DROP TABLE IF EXISTS OUT_DOCUMENT_JOURNAL; CREATE TABLE OUT_DOCUMENT_JOURNAL ( - ID bigint PRIMARY KEY, REGISTRATION_DATE date, REGISTRATION_TIME time, REGISTRATION_NUMBER bigint, @@ -2552,12 +2577,11 @@ CREATE TABLE OUT_DOCUMENT_JOURNAL AMOUNT numeric(72, 2), DOSSIER_NUMBER varchar(50), POST_DATE date, - RESULT_STATUS varchar(4) + RESULT_STATUS varchar(4), + ID bigint PRIMARY KEY ); COMMENT ON TABLE OUT_DOCUMENT_JOURNAL IS 'Журнал исходящих документов'; -COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.ID IS 'Идентификатор'; - COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.REGISTRATION_DATE IS 'Дата регистрации'; COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.REGISTRATION_TIME IS 'Время регистрации'; @@ -2584,17 +2608,15 @@ COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.POST_DATE IS 'Дата почтового COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.RESULT_STATUS IS 'Статус выгрузки документа (linked to resultStatus)'; +COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.ID IS 'Идентификатор записи'; + -- executionDeposit - Сделки DROP TABLE IF EXISTS EXECUTION_DEPOSIT; CREATE TABLE EXECUTION_DEPOSIT ( - ID bigint PRIMARY KEY, EXCHANGE_EXECUTION_ID bigint, EXCHANGE_EXECUTION_TIME timestamp, - CREATED_AT time, - UPDATED_AT time, TRADING_DATE date, - CLEARING_DATE date, ACCOUNT_ID bigint, MARKET varchar(4), PRICE numeric(72, 18), @@ -2616,24 +2638,20 @@ CREATE TABLE EXECUTION_DEPOSIT SECURITY_ID bigint, COUNTER_PARTY_ID bigint, COVERAGE_STATUS varchar(4), - SESSION_ID bigint + SESSION_ID bigint, + ID bigint PRIMARY KEY, + CREATED_AT time, + UPDATED_AT time, + CLEARING_DATE date ); COMMENT ON TABLE EXECUTION_DEPOSIT IS 'Сделки'; -COMMENT ON COLUMN EXECUTION_DEPOSIT.ID IS 'ID записи'; - COMMENT ON COLUMN EXECUTION_DEPOSIT.EXCHANGE_EXECUTION_ID IS 'Идентификационный номер сделки в Торговой системе'; COMMENT ON COLUMN EXECUTION_DEPOSIT.EXCHANGE_EXECUTION_TIME IS 'Время заключения сделки в Торговой системе'; -COMMENT ON COLUMN EXECUTION_DEPOSIT.CREATED_AT IS 'Время регистрации сделки'; - -COMMENT ON COLUMN EXECUTION_DEPOSIT.UPDATED_AT IS 'Время изменения сделки'; - COMMENT ON COLUMN EXECUTION_DEPOSIT.TRADING_DATE IS 'Дата заключения сделки'; -COMMENT ON COLUMN EXECUTION_DEPOSIT.CLEARING_DATE IS 'Дата клиринга'; - COMMENT ON COLUMN EXECUTION_DEPOSIT.ACCOUNT_ID IS 'Торговый счет (linked to account)'; COMMENT ON COLUMN EXECUTION_DEPOSIT.MARKET IS 'Секция финансового инструмента (linked to market)'; @@ -2676,16 +2694,20 @@ COMMENT ON COLUMN EXECUTION_DEPOSIT.COUNTER_PARTY_ID IS 'Имя компании COMMENT ON COLUMN EXECUTION_DEPOSIT.COVERAGE_STATUS IS 'Cтатус достаточности обеспечения (linked to allowed)'; -COMMENT ON COLUMN EXECUTION_DEPOSIT.SESSION_ID IS 'Идентификатор сессии (linked to moneyMarketSession)'; +COMMENT ON COLUMN EXECUTION_DEPOSIT.SESSION_ID IS 'Наименование сессии (linked to moneyMarketSession)'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.CREATED_AT IS 'Время регистрации сделки'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.UPDATED_AT IS 'Время изменения сделки'; + +COMMENT ON COLUMN EXECUTION_DEPOSIT.CLEARING_DATE IS 'Дата клиринга'; -- dealRegister - Реестр сделок DROP TABLE IF EXISTS DEAL_REGISTER; CREATE TABLE DEAL_REGISTER ( - ID bigint PRIMARY KEY, - CREATED_AT time, - UPDATED_AT time, - CLEARING_DATE date, EXECUTION_ID bigint, EXCHANGE_EXECUTION_ID bigint, EXCHANGE_EXECUTION_TIME timestamp, @@ -2704,18 +2726,14 @@ CREATE TABLE DEAL_REGISTER SECURITY_ID bigint, COUNTER_PARTY_ID bigint, COVERAGE_STATUS varchar(4), - SESSION_ID bigint + SESSION_ID bigint, + ID bigint PRIMARY KEY, + CREATED_AT time, + UPDATED_AT time, + CLEARING_DATE date ); COMMENT ON TABLE DEAL_REGISTER IS 'Реестр сделок'; -COMMENT ON COLUMN DEAL_REGISTER.ID IS 'ID записи'; - -COMMENT ON COLUMN DEAL_REGISTER.CREATED_AT IS 'Время регистрации'; - -COMMENT ON COLUMN DEAL_REGISTER.UPDATED_AT IS 'Время изменения'; - -COMMENT ON COLUMN DEAL_REGISTER.CLEARING_DATE IS 'Дата клиринга'; - COMMENT ON COLUMN DEAL_REGISTER.EXECUTION_ID IS 'Идентификационный номер сделки в Клиринговой системе'; COMMENT ON COLUMN DEAL_REGISTER.EXCHANGE_EXECUTION_ID IS 'Идентификационный номер сделки в Торговой системе'; @@ -2746,22 +2764,26 @@ COMMENT ON COLUMN DEAL_REGISTER.SECURITY_FULL_NAME IS 'Наименование COMMENT ON COLUMN DEAL_REGISTER.SECURITY_SYMBOL IS 'Код инструмента в Торговой Системе'; -COMMENT ON COLUMN DEAL_REGISTER.SECURITY_ID IS 'Финансовый инструмент (linked to security)'; +COMMENT ON COLUMN DEAL_REGISTER.SECURITY_ID IS 'Финансовый инструмент (linked to moneyMarketSecurity)'; COMMENT ON COLUMN DEAL_REGISTER.COUNTER_PARTY_ID IS 'Имя компании-партнера, с которым заключена сделка (linked to company)'; COMMENT ON COLUMN DEAL_REGISTER.COVERAGE_STATUS IS 'Cтатус достаточности обеспечения (linked to allowed)'; -COMMENT ON COLUMN DEAL_REGISTER.SESSION_ID IS 'Идентификатор сессии (linked to moneyMarketSession)'; +COMMENT ON COLUMN DEAL_REGISTER.SESSION_ID IS 'Наименование сессии (linked to moneyMarketSession)'; + +COMMENT ON COLUMN DEAL_REGISTER.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN DEAL_REGISTER.CREATED_AT IS 'Время регистрации'; + +COMMENT ON COLUMN DEAL_REGISTER.UPDATED_AT IS 'Время изменения'; + +COMMENT ON COLUMN DEAL_REGISTER.CLEARING_DATE IS 'Дата клиринга'; -- admittedDealRegister - Реестр сделок, допущенных к клирингу DROP TABLE IF EXISTS ADMITTED_DEAL_REGISTER; CREATE TABLE ADMITTED_DEAL_REGISTER ( - ID bigint PRIMARY KEY, - CREATED_AT time, - UPDATED_AT time, - CLEARING_DATE date, EXECUTION_ID bigint, COMPANY_FULL_NAME varchar(255), TRADING_DATE date, @@ -2775,18 +2797,14 @@ CREATE TABLE ADMITTED_DEAL_REGISTER BUYER_FULL_NAME varchar(255), BUYER_CLEARING_CODE varchar(255), BUYER_ACCOUNT varchar(50), - AMOUNT numeric(72, 2) + AMOUNT numeric(72, 2), + ID bigint PRIMARY KEY, + CREATED_AT time, + UPDATED_AT time, + CLEARING_DATE date ); COMMENT ON TABLE ADMITTED_DEAL_REGISTER IS 'Реестр сделок, допущенных к клирингу'; -COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.ID IS 'ID записи'; - -COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.CREATED_AT IS 'Время регистрации'; - -COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.UPDATED_AT IS 'Время изменения'; - -COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.CLEARING_DATE IS 'Дата клиринга'; - COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.EXECUTION_ID IS 'Идентификационный номер сделки в Клиринговой системе'; COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.COMPANY_FULL_NAME IS 'Наименование биржи'; @@ -2815,14 +2833,18 @@ COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.BUYER_ACCOUNT IS 'Счет покупа COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.AMOUNT IS 'Сумма сделки'; +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.CREATED_AT IS 'Время регистрации'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.UPDATED_AT IS 'Время изменения'; + +COMMENT ON COLUMN ADMITTED_DEAL_REGISTER.CLEARING_DATE IS 'Дата клиринга'; + -- coveredDealRegister - Реестр сделок, прошедших процедуру контроля обеспечения DROP TABLE IF EXISTS COVERED_DEAL_REGISTER; CREATE TABLE COVERED_DEAL_REGISTER ( - ID bigint PRIMARY KEY, - CREATED_AT time, - UPDATED_AT time, - CLEARING_DATE date, EXECUTION_ID bigint, COMPANY_FULL_NAME varchar(255), TRADING_DATE date, @@ -2836,18 +2858,14 @@ CREATE TABLE COVERED_DEAL_REGISTER BUYER_FULL_NAME varchar(255), BUYER_CLEARING_CODE varchar(255), BUYER_ACCOUNT varchar(50), - AMOUNT numeric(72, 2) + AMOUNT numeric(72, 2), + ID bigint PRIMARY KEY, + CREATED_AT time, + UPDATED_AT time, + CLEARING_DATE date ); COMMENT ON TABLE COVERED_DEAL_REGISTER IS 'Реестр сделок, прошедших процедуру контроля обеспечения'; -COMMENT ON COLUMN COVERED_DEAL_REGISTER.ID IS 'ID записи'; - -COMMENT ON COLUMN COVERED_DEAL_REGISTER.CREATED_AT IS 'Время регистрации'; - -COMMENT ON COLUMN COVERED_DEAL_REGISTER.UPDATED_AT IS 'Время изменения'; - -COMMENT ON COLUMN COVERED_DEAL_REGISTER.CLEARING_DATE IS 'Дата клиринга'; - COMMENT ON COLUMN COVERED_DEAL_REGISTER.EXECUTION_ID IS 'Идентификационный номер сделки в Клиринговой системе'; COMMENT ON COLUMN COVERED_DEAL_REGISTER.COMPANY_FULL_NAME IS 'Наименование биржи'; @@ -2876,14 +2894,18 @@ COMMENT ON COLUMN COVERED_DEAL_REGISTER.BUYER_ACCOUNT IS 'Счет покупа COMMENT ON COLUMN COVERED_DEAL_REGISTER.AMOUNT IS 'Сумма сделки'; +COMMENT ON COLUMN COVERED_DEAL_REGISTER.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.CREATED_AT IS 'Время регистрации'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.UPDATED_AT IS 'Время изменения'; + +COMMENT ON COLUMN COVERED_DEAL_REGISTER.CLEARING_DATE IS 'Дата клиринга'; + -- uncoveredDealRegister - Реестр сделок, не прошедших процедуру контроля обеспечения DROP TABLE IF EXISTS UNCOVERED_DEAL_REGISTER; CREATE TABLE UNCOVERED_DEAL_REGISTER ( - ID bigint PRIMARY KEY, - CREATED_AT time, - UPDATED_AT time, - CLEARING_DATE date, EXECUTION_ID bigint, COMPANY_FULL_NAME varchar(255), TRADING_DATE date, @@ -2898,18 +2920,14 @@ CREATE TABLE UNCOVERED_DEAL_REGISTER BUYER_CLEARING_CODE varchar(255), BUYER_ACCOUNT varchar(50), AMOUNT numeric(72, 2), - RESULT varchar(4) + RESULT_STATUS varchar(4), + ID bigint PRIMARY KEY, + CREATED_AT time, + UPDATED_AT time, + CLEARING_DATE date ); COMMENT ON TABLE UNCOVERED_DEAL_REGISTER IS 'Реестр сделок, не прошедших процедуру контроля обеспечения'; -COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.ID IS 'ID записи'; - -COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.CREATED_AT IS 'Время регистрации'; - -COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.UPDATED_AT IS 'Время изменения'; - -COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.CLEARING_DATE IS 'Дата клиринга'; - COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.EXECUTION_ID IS 'Идентификационный номер сделки в Клиринговой системе'; COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.COMPANY_FULL_NAME IS 'Наименование биржи'; @@ -2938,32 +2956,32 @@ COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.BUYER_ACCOUNT IS 'Счет покуп COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.AMOUNT IS 'Сумма сделки'; -COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.RESULT IS 'Результат клиринга (linked to resultStatus)'; +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.RESULT_STATUS IS 'Результат клиринга (linked to resultStatus)'; --- reportRegister - Реестр отчетов +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.CREATED_AT IS 'Время регистрации'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.UPDATED_AT IS 'Время изменения'; + +COMMENT ON COLUMN UNCOVERED_DEAL_REGISTER.CLEARING_DATE IS 'Дата клиринга'; + +-- reportRegister - Реестр отправленных отчетов DROP TABLE IF EXISTS REPORT_REGISTER; CREATE TABLE REPORT_REGISTER ( - ID bigint PRIMARY KEY, - CREATED_AT time, - UPDATED_AT time, - CLEARING_DATE date, COMPANY_FULL_NAME varchar(255), CLEARING_CODE varchar(255), SESSION_ID bigint, COMMENT varchar(255), NAME varchar(255), - QUANTITY bigint + QUANTITY bigint, + ID bigint PRIMARY KEY, + CREATED_AT time, + UPDATED_AT time, + CLEARING_DATE date ); -COMMENT ON TABLE REPORT_REGISTER IS 'Реестр отчетов'; - -COMMENT ON COLUMN REPORT_REGISTER.ID IS 'ID записи'; - -COMMENT ON COLUMN REPORT_REGISTER.CREATED_AT IS 'Время регистрации'; - -COMMENT ON COLUMN REPORT_REGISTER.UPDATED_AT IS 'Время изменения'; - -COMMENT ON COLUMN REPORT_REGISTER.CLEARING_DATE IS 'Дата клиринга'; +COMMENT ON TABLE REPORT_REGISTER IS 'Реестр отправленных отчетов'; COMMENT ON COLUMN REPORT_REGISTER.COMPANY_FULL_NAME IS 'Наименование участника'; @@ -2977,13 +2995,18 @@ COMMENT ON COLUMN REPORT_REGISTER.NAME IS 'Наименование'; COMMENT ON COLUMN REPORT_REGISTER.QUANTITY IS 'Количество записей'; +COMMENT ON COLUMN REPORT_REGISTER.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN REPORT_REGISTER.CREATED_AT IS 'Время регистрации'; + +COMMENT ON COLUMN REPORT_REGISTER.UPDATED_AT IS 'Время изменения'; + +COMMENT ON COLUMN REPORT_REGISTER.CLEARING_DATE IS 'Дата клиринга'; + -- contractRegister - Журнал регистрации договоров DROP TABLE IF EXISTS CONTRACT_REGISTER; CREATE TABLE CONTRACT_REGISTER ( - ID bigint PRIMARY KEY, - CREATED_AT time, - UPDATED_AT time, NAME varchar(255), NUMBER varchar(255), ISSUE_DATE date, @@ -2997,16 +3020,13 @@ CREATE TABLE CONTRACT_REGISTER VALID_FROM_DATE date, VALID_TO_DATE date, CLOSE_DATE date, - COMMENT varchar(255) + COMMENT varchar(255), + ID bigint PRIMARY KEY, + CREATED_AT time, + UPDATED_AT time ); COMMENT ON TABLE CONTRACT_REGISTER IS 'Журнал регистрации договоров'; -COMMENT ON COLUMN CONTRACT_REGISTER.ID IS 'Номер записи'; - -COMMENT ON COLUMN CONTRACT_REGISTER.CREATED_AT IS 'Дата и время регистрации документа'; - -COMMENT ON COLUMN CONTRACT_REGISTER.UPDATED_AT IS 'Время изменения сделки'; - COMMENT ON COLUMN CONTRACT_REGISTER.NAME IS 'Наименование документа'; COMMENT ON COLUMN CONTRACT_REGISTER.NUMBER IS 'Номер документа'; @@ -3015,9 +3035,9 @@ COMMENT ON COLUMN CONTRACT_REGISTER.ISSUE_DATE IS 'Дата составлени COMMENT ON COLUMN CONTRACT_REGISTER.COMPANY_FULL_NAME IS 'Наименование лица'; -COMMENT ON COLUMN CONTRACT_REGISTER.COMPANY_ID IS 'Идентификатор Компании (linked to company)'; +COMMENT ON COLUMN CONTRACT_REGISTER.COMPANY_ID IS 'Наименование Компании (linked to company)'; -COMMENT ON COLUMN CONTRACT_REGISTER.DOCUMENT_TYPE IS 'Идентификатор типа документа (linked to documentType)'; +COMMENT ON COLUMN CONTRACT_REGISTER.DOCUMENT_TYPE IS 'Наименование типа документа (linked to documentType)'; COMMENT ON COLUMN CONTRACT_REGISTER.ISSUE_PLACE IS 'Место выдачи'; @@ -3035,14 +3055,16 @@ COMMENT ON COLUMN CONTRACT_REGISTER.CLOSE_DATE IS 'Дата расторжени COMMENT ON COLUMN CONTRACT_REGISTER.COMMENT IS 'Место'; --- orderRegistry - Реестра распоряжений -DROP TABLE IF EXISTS ORDER_REGISTRY; -CREATE TABLE ORDER_REGISTRY +COMMENT ON COLUMN CONTRACT_REGISTER.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN CONTRACT_REGISTER.CREATED_AT IS 'Дата и время регистрации документа'; + +COMMENT ON COLUMN CONTRACT_REGISTER.UPDATED_AT IS 'Время изменения сделки'; + +-- orderRegister - Реестр распоряжений, направленных расчетной организации +DROP TABLE IF EXISTS ORDER_REGISTER; +CREATE TABLE ORDER_REGISTER ( - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, - CLEARING_DATE date, CREDIT_LEG_ACCOUNT varchar, CREDIT_LEG_AMOUNT numeric(72, 18), CREDIT_LEG_CURRENCY_CODE varchar(4), @@ -3050,81 +3072,71 @@ CREATE TABLE ORDER_REGISTRY DEBIT_LEG_ACCOUNT varchar, SENDER varchar(255), ADDRESSEE varchar(255), - DOCUMENT_NUMBER varchar(255) + DOCUMENT_NUMBER varchar(255), + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp, + CLEARING_DATE date ); -COMMENT ON TABLE ORDER_REGISTRY IS 'Реестра распоряжений'; +COMMENT ON TABLE ORDER_REGISTER IS 'Реестр распоряжений, направленных расчетной организации'; -COMMENT ON COLUMN ORDER_REGISTRY.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN ORDER_REGISTER.CREDIT_LEG_ACCOUNT IS 'Счет отправителя'; -COMMENT ON COLUMN ORDER_REGISTRY.CREATED_AT IS 'Дата и время создания записи'; +COMMENT ON COLUMN ORDER_REGISTER.CREDIT_LEG_AMOUNT IS 'Сумма отправителя'; -COMMENT ON COLUMN ORDER_REGISTRY.UPDATED_AT IS 'Дата и время изменения записи'; +COMMENT ON COLUMN ORDER_REGISTER.CREDIT_LEG_CURRENCY_CODE IS 'Код валюты отправителя (linked to currency)'; -COMMENT ON COLUMN ORDER_REGISTRY.CLEARING_DATE IS 'Дата расчета'; +COMMENT ON COLUMN ORDER_REGISTER.CREDIT_LEG_DIRECTION IS 'Направление отправителя (linked to inOutDirection)'; -COMMENT ON COLUMN ORDER_REGISTRY.CREDIT_LEG_ACCOUNT IS 'Счет отправителя'; +COMMENT ON COLUMN ORDER_REGISTER.DEBIT_LEG_ACCOUNT IS 'Счет получателя'; -COMMENT ON COLUMN ORDER_REGISTRY.CREDIT_LEG_AMOUNT IS 'Сумма отправителя'; +COMMENT ON COLUMN ORDER_REGISTER.SENDER IS 'Отправитель'; -COMMENT ON COLUMN ORDER_REGISTRY.CREDIT_LEG_CURRENCY_CODE IS 'Код валюты отправителя (linked to currency)'; +COMMENT ON COLUMN ORDER_REGISTER.ADDRESSEE IS 'Получатель'; -COMMENT ON COLUMN ORDER_REGISTRY.CREDIT_LEG_DIRECTION IS 'Направление отправителя (linked to inOutDirection)'; +COMMENT ON COLUMN ORDER_REGISTER.DOCUMENT_NUMBER IS 'Номер документа в сторонней системе'; -COMMENT ON COLUMN ORDER_REGISTRY.DEBIT_LEG_ACCOUNT IS 'Счет получателя'; +COMMENT ON COLUMN ORDER_REGISTER.ID IS 'Идентификатор записи'; -COMMENT ON COLUMN ORDER_REGISTRY.SENDER IS 'Отправитель'; +COMMENT ON COLUMN ORDER_REGISTER.CREATED_AT IS 'Дата и время создания записи'; -COMMENT ON COLUMN ORDER_REGISTRY.ADDRESSEE IS 'Получатель'; +COMMENT ON COLUMN ORDER_REGISTER.UPDATED_AT IS 'Дата и время изменения записи'; -COMMENT ON COLUMN ORDER_REGISTRY.DOCUMENT_NUMBER IS 'Номер документа в сторонней системе'; +COMMENT ON COLUMN ORDER_REGISTER.CLEARING_DATE IS 'Дата расчета'; -- liabilitiesClaimsMoney - Требования и обязательства денежных средств DROP TABLE IF EXISTS LIABILITIES_CLAIMS_MONEY; CREATE TABLE LIABILITIES_CLAIMS_MONEY ( - ID bigint PRIMARY KEY, COMPANY_ID bigint, - CREATED_AT timestamp, - UPDATED_AT timestamp, - CLEARING_DATE date, ACCOUNT_ID bigint, ACCOUNT_TYPE varchar(4), ACCOUNT varchar(50), LIABILITIES_AMOUNT numeric(72, 2), - REFUND_INTEREST numeric(72, 2), - ACCRUED_INTEREST numeric(72, 2), CLAIMS_AMOUNT numeric(72, 2), SETTLEMENT_DATE date, TRADING_DATE date, CURRENCY varchar(4), TRADING_CODE varchar(255), SHORT_NAME varchar(255), - FULL_NAME varchar(255) + FULL_NAME varchar(255), + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp, + CLEARING_DATE date ); COMMENT ON TABLE LIABILITIES_CLAIMS_MONEY IS 'Требования и обязательства денежных средств'; -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.COMPANY_ID IS 'Наименование участника (linked to company)'; -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.COMPANY_ID IS 'Идентификатор участника (linked to company)'; - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.CLEARING_DATE IS 'Дата клиринга'; - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.ACCOUNT_ID IS 'Наименование счета (linked to account)'; COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.ACCOUNT_TYPE IS 'Тип счета (linked to accountType)'; -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.ACCOUNT IS 'Счет'; +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.ACCOUNT IS 'Наименование счета'; COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.LIABILITIES_AMOUNT IS 'Регистр «Обязательства по денежным средствам, сформированные по результатам собственных сделок Участника клиринга», исключая проценты'; -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.REFUND_INTEREST IS 'Проценты к возврату'; - -COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.ACCRUED_INTEREST IS 'Начисленные проценты'; - COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.CLAIMS_AMOUNT IS 'Сумма требований, исключая проценты'; COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.SETTLEMENT_DATE IS 'Дата расчета'; @@ -3139,15 +3151,19 @@ COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.SHORT_NAME IS 'Короткое на COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.FULL_NAME IS 'Полное наименование Участника (linked to company)'; +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.UPDATED_AT IS 'Дата и время изменения записи'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_MONEY.CLEARING_DATE IS 'Дата клиринга'; + -- liabilitiesClaimsAssets - Требования и обязательства финансовых активов DROP TABLE IF EXISTS LIABILITIES_CLAIMS_ASSETS; CREATE TABLE LIABILITIES_CLAIMS_ASSETS ( - ID bigint PRIMARY KEY, COMPANY_ID bigint, - CREATED_AT timestamp, - UPDATED_AT timestamp, - CLEARING_DATE date, ACCOUNT_ID bigint, ACCOUNT_TYPE varchar(4), ACCOUNT varchar(50), @@ -3167,28 +3183,23 @@ CREATE TABLE LIABILITIES_CLAIMS_ASSETS FULL_NAME varchar(255), PARENT_ID bigint, LIABILITIES_CLAIMS_MONEY_ID bigint, - INTEREST_STATUS bigint, CLEARING_STATUS bigint, PAYMENT_ID bigint, - REFUND_PAYMENT_ID bigint + REFUND_PAYMENT_ID bigint, + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp, + CLEARING_DATE date ); COMMENT ON TABLE LIABILITIES_CLAIMS_ASSETS IS 'Требования и обязательства финансовых активов'; -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.COMPANY_ID IS 'Наименование участника (linked to company)'; -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.COMPANY_ID IS 'Идентификатор участника (linked to company)'; - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CLEARING_DATE IS 'Дата клиринга'; - -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.ACCOUNT_ID IS 'Наименование счета (linked to account)'; COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.ACCOUNT_TYPE IS 'Тип счета (linked to accountType)'; -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.ACCOUNT IS 'Счет'; +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.ACCOUNT IS 'Наименование счета'; COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.LIABILITIES_QUANTITY IS 'Сумма обязательств'; @@ -3204,7 +3215,7 @@ COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.REFUND_DATE IS 'Дата возвр COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.PRICE IS 'Ставка по депозиту'; -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.SECURITY_ID IS 'Инструмент (linked to security)'; +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.SECURITY_ID IS 'Инструмент (linked to moneyMarketSecurity)'; COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.TRADING_CODE IS 'Торговый код Участника (linked to company)'; @@ -3218,28 +3229,30 @@ COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.COMMENT IS 'Комментарий'; COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.FULL_NAME IS 'Полное наименование Участника (linked to company)'; -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.PARENT_ID IS 'Идентификатор записи основного договора без разделения'; +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.PARENT_ID IS 'Запись основного договора без разделения'; COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.LIABILITIES_CLAIMS_MONEY_ID IS 'Регистры денежных средств (linked to liabilitiesClaimsMoney)'; -COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.INTEREST_STATUS IS 'Статус возврата процентов (linked to interestStatus)'; - COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CLEARING_STATUS IS 'Статус клиринга (linked to clearingStatus)'; COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.PAYMENT_ID IS 'Платеж'; COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.REFUND_PAYMENT_ID IS 'Обратный платежа'; +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.UPDATED_AT IS 'Дата и время изменения записи'; + +COMMENT ON COLUMN LIABILITIES_CLAIMS_ASSETS.CLEARING_DATE IS 'Дата клиринга'; + -- statement - Денежные средства от расчетной организации DROP TABLE IF EXISTS STATEMENT; CREATE TABLE STATEMENT ( - ID bigint PRIMARY KEY, ADDRESSEE_ID bigint, SENDER_ID bigint, - CREATED_AT timestamp, - UPDATED_AT timestamp, - CLEARING_DATE date, STATEMENT_TYPE varchar(4), COMMENT varchar(255), ACCOUNT_ID bigint, @@ -3253,29 +3266,25 @@ CREATE TABLE STATEMENT ERROR_TEXT varchar(4), IN_S_DF_ID bigint, OUT_S_DF_ID bigint, - IN_OUT_S_DF_TYPE varchar(4) + IN_OUT_S_DF_TYPE varchar(4), + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp, + CLEARING_DATE date ); COMMENT ON TABLE STATEMENT IS 'Денежные средства от расчетной организации'; -COMMENT ON COLUMN STATEMENT.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN STATEMENT.ADDRESSEE_ID IS 'Наименование участника получателя (linked to company)'; -COMMENT ON COLUMN STATEMENT.ADDRESSEE_ID IS 'Идентификатор участника получателя (linked to company)'; - -COMMENT ON COLUMN STATEMENT.SENDER_ID IS 'Идентификатор участника отправителя (linked to company)'; - -COMMENT ON COLUMN STATEMENT.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN STATEMENT.UPDATED_AT IS 'Дата и время изменения записи'; - -COMMENT ON COLUMN STATEMENT.CLEARING_DATE IS 'Дата расчета'; +COMMENT ON COLUMN STATEMENT.SENDER_ID IS 'Наименование участника отправителя (linked to company)'; COMMENT ON COLUMN STATEMENT.STATEMENT_TYPE IS 'Тип поступления средств (linked to statementType)'; COMMENT ON COLUMN STATEMENT.COMMENT IS 'Комментарий'; -COMMENT ON COLUMN STATEMENT.ACCOUNT_ID IS 'Идентификатор счета (linked to account)'; +COMMENT ON COLUMN STATEMENT.ACCOUNT_ID IS 'Наименование счета (linked to account)'; -COMMENT ON COLUMN STATEMENT.ACCOUNT IS 'Счет'; +COMMENT ON COLUMN STATEMENT.ACCOUNT IS 'Наименование счета'; COMMENT ON COLUMN STATEMENT.IN_OUT_DIRECTION IS 'Направление (linked to inOutDirection)'; @@ -3291,12 +3300,20 @@ COMMENT ON COLUMN STATEMENT.ERROR_CODE IS 'Код ошибки (linked to errorC COMMENT ON COLUMN STATEMENT.ERROR_TEXT IS 'Полный текст ошибки (linked to errorText)'; -COMMENT ON COLUMN STATEMENT.IN_S_DF_ID IS 'Идентификатор записи, инициирующей изменения этой таблицы'; +COMMENT ON COLUMN STATEMENT.IN_S_DF_ID IS 'Запись, инициировавшая изменения этой таблицы'; -COMMENT ON COLUMN STATEMENT.OUT_S_DF_ID IS 'Идентификатор записи, формируемой в результате изменения этой таблицы'; +COMMENT ON COLUMN STATEMENT.OUT_S_DF_ID IS 'Запись, сформированная в результате изменения этой таблицы'; COMMENT ON COLUMN STATEMENT.IN_OUT_S_DF_TYPE IS 'Типы входящей и исходящей записей (linked to inOutSDfType)'; +COMMENT ON COLUMN STATEMENT.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN STATEMENT.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN STATEMENT.UPDATED_AT IS 'Дата и время изменения записи'; + +COMMENT ON COLUMN STATEMENT.CLEARING_DATE IS 'Дата расчета'; + -- tradeSettlement - Проводки на базе сделок торговой системы DROP TABLE IF EXISTS TRADE_SETTLEMENT; CREATE TABLE TRADE_SETTLEMENT @@ -3371,18 +3388,15 @@ COMMENT ON COLUMN OPERATION.OPERATION_TYPE_ID IS 'Тип проводки (linke COMMENT ON COLUMN OPERATION.OPERATION_STATUS IS 'Cтатус обработки (linked to operationStatus)'; --- paymentInstruction - Информация о денежных средствах +-- paymentInstruction - Платежные поручения DROP TABLE IF EXISTS PAYMENT_INSTRUCTION; CREATE TABLE PAYMENT_INSTRUCTION ( - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, SENDER_ID bigint, ADDRESSEE_ID bigint, - ADRESSEE_B_I_C varchar(255), + ADRESSEE_BIC varchar(255), PAYEE_BANK_NAME varchar(255), - PAYEE_B_I_C varchar(255), + PAYEE_BIC varchar(255), ADDRESSEE_BANK_NAME varchar(255), PAYMENT_DATE timestamp, PAYMENT_PURPOSE varchar(255), @@ -3399,29 +3413,26 @@ CREATE TABLE PAYMENT_INSTRUCTION DEBIT_LEG_DIRECTION bigint, CREDIT_LEG_CURRENCY_CODE varchar(4), DEBIT_LEG_CURRENCY_CODE varchar(4), - CLEARING_DATE date, TRANSACTION_STATUS varchar(4), - DOCUMENT_NUMBER varchar(255) + DOCUMENT_NUMBER varchar(255), + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp, + CLEARING_DATE date ); -COMMENT ON TABLE PAYMENT_INSTRUCTION IS 'Информация о денежных средствах'; +COMMENT ON TABLE PAYMENT_INSTRUCTION IS 'Платежные поручения'; -COMMENT ON COLUMN PAYMENT_INSTRUCTION.ID IS 'Идентификатор записи'; +COMMENT ON COLUMN PAYMENT_INSTRUCTION.SENDER_ID IS 'Наименование участника отправителя (linked to company)'; -COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREATED_AT IS 'Дата и время создания записи'; +COMMENT ON COLUMN PAYMENT_INSTRUCTION.ADDRESSEE_ID IS 'Наименование участника получателя (linked to company)'; -COMMENT ON COLUMN PAYMENT_INSTRUCTION.UPDATED_AT IS 'Дата и время изменения записи'; +COMMENT ON COLUMN PAYMENT_INSTRUCTION.ADRESSEE_BIC IS 'Банковский идентификационный код (БИК) получателя'; -COMMENT ON COLUMN PAYMENT_INSTRUCTION.SENDER_ID IS 'Идентификатор участника отправителя (linked to company)'; +COMMENT ON COLUMN PAYMENT_INSTRUCTION.PAYEE_BANK_NAME IS 'Наименование банка отправителя'; -COMMENT ON COLUMN PAYMENT_INSTRUCTION.ADDRESSEE_ID IS 'Идентификатор участника получателя (linked to company)'; +COMMENT ON COLUMN PAYMENT_INSTRUCTION.PAYEE_BIC IS 'Банковский идентификационный код (БИК) отправителя'; -COMMENT ON COLUMN PAYMENT_INSTRUCTION.ADRESSEE_B_I_C IS 'Банковский идентификационный код (БИК) получателя'; - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.PAYEE_BANK_NAME IS 'Банк отправителя'; - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.PAYEE_B_I_C IS 'Банковский идентификационный код (БИК) отправителя'; - -COMMENT ON COLUMN PAYMENT_INSTRUCTION.ADDRESSEE_BANK_NAME IS 'Банк получателя'; +COMMENT ON COLUMN PAYMENT_INSTRUCTION.ADDRESSEE_BANK_NAME IS 'Наименование банка получателя'; COMMENT ON COLUMN PAYMENT_INSTRUCTION.PAYMENT_DATE IS 'Дата и время платежа'; @@ -3433,17 +3444,17 @@ COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_LEG_AMOUNT IS 'Сумма отпр COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_LEG_AMOUNT IS 'Сумма получателя'; -COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_LEG_ACCOUNT_ID IS 'Идентификатор счета отправителя (linked to account)'; +COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_LEG_ACCOUNT_ID IS 'Наименование счета отправителя (linked to account)'; COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_CS_ACCOUNT IS 'Корреспондентский счет отправителя'; -COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_LEG_ACCOUNT IS 'Счет отправителя (linked to Account)'; +COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_LEG_ACCOUNT IS 'Счет отправителя'; -COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_LEG_ACCOUNT_ID IS 'Идентификатор счета получателя (linked to account)'; +COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_LEG_ACCOUNT_ID IS 'Наименование счета получателя (linked to account)'; COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_CS_ACCOUNT IS 'Корреспондентский счет получателя'; -COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_LEG_ACCOUNT IS 'Счет получателя (linked to Account)'; +COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_LEG_ACCOUNT IS 'Счет получателя'; COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_LEG_DIRECTION IS 'Направление отправителя (linked to inOutDirection)'; @@ -3453,12 +3464,18 @@ COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREDIT_LEG_CURRENCY_CODE IS 'Код вал COMMENT ON COLUMN PAYMENT_INSTRUCTION.DEBIT_LEG_CURRENCY_CODE IS 'Код валюты получателя (linked to currency)'; -COMMENT ON COLUMN PAYMENT_INSTRUCTION.CLEARING_DATE IS 'Дата расчета'; - COMMENT ON COLUMN PAYMENT_INSTRUCTION.TRANSACTION_STATUS IS 'Cтатус транзакции (linked to transactionStatus)'; COMMENT ON COLUMN PAYMENT_INSTRUCTION.DOCUMENT_NUMBER IS 'Номер документа в сторонней системе'; +COMMENT ON COLUMN PAYMENT_INSTRUCTION.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.UPDATED_AT IS 'Дата и время изменения записи'; + +COMMENT ON COLUMN PAYMENT_INSTRUCTION.CLEARING_DATE IS 'Дата расчета'; + -- marketData - Итоги торгов DROP TABLE IF EXISTS MARKET_DATA; CREATE TABLE MARKET_DATA @@ -3482,9 +3499,9 @@ CREATE TABLE MARKET_DATA ); COMMENT ON TABLE MARKET_DATA IS 'Итоги торгов'; -COMMENT ON COLUMN MARKET_DATA.ID IS 'ID записи'; +COMMENT ON COLUMN MARKET_DATA.ID IS 'Идентификатор записи'; -COMMENT ON COLUMN MARKET_DATA.SECURITIES_DEPOSIT_ID IS 'Биржевой код инструмента (linked to security)'; +COMMENT ON COLUMN MARKET_DATA.SECURITIES_DEPOSIT_ID IS 'Биржевой код инструмента (linked to moneyMarketSecurity)'; COMMENT ON COLUMN MARKET_DATA.COMPANY_NAME IS 'Инициатор торгов'; @@ -3531,7 +3548,7 @@ CREATE TABLE CHARGE_TARIFF ); COMMENT ON TABLE CHARGE_TARIFF IS 'Тарифы комиссий'; -COMMENT ON COLUMN CHARGE_TARIFF.ID IS 'Идентификатор'; +COMMENT ON COLUMN CHARGE_TARIFF.ID IS 'Идентификатор записи'; COMMENT ON COLUMN CHARGE_TARIFF.MARKET IS 'Секция (linked to market)'; @@ -3575,7 +3592,7 @@ COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.CHARGE_TARIFF_ID IS 'Идентифик COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.EVENT_TIME IS 'Дата и время изменения'; COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; -COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.ID IS 'Идентификатор'; +COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.ID IS 'Идентификатор записи'; COMMENT ON COLUMN CHARGE_TARIFF_HISTORY.MARKET IS 'Секция (linked to market)'; @@ -3613,7 +3630,7 @@ CREATE TABLE INDIVIDUAL_CHARGE_TARIFF ); COMMENT ON TABLE INDIVIDUAL_CHARGE_TARIFF IS 'Индивидуальные тарифы комиссий для Участника'; -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.ID IS 'Идентификатор'; +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.ID IS 'Идентификатор записи'; COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF.COMPANY_ID IS 'Участник (linked to company)'; @@ -3660,7 +3677,7 @@ COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.INDIVIDUAL_CHARGE_TARIFF_ID I COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.EVENT_TIME IS 'Дата и время изменения'; COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.EVENT_USER_ID IS 'Инициатор изменения'; -COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.ID IS 'Идентификатор'; +COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.ID IS 'Идентификатор записи'; COMMENT ON COLUMN INDIVIDUAL_CHARGE_TARIFF_HISTORY.COMPANY_ID IS 'Участник (linked to company)'; @@ -3702,7 +3719,7 @@ CREATE TABLE COMPANY_TARIFF ); COMMENT ON TABLE COMPANY_TARIFF IS 'Тарифы комиссий в разрезе Участника'; -COMMENT ON COLUMN COMPANY_TARIFF.ID IS 'Идентификатор'; +COMMENT ON COLUMN COMPANY_TARIFF.ID IS 'Идентификатор записи'; COMMENT ON COLUMN COMPANY_TARIFF.MARKET IS 'Секция (linked to market)'; @@ -3742,7 +3759,7 @@ CREATE TABLE ERROR_TEXT ); COMMENT ON TABLE ERROR_TEXT IS 'Полные тексты ошибок'; -COMMENT ON COLUMN ERROR_TEXT.ID IS 'Идентификатор'; +COMMENT ON COLUMN ERROR_TEXT.ID IS 'Идентификатор записи'; COMMENT ON COLUMN ERROR_TEXT.CREATED_AT IS 'Дата и время создания записи'; @@ -4216,8 +4233,8 @@ DROP TABLE IF EXISTS S_DF08; CREATE TABLE S_DF08 ( ID bigint PRIMARY KEY, - NUMBER numeric(72, 18), - DATETIME timestamp, + NUMBER varchar(10), + DATETIME varchar(13), GENERATION_TIME timestamp, GENERATION_ID bigint ); @@ -4225,7 +4242,7 @@ COMMENT ON TABLE S_DF08 IS 'ДФ-08 Запрос остатков по всем COMMENT ON COLUMN S_DF08.ID IS 'Идентификатор записи'; -COMMENT ON COLUMN S_DF08.NUMBER IS 'Номер запроса остатков по счетам (linked to currency)'; +COMMENT ON COLUMN S_DF08.NUMBER IS 'Номер запроса остатков по счетам'; COMMENT ON COLUMN S_DF08.DATETIME IS 'Дата и время сообщения'; @@ -4243,7 +4260,7 @@ CREATE TABLE S_DF09 MARKET varchar(1), TYPE varchar(1), NUMBER numeric(72, 18), - _I_N_N numeric(72, 18), + INN numeric(72, 18), FILE_NAME varchar(255), GENERATION_TIME timestamp, GENERATION_ID bigint @@ -4262,7 +4279,7 @@ COMMENT ON COLUMN S_DF09.TYPE IS 'Код типа платежного доку COMMENT ON COLUMN S_DF09.NUMBER IS 'Номер платежного документа (операции)'; -COMMENT ON COLUMN S_DF09._I_N_N IS 'ИНН'; +COMMENT ON COLUMN S_DF09.INN IS 'ИНН'; COMMENT ON COLUMN S_DF09.FILE_NAME IS 'Наименование входящего файла'; @@ -4280,7 +4297,7 @@ CREATE TABLE S_DF10 MARKET varchar(1), TYPE varchar(1), NUMBER numeric(72, 18), - _I_N_N numeric(72, 18), + INN numeric(72, 18), RESULT varchar(3), GENERATION_TIME timestamp, GENERATION_ID bigint, @@ -4300,7 +4317,7 @@ COMMENT ON COLUMN S_DF10.TYPE IS 'Код типа платежного доку COMMENT ON COLUMN S_DF10.NUMBER IS 'Номер платежного документа (операции)'; -COMMENT ON COLUMN S_DF10._I_N_N IS 'ИНН'; +COMMENT ON COLUMN S_DF10.INN IS 'ИНН'; COMMENT ON COLUMN S_DF10.RESULT IS 'Результат приема'; @@ -4652,9 +4669,9 @@ CREATE TABLE S_DF16 SUM numeric(72, 18), MARKET varchar(1), TYPE varchar(1), - _I_N_N numeric(72, 18), - _B_I_C numeric(72, 18), - _S_P_E_C varchar(255), + INN numeric(72, 18), + BIC numeric(72, 18), + SPEC varchar(255), NUMBER numeric(72, 18), FILE_NAME varchar(255), GENERATION_TIME timestamp, @@ -4672,11 +4689,11 @@ COMMENT ON COLUMN S_DF16.MARKET IS 'Код сегмента рынка'; COMMENT ON COLUMN S_DF16.TYPE IS 'Код типа платежного документа (операции)'; -COMMENT ON COLUMN S_DF16._I_N_N IS 'ИНН'; +COMMENT ON COLUMN S_DF16.INN IS 'ИНН'; -COMMENT ON COLUMN S_DF16._B_I_C IS 'БИК'; +COMMENT ON COLUMN S_DF16.BIC IS 'БИК'; -COMMENT ON COLUMN S_DF16._S_P_E_C IS 'Назначение'; +COMMENT ON COLUMN S_DF16.SPEC IS 'Назначение'; COMMENT ON COLUMN S_DF16.NUMBER IS 'Номер платежного документа (операции)'; @@ -4695,9 +4712,9 @@ CREATE TABLE S_DF17 SUM numeric(72, 18), MARKET varchar(1), TYPE varchar(1), - _I_N_N numeric(72, 18), - _B_I_C numeric(72, 18), - _S_P_E_C varchar(255), + INN numeric(72, 18), + BIC numeric(72, 18), + SPEC varchar(255), NUMBER numeric(72, 18), RESULT numeric(72, 18), GENERATION_TIME timestamp, @@ -4716,11 +4733,11 @@ COMMENT ON COLUMN S_DF17.MARKET IS 'Код сегмента рынка'; COMMENT ON COLUMN S_DF17.TYPE IS 'Код типа платежного документа (операции)'; -COMMENT ON COLUMN S_DF17._I_N_N IS 'ИНН'; +COMMENT ON COLUMN S_DF17.INN IS 'ИНН'; -COMMENT ON COLUMN S_DF17._B_I_C IS 'БИК'; +COMMENT ON COLUMN S_DF17.BIC IS 'БИК'; -COMMENT ON COLUMN S_DF17._S_P_E_C IS 'Назначение'; +COMMENT ON COLUMN S_DF17.SPEC IS 'Назначение'; COMMENT ON COLUMN S_DF17.NUMBER IS 'Номер платежного документа (операции)'; @@ -4905,28 +4922,25 @@ COMMENT ON COLUMN NOTIFICATION_HISTORY.OBJECT_ID IS 'Идентификатор COMMENT ON COLUMN NOTIFICATION_HISTORY.NOTIFICATION_STATUS IS 'Статус сообщения (linked to notificationStatus)'; --- verification_result - Результаты сверки +-- verificationResult - Результаты сверки DROP TABLE IF EXISTS VERIFICATION_RESULT; CREATE TABLE VERIFICATION_RESULT ( - ID bigint PRIMARY KEY, - CREATED_AT timestamp, - UPDATED_AT timestamp, - CLEARING_CODE varchar(255), - ACCOUNT_ID bigint, - IN_SUM numeric(72, 2), - OUT_INT_SUM numeric(72, 2), - OUT_EXT_SUM numeric(72, 2), - DIFF_SUM numeric(72, 2) + CLEARING_CODE varchar(255), + ACCOUNT_ID bigint, + IN_SUM numeric(72, 2), + OUT_INT_SUM numeric(72, 2), + OUT_EXT_SUM numeric(72, 2), + DIFF_SUM numeric(72, 2), + GENERATION_ID bigint, + GENERATION_STATUS varchar(4), + RESULT_STATUS varchar(4), + ID bigint PRIMARY KEY, + CREATED_AT timestamp, + UPDATED_AT timestamp ); COMMENT ON TABLE VERIFICATION_RESULT IS 'Результаты сверки'; -COMMENT ON COLUMN VERIFICATION_RESULT.ID IS 'Идентификатор записи'; - -COMMENT ON COLUMN VERIFICATION_RESULT.CREATED_AT IS 'Дата и время создания записи'; - -COMMENT ON COLUMN VERIFICATION_RESULT.UPDATED_AT IS 'Дата и время изменения записи'; - COMMENT ON COLUMN VERIFICATION_RESULT.CLEARING_CODE IS 'Код участника клиринга'; COMMENT ON COLUMN VERIFICATION_RESULT.ACCOUNT_ID IS 'Счет УК, по которому проводится сверка'; @@ -4937,7 +4951,19 @@ COMMENT ON COLUMN VERIFICATION_RESULT.OUT_INT_SUM IS 'Исходящая сум COMMENT ON COLUMN VERIFICATION_RESULT.OUT_EXT_SUM IS 'Исходящая сумма остатков из отчета ПРЦ'; -COMMENT ON COLUMN VERIFICATION_RESULT.DIFF_SUM IS 'Сумма расхождений '; +COMMENT ON COLUMN VERIFICATION_RESULT.DIFF_SUM IS 'Сумма расхождений'; + +COMMENT ON COLUMN VERIFICATION_RESULT.GENERATION_ID IS 'Идентификатор взаимодействия'; + +COMMENT ON COLUMN VERIFICATION_RESULT.GENERATION_STATUS IS 'Общий статус сверки (linked to resultStatus)'; + +COMMENT ON COLUMN VERIFICATION_RESULT.RESULT_STATUS IS 'Статус сверки (linked to resultStatus)'; + +COMMENT ON COLUMN VERIFICATION_RESULT.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN VERIFICATION_RESULT.CREATED_AT IS 'Дата и время создания записи'; + +COMMENT ON COLUMN VERIFICATION_RESULT.UPDATED_AT IS 'Дата и время изменения записи'; -- session - Клиринговая сессия DROP TABLE IF EXISTS SESSION; @@ -5009,11 +5035,11 @@ COMMENT ON COLUMN MONEY_MARKET_SESSION.CLEARING_DATE IS 'Дата'; COMMENT ON COLUMN MONEY_MARKET_SESSION.SESSION_STATUS IS 'Статус клиринговой сессии (linked to sessionStatus)'; -COMMENT ON COLUMN MONEY_MARKET_SESSION.COMPANY_ID IS 'Идентификатор инициатора торгов (linked to company)'; +COMMENT ON COLUMN MONEY_MARKET_SESSION.COMPANY_ID IS 'Наименование инициатора торгов (linked to company)'; -COMMENT ON COLUMN MONEY_MARKET_SESSION.SECURITY_ID IS 'Идентификатор инструмента (linked to security)'; +COMMENT ON COLUMN MONEY_MARKET_SESSION.SECURITY_ID IS 'Наименование инструмента (linked to moneyMarketSecurity)'; -COMMENT ON COLUMN MONEY_MARKET_SESSION.USER_ID IS 'Идентификатор пользователя (linked to userCls)'; +COMMENT ON COLUMN MONEY_MARKET_SESSION.USER_ID IS 'Наименование пользователя (linked to userCls)'; -- History log of moneyMarketSession - Сессия денежного рынка @@ -5041,11 +5067,11 @@ COMMENT ON COLUMN MONEY_MARKET_SESSION_HISTORY.CLEARING_DATE IS 'Дата'; COMMENT ON COLUMN MONEY_MARKET_SESSION_HISTORY.SESSION_STATUS IS 'Статус клиринговой сессии (linked to sessionStatus)'; -COMMENT ON COLUMN MONEY_MARKET_SESSION_HISTORY.COMPANY_ID IS 'Идентификатор инициатора торгов (linked to company)'; +COMMENT ON COLUMN MONEY_MARKET_SESSION_HISTORY.COMPANY_ID IS 'Наименование инициатора торгов (linked to company)'; -COMMENT ON COLUMN MONEY_MARKET_SESSION_HISTORY.SECURITY_ID IS 'Идентификатор инструмента (linked to security)'; +COMMENT ON COLUMN MONEY_MARKET_SESSION_HISTORY.SECURITY_ID IS 'Наименование инструмента (linked to moneyMarketSecurity)'; -COMMENT ON COLUMN MONEY_MARKET_SESSION_HISTORY.USER_ID IS 'Идентификатор пользователя (linked to userCls)'; +COMMENT ON COLUMN MONEY_MARKET_SESSION_HISTORY.USER_ID IS 'Наименование пользователя (linked to userCls)'; /* views */ From a4a2476655189bde0bf41561c766584224770315 Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 28 Dec 2022 12:13:15 +0300 Subject: [PATCH 096/234] meta.xml 2.4.3.0 --- .../backend-api/src/main/resources/meta/meta.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/clearing-parent/backend-api/src/main/resources/meta/meta.xml b/clearing-parent/backend-api/src/main/resources/meta/meta.xml index 693d0161e..5698b5253 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/meta.xml +++ b/clearing-parent/backend-api/src/main/resources/meta/meta.xml @@ -1,6 +1,6 @@ - + @@ -674,7 +674,7 @@ - + @@ -1778,8 +1778,8 @@ -