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 ce277be59..2cc0685b5 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 @@ -11,6 +11,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.utilities.KeyRateNewReque import ru.spcex.clearing.platform.messaging.domain.json.deserialize.InstantDeserializer; import ru.spcex.platform.utils.enumeration.EnumMessage; +import java.math.BigDecimal; import java.time.Instant; import java.util.Collection; import java.util.Collections; @@ -19,7 +20,7 @@ import java.util.List; public class KeyRateNewAction implements IAction { @ApiModelProperty(value = "Ключевая ставка ЦБ РФ", example = "12.5") @JsonProperty - public Double keyRate; + public BigDecimal keyRate; @ApiModelProperty(value = "Дата начала действия ключевой ставки", example = "2022-01-20") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "Europe/Moscow") @JsonDeserialize(using = InstantDeserializer.class) @@ -57,11 +58,11 @@ public class KeyRateNewAction implements IAction { return req; } - public Double getKeyRate() { + public BigDecimal getKeyRate() { return keyRate; } - public void setKeyRate(Double keyRate) { + public void setKeyRate(BigDecimal keyRate) { this.keyRate = keyRate; } 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 f15dfe623..d6d46fe6f 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 @@ -9,6 +9,7 @@ import ru.spcex.clearing.platform.messaging.domain.ActionType; import ru.spcex.clearing.platform.messaging.domain.cud.utilities.KeyRateUpdateRequest; import ru.spcex.clearing.platform.messaging.domain.json.deserialize.InstantDeserializer; +import java.math.BigDecimal; import java.time.Instant; public class KeyRateUpdateAction implements IAction { @@ -17,7 +18,7 @@ public class KeyRateUpdateAction implements IAction { public Long id; @ApiModelProperty(value = "Ключевая ставка ЦБ РФ", example = "12.5") @JsonProperty - public Double keyRate; + public BigDecimal keyRate; @ApiModelProperty(value = "Дата начала действия ключевой ставки", example = "2022-01-20") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "Europe/Moscow") @JsonDeserialize(using = InstantDeserializer.class) @@ -49,11 +50,11 @@ public class KeyRateUpdateAction implements IAction { return req; } - public Double getKeyRate() { + public BigDecimal getKeyRate() { return keyRate; } - public void setKeyRate(Double keyRate) { + public void setKeyRate(BigDecimal keyRate) { this.keyRate = keyRate; } @@ -77,6 +78,10 @@ public class KeyRateUpdateAction implements IAction { return document; } + public void setDocument(String document) { + this.document = document; + } + public Long getId() { return id; } @@ -84,8 +89,4 @@ public class KeyRateUpdateAction implements IAction { public void setId(Long id) { this.id = id; } - - public void setDocument(String document) { - this.document = document; - } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/account/AccountBackendGetAll.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/account/AccountBackendGetAll.java index f05c0ccfd..03bf7a7e4 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/account/AccountBackendGetAll.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/account/AccountBackendGetAll.java @@ -17,18 +17,6 @@ public class AccountBackendGetAll extends BasicSpcexResponse { @ApiModelProperty(value = "Полезная нагрузка") private AccountBackendPayload payload = new AccountBackendPayload(); - private static class AccountBackendPayload { - private List items = new ArrayList<>(); - - public List getItems() { - return items; - } - - public void setItems(List items) { - this.items = items; - } - } - public AccountBackendPayload getPayload() { return payload; } @@ -45,7 +33,7 @@ public class AccountBackendGetAll extends BasicSpcexResponse { singleItem.setAccount(account.getAccount()); singleItem.setAccountType(account.getAccountType()); singleItem.setRelationId(account.getRelationId()); - singleItem.setStatus(account.getStatus()); + singleItem.setStatus(account.getAccountStatus()); singleItem.setProcessingSign(account.getProcessingSign()); singleItem.setCreated(account.getCreated()); singleItem.setUpdated(account.getUpdated()); @@ -53,4 +41,16 @@ public class AccountBackendGetAll extends BasicSpcexResponse { } } + private static class AccountBackendPayload { + private List items = new ArrayList<>(); + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } + } + } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/utilities/KeyRateBackendGetFields.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/utilities/KeyRateBackendGetFields.java index d82f78ec4..93207aee6 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/utilities/KeyRateBackendGetFields.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/utilities/KeyRateBackendGetFields.java @@ -4,13 +4,14 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantSerializer; +import java.math.BigDecimal; import java.time.Instant; public class KeyRateBackendGetFields { @JsonProperty private Long id; @JsonProperty - private Double rate; + private BigDecimal rate; @JsonSerialize(using = InstantSerializer.class) @JsonProperty private Instant startDate; @@ -30,11 +31,11 @@ public class KeyRateBackendGetFields { this.id = id; } - public Double getRate() { + public BigDecimal getRate() { return rate; } - public void setRate(Double rate) { + public void setRate(BigDecimal rate) { this.rate = rate; } 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 3f9703b33..766b9e6ba 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 @@ -14,7 +14,7 @@ public class Account extends BusinessObject { private String account; private String accountType; private Long relationId; - private String status; + private String accountStatus; private String processingSign; public String getAccount() { @@ -41,12 +41,12 @@ public class Account extends BusinessObject { this.relationId = value; } - public String getStatus() { - return status; + public String getAccountStatus() { + return accountStatus; } - public void setStatus(String value) { - this.status = value; + public void setAccountStatus(String value) { + this.accountStatus = value; } public String getProcessingSign() { diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/company/relation/Relation.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/company/relation/Relation.java index 546faec69..89e288884 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/company/relation/Relation.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/company/relation/Relation.java @@ -2,7 +2,6 @@ package ru.clearing.classes.statics.data.company.relation; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessObject; -import ru.spcex.platform.classes.base.SpcexObjectBase; /** * Договорные отношения @@ -15,8 +14,8 @@ public class Relation extends BusinessObject { private Long consumerId; private Long supplierId; private String serviceStatus; - private Long service; - private Long serviceProduct; + private String service; + private String serviceProduct; private String comment; public Long getConsumerId() { @@ -43,19 +42,19 @@ public class Relation extends BusinessObject { this.serviceStatus = value; } - public Long getService() { + public String getService() { return service; } - public void setService(Long value) { + public void setService(String value) { this.service = value; } - public Long getServiceProduct() { + public String getServiceProduct() { return serviceProduct; } - public void setServiceProduct(Long value) { + public void setServiceProduct(String value) { this.serviceProduct = value; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/journal/InDocumentJournal.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/journal/InDocumentJournal.java index ef4d8adc9..1a73b72ab 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/journal/InDocumentJournal.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/journal/InDocumentJournal.java @@ -4,7 +4,8 @@ import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; import java.math.BigDecimal; -import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalTime; /** * Журнал входящих документов @@ -14,34 +15,34 @@ import java.time.Instant; public class InDocumentJournal extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; - private Instant registrationDate; - private Instant registrationTime; + private LocalDate registrationDate; + private LocalTime registrationTime; private Long registrationNumber; private String documentName; private String sender; private Long quantity; private String clearingCode; private String courierType; - private Instant emailDate; + private LocalDate emailDate; private BigDecimal amount; private String dossierNumber; private String comment; - private Instant receiptDate; + private LocalDate receiptDate; private String resultStatus; - public Instant getRegistrationDate() { + public LocalDate getRegistrationDate() { return registrationDate; } - public void setRegistrationDate(Instant value) { + public void setRegistrationDate(LocalDate value) { this.registrationDate = value; } - public Instant getRegistrationTime() { + public LocalTime getRegistrationTime() { return registrationTime; } - public void setRegistrationTime(Instant value) { + public void setRegistrationTime(LocalTime value) { this.registrationTime = value; } @@ -93,11 +94,11 @@ public class InDocumentJournal extends SpcexObjectBase { this.courierType = value; } - public Instant getEmailDate() { + public LocalDate getEmailDate() { return emailDate; } - public void setEmailDate(Instant value) { + public void setEmailDate(LocalDate value) { this.emailDate = value; } @@ -125,11 +126,11 @@ public class InDocumentJournal extends SpcexObjectBase { this.comment = value; } - public Instant getReceiptDate() { + public LocalDate getReceiptDate() { return receiptDate; } - public void setReceiptDate(Instant value) { + public void setReceiptDate(LocalDate value) { this.receiptDate = value; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/journal/OutDocumentJournal.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/journal/OutDocumentJournal.java index ff2738907..e1a2930c8 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/journal/OutDocumentJournal.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/journal/OutDocumentJournal.java @@ -4,7 +4,8 @@ import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; import java.math.BigDecimal; -import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalTime; /** * Журнал исходящих документов @@ -14,33 +15,33 @@ import java.time.Instant; public class OutDocumentJournal extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; - private Instant registrationDate; - private Instant registrationTime; + private LocalDate registrationDate; + private LocalTime registrationTime; private Long registrationNumber; private String documentName; private String addressee; private Long quantity; private String clearingCode; private String courierType; - private Instant emailDate; + private LocalDate emailDate; private BigDecimal amount; private String dossierNumber; - private Instant postDate; + private LocalDate postDate; private String resultStatus; - public Instant getRegistrationDate() { + public LocalDate getRegistrationDate() { return registrationDate; } - public void setRegistrationDate(Instant value) { + public void setRegistrationDate(LocalDate value) { this.registrationDate = value; } - public Instant getRegistrationTime() { + public LocalTime getRegistrationTime() { return registrationTime; } - public void setRegistrationTime(Instant value) { + public void setRegistrationTime(LocalTime value) { this.registrationTime = value; } @@ -92,11 +93,11 @@ public class OutDocumentJournal extends SpcexObjectBase { this.courierType = value; } - public Instant getEmailDate() { + public LocalDate getEmailDate() { return emailDate; } - public void setEmailDate(Instant value) { + public void setEmailDate(LocalDate value) { this.emailDate = value; } @@ -116,11 +117,11 @@ public class OutDocumentJournal extends SpcexObjectBase { this.dossierNumber = value; } - public Instant getPostDate() { + public LocalDate getPostDate() { return postDate; } - public void setPostDate(Instant value) { + public void setPostDate(LocalDate value) { this.postDate = value; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/messages/ErrorText.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/messages/ErrorText.java index 85a6a1b3b..8ab0f63cc 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/messages/ErrorText.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/messages/ErrorText.java @@ -3,7 +3,7 @@ package ru.clearing.classes.statics.data.messages; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessObject; -import java.time.Instant; +import java.time.LocalDate; /** * Полные тексты ошибок @@ -16,7 +16,7 @@ public class ErrorText extends BusinessObject { private String errorCode; private String text; private Long userId; - private Instant clearingDate; + private LocalDate clearingDate; public String getErrorCode() { return errorCode; @@ -42,11 +42,11 @@ public class ErrorText extends BusinessObject { this.userId = value; } - public Instant getClearingDate() { + public LocalDate getClearingDate() { return clearingDate; } - public void setClearingDate(Instant value) { + public void setClearingDate(LocalDate value) { this.clearingDate = value; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/KeyRate.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/KeyRate.java index d107be73e..c61a198c1 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/KeyRate.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/KeyRate.java @@ -2,41 +2,42 @@ package ru.clearing.classes.statics.data.misc; import ru.spcex.platform.classes.base.SpcexObjectBase; -import java.time.Instant; +import java.math.BigDecimal; +import java.time.LocalDate; /** * Ключевая ставка ЦБ - * + *

* DB table: KEY_RATE **/ public class KeyRate extends SpcexObjectBase { - private Double rate; - private Instant startDate; - private Instant endDate; + private BigDecimal rate; + private LocalDate startDate; + private LocalDate endDate; private String document; private String workflowStatus; - public Double getRate() { + public BigDecimal getRate() { return rate; } - public void setRate(Double rate) { + public void setRate(BigDecimal rate) { this.rate = rate; } - public Instant getStartDate() { + public LocalDate getStartDate() { return startDate; } - public void setStartDate(Instant startDate) { + public void setStartDate(LocalDate startDate) { this.startDate = startDate; } - public Instant getEndDate() { + public LocalDate getEndDate() { return endDate; } - public void setEndDate(Instant endDate) { + public void setEndDate(LocalDate endDate) { this.endDate = endDate; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/MoneyMarketSecurity.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/MoneyMarketSecurity.java index feca98c31..bae2e34bf 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/MoneyMarketSecurity.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/MoneyMarketSecurity.java @@ -3,7 +3,7 @@ package ru.clearing.classes.statics.data.misc; import ru.spcex.platform.classes.base.SpcexObjectBase; import java.math.BigDecimal; -import java.time.Instant; +import java.time.LocalDate; /** * Инструменты Денежного рынка @@ -13,8 +13,8 @@ import java.time.Instant; public class MoneyMarketSecurity extends SpcexObjectBase { private Long securityId;// (linked to security) private String description; - private Instant startDate; - private Instant endDate; + private LocalDate startDate; + private LocalDate endDate; private BigDecimal nominalValue; private Long nominalCurrency; // (linked to currencyCode) private String instrumentType; // (linked to instrumentType) @@ -37,19 +37,19 @@ public class MoneyMarketSecurity extends SpcexObjectBase { this.description = description; } - public Instant getStartDate() { + public LocalDate getStartDate() { return startDate; } - public void setStartDate(Instant startDate) { + public void setStartDate(LocalDate startDate) { this.startDate = startDate; } - public Instant getEndDate() { + public LocalDate getEndDate() { return endDate; } - public void setEndDate(Instant endDate) { + public void setEndDate(LocalDate endDate) { this.endDate = endDate; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/ProfileDocument.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/ProfileDocument.java index ca034fac6..92e9d1a2c 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/ProfileDocument.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/ProfileDocument.java @@ -3,7 +3,7 @@ package ru.clearing.classes.statics.data.profile; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; -import java.time.Instant; +import java.time.LocalDate; /** * DB: PROFILE_DOCUMENT @@ -13,15 +13,15 @@ public class ProfileDocument extends SpcexObjectBase { private Long companyId; private String documentType; // ref CHAR(4) - private Instant issueDate; + private LocalDate issueDate; private String issuePlace; private String issuer; private String issuerCode; private String name; private String number; private String place; - private Instant validFromDate; - private Instant validToDate; + private LocalDate validFromDate; + private LocalDate validToDate; private String link; public Long getCompanyId() { @@ -40,11 +40,11 @@ public class ProfileDocument extends SpcexObjectBase { this.documentType = documentType; } - public Instant getIssueDate() { + public LocalDate getIssueDate() { return issueDate; } - public void setIssueDate(Instant issueDate) { + public void setIssueDate(LocalDate issueDate) { this.issueDate = issueDate; } @@ -96,19 +96,19 @@ public class ProfileDocument extends SpcexObjectBase { this.place = place; } - public Instant getValidFromDate() { + public LocalDate getValidFromDate() { return validFromDate; } - public void setValidFromDate(Instant validFromDate) { + public void setValidFromDate(LocalDate validFromDate) { this.validFromDate = validFromDate; } - public Instant getValidToDate() { + public LocalDate getValidToDate() { return validToDate; } - public void setValidToDate(Instant validToDate) { + public void setValidToDate(LocalDate validToDate) { this.validToDate = validToDate; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Scheduler.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Scheduler.java index a3d6c1d16..c2f2d6868 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Scheduler.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Scheduler.java @@ -2,9 +2,9 @@ package ru.clearing.classes.statics.data.scheduler; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessObject; -import ru.spcex.platform.classes.base.SpcexObjectBase; -import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalTime; /** * Расписание планировщика @@ -15,8 +15,8 @@ public class Scheduler extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private String task; - private Instant taskTime; - private Instant clearingDate; + private LocalTime taskTime; + private LocalDate clearingDate; private String market; private String taskStatus; private Long securityId; @@ -30,19 +30,19 @@ public class Scheduler extends BusinessObject { this.task = value; } - public Instant getTaskTime() { + public LocalTime getTaskTime() { return taskTime; } - public void setTaskTime(Instant value) { + public void setTaskTime(LocalTime value) { this.taskTime = value; } - public Instant getClearingDate() { + public LocalDate getClearingDate() { return clearingDate; } - public void setClearingDate(Instant value) { + public void setClearingDate(LocalDate value) { this.clearingDate = value; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/SchedulerAllToday.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/SchedulerAllToday.java index 71d15c3e6..764287c2d 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/SchedulerAllToday.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/SchedulerAllToday.java @@ -3,7 +3,8 @@ package ru.clearing.classes.statics.data.scheduler; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; -import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalTime; /** * Расписание на текущий день @@ -14,8 +15,8 @@ public class SchedulerAllToday extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private String task; - private Instant taskTime; - private Instant clearingDate; + private LocalTime taskTime; + private LocalDate clearingDate; private String market; private String taskStatus; private Long securityId; @@ -30,19 +31,19 @@ public class SchedulerAllToday extends SpcexObjectBase { this.task = value; } - public Instant getTaskTime() { + public LocalTime getTaskTime() { return taskTime; } - public void setTaskTime(Instant value) { + public void setTaskTime(LocalTime value) { this.taskTime = value; } - public Instant getClearingDate() { + public LocalDate getClearingDate() { return clearingDate; } - public void setClearingDate(Instant value) { + public void setClearingDate(LocalDate value) { this.clearingDate = value; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Timetable.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Timetable.java index 6ea30abba..d6dc9de82 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Timetable.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Timetable.java @@ -3,7 +3,7 @@ package ru.clearing.classes.statics.data.scheduler; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessObject; -import java.time.Instant; +import java.time.LocalTime; /** * Постоянное расписание операционного дня @@ -14,7 +14,7 @@ public class Timetable extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private String task; - private Instant taskTime; + private LocalTime taskTime; private String taskStatus; public String getTask() { @@ -25,11 +25,11 @@ public class Timetable extends BusinessObject { this.task = value; } - public Instant getTaskTime() { + public LocalTime getTaskTime() { return taskTime; } - public void setTaskTime(Instant value) { + public void setTaskTime(LocalTime value) { this.taskTime = value; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/TradingCalendar.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/TradingCalendar.java index 5c9dfd401..d45f477d6 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/TradingCalendar.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/TradingCalendar.java @@ -3,7 +3,7 @@ package ru.clearing.classes.statics.data.scheduler; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessObject; -import java.time.Instant; +import java.time.LocalDate; /** * Торговые и неторговые дни @@ -13,15 +13,15 @@ import java.time.Instant; public class TradingCalendar extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; - private Instant clearingDate; + private LocalDate clearingDate; private Long companyId; private String tradingStatus; - public Instant getClearingDate() { + public LocalDate getClearingDate() { return clearingDate; } - public void setClearingDate(Instant value) { + public void setClearingDate(LocalDate value) { this.clearingDate = 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 6e2ea9670..dab3f0299 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 @@ -8,14 +8,14 @@ import java.time.Instant; /** * ДФ-10 Подтверждение о загрузке по поступлению на клиринговый счет - * + *

* DB table: S_DF10 */ public class SDf10 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private String account; - private String sum; + private BigDecimal sum; private String market; private String type; private BigDecimal number; @@ -33,11 +33,11 @@ public class SDf10 extends SpcexObjectBase { this.account = account; } - public String getSum() { + public BigDecimal getSum() { return sum; } - public void setSum(String sum) { + public void setSum(BigDecimal sum) { this.sum = sum; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/statement/Statement.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/statement/Statement.java index 2dee323e7..f6872ed68 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/statement/Statement.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/statement/Statement.java @@ -4,7 +4,7 @@ import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessObject; import java.math.BigDecimal; -import java.time.Instant; +import java.time.LocalDate; /** * Денежные средства от расчетной организации @@ -16,16 +16,16 @@ public class Statement extends BusinessObject { private Long addresseeId; private Long senderId; - private Instant clearingDate; + private LocalDate clearingDate; private String statementType; private String comment; private Long accountId; private String account; private String inOutDirection; - private Instant settlementDate; + private LocalDate settlementDate; private BigDecimal amount; private String cashMovementCurrencyCode; - private String status; + private String operationStatus; private String errorCode; private String errorText; private Long inSDfId; @@ -48,11 +48,11 @@ public class Statement extends BusinessObject { this.senderId = value; } - public Instant getClearingDate() { + public LocalDate getClearingDate() { return clearingDate; } - public void setClearingDate(Instant value) { + public void setClearingDate(LocalDate value) { this.clearingDate = value; } @@ -96,11 +96,11 @@ public class Statement extends BusinessObject { this.inOutDirection = value; } - public Instant getSettlementDate() { + public LocalDate getSettlementDate() { return settlementDate; } - public void setSettlementDate(Instant value) { + public void setSettlementDate(LocalDate value) { this.settlementDate = value; } @@ -120,12 +120,12 @@ public class Statement extends BusinessObject { this.cashMovementCurrencyCode = value; } - public String getStatus() { - return status; + public String getOperationStatus() { + return operationStatus; } - public void setStatus(String value) { - this.status = value; + public void setOperationStatus(String value) { + this.operationStatus = value; } public String getErrorCode() { diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserConnect.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserConnect.java index cfd1d4e25..3734d2e49 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserConnect.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserConnect.java @@ -2,9 +2,9 @@ package ru.clearing.classes.statics.data.user; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessObject; -import ru.spcex.platform.classes.base.SpcexObjectBase; import java.time.Instant; +import java.time.LocalDate; /** * Активность пользователей в системе @@ -20,7 +20,7 @@ public class UserConnect extends BusinessObject { private String serverIP; private String clientIP; private String connectionState; - private Instant clearingDate; + private LocalDate clearingDate; private Long errorCode; private String errorText; @@ -72,11 +72,11 @@ public class UserConnect extends BusinessObject { this.connectionState = value; } - public Instant getClearingDate() { + public LocalDate getClearingDate() { return clearingDate; } - public void setClearingDate(Instant value) { + public void setClearingDate(LocalDate value) { this.clearingDate = value; } diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/InterestStatusDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/InterestStatusDictionary.java index 92a3c3d18..b8d2576a7 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/InterestStatusDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/InterestStatusDictionary.java @@ -1,12 +1,12 @@ -//package ru.clearing.platform.dictionary; -// -///** -// * Справочник статусов возваращения процентов -// * -// * Dictionary DB table: INTEREST_STATUS_DICTIONARY -// **/ -//public class InterestStatusDictionary extends AbstractDictionary { -// private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; -// -// -//} \ No newline at end of file +package ru.clearing.platform.dictionary; + +/** + * Справочник статусов возваращения процентов + *

+ * 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/pom.xml b/clearing-parent/imdg/pom.xml index c0db709b4..5a35a391a 100644 --- a/clearing-parent/imdg/pom.xml +++ b/clearing-parent/imdg/pom.xml @@ -1,17 +1,17 @@ - - 4.0.0 + 4.0.0 imdg Clearing in memory data grid jar SPCEX-1.0.0.0 - - clearing-parent - ru.spcex.clearing + + clearing-parent + ru.spcex.clearing SPCEX-1.0.0.0 @@ -74,8 +74,23 @@ - org.testng - testng + org.springframework + spring-test + test + + + org.skyscreamer + jsonassert + test + + + org.junit.jupiter + junit-jupiter + test + + + org.assertj + assertj-core test @@ -117,6 +132,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/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java index 26544a2ba..702df95d2 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java @@ -2,13 +2,14 @@ package ru.spcex.clearing.imdg; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.context.ConfigurableApplicationContext; @SpringBootApplication public class IMDGApplication { public static void main(String[] args) { SpringApplicationBuilder builder = new SpringApplicationBuilder(IMDGApplication.class); - builder.run(args); + builder.run(args); } } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/DictionaryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/DictionaryMapStore.java index 91414e4c5..1e8aff1d1 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/DictionaryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/DictionaryMapStore.java @@ -18,11 +18,9 @@ import static ru.spcex.clearing.imdg.base.ObjectBaseMapStore.MAX_IN_CLAUSE_SIZE; * Store для словарей стандартных - из ID, CODE, NAME. */ public abstract class DictionaryMapStore implements MapLoader { - private static Logger log = LoggerFactory.getLogger(DictionaryMapStore.class); - - protected NamedParameterJdbcTemplate namedParameterJdbcTemplate; - + private static final Logger log = LoggerFactory.getLogger(DictionaryMapStore.class); protected final JdbcTemplate jdbcTemplate; + protected NamedParameterJdbcTemplate namedParameterJdbcTemplate; protected DictionaryMapStore(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/ObjectBaseMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/ObjectBaseMapStore.java index 330fa70ac..7c92626f9 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/ObjectBaseMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/ObjectBaseMapStore.java @@ -5,14 +5,11 @@ import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import ru.spcex.platform.classes.base.SpcexObjectBase; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Time; -import java.sql.Timestamp; +import java.sql.Date; +import java.sql.*; import java.time.Instant; import java.time.LocalDate; import java.time.LocalTime; -import java.time.ZoneId; import java.util.*; public abstract class ObjectBaseMapStore extends SimpleObjectMapStore { @@ -88,7 +85,7 @@ public abstract class ObjectBaseMapStore extends Simp protected LocalDate getLocalDateFromSqlDate(ResultSet rs, String column) throws SQLException { Date date = rs.getDate(column); - return date != null ? Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDate() : null; + return date != null ? date.toLocalDate() : null; } protected LocalTime getLocalTimeFromSqlTime(ResultSet rs, String column) throws SQLException { diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/SimpleObjectMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/SimpleObjectMapStore.java index 7cdc489b8..5cae36264 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/SimpleObjectMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/SimpleObjectMapStore.java @@ -25,11 +25,10 @@ import java.util.stream.Collectors; * @param */ public abstract class SimpleObjectMapStore implements MapStore { - protected final Logger log = LoggerFactory.getLogger(this.getClass()); - private final static int BATCH_SIZE = 1000; - protected SimpleDateFormat DB_DATE_FORMATTER = new SimpleDateFormat("yyyy-MM-dd"); + protected final Logger log = LoggerFactory.getLogger(this.getClass()); protected final JdbcTemplate jdbcTemplate; + protected SimpleDateFormat DB_DATE_FORMATTER = new SimpleDateFormat("yyyy-MM-dd"); protected SimpleObjectMapStore(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/AccountBalanceHistoryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/AccountBalanceHistoryMapStore.java index 9e081556d..0540af846 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/AccountBalanceHistoryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/AccountBalanceHistoryMapStore.java @@ -41,7 +41,7 @@ public class AccountBalanceHistoryMapStore extends TemplateEventMapStore { @@ -26,17 +27,17 @@ public class AccountRoutingHistoryMapStore extends TemplateEventMapStore { @@ -36,7 +37,7 @@ public class BankAccountHistoryMapStore extends TemplateEventMapStore { + protected final String insertStatement = makeInsertSql(getTableName(), getFields(), "id"); + protected final String insertCompanyInfoStatement = makeInsertSql("COMPANY_INFO_HISTORY", getFieldsForCompanyInfo(), "id"); + public CompanyHistoryMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); } @@ -42,9 +46,6 @@ public class CompanyHistoryMapStore extends BusinessEventMapStore map) { List batchArgs = new ArrayList<>(); 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 bdd69ade6..8d768ae20 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 @@ -6,6 +6,7 @@ import ru.clearing.classes.statics.data.account.InformationAccount; import ru.clearing.classes.statics.data.account.InformationAccountHistory; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.base.TemplateEventMapStore; +import ru.spcex.platform.utils.time.TimeUtil; @Component public class InformationAccountHistoryMapStore extends TemplateEventMapStore { @@ -26,17 +27,17 @@ public class InformationAccountHistoryMapStore extends TemplateEventMapStore { @Override public String[] getFields() { - return new String[]{"ID","EVENT_TIME", "EVENT_USER_ID", - "USER_ID", "CREATED_AT", "UPDATED_AT", "IDENTIFIER" + return new String[]{"ID", "EVENT_TIME", "EVENT_USER_ID", + "USER_CLS_ID", "CREATED_AT", "UPDATED_AT", "IDENTIFIER" }; } @Override public Object[] objectToField(UserHistory historyLog) { - User object=historyLog.getObject(); + User object = historyLog.getObject(); Object[] args = new Object[]{ historyLog.getId(), - historyLog.getEventTime(), + TimeUtil.toDateFromInstant(historyLog.getEventTime()), historyLog.getUserId(), object.getId(), diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/AccountBalanceMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/AccountBalanceMapStore.java index 37ab57966..75572620e 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/AccountBalanceMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/AccountBalanceMapStore.java @@ -53,7 +53,7 @@ public class AccountBalanceMapStore extends TemplateMapStore { object.setStartBalanceAmount(resultSet.getObject("START_BALANCE_AMOUNT", BigDecimal.class)); object.setCloseBalanceAmount(resultSet.getObject("CLOSE_BALANCE_AMOUNT", BigDecimal.class)); object.setTradeBalanceAmount(resultSet.getObject("TRADE_BALANCE_AMOUNT", BigDecimal.class)); - object.setFreeBalanceAmount(resultSet.getObject("FREE_BALANCE_AMOU", BigDecimal.class)); + object.setFreeBalanceAmount(resultSet.getObject("FREE_BALANCE_AMOUNT", BigDecimal.class)); object.setChangeBalanceAmount(resultSet.getObject("CHANGE_BALANCE_AMOUNT", BigDecimal.class)); object.setCreditAmount(resultSet.getObject("CREDIT_AMOUNT", BigDecimal.class)); object.setDebitAmount(resultSet.getObject("DEBIT_AMOUNT", BigDecimal.class)); diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/AccountMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/AccountMapStore.java index 2d69f9852..fa5c7cd31 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/AccountMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/AccountMapStore.java @@ -30,7 +30,7 @@ public class AccountMapStore extends TemplateMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "CREATED_AT", "UPDATED_AT", "ACCOUNT", "ACCOUNT_TYPE", "RELATION_ID", "STATUS", "PROCESSING_SIGN" + "ID", "CREATED_AT", "UPDATED_AT", "ACCOUNT", "ACCOUNT_TYPE", "RELATION_ID", "ACCOUNT_STATUS", "PROCESSING_SIGN" }; } @@ -43,7 +43,7 @@ public class AccountMapStore extends TemplateMapStore { object.setAccount(resultSet.getObject("ACCOUNT", String.class)); object.setAccountType(resultSet.getObject("ACCOUNT_TYPE", String.class)); object.setRelationId(resultSet.getObject("RELATION_ID", Long.class)); - object.setStatus(resultSet.getObject("STATUS", String.class)); + object.setAccountStatus(resultSet.getObject("ACCOUNT_STATUS", String.class)); object.setProcessingSign(resultSet.getObject("PROCESSING_SIGN", String.class)); return object; } @@ -57,7 +57,7 @@ public class AccountMapStore extends TemplateMapStore { object.getAccount(), object.getAccountType(), object.getRelationId(), - object.getStatus(), + object.getAccountStatus(), object.getProcessingSign() }; return args; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/ErrorTextMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/ErrorTextMapStore.java index 875f7df7a..7eba1a3c5 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/ErrorTextMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/ErrorTextMapStore.java @@ -30,7 +30,7 @@ public class ErrorTextMapStore extends TemplateMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "CREATED_AT", "UPDATED_AT", "ERROR_CODE", "TEXT", "USER_ID", "CLEARING_DATE" + "ID", "CREATED_AT", "UPDATED_AT", "ERROR_CODE", "TEXT", "USER_ID", "CLEARING_DATE" }; } @@ -43,7 +43,7 @@ public class ErrorTextMapStore extends TemplateMapStore { object.setErrorCode(resultSet.getObject("ERROR_CODE", String.class)); object.setText(resultSet.getObject("TEXT", String.class)); object.setUserId(resultSet.getObject("USER_ID", Long.class)); - object.setClearingDate(getInstantFromTimestamp(resultSet, "CLEARING_DATE")); + object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE")); return object; } @@ -56,7 +56,7 @@ public class ErrorTextMapStore extends TemplateMapStore { object.getErrorCode(), object.getText(), object.getUserId(), - TimeUtil.toDateFromInstant(object.getClearingDate()) + TimeUtil.toDateFromLocalDate(object.getClearingDate()) }; return args; } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/RelationMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/RelationMapStore.java index 75a5e9c9c..96e930862 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/RelationMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/RelationMapStore.java @@ -43,8 +43,8 @@ public class RelationMapStore extends TemplateMapStore { object.setConsumerId(resultSet.getObject("CONSUMER_ID", Long.class)); object.setSupplierId(resultSet.getObject("SUPPLIER_ID", Long.class)); object.setServiceStatus(resultSet.getObject("SERVICE_STATUS", String.class)); - object.setService(resultSet.getObject("SERVICE", Long.class)); - object.setServiceProduct(resultSet.getObject("SERVICE_PRODUCT", Long.class)); + object.setService(resultSet.getObject("SERVICE", String.class)); + object.setServiceProduct(resultSet.getObject("SERVICE_PRODUCT", String.class)); object.setComment(resultSet.getObject("COMMENT", String.class)); return object; } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/SchedulerMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/SchedulerMapStore.java index d8d2971b6..a5ed34203 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/SchedulerMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/SchedulerMapStore.java @@ -41,8 +41,8 @@ public class SchedulerMapStore extends TemplateMapStore { object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT")); object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT")); object.setTask(resultSet.getObject("TASK", String.class)); - object.setTaskTime(getInstantFromTimestamp(resultSet, "TASK_TIME")); - object.setClearingDate(getInstantFromTimestamp(resultSet, "CLEARING_DATE")); + object.setTaskTime(getLocalTimeFromSqlTime(resultSet, "TASK_TIME")); + object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE")); object.setMarket(resultSet.getObject("MARKET", String.class)); object.setTaskStatus(resultSet.getObject("TASK_STATUS", String.class)); object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class)); @@ -56,8 +56,8 @@ public class SchedulerMapStore extends TemplateMapStore { TimeUtil.toDateFromInstant(object.getCreated()), TimeUtil.toDateFromInstant(object.getUpdated()), object.getTask(), - TimeUtil.toDateFromInstant(object.getTaskTime()), - TimeUtil.toDateFromInstant(object.getClearingDate()), + TimeUtil.toDateFromLocalTime(object.getTaskTime()), + TimeUtil.toDateFromLocalDate(object.getClearingDate()), object.getMarket(), object.getTaskStatus(), object.getSecurityId() diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/StatementMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/StatementMapStore.java index 3cc48d44b..2ac34dbaa 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/StatementMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/StatementMapStore.java @@ -31,7 +31,7 @@ public class StatementMapStore extends TemplateMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "ADDRESSEE_ID", "SENDER_ID", "CREATED_AT", "UPDATED_AT", "CLEARING_DATE", "STATEMENT_TYPE_ID", "COMMENT", "ACCOUNT_ID", "ACCOUNT", "IN_OUT_DIRECTION", "SETTLEMENT_DATE", "AMOUNT", "CASH_MOVEMENT_CURRENCY_CODE", "STATUS", "ERROR_CODE", "ERROR_TEXT", "IN_S_DF_ID", "OUT_S_DF_ID", "IN_OUT_S_DF_TYPE" + "ID", "ADDRESSEE_ID", "SENDER_ID", "CREATED_AT", "UPDATED_AT", "CLEARING_DATE", "STATEMENT_TYPE", "COMMENT", "ACCOUNT_ID", "ACCOUNT", "IN_OUT_DIRECTION", "SETTLEMENT_DATE", "AMOUNT", "CASH_MOVEMENT_CURRENCY_CODE", "OPERATION_STATUS", "ERROR_CODE", "ERROR_TEXT", "IN_S_DF_ID", "OUT_S_DF_ID", "IN_OUT_S_DF_TYPE" }; } @@ -43,16 +43,16 @@ public class StatementMapStore extends TemplateMapStore { object.setSenderId(resultSet.getObject("SENDER_ID", Long.class)); object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT")); object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT")); - object.setClearingDate(getInstantFromTimestamp(resultSet, "CLEARING_DATE")); - object.setStatementType(resultSet.getObject("STATEMENT_TYPE_ID", String.class)); + object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE")); + object.setStatementType(resultSet.getObject("STATEMENT_TYPE", String.class)); object.setComment(resultSet.getObject("COMMENT", String.class)); object.setAccountId(resultSet.getObject("ACCOUNT_ID", Long.class)); object.setAccount(resultSet.getObject("ACCOUNT", String.class)); object.setInOutDirection(resultSet.getObject("IN_OUT_DIRECTION", String.class)); - object.setSettlementDate(getInstantFromTimestamp(resultSet, "SETTLEMENT_DATE")); + object.setSettlementDate(getLocalDateFromSqlDate(resultSet, "SETTLEMENT_DATE")); object.setAmount(resultSet.getObject("AMOUNT", BigDecimal.class)); object.setCashMovementCurrencyCode(resultSet.getObject("CASH_MOVEMENT_CURRENCY_CODE", String.class)); - object.setStatus(resultSet.getObject("STATUS", String.class)); + object.setOperationStatus(resultSet.getObject("OPERATION_STATUS", String.class)); object.setErrorCode(resultSet.getObject("ERROR_CODE", String.class)); object.setErrorText(resultSet.getObject("ERROR_TEXT", String.class)); object.setInSDfId(resultSet.getObject("IN_S_DF_ID", Long.class)); @@ -69,16 +69,16 @@ public class StatementMapStore extends TemplateMapStore { object.getSenderId(), TimeUtil.toDateFromInstant(object.getCreated()), TimeUtil.toDateFromInstant(object.getUpdated()), - TimeUtil.toDateFromInstant(object.getClearingDate()), + TimeUtil.toDateFromLocalDate(object.getClearingDate()), object.getStatementType(), object.getComment(), object.getAccountId(), object.getAccount(), object.getInOutDirection(), - TimeUtil.toDateFromInstant(object.getSettlementDate()), + TimeUtil.toDateFromLocalDate(object.getSettlementDate()), object.getAmount(), object.getCashMovementCurrencyCode(), - object.getStatus(), + object.getOperationStatus(), object.getErrorCode(), object.getErrorText(), object.getInSDfId(), diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/TimetableMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/TimetableMapStore.java index b8e0a1693..a4d78c085 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/TimetableMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/TimetableMapStore.java @@ -41,7 +41,7 @@ public class TimetableMapStore extends TemplateMapStore { object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT")); object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT")); object.setTask(resultSet.getObject("TASK", String.class)); - object.setTaskTime(getInstantFromTimestamp(resultSet, "TASK_TIME")); + object.setTaskTime(getLocalTimeFromSqlTime(resultSet, "TASK_TIME")); object.setTaskStatus(resultSet.getObject("TASK_STATUS", String.class)); return object; } @@ -53,7 +53,7 @@ public class TimetableMapStore extends TemplateMapStore { TimeUtil.toDateFromInstant(object.getCreated()), TimeUtil.toDateFromInstant(object.getUpdated()), object.getTask(), - TimeUtil.toDateFromInstant(object.getTaskTime()), + TimeUtil.toDateFromLocalTime(object.getTaskTime()), object.getTaskStatus() }; return args; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/TradingCalendarMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/TradingCalendarMapStore.java index 0eaf4d2f7..555353445 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/TradingCalendarMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/TradingCalendarMapStore.java @@ -30,7 +30,7 @@ public class TradingCalendarMapStore extends TemplateMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "CREATED_AT", "UPDATED_AT", "CLEARING_DATE", "COMPANY_ID", "TRADING_STATUS" + "ID", "CREATED_AT", "UPDATED_AT", "CLEARING_DATE", "COMPANY_ID", "TRADING_STATUS" }; } @@ -40,7 +40,7 @@ public class TradingCalendarMapStore extends TemplateMapStore { object.setId(resultSet.getObject("ID", Long.class)); object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT")); object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT")); - object.setClearingDate(getInstantFromTimestamp(resultSet, "CLEARING_DATE")); + object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE")); object.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class)); object.setTradingStatus(resultSet.getObject("TRADING_STATUS", String.class)); return object; @@ -52,7 +52,7 @@ public class TradingCalendarMapStore extends TemplateMapStore { object.getId(), TimeUtil.toDateFromInstant(object.getCreated()), TimeUtil.toDateFromInstant(object.getUpdated()), - TimeUtil.toDateFromInstant(object.getClearingDate()), + TimeUtil.toDateFromLocalDate(object.getClearingDate()), object.getCompanyId(), object.getTradingStatus() }; 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 433ef6a97..fe5f61fab 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 @@ -46,7 +46,7 @@ public class UserConnectMapStore extends TemplateMapStore { object.setServerIP(resultSet.getObject("SERVER_I_P", String.class)); object.setClientIP(resultSet.getObject("CLIENT_I_P", String.class)); object.setConnectionState(resultSet.getObject("CONNECTION_STATE", String.class)); - object.setClearingDate(getInstantFromTimestamp(resultSet, "CLEARING_DATE")); + object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE")); object.setErrorCode(resultSet.getObject("ERROR_CODE", Long.class)); object.setErrorText(resultSet.getObject("ERROR_TEXT", String.class)); return object; @@ -64,7 +64,7 @@ public class UserConnectMapStore extends TemplateMapStore { object.getServerIP(), object.getClientIP(), object.getConnectionState(), - TimeUtil.toDateFromInstant(object.getClearingDate()), + TimeUtil.toDateFromLocalDate(object.getClearingDate()), object.getErrorCode(), object.getErrorText() }; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/HazelcastConfiguration.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/HazelcastConfiguration.java index cf408f0ce..ed760d9c4 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/HazelcastConfiguration.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/HazelcastConfiguration.java @@ -51,22 +51,11 @@ public class HazelcastConfiguration { ) ); - config.addMapConfig(poolMapConfigs.map_AllowedDictionary()); - config.addMapConfig(poolMapConfigs.map_CompanyRoleDictionary()); - config.addMapConfig(poolMapConfigs.map_CompanySymbolDictionary()); - config.addMapConfig(poolMapConfigs.map_ContactTypeDictionary()); - config.addMapConfig(poolMapConfigs.map_CorporationSoleTypeDictionary()); - config.addMapConfig(poolMapConfigs.map_CountryCodeDictionary()); - config.addMapConfig(poolMapConfigs.map_DocumentTypeDictionary()); - config.addMapConfig(poolMapConfigs.map_LegalKindDictionary()); - config.addMapConfig(poolMapConfigs.map_OrganizationTypeDictionary()); - config.addMapConfig(poolMapConfigs.map_WorkflowStatusDictionary()); - config.addMapConfig(poolMapConfigs.map_Company()); //todo убедиться, что CompanyMapStore extends BusinessObjectMapStore теперь будет TemplateMapStore. - + config.addMapConfig(poolMapConfigs.map_CompanyHistory()); // Автоподключение мап List autoMapCfg = poolMapConfigs.autoconfiguratorOfMapstorages(); - for (MapConfig cfg: autoMapCfg) { + for (MapConfig cfg : autoMapCfg) { config.addMapConfig(cfg); } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/PoolMapConfigs.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/PoolMapConfigs.java index 7b2d9d7c2..d5889abff 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/PoolMapConfigs.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/PoolMapConfigs.java @@ -12,10 +12,6 @@ import ru.spcex.clearing.imdg.base.AutoconfiguredMap; import ru.spcex.clearing.imdg.base.DictionaryTMapStore; import ru.spcex.clearing.imdg.businessevent.CompanyHistoryMapStore; import ru.spcex.clearing.imdg.businessobject.CompanyMapStore; -import ru.spcex.clearing.imdg.dictionary.*; -import ru.spcex.clearing.imdg.object.CompanySymbolsMapStore; -import ru.spcex.clearing.imdg.object.ContactMapStore; -import ru.spcex.clearing.imdg.object.ProfileDocumentMapStore; import java.util.ArrayList; import java.util.Arrays; @@ -24,12 +20,21 @@ import java.util.List; @Configuration public class PoolMapConfigs { - private Logger log = LoggerFactory.getLogger(getClass()); + private final Logger log = LoggerFactory.getLogger(getClass()); + @Autowired + private CompanyMapStore companyMapStore; + + @Autowired + private CompanyHistoryMapStore companyHistoryMapStore; + + // Автоконфигурируемые мапсторы: + @Autowired + private List> listOfAutopluginStores; private MapStoreConfig makeDefaultMapStoreConfig(MapLoader mapBean) { return new MapStoreConfig() .setImplementation(mapBean) -;//todo config: .setWriteDelaySeconds(configRoot.getIMDG().getDbSyncSeconds()); + ;//todo config: .setWriteDelaySeconds(configRoot.getIMDG().getDbSyncSeconds()); } public ScheduledExecutorConfig makeDefaultScheduledExecutorConfig(String name) { @@ -67,82 +72,13 @@ public class PoolMapConfigs { return makeMapIndexConfig(attributeName, false); } - - - @Autowired private AllowedDictionaryMapStore allowedDictionaryMapStore; - public MapConfig map_AllowedDictionary() { - return makeDefaultMapConfig(IMDGDistributedNames.Map_AllowedDictionary, allowedDictionaryMapStore) - .setNearCacheConfig(makeDefaultNearCacheConfig()) - .addMapIndexConfig(makeMapIndexConfig("code")); - } - @Autowired private CompanyRoleDictionaryMapStore companyRoleDictionaryMapStore; - public MapConfig map_CompanyRoleDictionary() { - return makeDefaultMapConfig(IMDGDistributedNames.Map_CompanyRoleDictionary, companyRoleDictionaryMapStore) - .setNearCacheConfig(makeDefaultNearCacheConfig()) - .addMapIndexConfig(makeMapIndexConfig("code")); - } - @Autowired private CompanySymbolDictionaryMapStore companySymbolDictionaryMapStore; - public MapConfig map_CompanySymbolDictionary() { - return makeDefaultMapConfig(IMDGDistributedNames.Map_CompanySymbolDictionary, companySymbolDictionaryMapStore) - .setNearCacheConfig(makeDefaultNearCacheConfig()) - .addMapIndexConfig(makeMapIndexConfig("code")); - } - @Autowired private ContactTypeDictionaryMapStore contactTypeDictionaryMapStore; - public MapConfig map_ContactTypeDictionary() { - return makeDefaultMapConfig(IMDGDistributedNames.Map_ContactTypeDictionary, contactTypeDictionaryMapStore) - .setNearCacheConfig(makeDefaultNearCacheConfig()) - .addMapIndexConfig(makeMapIndexConfig("code")); - } - @Autowired private CorporationSoleTypeDictionaryMapStore corporationSoleTypeDictionaryMapStore; - public MapConfig map_CorporationSoleTypeDictionary() { - return makeDefaultMapConfig(IMDGDistributedNames.Map_CorporationSoleTypeDictionary, corporationSoleTypeDictionaryMapStore) - .setNearCacheConfig(makeDefaultNearCacheConfig()) - .addMapIndexConfig(makeMapIndexConfig("code")); - } - @Autowired private CountryCodeDictionaryMapStore countryCodeDictionaryMapStore; - public MapConfig map_CountryCodeDictionary() { - return makeDefaultMapConfig(IMDGDistributedNames.Map_CountryCodeDictionary, countryCodeDictionaryMapStore) - .setNearCacheConfig(makeDefaultNearCacheConfig()) - .addMapIndexConfig(makeMapIndexConfig("code")); - } - @Autowired private DocumentTypeDictionaryMapStore documentTypeDictionaryMapStore; - public MapConfig map_DocumentTypeDictionary() { - return makeDefaultMapConfig(IMDGDistributedNames.Map_DocumentTypeDictionary, documentTypeDictionaryMapStore) - .setNearCacheConfig(makeDefaultNearCacheConfig()) - .addMapIndexConfig(makeMapIndexConfig("code")); - } - @Autowired private LegalKindDictionaryMapStore legalKindDictionaryMapStore; - public MapConfig map_LegalKindDictionary() { - return makeDefaultMapConfig(IMDGDistributedNames.Map_LegalKindDictionary, legalKindDictionaryMapStore) - .setNearCacheConfig(makeDefaultNearCacheConfig()) - .addMapIndexConfig(makeMapIndexConfig("code")); - } - @Autowired private OrganizationTypeDictionaryMapStore organizationTypeDictionaryMapStore; - public MapConfig map_OrganizationTypeDictionary() { - return makeDefaultMapConfig(IMDGDistributedNames.Map_OrganizationTypeDictionary, organizationTypeDictionaryMapStore) - .setNearCacheConfig(makeDefaultNearCacheConfig()) - .addMapIndexConfig(makeMapIndexConfig("code")); - } - @Autowired private WorkflowStatusDictionaryMapStore workflowStatusDictionaryMapStore; - public MapConfig map_WorkflowStatusDictionary() { - return makeDefaultMapConfig(IMDGDistributedNames.Map_WorkflowStatusDictionary, workflowStatusDictionaryMapStore) - .setNearCacheConfig(makeDefaultNearCacheConfig()) - .addMapIndexConfig(makeMapIndexConfig("code")); - } - - - - @Autowired - private CompanyMapStore companyMapStore; - public MapConfig map_Company() { return makeDefaultMapConfig(IMDGDistributedNames.Map_Company, companyMapStore); } - - // Автоконфигурируемые мапсторы: - @Autowired - private List> listOfAutopluginStores; + public MapConfig map_CompanyHistory() { + return makeDefaultMapConfig(IMDGDistributedNames.Map_CompanyHistory, companyHistoryMapStore); + } // @Qualifier("AutoconfiguredMapStore") public List autoconfiguratorOfMapstorages() { @@ -173,7 +109,7 @@ public class PoolMapConfigs { } out.add(mapCfg); } catch (RuntimeException e) { - throw new RuntimeException("Can not configure MapStore " + mapStore.getMapName() + "(" + mapStore.toString() + "): " + e, e); + throw new RuntimeException("Can not configure MapStore " + mapStore.getMapName() + "(" + mapStore + "): " + e, e); } } log.debug("Configured {} mapStore's", out.size()); diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/AllowedDictionaryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/AllowedDictionaryMapStore.java index 55eaad879..97d083d89 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/AllowedDictionaryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/AllowedDictionaryMapStore.java @@ -3,15 +3,21 @@ package ru.spcex.clearing.imdg.dictionary; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import ru.clearing.platform.dictionary.AllowedDictionary; -import ru.spcex.clearing.imdg.base.DictionaryMapStore; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.DictionaryTMapStore; @Component -public class AllowedDictionaryMapStore extends DictionaryMapStore { +public class AllowedDictionaryMapStore extends DictionaryTMapStore { public AllowedDictionaryMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); } + @Override + public String getMapName() { + return IMDGDistributedNames.Map_AllowedDictionary; + } + @Override public String getTableName() { return "ALLOWED_DICTIONARY"; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CompanyRoleDictionaryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CompanyRoleDictionaryMapStore.java index dbde3714f..ca3ad6cd6 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CompanyRoleDictionaryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CompanyRoleDictionaryMapStore.java @@ -3,15 +3,21 @@ package ru.spcex.clearing.imdg.dictionary; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import ru.clearing.platform.dictionary.CompanyRoleDictionary; -import ru.spcex.clearing.imdg.base.DictionaryMapStore; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.DictionaryTMapStore; @Component -public class CompanyRoleDictionaryMapStore extends DictionaryMapStore { +public class CompanyRoleDictionaryMapStore extends DictionaryTMapStore { public CompanyRoleDictionaryMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); } + @Override + public String getMapName() { + return IMDGDistributedNames.Map_CompanyRoleDictionary; + } + @Override public String getTableName() { return "COMPANY_ROLE_DICTIONARY"; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CompanySymbolDictionaryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CompanySymbolDictionaryMapStore.java index 2665f5e48..148c5de69 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CompanySymbolDictionaryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CompanySymbolDictionaryMapStore.java @@ -3,18 +3,24 @@ package ru.spcex.clearing.imdg.dictionary; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import ru.clearing.platform.dictionary.CompanySymbolDictionary; -import ru.spcex.clearing.imdg.base.DictionaryMapStore; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.DictionaryTMapStore; import java.sql.ResultSet; import java.sql.SQLException; @Component -public class CompanySymbolDictionaryMapStore extends DictionaryMapStore { +public class CompanySymbolDictionaryMapStore extends DictionaryTMapStore { public CompanySymbolDictionaryMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); } + @Override + public String getMapName() { + return IMDGDistributedNames.Map_CompanySymbolDictionary; + } + @Override public String getTableName() { return "COMPANY_SYMBOL_DICTIONARY"; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/ContactTypeDictionaryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/ContactTypeDictionaryMapStore.java index 16da2c632..b4019a77b 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/ContactTypeDictionaryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/ContactTypeDictionaryMapStore.java @@ -3,15 +3,21 @@ package ru.spcex.clearing.imdg.dictionary; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import ru.clearing.platform.dictionary.ContactTypeDictionary; -import ru.spcex.clearing.imdg.base.DictionaryMapStore; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.DictionaryTMapStore; @Component -public class ContactTypeDictionaryMapStore extends DictionaryMapStore { +public class ContactTypeDictionaryMapStore extends DictionaryTMapStore { public ContactTypeDictionaryMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); } + @Override + public String getMapName() { + return IMDGDistributedNames.Map_ContactTypeDictionary; + } + @Override public String getTableName() { return "CONTACT_TYPE_DICTIONARY"; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CorporationSoleTypeDictionaryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CorporationSoleTypeDictionaryMapStore.java index 5d324d7ac..3e1bd3d89 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CorporationSoleTypeDictionaryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CorporationSoleTypeDictionaryMapStore.java @@ -3,15 +3,21 @@ package ru.spcex.clearing.imdg.dictionary; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import ru.clearing.platform.dictionary.CorporationSoleTypeDictionary; -import ru.spcex.clearing.imdg.base.DictionaryMapStore; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.DictionaryTMapStore; @Component -public class CorporationSoleTypeDictionaryMapStore extends DictionaryMapStore { +public class CorporationSoleTypeDictionaryMapStore extends DictionaryTMapStore { public CorporationSoleTypeDictionaryMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); } + @Override + public String getMapName() { + return IMDGDistributedNames.Map_CorporationSoleTypeDictionary; + } + @Override public String getTableName() { return "CORPORATION_SOLE_TYPE_DICTIONARY"; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CountryCodeDictionaryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CountryCodeDictionaryMapStore.java index e5eb27096..112dc2c67 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CountryCodeDictionaryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CountryCodeDictionaryMapStore.java @@ -3,15 +3,22 @@ package ru.spcex.clearing.imdg.dictionary; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import ru.clearing.platform.dictionary.CountryCodeDictionary; -import ru.spcex.clearing.imdg.base.DictionaryMapStore; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.DictionaryTMapStore; + @Component -public class CountryCodeDictionaryMapStore extends DictionaryMapStore { +public class CountryCodeDictionaryMapStore extends DictionaryTMapStore { public CountryCodeDictionaryMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); } + @Override + public String getMapName() { + return IMDGDistributedNames.Map_CountryCodeDictionary; + } + @Override public String getTableName() { return "COUNTRY_CODE_DICTIONARY"; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/DocumentTypeDictionaryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/DocumentTypeDictionaryMapStore.java index f47fc5172..ca1bcd831 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/DocumentTypeDictionaryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/DocumentTypeDictionaryMapStore.java @@ -3,15 +3,22 @@ package ru.spcex.clearing.imdg.dictionary; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import ru.clearing.platform.dictionary.DocumentTypeDictionary; -import ru.spcex.clearing.imdg.base.DictionaryMapStore; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.DictionaryTMapStore; + @Component -public class DocumentTypeDictionaryMapStore extends DictionaryMapStore { +public class DocumentTypeDictionaryMapStore extends DictionaryTMapStore { public DocumentTypeDictionaryMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); } + @Override + public String getMapName() { + return IMDGDistributedNames.Map_DocumentTypeDictionary; + } + @Override public String getTableName() { return "DOCUMENT_TYPE_DICTIONARY"; 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 index ccde56222..af6609e62 100644 --- 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 @@ -1,31 +1,31 @@ -//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.base.DictionaryTMapStore; -//import ru.spcex.clearing.imdg.IMDGDistributedNames; -// -//@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 +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/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/LegalKindDictionaryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/LegalKindDictionaryMapStore.java index 9c7017659..da957260b 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/LegalKindDictionaryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/LegalKindDictionaryMapStore.java @@ -3,15 +3,21 @@ package ru.spcex.clearing.imdg.dictionary; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import ru.clearing.platform.dictionary.LegalKindDictionary; -import ru.spcex.clearing.imdg.base.DictionaryMapStore; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.DictionaryTMapStore; @Component -public class LegalKindDictionaryMapStore extends DictionaryMapStore { +public class LegalKindDictionaryMapStore extends DictionaryTMapStore { public LegalKindDictionaryMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); } + @Override + public String getMapName() { + return IMDGDistributedNames.Map_LegalKindDictionary; + } + @Override public String getTableName() { return "LEGAL_KIND_DICTIONARY"; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/OrganizationTypeDictionaryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/OrganizationTypeDictionaryMapStore.java index 56bde2298..32bae2307 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/OrganizationTypeDictionaryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/OrganizationTypeDictionaryMapStore.java @@ -3,15 +3,21 @@ package ru.spcex.clearing.imdg.dictionary; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import ru.clearing.platform.dictionary.OrganizationTypeDictionary; -import ru.spcex.clearing.imdg.base.DictionaryMapStore; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.DictionaryTMapStore; @Component -public class OrganizationTypeDictionaryMapStore extends DictionaryMapStore { +public class OrganizationTypeDictionaryMapStore extends DictionaryTMapStore { public OrganizationTypeDictionaryMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); } + @Override + public String getMapName() { + return IMDGDistributedNames.Map_OrganizationTypeDictionary; + } + @Override public String getTableName() { return "ORGANIZATION_TYPE_DICTIONARY"; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/WorkflowStatusDictionaryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/WorkflowStatusDictionaryMapStore.java index 5d9a97501..b2634fbc8 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/WorkflowStatusDictionaryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/WorkflowStatusDictionaryMapStore.java @@ -3,15 +3,21 @@ package ru.spcex.clearing.imdg.dictionary; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import ru.clearing.platform.dictionary.WorkflowStatusDictionary; -import ru.spcex.clearing.imdg.base.DictionaryMapStore; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.DictionaryTMapStore; @Component -public class WorkflowStatusDictionaryMapStore extends DictionaryMapStore { +public class WorkflowStatusDictionaryMapStore extends DictionaryTMapStore { public WorkflowStatusDictionaryMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); } + @Override + public String getMapName() { + return IMDGDistributedNames.Map_WorkflowStatusDictionary; + } + @Override public String getTableName() { return "WORKFLOW_STATUS_DICTIONARY"; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanyRoleSetMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanyRoleSetMapStore.java index ee62a53af..d3e61e171 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanyRoleSetMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanyRoleSetMapStore.java @@ -3,8 +3,8 @@ package ru.spcex.clearing.imdg.object; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.company.CompanyRoleSet; -import ru.spcex.clearing.imdg.base.TemplateMapStore; import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.TemplateMapStore; import java.sql.ResultSet; import java.sql.SQLException; @@ -34,15 +34,15 @@ public class CompanyRoleSetMapStore extends TemplateMapStore { @Override public String[] getFields() { - return new String[]{"id", "roleid", "companyid"}; + return new String[]{"ID", "ROLE_ID", "COMPANY_ID"}; } @Override protected CompanyRoleSet objectReader(ResultSet resultSet) throws SQLException { CompanyRoleSet companyRoleSet = new CompanyRoleSet(); - companyRoleSet.setId(resultSet.getObject("id", Long.class)); - companyRoleSet.setRoleId(resultSet.getObject("roleid", Long.class)); - companyRoleSet.setCompanyId(resultSet.getObject("companyid", Long.class)); + companyRoleSet.setId(resultSet.getObject("ID", Long.class)); + companyRoleSet.setRoleId(resultSet.getObject("ROLE_ID", Long.class)); + companyRoleSet.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class)); return companyRoleSet; } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanySymbolsMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanySymbolsMapStore.java index 74dadc2a6..42008cf1b 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanySymbolsMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanySymbolsMapStore.java @@ -37,9 +37,9 @@ public class CompanySymbolsMapStore extends TemplateMapStore { protected CompanySymbols objectReader(ResultSet resultSet) throws SQLException { CompanySymbols object = new CompanySymbols(); object.setId(resultSet.getObject("id", Long.class)); - object.setCompanyId(resultSet.getObject("companyid", Long.class)); - object.setCompanySymbol(resultSet.getObject("companysymbol", String.class)); - object.setCompanySymbolValue(resultSet.getObject("companysymbolvalue", String.class)); + object.setCompanyId(resultSet.getObject("company_id", Long.class)); + object.setCompanySymbol(resultSet.getObject("company_symbol", String.class)); + object.setCompanySymbolValue(resultSet.getObject("company_symbol_value", String.class)); return object; } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/InDocumentJournalMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/InDocumentJournalMapStore.java index ce1858fd3..939c43c13 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/InDocumentJournalMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/InDocumentJournalMapStore.java @@ -39,20 +39,20 @@ public class InDocumentJournalMapStore extends TemplateMapStore { protected KeyRate objectReader(ResultSet resultSet) throws SQLException { KeyRate keyRate = new KeyRate(); keyRate.setId(resultSet.getObject("ID", Long.class)); - keyRate.setRate(resultSet.getObject("RATE", Double.class)); - keyRate.setStartDate(getInstantFromTimestamp(resultSet,"START_DATE")); - keyRate.setEndDate(getInstantFromTimestamp(resultSet, "END_DATE")); + keyRate.setRate(resultSet.getObject("RATE", BigDecimal.class)); + keyRate.setStartDate(getLocalDateFromSqlDate(resultSet, "START_DATE")); + keyRate.setEndDate(getLocalDateFromSqlDate(resultSet, "END_DATE")); keyRate.setDocument(resultSet.getObject("DOCUMENT", String.class)); keyRate.setWorkflowStatus(resultSet.getObject("WORKFLOW_STATUS", String.class)); return keyRate; @@ -54,8 +55,8 @@ public class KeyRateMapStore extends TemplateMapStore { Object[] args = new Object[]{ partnerList.getId(), partnerList.getRate(), - TimeUtil.toDateFromInstant(partnerList.getStartDate()), - TimeUtil.toDateFromInstant(partnerList.getEndDate()), + TimeUtil.toDateFromLocalDate(partnerList.getStartDate()), + TimeUtil.toDateFromLocalDate(partnerList.getEndDate()), partnerList.getDocument(), partnerList.getWorkflowStatus() }; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/MoneyMarketSecurityMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/MoneyMarketSecurityMapStore.java index 3a4ae51bd..03d526135 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/MoneyMarketSecurityMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/MoneyMarketSecurityMapStore.java @@ -44,8 +44,8 @@ public class MoneyMarketSecurityMapStore extends TemplateMapStore { object.setId(resultSet.getObject("id", Long.class)); object.setCompanyId(resultSet.getObject("company_id", Long.class)); object.setDocumentType(resultSet.getObject("document_type", String.class)); - object.setIssueDate(getInstantFromTimestamp(resultSet, "issue_date")); + object.setIssueDate(getLocalDateFromSqlDate(resultSet, "issue_date")); object.setIssuePlace(resultSet.getObject("issue_place", String.class)); object.setIssuer(resultSet.getObject("issuer", String.class)); object.setIssuerCode(resultSet.getObject("issuer_code", String.class)); object.setName(resultSet.getObject("name", String.class)); object.setNumber(resultSet.getObject("number", String.class)); object.setPlace(resultSet.getObject("place", String.class)); - object.setValidFromDate(getInstantFromTimestamp(resultSet, "valid_from_date")); - object.setValidToDate(getInstantFromTimestamp(resultSet, "valid_to_date")); + object.setValidFromDate(getLocalDateFromSqlDate(resultSet, "valid_from_date")); + object.setValidToDate(getLocalDateFromSqlDate(resultSet, "valid_to_date")); object.setLink(resultSet.getObject("LINK", String.class)); return object; } @@ -60,15 +60,15 @@ public class ProfileDocumentMapStore extends TemplateMapStore { resultSet.getId(), resultSet.getCompanyId(), resultSet.getDocumentType(), - TimeUtil.toDateFromInstant(resultSet.getIssueDate()), + TimeUtil.toDateFromLocalDate(resultSet.getIssueDate()), resultSet.getIssuePlace(), resultSet.getIssuer(), resultSet.getIssuerCode(), resultSet.getName(), resultSet.getNumber(), resultSet.getPlace(), - TimeUtil.toDateFromInstant(resultSet.getValidFromDate()), - TimeUtil.toDateFromInstant(resultSet.getValidToDate()), + TimeUtil.toDateFromLocalDate(resultSet.getValidFromDate()), + TimeUtil.toDateFromLocalDate(resultSet.getValidToDate()), resultSet.getLink() }; return args; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf04MapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf04MapStore.java index bfd65f662..b2cd9d2fd 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf04MapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SDf04MapStore.java @@ -5,6 +5,7 @@ import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.sdf.SDf04; 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; @@ -145,7 +146,7 @@ public class SDf04MapStore extends TemplateMapStore { object.getDoc_result(), object.getImp_result(), object.getFile_name(), - object.getGenerationTime(), + TimeUtil.toDateFromInstant(object.getGenerationTime()), object.getGenerationId() }; return args; 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 c91ec5b82..34a9269b3 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 @@ -5,6 +5,7 @@ import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.sdf.SDf09; 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; @@ -41,6 +42,7 @@ public class SDf09MapStore extends TemplateMapStore { object.setId(resultSet.getObject("ID", Long.class)); object.setAccount(resultSet.getString("ACCOUNT")); object.setSum(resultSet.getObject("SUM", BigDecimal.class)); + 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)); @@ -56,11 +58,12 @@ public class SDf09MapStore extends TemplateMapStore { object.getId(), object.getAccount(), object.getSum(), + object.getMarket(), object.getType(), object.getNumber(), object.getInn(), object.getFileName(), - object.getGenerationTime(), + TimeUtil.toDateFromInstant(object.getGenerationTime()), object.getGenerationId() }; return args; 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 d6cfa16df..bb0ef14bd 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 @@ -41,6 +41,7 @@ public class SDf10MapStore extends TemplateMapStore { SDf10 object = new SDf10(); object.setId(resultSet.getObject("ID", Long.class)); object.setAccount(resultSet.getObject("ACCOUNT", String.class)); + object.setSum(resultSet.getObject("SUM", BigDecimal.class)); object.setMarket(resultSet.getObject("MARKET", String.class)); object.setType(resultSet.getObject("TYPE", String.class)); object.setNumber(resultSet.getObject("NUMBER", BigDecimal.class)); @@ -57,6 +58,7 @@ public class SDf10MapStore extends TemplateMapStore { Object[] args = new Object[]{ object.getId(), object.getAccount(), + object.getSum(), object.getMarket(), object.getType(), object.getNumber(), diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SchedulerAllTodayMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SchedulerAllTodayMapStore.java index 6071dbd9a..b72be8e6f 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SchedulerAllTodayMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/SchedulerAllTodayMapStore.java @@ -30,7 +30,7 @@ public class SchedulerAllTodayMapStore extends TemplateMapStore event, String eventType) { log.debug("{} {}", event, eventType); Object value = (EVENT_DELETE.equals(eventType) ? event.getOldValue() : event.getValue()); - if (value instanceof Company) { + if (value instanceof AccountBalance) { + AccountBalanceHistory accountBalanceHistory = new AccountBalanceHistory(); + createBusinessEvent(accountBalanceHistory, eventType); + accountBalanceHistory.setObject((AccountBalance) value); + hazelcastServerInstance.getMap(IMDGDistributedNames.Map_AccountBalanceHistory).put(accountBalanceHistory.getId(), accountBalanceHistory); + } else if (value instanceof Account) { + AccountHistory accountHistory = new AccountHistory(); + createBusinessEvent(accountHistory, eventType); + accountHistory.setObject((Account) value); + hazelcastServerInstance.getMap(IMDGDistributedNames.Map_AccountHistory).put(accountHistory.getId(), accountHistory); + } else if (value instanceof AccountRouting) { + AccountRoutingHistory accountRoutingHistory = new AccountRoutingHistory(); + createBusinessEvent(accountRoutingHistory, eventType); + accountRoutingHistory.setObject((AccountRouting) value); + hazelcastServerInstance.getMap(IMDGDistributedNames.Map_AccountRoutingHistory).put(accountRoutingHistory.getId(), accountRoutingHistory); + } else if (value instanceof BankAccount) { + BankAccountHistory bankAccountHistory = new BankAccountHistory(); + createBusinessEvent(bankAccountHistory, eventType); + bankAccountHistory.setObject((BankAccount) value); + hazelcastServerInstance.getMap(IMDGDistributedNames.Map_BankAccountHistory).put(bankAccountHistory.getId(), bankAccountHistory); + } else if (value instanceof Company) { CompanyHistory companyHistory = new CompanyHistory(); createBusinessEvent(companyHistory, eventType); companyHistory.setObject((Company) value); hazelcastServerInstance.getMap(IMDGDistributedNames.Map_CompanyHistory).put(companyHistory.getId(), companyHistory); + } else if (value instanceof InformationAccount) { + InformationAccountHistory informationAccountHistory = new InformationAccountHistory(); + createBusinessEvent(informationAccountHistory, eventType); + informationAccountHistory.setObject((InformationAccount) value); + hazelcastServerInstance.getMap(IMDGDistributedNames.Map_InformationAccountHistory).put(informationAccountHistory.getId(), informationAccountHistory); + } else if (value instanceof Relation) { + RelationHistory relationHistory = new RelationHistory(); + createBusinessEvent(relationHistory, eventType); + relationHistory.setObject((Relation) value); + hazelcastServerInstance.getMap(IMDGDistributedNames.Map_RelationHistory).put(relationHistory.getId(), relationHistory); + } else if (value instanceof Security) { + SecurityHistory securityHistory = new SecurityHistory(); + createBusinessEvent(securityHistory, eventType); + securityHistory.setObject((Security) value); + hazelcastServerInstance.getMap(IMDGDistributedNames.Map_SecurityHistory).put(securityHistory.getId(), securityHistory); + } else if (value instanceof UserConnect) { + UserConnectHistory userConnectHistory = new UserConnectHistory(); + createBusinessEvent(userConnectHistory, eventType); + userConnectHistory.setObject((UserConnect) value); + hazelcastServerInstance.getMap(IMDGDistributedNames.Map_UserConnectHistory).put(userConnectHistory.getId(), userConnectHistory); + } else if (value instanceof User) { + UserHistory userHistory = new UserHistory(); + createBusinessEvent(userHistory, eventType); + userHistory.setObject((User) value); + hazelcastServerInstance.getMap(IMDGDistributedNames.Map_UserHistory).put(userHistory.getId(), userHistory); } else { log.error("unexpected event {}", event); } diff --git a/clearing-parent/imdg/src/main/resources/application.properties b/clearing-parent/imdg/src/main/resources/application.properties index 0d8a53ff5..25d107bdb 100644 --- a/clearing-parent/imdg/src/main/resources/application.properties +++ b/clearing-parent/imdg/src/main/resources/application.properties @@ -2,7 +2,6 @@ imdg.hazelcast.listenPort=5701 imdg.hazelcast.login=dev 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 \ No newline at end of file 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 new file mode 100644 index 000000000..cb5ba9dee --- /dev/null +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/AllMapStoreTest.java @@ -0,0 +1,322 @@ +package ru.spcex.clearing.imdg; + +import com.hazelcast.config.MapStoreConfig; +import com.hazelcast.core.HazelcastInstance; +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.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.support.DataAccessUtils; +import org.springframework.jdbc.core.BeanPropertyRowMapper; +import org.springframework.jdbc.core.JdbcTemplate; +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; +import ru.clearing.classes.statics.data.profile.CompanyInfo; +import ru.clearing.platform.dictionary.AbstractDictionary; +import ru.clearing.platform.dictionary.CompanySymbolDictionary; +import ru.spcex.clearing.imdg.base.*; +import ru.spcex.clearing.imdg.config.DbTestConnectionConfig; +import ru.spcex.clearing.imdg.config.TestConfiguration; +import ru.spcex.clearing.imdg.structure.BusinessObjectAndBusinessEventForCheckMapStore; +import ru.spcex.clearing.imdg.structure.DictionaryObjectForCheckMapStore; +import ru.spcex.clearing.imdg.utils.BusinessEventRowMapper; +import ru.spcex.clearing.imdg.utils.DbDataUtils; +import ru.spcex.clearing.imdg.utils.SpcexObjectBaseRowMapper; +import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.utils.text.TextUtil; + +import javax.annotation.PostConstruct; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.sql.*; +import java.util.*; +import java.util.stream.Collectors; + +import static ru.spcex.clearing.imdg.structure.RunnableMapNamesForTesting.businessObjectAndBusinessEventForCheckMapStores; +import static ru.spcex.clearing.imdg.structure.RunnableMapNamesForTesting.dictionaryObjectForCheckMapStores; +import static ru.spcex.clearing.imdg.utils.DbDataUtils.generatingRandomString; + +@ContextConfiguration(classes = { + TestConfiguration.class, + DbTestConnectionConfig.class}) +@ExtendWith(SpringExtension.class) +@TestPropertySource(properties = "spring.config.location=D:/repo/mfd/clearing/clearing-parent/imdg/src/main/resources") +public class AllMapStoreTest { + private static final Long ID = 1000000L; + private final Logger log = LoggerFactory.getLogger(this.getClass()); + @Autowired + TestConfiguration testConfig; + + @Autowired + JdbcTemplate jdbcTemplate; + + @PostConstruct + public void initTestObjects() { + try { + for (BusinessObjectAndBusinessEventForCheckMapStore objectForCheck : businessObjectAndBusinessEventForCheckMapStores) { + SpcexObjectBase object = objectForCheck.getClazz().getDeclaredConstructor().newInstance(); + DbDataUtils.fillObjectDefaultValues(object, object.getClass()); + if (objectForCheck.getClazz().equals(CompanyHistory.class)) { + CompanyHistory companyHistory = (CompanyHistory) object; + CompanyInfo companyInfo = companyHistory.getObject().getProfile(); + companyInfo.setCompanyId(companyHistory.getObject().getId()); + companyInfo.setId(1000000L); + objectForCheck.setPredictableObj(companyHistory); + } else if (objectForCheck.getClazz().equals(Company.class)) { + Company company = (Company) object; + CompanyInfo companyInfo = company.getProfile(); + companyInfo.setCompanyId(1000000L); + companyInfo.setId(1000000L); + objectForCheck.setPredictableObj(company); + } else if (objectForCheck.getMapName().startsWith("Map_SDf")) { + trySettingString(object, objectForCheck.getClazz(), "setMarket", 1); + trySettingString(object, objectForCheck.getClazz(), "setFile_type", 1); + trySettingString(object, objectForCheck.getClazz(), "setSeg_type", 1); + trySettingString(object, objectForCheck.getClazz(), "setPriority", 1); + trySettingString(object, objectForCheck.getClazz(), "setPr", 1); + trySettingString(object, objectForCheck.getClazz(), "setType", 1); + trySettingString(object, objectForCheck.getClazz(), "setOp_order", 1); + trySettingString(object, objectForCheck.getClazz(), "setSp_code", 2); + trySettingString(object, objectForCheck.getClazz(), "setDoc_result", 2); + trySettingString(object, objectForCheck.getClazz(), "setAcc_type", 2); + trySettingString(object, objectForCheck.getClazz(), "setOp_type", 2); + trySettingString(object, objectForCheck.getClazz(), "setDoc_result", 2); + trySettingString(object, objectForCheck.getClazz(), "setResult", 3); + trySettingString(object, objectForCheck.getClazz(), "setImp_result", 3); + objectForCheck.setPredictableObj(object); + } else { + objectForCheck.setPredictableObj(object); + } + } + for (DictionaryObjectForCheckMapStore objectForCheck : dictionaryObjectForCheckMapStores) { + AbstractDictionary object = objectForCheck.getClazz().getDeclaredConstructor().newInstance(); + DbDataUtils.fillObjectDefaultValues(object, object.getClass()); + objectForCheck.setPredictableObj(object); + } + } catch (InstantiationException | IllegalAccessException e) { + log.error(e.getMessage()); + } catch (InvocationTargetException | NoSuchMethodException e) { + throw new RuntimeException(e); + } + } + + @Test + public void checkAllMapStoreCreatedTest() throws SQLException { + Assumptions.assumeTrue(false, "todo удалить если будет не нужна, пока не работает из-за не все mapStore готовы"); + //Поиск таблиц которым нужно добавить mapStore и вывод результата в консоль + List nameTables = new ArrayList<>(); + Connection jdbcConnection = DriverManager.getConnection("jdbc:postgresql://10.200.200.133:5432/postgres", "clearing", "Aa111111"); + DatabaseMetaData md = jdbcConnection.getMetaData(); + ResultSet rs = md.getTables(null, "clearing_tester", "%", new String[]{"TABLE"}); + while (rs.next()) { + String tableName = rs.getString("TABLE_NAME"); + //сущности для company_info и company_info_history включены соответсвенно в company и company_history + if (tableName.equals("company_info") || tableName.equals("company_info_history")) { + continue; + } + nameTables.add(tableName); + } + + HazelcastInstance hazelcastInstance = testConfig.getHazelcastInstance(); + hazelcastInstance.getMap(""); + for (String mapName : hazelcastInstance.getConfig().getMapConfigs().keySet()) { + Object mapStore = getMapStore(mapName); + String tableName; + if (mapStore instanceof TemplateMapStore) { + tableName = ((TemplateMapStore) mapStore).getTableName(); + } else if (mapStore instanceof DictionaryMapStore) { + tableName = ((DictionaryMapStore) mapStore).getTableName(); + } else if (mapStore instanceof TemplateEventMapStore) { + tableName = ((TemplateEventMapStore) mapStore).getTableName(); + } else if (mapStore instanceof BusinessObjectMapStore) { + tableName = ((BusinessObjectMapStore) mapStore).getTableName(); + } else if (mapStore instanceof BusinessEventMapStore) { + tableName = ((BusinessEventMapStore) mapStore).getTableName(); + } else if (mapName.equals("default")) { + continue; + } else { + System.out.println(mapStore == null ? "Не получилось сопоставить mapStore: is null" : "Не получилось сопоставить: " + mapStore.getClass() + " с таблицей"); + continue; + } + nameTables.remove(tableName.toLowerCase()); + } + System.out.println("** Результат поиска таблиц которым нужно добавить mapStore **"); + nameTables.forEach(System.out::println); + System.out.println("*************************************************************"); + Assertions.assertEquals(0, nameTables.size()); + } + + @Test + public void checkSavingForAllMapStoreTest() { + saveBusinessObjectAndBusinessEventToMaps(); + saveDictionaryObjectToMaps(); + testConfig.shutDownHazelcast(); + testConfig.reinitHazlecastInstance(); + + for (BusinessObjectAndBusinessEventForCheckMapStore objectForCheck : businessObjectAndBusinessEventForCheckMapStores) { + String mapName = objectForCheck.getMapName(); + SpcexObjectBase actual; + if (getMapStore(mapName) instanceof TemplateEventMapStore) { + String sql = String.format("SELECT * FROM %s WHERE id = %d", getTableNameFromMapStore(objectForCheck.getMapName()), ID); + List obj = jdbcTemplate.query(sql, new BusinessEventRowMapper<>(objectForCheck.getClazz())); + actual = DataAccessUtils.singleResult(obj); + } else if (getMapStore(mapName) instanceof BusinessEventMapStore) { + String sql = String.format("SELECT * FROM %s WHERE id = %d", getTableNameFromMapStore(objectForCheck.getMapName()), ID); + List objCompanyHistory = jdbcTemplate.query(sql, new BusinessEventRowMapper<>(objectForCheck.getClazz())); + CompanyHistory companyHistory = DataAccessUtils.singleResult(objCompanyHistory); + String sqlI = String.format("SELECT * FROM %s WHERE id = %d", "COMPANY_INFO_HISTORY", ID); + List objCompanyInfo = jdbcTemplate.query(sqlI, new SpcexObjectBaseRowMapper<>(CompanyInfo.class)); + CompanyInfo companyInfo = DataAccessUtils.singleResult(objCompanyInfo); + companyHistory.getObject().setProfile(companyInfo); + actual = companyHistory; + } else { + IMap map = testConfig.getHazelcastInstance().getMap(mapName); + actual = map.get(ID); + } + objectForCheck.getMATCHER().assertMatch(actual, objectForCheck.getPredictableObj()); + } + for (DictionaryObjectForCheckMapStore objectForCheck : dictionaryObjectForCheckMapStores) { + String mapName = objectForCheck.getMapName(); + AbstractDictionary actual; + IMap map = testConfig.getHazelcastInstance().getMap(mapName); + actual = map.get(ID); + objectForCheck.getMATCHER().assertMatch(actual, objectForCheck.getPredictableObj()); + } + } + + //todo удалить если будет не нужна, пока не работает из-за "deleteIsSupported() return false" в SimpleObjectMapStore. + @Test + public void checkDeletingForAllMapStoreTest() { + Assumptions.assumeTrue(false, "todo удалить если будет не нужна, пока не работает из-за \"deleteIsSupported() return false\" в SimpleObjectMapStore."); + saveBusinessObjectAndBusinessEventToMaps(); + + for (BusinessObjectAndBusinessEventForCheckMapStore objectForCheck : businessObjectAndBusinessEventForCheckMapStores) { + IMap map = testConfig.getHazelcastInstance().getMap(objectForCheck.getMapName()); + map.remove(ID); + String sql = String.format("SELECT * FROM %s WHERE id = %d", getTableNameFromMapStore(objectForCheck.getMapName()), ID); + List obj = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(objectForCheck.getClazz())); + + Assertions.assertNull(map.get(ID)); + Assertions.assertEquals(0, obj.size()); + } + } + + private String getTableNameFromMapStore(String mapName) { + MapStoreConfig mapStoreConfig = testConfig.getHazelcastInstance().getConfig().getMapConfig(mapName).getMapStoreConfig(); + Object mapStore = mapStoreConfig.getImplementation(); + String tableName = null; + if (mapStore instanceof TemplateMapStore) { + tableName = ((TemplateMapStore) mapStore).getTableName(); + } else if (mapStore instanceof DictionaryMapStore) { + tableName = ((DictionaryMapStore) mapStore).getTableName(); + } else if (mapStore instanceof TemplateEventMapStore) { + tableName = ((TemplateEventMapStore) mapStore).getTableName(); + } else if (mapStore instanceof BusinessObjectMapStore) { + tableName = ((BusinessObjectMapStore) mapStore).getTableName(); + } else if (mapStore instanceof BusinessEventMapStore) { + tableName = ((BusinessEventMapStore) mapStore).getTableName(); + } + return tableName; + } + + private Object getMapStore(String mapName) { + MapStoreConfig mapStoreConfig = testConfig.getHazelcastInstance().getConfig().getMapConfig(mapName).getMapStoreConfig(); + return mapStoreConfig.getImplementation(); + } + + private void saveBusinessObjectAndBusinessEventToMaps() { + for (BusinessObjectAndBusinessEventForCheckMapStore objectForCheck : businessObjectAndBusinessEventForCheckMapStores) { + String mapName = objectForCheck.getMapName(); + SpcexObjectBase spcexObjectBase = objectForCheck.getPredictableObj(); + spcexObjectBase.setId(ID); + log.info("Запись в мап {} объекта {}", mapName, spcexObjectBase); + IMap map = testConfig.getHazelcastInstance().getMap(mapName); + map.put(spcexObjectBase.getId(), spcexObjectBase); + } + } + + private void saveDictionaryObjectToMaps() { + for (DictionaryObjectForCheckMapStore objectForCheck : dictionaryObjectForCheckMapStores) { + String mapName = objectForCheck.getMapName(); + AbstractDictionary dictionaryObj = objectForCheck.getPredictableObj(); + dictionaryObj.setId(ID); + log.info("Запись в мап {} объекта {}", mapName, dictionaryObj); + Object mapStore = getMapStore(mapName); + String[] fields; + Object[] args; + if (mapName.equals(IMDGDistributedNames.Map_CompanySymbolDictionary)) { + CompanySymbolDictionary companySymbolDictionary = (CompanySymbolDictionary) dictionaryObj; + fields = new String[]{"ID", "CODE", "NAME", "SHORTNAME"}; + args = new Object[]{companySymbolDictionary.getId(), companySymbolDictionary.getCode(), companySymbolDictionary.getName(), companySymbolDictionary.getShortname()}; + } else { + fields = new String[]{"ID", "CODE", "NAME"}; + args = new Object[]{dictionaryObj.getId(), dictionaryObj.getCode(), dictionaryObj.getName()}; + } + makeInsertSql(((DictionaryTMapStore) mapStore).getTableName(), fields, args, "id"); + } + } + + private void trySettingString(SpcexObjectBase object, Class clazz, String methodName, int lenght) { + try { + Method method = clazz.getDeclaredMethod(methodName, String.class); + method.invoke(object, generatingRandomString(lenght)); + } catch (Exception ignored) { + } + } + + private void makeInsertSql(String tableName, String[] fields, Object[] args, String matchingKey) { + String INSERT_TEMPLATE = "INSERT INTO ${tableName} (${columnsEnumeration}) VALUES (${valuesEnumeration}) ON CONFLICT (${matchingKey}) DO UPDATE SET ${excludedColumns}"; + + String columnsEnumeration = Arrays.stream(fields).map(f -> "" + f.toUpperCase() + "").collect(Collectors.joining(", ")); + String valuesEnumeration = String.join(", ", Collections.nCopies(fields.length, "?")); + String excludedColumns = Arrays.stream(fields).filter(f -> !matchingKey.equalsIgnoreCase(f)). + map(f -> "" + f.toUpperCase() + "=EXCLUDED." + f.toUpperCase() + "").collect(Collectors.joining(", ")); + + Map params = new HashMap<>(); + params.put("tableName", tableName); + params.put("columnsEnumeration", columnsEnumeration); + params.put("valuesEnumeration", valuesEnumeration); + params.put("matchingKey", matchingKey.toUpperCase()); + params.put("excludedColumns", excludedColumns); + + String insertStatement = TextUtil.format(INSERT_TEMPLATE, params); + + List batchArgs = new ArrayList<>(); + if (args.length != args.length) { + throw new IllegalArgumentException("objectToField return " + args.length + " arguments, but expected " + args.length); + } + batchArgs.add(args); + batchInsertUpdate(insertStatement, batchArgs, tableName); + } + + private void batchInsertUpdate(@NonNull String insertStatement, @NonNull List args, String tableName) { + try { + int[][] ret = jdbcTemplate.batchUpdate(insertStatement, args, 1000, (ps, params) -> { + for (int i = 0; i < params.length; i++) { + Object value = params[i]; + try { + StatementCreatorUtils.setParameterValue(ps, i + 1, SqlTypeValue.TYPE_UNKNOWN, value); + } catch (SQLException e) { + throw new SQLException("batchInsertUpdate, at prepare argument " + i + " value = " + value + "; SQL=" + insertStatement, e); + } + } + }); + int batchSize = ret.length > 0 ? ret[0].length : ret.length; + log.debug("{} {} rows stored", tableName, batchSize); + } catch (Exception e) { + log.error("SQL error at batch UPDATE OR INSERT INTO {}\n{}", tableName, ExceptionUtils.getStackTrace(e)); + throw e; + } + } +} \ No newline at end of file diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/config/DbTestConnectionConfig.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/config/DbTestConnectionConfig.java new file mode 100644 index 000000000..b292343e3 --- /dev/null +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/config/DbTestConnectionConfig.java @@ -0,0 +1,76 @@ +package ru.spcex.clearing.imdg.config; + +import com.mchange.v2.c3p0.ComboPooledDataSource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.ClassPathResource; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.datasource.init.DatabasePopulator; +import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; +import ru.spcex.clearing.imdg.error.ModuleInitializeException; + +import javax.sql.DataSource; +import java.sql.Connection; + +@SuppressWarnings("UnnecessaryLocalVariable") +@Configuration +public class DbTestConnectionConfig { + private final Logger log = LoggerFactory.getLogger(this.getClass()); + + private DatabasePopulator createDatabasePopulator() { + ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator(); + databasePopulator.setContinueOnError(true); + databasePopulator.addScript(new ClassPathResource("/ddl.sql")); + return databasePopulator; + } + + @Bean + public DataSource dataSource() { + DataSource result; + String login = "clearing"; + String password = "Aa111111"; + String logTimeoutPart = ""; + String dbPath = "jdbc:postgresql://10.200.200.133:5432/postgres?currentSchema=clearing_tester"; + int timeoutSec = 30; + + ComboPooledDataSource cpds = new ComboPooledDataSource(); + try { + cpds.setDriverClass("org.postgresql.Driver"); + } catch (Exception ue) { + throw new RuntimeException(ue); + } + cpds.setJdbcUrl(dbPath); + cpds.setUser(login); + cpds.setPassword(password); + cpds.setInitialPoolSize(10); + cpds.setMinPoolSize(01); + cpds.setMaxPoolSize(30); + int numHelperThreads = Runtime.getRuntime().availableProcessors() * 2; + cpds.setNumHelperThreads(numHelperThreads); + cpds.setCheckoutTimeout(timeoutSec * 1000); + logTimeoutPart = String.format(" (timeout=%ds)", timeoutSec); +// DatabasePopulatorUtils.execute(createDatabasePopulator(), cpds); + result = cpds; + + String OPERATION_DATABASE_CONNECTION_CHECK = String.format("Database [%s] connection check", dbPath); + try { + Connection conn = result.getConnection(); + conn.close(); + log.info("{}: success", OPERATION_DATABASE_CONNECTION_CHECK); + return result; + } catch (Throwable e) { + String msg = String.format("%s%s: failed: %s -> %s", + OPERATION_DATABASE_CONNECTION_CHECK, logTimeoutPart, e.getClass().getSimpleName(), e.getMessage()); + log.error(msg); + throw new ModuleInitializeException(msg, e); + } + } + + @Bean + public JdbcTemplate jdbcTemplate(DataSource dataSource) { + JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); + return jdbcTemplate; + } +} diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/config/TestConfiguration.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/config/TestConfiguration.java new file mode 100644 index 000000000..39c46e355 --- /dev/null +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/config/TestConfiguration.java @@ -0,0 +1,51 @@ +package ru.spcex.clearing.imdg.config; + +import com.hazelcast.config.Config; +import com.hazelcast.core.Hazelcast; +import com.hazelcast.core.HazelcastInstance; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration +@Import({HazelcastConfiguration.class, PoolMapConfigs.class}) +@ComponentScan(basePackages = {"ru.spcex.clearing.imdg"}) +public class TestConfiguration { + private final Logger log = LoggerFactory.getLogger(this.getClass()); + @Autowired + private HazelcastInstance hazelcastInstance; + + @Autowired + private Config hazelcastConfig; + + public void shutDownHazelcast() { + if (hazelcastInstance != null) { + hazelcastInstance.getLifecycleService().shutdown(); + + while (hazelcastInstance.getLifecycleService().isRunning()) { + try { + Thread.sleep(1000); + log.info("Waiting to complete hazelCast"); + } catch (InterruptedException e) { + log.warn("Test at ShutDownHazelcast(): thread interrupted {}", e); + } + } + } + hazelcastInstance = null; + } + + public void reinitHazlecastInstance() { + hazelcastInstance = Hazelcast.getOrCreateHazelcastInstance(hazelcastConfig); + } + + public Config getHazelcastConfig() { + return hazelcastConfig; + } + + public HazelcastInstance getHazelcastInstance() { + return hazelcastInstance; + } +} diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/BusinessObjectAndBusinessEventForCheckMapStore.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/BusinessObjectAndBusinessEventForCheckMapStore.java new file mode 100644 index 000000000..ed1548ae4 --- /dev/null +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/BusinessObjectAndBusinessEventForCheckMapStore.java @@ -0,0 +1,80 @@ +package ru.spcex.clearing.imdg.structure; + + +import ru.spcex.clearing.imdg.utils.MatcherFactory.Matcher; +import ru.spcex.platform.classes.base.SpcexObjectBase; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import static ru.spcex.clearing.imdg.utils.MatcherFactory.usingIgnoringFieldsComparator; + +public class BusinessObjectAndBusinessEventForCheckMapStore { + + public final Matcher MATCHER = usingIgnoringFieldsComparator(); + private final String mapName; + private final Class clazz; + private SettingOperation settingOperation; + + private SpcexObjectBase predictableObj; + + public BusinessObjectAndBusinessEventForCheckMapStore(String mapName, Class clazz) { + this.mapName = mapName; + this.clazz = clazz; + } + + public BusinessObjectAndBusinessEventForCheckMapStore(String mapName, Class clazz, SettingOperation settingOperation) { + this.mapName = mapName; + this.clazz = clazz; + this.settingOperation = settingOperation; + } + + public String getMapName() { + return mapName; + } + + public Class getClazz() { + return clazz; + } + + public Matcher getMATCHER() { + return MATCHER; + } + + public SpcexObjectBase getPredictableObj() { + return predictableObj; + } + + public void setPredictableObj(SpcexObjectBase predictableObj) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { + if (settingOperation != null) { + Method method = clazz.getDeclaredMethod(settingOperation.getMethodName(), settingOperation.getParameterTypes()); + method.invoke(predictableObj, settingOperation.getParams()); + } + this.predictableObj = predictableObj; + } + + public static class SettingOperation { + private final String methodName; + private final Class[] parameterTypes; + private final Object[] params; + + //сеттер для полей значения которых обрезаются при вставке в БД + public SettingOperation(String methodName, Class[] parameterTypes, Object[] params) { + this.methodName = methodName; + this.parameterTypes = parameterTypes; + this.params = params; + } + + public String getMethodName() { + return methodName; + } + + public Class[] getParameterTypes() { + return parameterTypes; + } + + public Object[] getParams() { + return params; + } + } +} diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/DictionaryObjectForCheckMapStore.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/DictionaryObjectForCheckMapStore.java new file mode 100644 index 000000000..8f34e25d7 --- /dev/null +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/DictionaryObjectForCheckMapStore.java @@ -0,0 +1,43 @@ +package ru.spcex.clearing.imdg.structure; + + +import ru.clearing.platform.dictionary.AbstractDictionary; +import ru.spcex.clearing.imdg.utils.MatcherFactory.Matcher; + +import java.lang.reflect.InvocationTargetException; + +import static ru.spcex.clearing.imdg.utils.MatcherFactory.usingIgnoringFieldsComparator; + +public class DictionaryObjectForCheckMapStore { + + public final Matcher MATCHER = usingIgnoringFieldsComparator(); + private final String mapName; + private final Class clazz; + + private AbstractDictionary predictableObj; + + public DictionaryObjectForCheckMapStore(String mapName, Class clazz) { + this.mapName = mapName; + this.clazz = clazz; + } + + public String getMapName() { + return mapName; + } + + public Class getClazz() { + return clazz; + } + + public Matcher getMATCHER() { + return MATCHER; + } + + public AbstractDictionary getPredictableObj() { + return predictableObj; + } + + public void setPredictableObj(AbstractDictionary predictableObj) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { + this.predictableObj = predictableObj; + } +} 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 new file mode 100644 index 000000000..153812e43 --- /dev/null +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java @@ -0,0 +1,148 @@ +package ru.spcex.clearing.imdg.structure; + +import ru.clearing.classes.statics.data.account.*; +import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.company.CompanyHistory; +import ru.clearing.classes.statics.data.company.CompanyRoleSet; +import ru.clearing.classes.statics.data.company.CompanySymbols; +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.OutDocumentJournal; +import ru.clearing.classes.statics.data.messages.ErrorText; +import ru.clearing.classes.statics.data.misc.KeyRate; +import ru.clearing.classes.statics.data.misc.MoneyMarketSecurity; +import ru.clearing.classes.statics.data.profile.Contact; +import ru.clearing.classes.statics.data.profile.ProfileDocument; +import ru.clearing.classes.statics.data.scheduler.*; +import ru.clearing.classes.statics.data.sdf.*; +import ru.clearing.classes.statics.data.security.Security; +import ru.clearing.classes.statics.data.security.SecurityHistory; +import ru.clearing.classes.statics.data.statement.Statement; +import ru.clearing.classes.statics.data.user.*; +import ru.clearing.platform.dictionary.*; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.structure.BusinessObjectAndBusinessEventForCheckMapStore.SettingOperation; + +import java.math.BigDecimal; +import java.util.LinkedList; +import java.util.List; + +public class RunnableMapNamesForTesting { + public static List businessObjectAndBusinessEventForCheckMapStores; + public static List dictionaryObjectForCheckMapStores; + + static { + init(); + } + + private static void init() { + businessObjectAndBusinessEventForCheckMapStores = new LinkedList<>(); + dictionaryObjectForCheckMapStores = new LinkedList<>(); + + //business event + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_AccountBalanceHistory, AccountBalanceHistory.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_AccountHistory, AccountHistory.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_AccountRoutingHistory, AccountRoutingHistory.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_BankAccountHistory, BankAccountHistory.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_CompanyHistory, CompanyHistory.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_InformationAccountHistory, InformationAccountHistory.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_RelationHistory, RelationHistory.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SecurityHistory, SecurityHistory.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UserConnectHistory, UserConnectHistory.class)); + 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_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_Scheduler, Scheduler.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_TaskRunner, TaskRunner.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Timetable, Timetable.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_TradingCalendar, TradingCalendar.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UserConnect, UserConnect.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_User, User.class)); + + //dictionary + dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_AccountStatusDictionary, AccountStatusDictionary.class)); + dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_AccountTypeDictionary, AccountTypeDictionary.class)); + 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_ClearingStatusDictionary, ClearingStatusDictionary.class)); + dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_CompanyRoleDictionary, CompanyRoleDictionary.class)); + dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_CompanySymbolDictionary, CompanySymbolDictionary.class)); + dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ConnectionStateDictionary, ConnectionStateDictionary.class)); + dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ContactTypeDictionary, ContactTypeDictionary.class)); + dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_CorporationSoleTypeDictionary, CorporationSoleTypeDictionary.class)); + 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_DocumentTypeDictionary, DocumentTypeDictionary.class)); + 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)); + dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ManagementJournalTypeDictionary, ManagementJournalTypeDictionary.class)); + dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_MoneyFlowSideDictionary, MoneyFlowSideDictionary.class)); + 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_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_SourceDictionary, SourceDictionary.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_TradingStatusDictionary, TradingStatusDictionary.class)); + dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_UserRoleDictionary, UserRoleDictionary.class)); + dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, WorkflowStatusDictionary.class)); + + //object + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_AccountRouting, AccountRouting.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_BankAccount, BankAccount.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class)); + 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_InDocumentJournal, InDocumentJournal.class, + new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("23.22")}))); + 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")}))); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_OutDocumentJournal, OutDocumentJournal.class, + new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("23.22")}))); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SchedulerAllToday, SchedulerAllToday.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)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf04, SDf04.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf05, SDf05.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf08, SDf08.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf09, SDf09.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf10, SDf10.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf11, SDf11.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf12, SDf12.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf13, SDf13.class)); + 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_UserRoleSession, UserRoleSession.class)); + businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UserSettings, UserSettings.class)); + } +} diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/AbstractHistoryRowMapper.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/AbstractHistoryRowMapper.java new file mode 100644 index 000000000..00f746706 --- /dev/null +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/AbstractHistoryRowMapper.java @@ -0,0 +1,74 @@ +package ru.spcex.clearing.imdg.utils; + +import org.springframework.jdbc.core.RowMapper; +import ru.spcex.platform.classes.base.SpcexObjectBase; + +import java.lang.reflect.Field; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Time; +import java.sql.Timestamp; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.ZoneId; +import java.util.Date; + +public abstract class AbstractHistoryRowMapper implements RowMapper { + @Override + abstract public T mapRow(ResultSet rs, int rowNum) throws SQLException; + + + protected void setValueFildForObjectIfFildExists(SpcexObjectBase object, Class clazz, String fildName, Object value) { + try { + Field field = clazz.getDeclaredField(fildName); + field.setAccessible(true); + Class typeField = field.getType(); + if (typeField.equals(LocalDate.class)) { + Date date = (Date) value; + field.set(object, value != null ? Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDate() : null); + } else if (typeField.equals(LocalTime.class)) { + Time time = (Time) value; + field.set(object, value != null ? time.toLocalTime() : null); + } else if (typeField.getName().equals(Instant.class.getName())) { + field.set(object, value != null ? ((Timestamp) value).toInstant() : null); + } else { + field.set(object, value); + } + } catch (NoSuchFieldException e) { + if (!clazz.getSuperclass().getName().equals(Object.class.getName())) { + setValueFildForObjectIfFildExists(object, clazz.getSuperclass(), fildName, value); + } + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + } + + protected String getFildName(String str, String objIdColumn) { + if (str.equals(objIdColumn)) { + return "objId"; + } else if (str.equals("created_at")) { + return "created"; + } else if (str.equals("updated_at")) { + return "updated"; + } + return snakeCaseToCamelCase(str); + } + + protected String snakeCaseToCamelCase(String str) { + StringBuilder builder = new StringBuilder(str); + for (int i = 0; i < builder.length(); i++) { + + // Check char is underscore + if (builder.charAt(i) == '_') { + builder.deleteCharAt(i); + builder.replace( + i, i + 1, + String.valueOf( + Character.toUpperCase( + builder.charAt(i)))); + } + } + return builder.toString(); + } +} \ No newline at end of file diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/BusinessEventRowMapper.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/BusinessEventRowMapper.java new file mode 100644 index 000000000..0b04f8be5 --- /dev/null +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/BusinessEventRowMapper.java @@ -0,0 +1,65 @@ +package ru.spcex.clearing.imdg.utils; + +import org.springframework.beans.BeanUtils; +import org.springframework.beans.NotWritablePropertyException; +import org.springframework.beans.TypeMismatchException; +import org.springframework.jdbc.support.JdbcUtils; +import ru.clearing.classes.objects.BusinessEvent; +import ru.spcex.platform.classes.base.SpcexObjectBase; + +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; + +public class BusinessEventRowMapper extends AbstractHistoryRowMapper { + + private final Class mappedClass; + + public BusinessEventRowMapper(Class mappedClass) { + this.mappedClass = mappedClass; + } + + @Override + public T mapRow(ResultSet rs, int rowNum) throws SQLException { + T historyObject = BeanUtils.instantiateClass(this.mappedClass); + SpcexObjectBase objectFild = null; + try { + objectFild = (SpcexObjectBase) BeanUtils.instantiateClass(historyObject.getClass().getDeclaredField("object").getType()); + } catch (NoSuchFieldException e) { + throw new RuntimeException(e); + } + ResultSetMetaData meta_data = rs.getMetaData(); + String objIdColumn = rs.getMetaData().getTableName(1).replace("_history", "_id"); + + int columnCount = meta_data.getColumnCount(); + + for (int index = 1; index <= columnCount; index++) { + String column = JdbcUtils.lookupColumnName(meta_data, index); + String fildName = getFildName(column, objIdColumn); + try { + Object value = JdbcUtils.getResultSetValue(rs, index, Class.forName(meta_data.getColumnClassName(index))); + if (fildName.equals("id")) { + historyObject.setId((Long) value); + continue; + } else if (fildName.equals("eventUserId")) { + historyObject.setUserId((Long) value); + continue; + } else if (fildName.equals("userId")) { + setValueFildForObjectIfFildExists(objectFild, objectFild.getClass(), fildName, value); + continue; + } else if (fildName.equals("objId")) { + objectFild.setId((Long) value); + continue; + } + setValueFildForObjectIfFildExists(historyObject, historyObject.getClass(), fildName, value); + setValueFildForObjectIfFildExists(objectFild, objectFild.getClass(), fildName, value); + } catch (TypeMismatchException | NotWritablePropertyException e) { + // Ignore + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + } + historyObject.setObject(objectFild); + return historyObject; + } +} \ No newline at end of file diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/DbDataUtils.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/DbDataUtils.java new file mode 100644 index 000000000..10ec1bca6 --- /dev/null +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/DbDataUtils.java @@ -0,0 +1,251 @@ +package ru.spcex.clearing.imdg.utils; + + +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.jdbc.core.JdbcTemplate; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Modifier; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalTime; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Утилитарный класс для работы с embedded базой. + * Так же используется для заполнения значений классов для подготовки вставки в базу + */ +public final class DbDataUtils { + private static final Logger log = LoggerFactory.getLogger(DbDataUtils.class); + /** + * Паттерн который проверяет что исполняемый скрипт пересоздает таблицу (recreate table * (*)) + */ + private final static Pattern PATTERN_CREATE_TABLE = Pattern.compile( + "(?m)(?i)^\\s*?(?:re)*(create\\s*?table\\s*?[^\\s$]+?\\s*?\\([\\S\\s]+?(?:\\);|^\\)\\s*?$))"); + private final static Pattern PATTERN_ALTER_TABLE = Pattern.compile( + "(?m)(?i)^\\s*?(alter\\s*?table\\s*?[^\\s$]+?\\s*?add\\s*?constraint\\s*?[^\\s$]+?\\s*?primary\\s*?key\\s*?\\([\\S\\s]+?(?:\\);|^\\)\\s*?$))"); + private final static Pattern PATTERN_UPDATE_OR_INSERT_TABLE = Pattern.compile( + "(?i)update\\s+\\w+\\s+set\\s+\\w+|update\\s+or\\s+insert\\s+into\\s+\\w+.*?values|insert\\s+into\\s+\\w+.*?values"); + private final static Pattern PATTERN_UPDATE_OR_INSERT_VERSIONDB = Pattern.compile( + "(?m)(?i)^\\s*?(update or insert into VERSIONEDID\\s*?[\\w\\s\\(\\,)]+\\s*values\\s*?[\\w\\s\\.'\\(\\,)]+matching\\s*?[\\w\\s,\\(\\)]+\\s*;)"); + private final static Pattern PATTERN_CHANGE_CREATE_TO_RECREATE = Pattern.compile( + "(?i)^\\s*?create"); + private static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("ddMMyyyy"); + + /** + * Создавать объект этого типа нельзя + */ + private DbDataUtils() { + } + + /** + * Создает пустую базу по DDL скрипту (только таблицы), так же проверяет скрипты DDL на валидность. + */ + public static void executeAllDDL(List DDLs, JdbcTemplate jdbcTemplate) { + Logger log = LoggerFactory.getLogger(DbDataUtils.class); + log.info("Создание всех таблиц по DDL.sql"); + int executed = 0; + for (String dll : DDLs) { + executed += executeOneDDL(dll, jdbcTemplate); + } + log.info("Закончено создание таблиц... выполненых запросов {}", executed); + } + + public static int executeOneDDL(String ddl, JdbcTemplate jdbcTemplate) { + Logger log = LoggerFactory.getLogger(DbDataUtils.class); + Matcher m = PATTERN_CREATE_TABLE.matcher(ddl); +// Matcher alterMatcher = PATTERN_ALTER_TABLE.matcher(ddl); + List sqls = new ArrayList<>(); +// List alterSqls = new ArrayList<>(); + while (m.find()) { + String oneDDL = m.group(1); + Matcher mr = PATTERN_CHANGE_CREATE_TO_RECREATE.matcher(oneDDL); + oneDDL = mr.replaceAll("RECREATE"); + sqls.add(oneDDL); + } + +// while (alterMatcher.find()) { +// String oneDDL = alterMatcher.group(1); +// alterSqls.add(oneDDL); +// } + log.info("Exec batch"); + int[] result = jdbcTemplate.batchUpdate(sqls.toArray(new String[0])); +// int alterResult[] = jdbcTemplate.batchUpdate(alterSqls.toArray(new String[0])); + log.info("Batch sql done"); + + // Для проставления версии БД + int insertCount = 0; + Matcher versionM = PATTERN_UPDATE_OR_INSERT_VERSIONDB.matcher(ddl); + while (versionM.find()) { + String oneSQL = versionM.group(1); + jdbcTemplate.execute(oneSQL); + log.trace("Executed version SQL: {}", oneSQL); + insertCount++; + } + + return result.length + insertCount; + } + + public static void fillMandatorySqlData(Map mandatorySql, JdbcTemplate jdbcTemplate) { + Logger log = LoggerFactory.getLogger(DbDataUtils.class); + log.info("Заполнение базы общими значениями"); + fillSqlData(mandatorySql, jdbcTemplate); + } + + public static void fillAdditionalSqlData(Map additionalSql, JdbcTemplate jdbcTemplate) { + Logger log = LoggerFactory.getLogger(DbDataUtils.class); + log.info("Заполнение базы дополнительными значениями"); + fillSqlData(additionalSql, jdbcTemplate); + } + + public static void fillSqlData(Map sqlMap, JdbcTemplate jdbcTemplate) { + Logger log = LoggerFactory.getLogger(DbDataUtils.class); + for (Map.Entry sqlEntry : sqlMap.entrySet()) { + String sql = sqlEntry.getValue(); + String[] lines = sql.split("\n"); + List sqls = new ArrayList<>(); + for (String line : lines) { + if (StringUtils.isEmpty(line) || StringUtils.isWhitespace(line)) + continue; + String execLine = line.trim(); + if (!execLine.endsWith(";")) + execLine += ";"; + Matcher updateOrInsertMatcher = PATTERN_UPDATE_OR_INSERT_TABLE.matcher(execLine); + if (updateOrInsertMatcher.find()) { + execLine = execLine.replaceAll("(?i)update\\s+or\\s+insert\\s*", "insert "); + log.info("Скрипт {}", execLine); + sqls.add(execLine); + } + } + log.info("Exec batch"); + int[] result = jdbcTemplate.batchUpdate(sqls.toArray(new String[0])); + log.info("Batch sql done"); + } + log.info("Заполнение базы значениями завершено"); + + } + + private static void fillObjectDefaultValues(Object object) { + fillObjectDefaultValues(object, object.getClass()); + for (Field field : object.getClass().getDeclaredFields()) { + if (!Modifier.isFinal(field.getModifiers())) { + field.setAccessible(true); + setFieldDefaultValue(field, object); + } + } + } + + public static void fillObjectDefaultValues(Object object, Class clazz) { + if (!clazz.getSuperclass().getName().equals(Object.class.getName())) { + fillObjectDefaultValues(object, clazz.getSuperclass()); + } + for (Field field : clazz.getDeclaredFields()) { + if (!Modifier.isFinal(field.getModifiers()) && !Modifier.isStatic(field.getModifiers())) { + field.setAccessible(true); + setFieldDefaultValue(field, object); + } + } + } + + public static void getObjectsFieldValues(Object object, Map values, boolean deepScan) throws IllegalAccessException { + if (!object.getClass().getSuperclass().getName().equals(Object.class.getName())) { + log.trace("Scan values of {}", object.getClass().getName()); + getObjectsFieldValues(object.getClass().getSuperclass(), values, deepScan); + for (Field field : object.getClass().getDeclaredFields()) { + if (!Modifier.isFinal(field.getModifiers())) { + field.setAccessible(true); + Object value = field.get(object); + values.put(field, value); + if (deepScan && isBusinessObject(value)) { // пройти внутрь наших классов + getObjectsFieldValues(value, values, deepScan); // go to deeper + } + } + } + } + } + + /** + * Это наш класс и не примитив + * + * @param value объект, возможно otc-объект. + * @return нужно ли применять deepScan + */ + private static boolean isBusinessObject(Object value) { + String classesClassPathPrefix = "ru.clearing.classes.objects"; + return value != null && value.getClass().getName().startsWith(classesClassPathPrefix); + } + + private static void setFieldDefaultValue(Field field, Object object) { + Logger log = LoggerFactory.getLogger(DbDataUtils.class); + Class typeField = field.getType(); + try { + if (typeField.getName().equals(String.class.getName())) { + field.set(object, generatingRandomString(4)); + } else if (typeField.equals(Integer.TYPE) || typeField.equals(Integer.class)) { + field.set(object, generatingRandomInteger()); + } else if (typeField.getName().equals(BigDecimal.class.getName())) { + field.set(object, new BigDecimal(String.format("%d3.220000000000000000", generatingRandomInteger()))); + } else if (typeField.equals(Long.TYPE) || typeField.equals(Long.class)) { + field.set(object, generatingRandomLong()); + } else if (typeField.equals(LocalDate.class)) { + field.set(object, LocalDate.of(2022, generatingRandomInteger(), generatingRandomInteger())); + } else if (typeField.equals(LocalTime.class)) { + field.set(object, LocalTime.of(generatingRandomInteger(), generatingRandomInteger())); + } else if (typeField.getName().equals(Date.class.getName())) { + field.set(object, new Date()); + } else if (typeField.getName().equals(Boolean.class.getName())) { + field.set(object, true); + } else if (typeField.getName().equals(UUID.class.getName())) { + field.set(object, UUID.randomUUID()); + } else if (typeField.getName().equals(Instant.class.getName())) { + field.set(object, Instant.parse(String.format("2022-10-0%dT15:39:18.659Z", generatingRandomInteger()))); +// } else if (typeField.getSimpleName().equals(CompanyInfo.class.getSimpleName())) { +// CompanyInfo companyInfo = new CompanyInfo(); +// fillObjectDefaultValues(companyInfo, CompanyInfo.class); +// field.set(object, companyInfo); +// } else if (typeField.getSuperclass().getName().equals(SpcexObjectBase.class.getName())) { +// Object objectField = typeField.getDeclaredConstructor().newInstance(); +// DbDataUtils.fillObjectDefaultValues(objectField, objectField.getClass()); +// field.set(object, objectField); + } else { + Object objectField = typeField.getDeclaredConstructor().newInstance(); + fillObjectDefaultValues(objectField, objectField.getClass()); + field.set(object, objectField); + } + } catch (IllegalAccessException e) { + log.info(e.getMessage()); + } catch (InvocationTargetException | InstantiationException | NoSuchMethodException e) { + throw new RuntimeException(e); + } + } + + public static String generatingRandomString(int targetStringLength) { + int leftLimit = 97; // letter 'a' + int rightLimit = 122; // letter 'z' + Random random = new Random(); + + return random.ints(leftLimit, rightLimit + 1) + .limit(targetStringLength) + .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) + .toString(); + } + + public static Long generatingRandomLong() { + long leftLimit = 1L; + long rightLimit = 1000000L; + return leftLimit + (long) (Math.random() * (rightLimit - leftLimit)); + } + + public static int generatingRandomInteger() { + int leftLimit = 1; + int rightLimit = 9; + return leftLimit + (int) (new Random().nextFloat() * (rightLimit - leftLimit)); + } +} diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/MatcherFactory.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/MatcherFactory.java new file mode 100644 index 000000000..e4f858eb6 --- /dev/null +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/MatcherFactory.java @@ -0,0 +1,38 @@ +package ru.spcex.clearing.imdg.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); + } + } +} diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/SpcexObjectBaseRowMapper.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/SpcexObjectBaseRowMapper.java new file mode 100644 index 000000000..ce1d441d2 --- /dev/null +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/SpcexObjectBaseRowMapper.java @@ -0,0 +1,48 @@ +package ru.spcex.clearing.imdg.utils; + +import org.springframework.beans.BeanUtils; +import org.springframework.beans.NotWritablePropertyException; +import org.springframework.beans.TypeMismatchException; +import org.springframework.jdbc.support.JdbcUtils; +import ru.spcex.platform.classes.base.SpcexObjectBase; + +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; + +public class SpcexObjectBaseRowMapper extends AbstractHistoryRowMapper { + + private final Class mappedClass; + + public SpcexObjectBaseRowMapper(Class mappedClass) { + this.mappedClass = mappedClass; + } + + @Override + public T mapRow(ResultSet rs, int rowNum) throws SQLException { + T object = BeanUtils.instantiateClass(this.mappedClass); + ResultSetMetaData meta_data = rs.getMetaData(); + String objIdColumn = rs.getMetaData().getTableName(1).replace("_history", "_id"); + + int columnCount = meta_data.getColumnCount(); + + for (int index = 1; index <= columnCount; index++) { + String column = JdbcUtils.lookupColumnName(meta_data, index); + String fildName = getFildName(column, objIdColumn); + try { + Object value = JdbcUtils.getResultSetValue(rs, index, Class.forName(meta_data.getColumnClassName(index))); + if (fildName.equals("objId")) { + object.setId((Long) value); + continue; + } + setValueFildForObjectIfFildExists(object, object.getClass(), fildName, value); + } catch (TypeMismatchException | NotWritablePropertyException e) { + // Ignore + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + + } + return object; + } +} \ No newline at end of file diff --git a/clearing-parent/imdg/src/test/resources/ddl.sql b/clearing-parent/imdg/src/test/resources/ddl.sql new file mode 100644 index 000000000..6a9c2eeb6 --- /dev/null +++ b/clearing-parent/imdg/src/test/resources/ddl.sql @@ -0,0 +1,4877 @@ +-- DB version: 0.0.0.6 +/* Dictionaries */ + +-- chargeDirection - Направление начисления комиссии +DROP TABLE IF EXISTS CHARGE_DIRECTION_DICTIONARY; +CREATE TABLE 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 - Справочник типов комиссий +DROP TABLE IF EXISTS CHARGE_TYPE_DICTIONARY; +CREATE TABLE 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 - Способ доставки документа +DROP TABLE IF EXISTS COURIER_TYPE_DICTIONARY; +CREATE TABLE 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 - Справочник статусов возвращения процентов +DROP TABLE IF EXISTS INTEREST_STATUS_DICTIONARY; +CREATE TABLE 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 - Справочник видов инструментов денежного рынка +DROP TABLE IF EXISTS TERM_TYPE_DICTIONARY; +CREATE TABLE 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 - Справочник задач +DROP TABLE IF EXISTS TASK_DICTIONARY; +CREATE TABLE 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 - Справочник статусов задач +DROP TABLE IF EXISTS TASK_STATUS_DICTIONARY; +CREATE TABLE 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 - Справочник торговых статусов +DROP TABLE IF EXISTS TRADING_STATUS_DICTIONARY; +CREATE TABLE 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 - Справочник статусов транзакций +DROP TABLE IF EXISTS TRANSACTION_STATUS_DICTIONARY; +CREATE TABLE 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 - Справочник источников +DROP TABLE IF EXISTS SOURCE_DICTIONARY; +CREATE TABLE 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 - Справочник результатов клиринга +DROP TABLE IF EXISTS CLEARING_STATUS_DICTIONARY; +CREATE TABLE 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 - Справочник статусов бизнес-процессов +DROP TABLE IF EXISTS WORKFLOW_STATUS_DICTIONARY; +CREATE TABLE 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 - Справочник статусов счетов +DROP TABLE IF EXISTS ACCOUNT_STATUS_DICTIONARY; +CREATE TABLE 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 - Справочник признаков допустимости использования объектов +DROP TABLE IF EXISTS ALLOWED_DICTIONARY; +CREATE TABLE 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 - Направление заявки +DROP TABLE IF EXISTS MONEY_FLOW_SIDE_DICTIONARY; +CREATE TABLE 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 - Справочник значений направления денежного потока +DROP TABLE IF EXISTS IN_OUT_DIRECTION_DICTIONARY; +CREATE TABLE 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 - Справочник типов поступлений/списаний от ПРЦ +DROP TABLE IF EXISTS STATEMENT_TYPE_DICTIONARY; +CREATE TABLE 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 - Справочник типов операций +DROP TABLE IF EXISTS OPERATION_TYPE_DICTIONARY; +CREATE TABLE 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 - Справочник статусов операций +DROP TABLE IF EXISTS OPERATION_STATUS_DICTIONARY; +CREATE TABLE 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 - Справочник типов лимитов +DROP TABLE IF EXISTS BALANCE_ACCOUNT_TYPE_DICTIONARY; +CREATE TABLE 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 - Справочник кодов стран +DROP TABLE IF EXISTS COUNTRY_CODE_DICTIONARY; +CREATE TABLE 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 'Наименование'; + +-- clearingMemberCategory - Справочник категорий участника клиринга +DROP TABLE IF EXISTS CLEARING_MEMBER_CATEGORY_DICTIONARY; +CREATE TABLE CLEARING_MEMBER_CATEGORY_DICTIONARY +( + ID bigint PRIMARY KEY, + CODE char(4), + NAME varchar(255) +); +COMMENT ON TABLE CLEARING_MEMBER_CATEGORY_DICTIONARY IS 'Справочник категорий участника клиринга'; + +COMMENT ON COLUMN CLEARING_MEMBER_CATEGORY_DICTIONARY.ID IS 'Идентификатор записи'; + +COMMENT ON COLUMN CLEARING_MEMBER_CATEGORY_DICTIONARY.CODE IS 'Код'; + +COMMENT ON COLUMN CLEARING_MEMBER_CATEGORY_DICTIONARY.NAME IS 'Наименование'; + +-- contactType - Справочник типов контактов Компании +DROP TABLE IF EXISTS CONTACT_TYPE_DICTIONARY; +CREATE TABLE 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 - Единоличный исполнительный орган +DROP TABLE IF EXISTS CORPORATION_SOLE_TYPE_DICTIONARY; +CREATE TABLE 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 - Справочник состояний соединений +DROP TABLE IF EXISTS CONNECTION_STATE_DICTIONARY; +CREATE TABLE 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 - Справочник типов документов +DROP TABLE IF EXISTS DOCUMENT_TYPE_DICTIONARY; +CREATE TABLE 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 - Справочник видов субъекта +DROP TABLE IF EXISTS LEGAL_KIND_DICTIONARY; +CREATE TABLE 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 - Справочник типов организаций +DROP TABLE IF EXISTS ORGANIZATION_TYPE_DICTIONARY; +CREATE TABLE 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 - Справочник имен Компании +DROP TABLE IF EXISTS COMPANY_SYMBOL_DICTIONARY; +CREATE TABLE 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 - Справочник ролей Компаний +DROP TABLE IF EXISTS COMPANY_ROLE_DICTIONARY; +CREATE TABLE 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 - Роли пользователей +DROP TABLE IF EXISTS USER_ROLE_DICTIONARY; +CREATE TABLE 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 - Справочник типов счетов +DROP TABLE IF EXISTS ACCOUNT_TYPE_DICTIONARY; +CREATE TABLE 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 - Справочник типов инструмента +DROP TABLE IF EXISTS INSTRUMENT_TYPE_DICTIONARY; +CREATE TABLE 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 - Справочник кодов валют +DROP TABLE IF EXISTS CURRENCY_CODE_DICTIONARY; +CREATE TABLE 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 - Справочник услуги +DROP TABLE IF EXISTS SERVICE_STATUS_DICTIONARY; +CREATE TABLE 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 - Справочник услуги +DROP TABLE IF EXISTS SERVICE_DICTIONARY; +CREATE TABLE 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 - Справочник продукта для услуги +DROP TABLE IF EXISTS SERVICE_PRODUCT_DICTIONARY; +CREATE TABLE 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 - Справочник секций +DROP TABLE IF EXISTS SECTOR_DICTIONARY; +CREATE TABLE 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 - Статус обработки +DROP TABLE IF EXISTS RESULT_STATUS_DICTIONARY; +CREATE TABLE 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 - Коды ошибок +DROP TABLE IF EXISTS ERROR_CODE_DICTIONARY; +CREATE TABLE 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 - Справочник статусов журнала мониторинга и контроля +DROP TABLE IF EXISTS MANAGEMENT_JOURNAL_STATUS_DICTIONARY; +CREATE TABLE 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 - Справочник типов записей в журнале мониторинга и контроля +DROP TABLE IF EXISTS MANAGEMENT_JOURNAL_TYPE_DICTIONARY; +CREATE TABLE 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 - Справочник целей записей в журнале мониторинга и контроля +DROP TABLE IF EXISTS MANAGEMENT_JOURNAL_PURPOSE_DICTIONARY; +CREATE TABLE 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 - Справочник типов входящих и исходящих записей +DROP TABLE IF EXISTS IN_OUT_S_DF_TYPE_DICTIONARY; +CREATE TABLE 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 - Справочник статусов клиринговой сессии +DROP TABLE IF EXISTS SESSION_STATUS_DICTIONARY; +CREATE TABLE 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 - Справочник типов объектов +DROP TABLE IF EXISTS OBJECT_TYPE_DICTIONARY; +CREATE TABLE 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 - Справочник статусов сообщений +DROP TABLE IF EXISTS NOTIFICATION_STATUS_DICTIONARY; +CREATE TABLE 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 - Пользователь +DROP TABLE IF EXISTS USER_CLS; +CREATE TABLE 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 - Пользователь +DROP TABLE IF EXISTS USER_CLS_HISTORY; +CREATE TABLE 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 - Набор ролей +DROP TABLE IF EXISTS USER_ROLE_SESSION; +CREATE TABLE 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 - Настройки пользователя +DROP TABLE IF EXISTS USER_SETTINGS; +CREATE TABLE 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 - Активность пользователей в системе +DROP TABLE IF EXISTS USER_CONNECT; +CREATE TABLE 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 - Активность пользователей в системе +DROP TABLE IF EXISTS USER_CONNECT_HISTORY; +CREATE TABLE 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 - Постоянное расписание операционного дня +DROP TABLE IF EXISTS TIMETABLE; +CREATE TABLE 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 - Торговые и неторговые дни +DROP TABLE IF EXISTS TRADING_CALENDAR; +CREATE TABLE 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 - Расписание планировщика +DROP TABLE IF EXISTS SCHEDULER; +CREATE TABLE 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 - Расписание на текущий день +DROP TABLE IF EXISTS SCHEDULER_ALL_TODAY; +CREATE TABLE 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 - Запуск задачи +DROP TABLE IF EXISTS TASK_RUNNER; +CREATE TABLE 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 - Участник +DROP TABLE IF EXISTS COMPANY; +CREATE TABLE 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 - Участник +DROP TABLE IF EXISTS COMPANY_HISTORY; +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, + 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 - Профиль Компании +DROP TABLE IF EXISTS COMPANY_INFO; +CREATE TABLE COMPANY_INFO +( + ID bigint PRIMARY KEY, + COMPANY_ID bigint, + CORPORATION_SOLE_TYPE char(4), + COUNTRY_CODE char(4), + DESCRIPTION varchar, + 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), + SHORT_NAME varchar(255), + FULL_NAME varchar(255), + TRADING_CODE varchar(255), + CLEARING_CODE varchar(255), + REGISTRATION_CODE 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 'Полное наименование Компании на английском'; + +COMMENT ON COLUMN COMPANY_INFO.SHORT_NAME IS 'Краткое наименование Компании'; + +COMMENT ON COLUMN COMPANY_INFO.FULL_NAME IS 'Полное наименование Компании'; + +COMMENT ON COLUMN COMPANY_INFO.TRADING_CODE IS 'Код участника торгов'; + +COMMENT ON COLUMN COMPANY_INFO.CLEARING_CODE IS 'Код участника клиринга'; + +COMMENT ON COLUMN COMPANY_INFO.REGISTRATION_CODE IS 'Регистрационный код участника'; + + +-- History log of companyInfo - Профиль Компании +DROP TABLE IF EXISTS COMPANY_INFO_HISTORY; +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 char(4), + COUNTRY_CODE char(4), + DESCRIPTION varchar, + 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), + SHORT_NAME varchar(255), + FULL_NAME varchar(255), + TRADING_CODE varchar(255), + CLEARING_CODE varchar(255), + REGISTRATION_CODE 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 'Полное наименование Компании на английском'; + +COMMENT ON COLUMN COMPANY_INFO_HISTORY.SHORT_NAME IS 'Краткое наименование Компании'; + +COMMENT ON COLUMN COMPANY_INFO_HISTORY.FULL_NAME IS 'Полное наименование Компании'; + +COMMENT ON COLUMN COMPANY_INFO_HISTORY.TRADING_CODE IS 'Код участника торгов'; + +COMMENT ON COLUMN COMPANY_INFO_HISTORY.CLEARING_CODE IS 'Код участника клиринга'; + +COMMENT ON COLUMN COMPANY_INFO_HISTORY.REGISTRATION_CODE IS 'Регистрационный код участника'; + +-- clearingMemberCategory - Категории Участника клиринга +DROP TABLE IF EXISTS CLEARING_MEMBER_CATEGORY; +CREATE TABLE 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 clearingMemberCategory)'; + +-- contact - Контакты Компании +DROP TABLE IF EXISTS CONTACT; +CREATE TABLE 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 - Досье Компании +DROP TABLE IF EXISTS PROFILE_DOCUMENT; +CREATE TABLE 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 - Реквизиты Компании +DROP TABLE IF EXISTS COMPANY_SYMBOLS; +CREATE TABLE 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 - Реестр участников клиринга +DROP TABLE IF EXISTS CLEARMEMBER_REGISTRY; +CREATE TABLE 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 - Журнал изменений информации участников клиринга +DROP TABLE IF EXISTS CLEARMEMBER_REGISTRY_CHANGE; +CREATE TABLE 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 - Ключевая ставка ЦБ +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 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 - Таблица ролей Компании +DROP TABLE IF EXISTS COMPANY_ROLE_SET; +CREATE TABLE 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 - Счета +DROP TABLE IF EXISTS ACCOUNT; +CREATE TABLE 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 - Счета +DROP TABLE IF EXISTS ACCOUNT_HISTORY; +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 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 - Договорные отношения +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 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 - Договорные отношения +DROP TABLE IF EXISTS RELATION_HISTORY; +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 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 - Банковские реквизиты для перечисления денежных средств +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), + 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), + ACCOUNT varchar(50) +); +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 'Код причины постановки (КПП)'; + +COMMENT ON COLUMN BANK_ACCOUNT.ACCOUNT IS 'Номер счета'; + + +-- History log of bankAccount - Банковские реквизиты для перечисления денежных средств +DROP TABLE IF EXISTS BANK_ACCOUNT_HISTORY; +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), + 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), + ACCOUNT varchar(50) +); +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 'Код причины постановки (КПП)'; + +COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.ACCOUNT IS 'Номер счета'; + +-- informationAccount - Информационные счета +DROP TABLE IF EXISTS INFORMATION_ACCOUNT; +CREATE TABLE 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 - Информационные счета +DROP TABLE IF EXISTS INFORMATION_ACCOUNT_HISTORY; +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 +); +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 - Маршрутизация счета +DROP TABLE IF EXISTS ACCOUNT_ROUTING; +CREATE TABLE 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 - Маршрутизация счета +DROP TABLE IF EXISTS ACCOUNT_ROUTING_HISTORY; +CREATE TABLE 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 - Инструменты +DROP TABLE IF EXISTS SECURITY; +CREATE TABLE 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 - Инструменты +DROP TABLE IF EXISTS SECURITY_HISTORY; +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 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 - Инструменты Валюты +DROP TABLE IF EXISTS CURRENCY; +CREATE TABLE 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 - Инструменты Валюты +DROP TABLE IF EXISTS CURRENCY_HISTORY; +CREATE TABLE 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 - Инструменты Денежного рынка +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, + END_DATE date, + NOMINAL_VALUE numeric(72, 2), + NOMINAL_CURRENCY bigint, + INSTRUMENT_TYPE char(4), + FULL_NAME varchar(255), + SECURITY_SYMBOL varchar(255), + 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.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)'; + +-- History log of moneyMarketSecurity - Инструменты Денежного рынка +DROP TABLE IF EXISTS MONEY_MARKET_SECURITY_HISTORY; +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, + END_DATE date, + NOMINAL_VALUE numeric(72, 2), + NOMINAL_CURRENCY bigint, + INSTRUMENT_TYPE char(4), + FULL_NAME varchar(255), + SECURITY_SYMBOL varchar(255), + TERM_TYPE char(4), + ID numeric(72, 2) 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.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.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.ID IS 'Размер лота (linked to listing)'; + +-- 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 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 - Листинг инструментов +DROP TABLE IF EXISTS LISTING_HISTORY; +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 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 - Торговые секции +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 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 - Торговые секции +DROP TABLE IF EXISTS MARKET_HISTORY; +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 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 - Информация об остатках ден. средств +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 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 - Информация об остатках ден. средств +DROP TABLE IF EXISTS ACCOUNT_BALANCE_HISTORY; +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 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 - Реестр остатков денежных средств +DROP TABLE IF EXISTS BALANCE_REGISTRY; +CREATE TABLE 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 - Журнал монитора и контроля +DROP TABLE IF EXISTS MANAGEMENT_JOURNAL; +CREATE TABLE 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 - Журнал входящих документов +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, + 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 - Журнал исходящих документов +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, + 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 - Сделки +DROP TABLE IF EXISTS EXECUTION_DEPOSIT; +CREATE TABLE 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 - Реестр сделок +DROP TABLE IF EXISTS EXECUTION_DEPOSIT_REGISTER; +CREATE TABLE 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 - Реестр сделок, допущенных к клирингу +DROP TABLE IF EXISTS ADMITTED_DEAL; +CREATE TABLE 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 - Реестр сделок, прошедших процедуру контроля обеспечения +DROP TABLE IF EXISTS DEAL_PASSED_CONTROL; +CREATE TABLE 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 - Реестр сделок, не прошедших процедуру контроля обеспечения +DROP TABLE IF EXISTS DEAL_UN_PASSED_CONTROL; +CREATE TABLE 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 - Реестр отчетов +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 +); +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 - Журнал регистрации договоров +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, + 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 - Реестра распоряжений +DROP TABLE IF EXISTS ORDER_REGISTRY; +CREATE TABLE 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 - Требования и обязательства денежных средств +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, + 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 - Требования и обязательства финансовых активов +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, + 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 - Денежные средства от расчетной организации +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 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 - Проводки на базе сделок торговой системы +DROP TABLE IF EXISTS TRADE_SETTLEMENT; +CREATE TABLE 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 - Проводки +DROP TABLE IF EXISTS OPERATION; +CREATE TABLE 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 - Информация о денежных средствах +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), + 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 - Итоги торгов +DROP TABLE IF EXISTS MARKET_DATA; +CREATE TABLE 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 - Тарифы комиссий +DROP TABLE IF EXISTS CHARGE_TARIFF; +CREATE TABLE 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 clearingMemberCategory)'; + +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 - Тарифы комиссий +DROP TABLE IF EXISTS CHARGE_TARIFF_HISTORY; +CREATE TABLE 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 clearingMemberCategory)'; + +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 - Индивидуальные тарифы комиссий для Участника +DROP TABLE IF EXISTS INDIVIDUAL_CHARGE_TARIFF; +CREATE TABLE 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 clearingMemberCategory)'; + +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 - Индивидуальные тарифы комиссий для Участника +DROP TABLE IF EXISTS INDIVIDUAL_CHARGE_TARIFF_HISTORY; +CREATE TABLE 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 clearingMemberCategory)'; + +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 - Тарифы комиссий в разрезе Участника +DROP TABLE IF EXISTS COMPANY_TARIFF; +CREATE TABLE 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 clearingMemberCategory)'; + +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 - Полные тексты ошибок +DROP TABLE IF EXISTS ERROR_TEXT; +CREATE TABLE 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 Информация о денежных средствах, находящихся на торговых банковских счетах Участников клиринга +DROP TABLE IF EXISTS S_DF01; +CREATE TABLE 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 Уведомление об исполнении операции загрузки денежных средств или уведомление об ошибке +DROP TABLE IF EXISTS S_DF02; +CREATE TABLE 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 Сводное платежное поручение +DROP TABLE IF EXISTS S_DF03; +CREATE TABLE 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 Подтверждение переводов из Расчетной организации для СПВБ +DROP TABLE IF EXISTS S_DF04; +CREATE TABLE 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 Уведомление о завершении расчетов в ПРЦ +DROP TABLE IF EXISTS S_DF05; +CREATE TABLE 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 Запрос остатков по всем счетам +DROP TABLE IF EXISTS S_DF08; +CREATE TABLE 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 Уведомление о поступлении средств на клиринговый счет +DROP TABLE IF EXISTS S_DF09; +CREATE TABLE 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 Подтверждение о загрузке по поступлению на клиринговый счет +DROP TABLE IF EXISTS S_DF10; +CREATE TABLE 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 Из КС в ПРЦ Платежное распоряжение на перевод средств с ТБС Участника на КС Инициатора +DROP TABLE IF EXISTS S_DF11; +CREATE TABLE 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 Из ПРЦ в КС Информация о блокировке/разблокировке/закрытии ТБС УК +DROP TABLE IF EXISTS S_DF12; +CREATE TABLE 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 - платежное поручение АО СПВБ на вывод средств из РО +DROP TABLE IF EXISTS S_DF13; +CREATE TABLE 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 Формат запроса по возврату депозита или дозачисление/списание денежных средств +DROP TABLE IF EXISTS S_DF16; +CREATE TABLE 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 Формат ответа на запрос по возврату депозита или дозачисление/списание денежных средств +DROP TABLE IF EXISTS S_DF17; +CREATE TABLE 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 Из КС в ПРЦ Квитанция о получении информации о состоянии счета (блокировка/разблокировка/закрытие) +DROP TABLE IF EXISTS S_DF18; +CREATE TABLE 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 - Выгрузка сделок из торговой системы +DROP TABLE IF EXISTS TRADE_ARQA; +CREATE TABLE 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 - Сообщения +DROP TABLE IF EXISTS NOTIFICATION; +CREATE TABLE 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 - Сообщения +DROP TABLE IF EXISTS NOTIFICATION_HISTORY; +CREATE TABLE 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 - Клиринговая сессия +DROP TABLE IF EXISTS SESSION; +CREATE TABLE 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 - Клиринговая сессия +DROP TABLE IF EXISTS SESSION_HISTORY; +CREATE TABLE 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 + \ No newline at end of file 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 88b7ced4f..703844915 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 @@ -20,9 +20,9 @@ import ru.spcex.platform.enumeration.Status; import ru.spcex.platform.enumeration.UserRole; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; -import ru.spcex.platform.utils.time.TimeUtil; import java.time.Instant; +import java.time.LocalDate; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -34,11 +34,13 @@ import java.util.stream.Stream; @Service public class UserService extends QueueConsumer implements InitializingBean { private final static Map roleMapping = new HashMap<>(); + static { roleMapping.put("CS_MKR_ADMIN", UserRole.Admin); roleMapping.put("CS_MKR_SUPERVISER", UserRole.Superviser); roleMapping.put("CS_MKR_SECURITY", UserRole.Security); } + private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg userMap; private final Imdg userRoleSessionImdg; @@ -52,6 +54,47 @@ public class UserService extends QueueConsumer implements InitializingBean { this.userConnectImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_UserConnect, UserConnect.class); } + static Collection defineAllRoleChanges(Collection presentRoles, Collection authRoles) { + Collection finalAuthRoles = authRoles.stream().flatMap((Function>) keycloakRole -> { + UserRole userRole = roleMapping.get(keycloakRole); + if (userRole == null) return Stream.empty(); + return Stream.of(userRole.getKey()); + }).collect(Collectors.toList()); + return Stream.concat( + presentRoles + .stream() + .filter(presentRole -> !(Status.Active.equalsByKey(presentRole.getStatus()) && contain(presentRole, finalAuthRoles))) + .filter(presentRole -> !(Status.Blocked.equalsByKey(presentRole.getStatus()) && !contain(presentRole, finalAuthRoles))) + .map(role -> { + RoleAction roleAction = new RoleAction(); + roleAction.roleToChange = role; + if (Status.Active.equalsByKey(role.getStatus())) { + roleAction.newStatus = Status.Blocked; + } else { + roleAction.newStatus = Status.Active; + } + return roleAction; + }), + finalAuthRoles + .stream() + .filter(authRole -> !contain(authRole, presentRoles)) + .map(authRole -> { + RoleAction action = new RoleAction(); + action.newStatus = Status.Active; + action.roleName = authRole; + return action; + }) + ).toList(); + } + + private static boolean contain(UserRoleSession role, Collection authRoles) { + return authRoles.stream().anyMatch(authRole -> authRole.equalsIgnoreCase(role.getUserRole())); + } + + private static boolean contain(String authRole, Collection presentRoles) { + return presentRoles.stream().anyMatch(role -> role.getUserRole().equalsIgnoreCase(authRole)); + } + @Override public void afterPropertiesSet() { callback(UserAuthRequest.class) @@ -87,7 +130,7 @@ public class UserService extends QueueConsumer implements InitializingBean { userConnect.setDisconnectionTime(logoutInfo.getTime()); userConnect.setUpdated(logoutInfo.getTime()); userConnect.setConnectionState(ConnectionState.Disconnected.getKey()); - userConnect.setClearingDate(TimeUtil.today()); + userConnect.setClearingDate(LocalDate.now()); userConnectImdg.update(userConnect); } @@ -147,7 +190,7 @@ public class UserService extends QueueConsumer implements InitializingBean { userConnect.setServerIP(serverIp); userConnect.setClientIP(clientIp); userConnect.setConnectionState(ConnectionState.Connected.getKey()); - userConnect.setClearingDate(TimeUtil.today()); + userConnect.setClearingDate(LocalDate.now()); if (isNew) { userConnectImdg.insert(userConnect); } else { @@ -155,52 +198,12 @@ public class UserService extends QueueConsumer implements InitializingBean { } } - static Collection defineAllRoleChanges(Collection presentRoles, Collection authRoles) { - Collection finalAuthRoles = authRoles.stream().flatMap((Function>) keycloakRole -> { - UserRole userRole = roleMapping.get(keycloakRole); - if (userRole == null) return Stream.empty(); - return Stream.of(userRole.getKey()); - }).collect(Collectors.toList()); - return Stream.concat( - presentRoles - .stream() - .filter(presentRole -> !(Status.Active.equalsByKey(presentRole.getStatus()) && contain(presentRole, finalAuthRoles))) - .filter(presentRole -> !(Status.Blocked.equalsByKey(presentRole.getStatus()) && !contain(presentRole, finalAuthRoles))) - .map(role -> { - RoleAction roleAction = new RoleAction(); - roleAction.roleToChange = role; - if (Status.Active.equalsByKey(role.getStatus())) { - roleAction.newStatus = Status.Blocked; - } else { - roleAction.newStatus = Status.Active; - } - return roleAction; - }), - finalAuthRoles - .stream() - .filter(authRole -> !contain(authRole, presentRoles)) - .map(authRole -> { - RoleAction action = new RoleAction(); - action.newStatus = Status.Active; - action.roleName = authRole; - return action; - }) - ).toList(); - } - - private static boolean contain(UserRoleSession role, Collection authRoles) { - return authRoles.stream().anyMatch(authRole -> authRole.equalsIgnoreCase(role.getUserRole())); - } - - private static boolean contain(String authRole, Collection presentRoles) { - return presentRoles.stream().anyMatch(role -> role.getUserRole().equalsIgnoreCase(authRole)); - } - public static class RoleAction { String roleName; //------поля при обновления----- Status newStatus; UserRoleSession roleToChange; + boolean create() { return roleToChange == null; } 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 d0c03210f..ad7193c11 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 @@ -55,9 +55,9 @@ 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"; future + public static final String Map_InterestStatusDictionary = "Map_InterestStatusDictionary"; public static final String Map_AllowedDictionary = "Map_AllowedDictionary"; - // public static final String Map_ClearingMemberCategoryDictionary = "Map_ClearingMemberCategoryDictionary"; future + public static final String Map_ClearingMemberCategoryDictionary = "Map_ClearingMemberCategoryDictionary"; public static final String Map_CompanyRoleDictionary = "Map_CompanyRoleDictionary"; public static final String Map_CompanySymbolDictionary = "Map_CompanySymbolDictionary"; public static final String Map_ContactTypeDictionary = "Map_ContactTypeDictionary"; 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 5a4f7dfb8..846ebd7f2 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 @@ -6,17 +6,17 @@ 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.time.Instant; +import java.time.LocalDate; public class MoneyMarketSecurityNewRequest { @JsonProperty @JsonSerialize(using = InstantSerializer.class) @JsonDeserialize(using = InstantDeserializer.class) - public Instant startDate; + public LocalDate startDate; @JsonProperty @JsonSerialize(using = InstantSerializer.class) @JsonDeserialize(using = InstantDeserializer.class) - public Instant endDate; + public LocalDate endDate; @JsonProperty public Double nominalValue; @JsonProperty @@ -30,19 +30,19 @@ public class MoneyMarketSecurityNewRequest { @JsonProperty public Double lotSize; - public Instant getStartDate() { + public LocalDate getStartDate() { return startDate; } - public void setStartDate(Instant startDate) { + public void setStartDate(LocalDate startDate) { this.startDate = startDate; } - public Instant getEndDate() { + public LocalDate getEndDate() { return endDate; } - public void setEndDate(Instant endDate) { + public void setEndDate(LocalDate endDate) { this.endDate = endDate; } 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 16199cf22..9a20ff0b2 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,7 +7,7 @@ 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.time.Instant; +import java.time.LocalDate; public class MoneyMarketSecurityUpdateRequest { @JsonProperty @@ -16,7 +16,7 @@ public class MoneyMarketSecurityUpdateRequest { @JsonSerialize(using = InstantSerializer.class) @JsonDeserialize(using = InstantDeserializer.class) @JsonProperty - public Instant endDate; + public LocalDate endDate; @JsonProperty public Double nominalValue; @JsonProperty @@ -36,11 +36,11 @@ public class MoneyMarketSecurityUpdateRequest { this.id = id; } - public Instant getEndDate() { + public LocalDate getEndDate() { return endDate; } - public void setEndDate(Instant endDate) { + public void setEndDate(LocalDate endDate) { this.endDate = endDate; } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/KeyRateNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/KeyRateNewRequest.java index 35f0c2a2a..c4db33435 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/KeyRateNewRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/KeyRateNewRequest.java @@ -6,43 +6,44 @@ 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.time.Instant; +import java.math.BigDecimal; +import java.time.LocalDate; public class KeyRateNewRequest { @JsonProperty - public Double keyRate; + public BigDecimal keyRate; @JsonSerialize(using = InstantSerializer.class) @JsonDeserialize(using = InstantDeserializer.class) @JsonProperty - public Instant startDate; + public LocalDate startDate; @JsonSerialize(using = InstantSerializer.class) @JsonDeserialize(using = InstantDeserializer.class) @JsonProperty - public Instant endDate; + public LocalDate endDate; @JsonProperty public String document; - public Double getKeyRate() { + public BigDecimal getKeyRate() { return keyRate; } - public void setKeyRate(Double keyRate) { + public void setKeyRate(BigDecimal keyRate) { this.keyRate = keyRate; } - public Instant getStartDate() { + public LocalDate getStartDate() { return startDate; } - public void setStartDate(Instant startDate) { + public void setStartDate(LocalDate startDate) { this.startDate = startDate; } - public Instant getEndDate() { + public LocalDate getEndDate() { return endDate; } - public void setEndDate(Instant endDate) { + public void setEndDate(LocalDate endDate) { this.endDate = endDate; } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/KeyRateUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/KeyRateUpdateRequest.java index 0c4f1e32f..3d0173131 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/KeyRateUpdateRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/KeyRateUpdateRequest.java @@ -6,21 +6,22 @@ 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.time.Instant; +import java.math.BigDecimal; +import java.time.LocalDate; public class KeyRateUpdateRequest { @JsonProperty public Long id; @JsonProperty - public Double keyRate; + public BigDecimal keyRate; @JsonSerialize(using = InstantSerializer.class) @JsonDeserialize(using = InstantDeserializer.class) @JsonProperty - public Instant startDate; + public LocalDate startDate; @JsonSerialize(using = InstantSerializer.class) @JsonDeserialize(using = InstantDeserializer.class) @JsonProperty - public Instant endDate; + public LocalDate endDate; @JsonProperty public String document; @@ -32,27 +33,27 @@ public class KeyRateUpdateRequest { this.id = id; } - public Double getKeyRate() { + public BigDecimal getKeyRate() { return keyRate; } - public void setKeyRate(Double keyRate) { + public void setKeyRate(BigDecimal keyRate) { this.keyRate = keyRate; } - public Instant getStartDate() { + public LocalDate getStartDate() { return startDate; } - public void setStartDate(Instant startDate) { + public void setStartDate(LocalDate startDate) { this.startDate = startDate; } - public Instant getEndDate() { + public LocalDate getEndDate() { return endDate; } - public void setEndDate(Instant endDate) { + public void setEndDate(LocalDate endDate) { this.endDate = endDate; }