backend-api classes db-scripts http://jira.mfd.msk:8088/browse/CLS-639 DDL sCrossRate

This commit is contained in:
AKurakin 2024-02-08 11:28:32 +03:00
parent 57855bd8b5
commit 1e6eb8fd00
9 changed files with 4990 additions and 11 deletions

View file

@ -1,6 +1,6 @@
{
"version": "3.9.0.73",
"version": "3.10.0.74",
"enums": {
@ -9408,6 +9408,64 @@
]
}
,
"sCrossRate": {
"name": "Кросс курсы валют от ЦБ",
"destination": "cross-rate",
"class": "ru.clearing.classes.statics.data.misc.sCrossRate",
"table": "s_cross_rate",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","searchable": true,"sortable": true,"visible": false
}
,
{"code": "date",
"type": 6,"name": "Дата торгов","shortname": "Дата торгов","searchable": true,"sortable": true,"visible": false
}
,
{"code": "currency",
"type": 2,"length": 50,"name": "Наименование валюты","shortname": "Наименование валюты","searchable": true,"sortable": true,"visible": true
}
,
{"code": "currCode",
"type": 2,"length": 50,"name": "Код валюты","shortname": "Код валюты","searchable": true,"sortable": true,"visible": true
}
,
{"code": "faceValue",
"type": 10,"name": "Номинал","shortname": "Номинал","searchable": true,"sortable": true,"visible": true
}
,
{"code": "rate",
"type": 10,"name": "Курс валюты с учетом размера лота","shortname": "Курс валюты","searchable": true,"sortable": true,"visible": true
}
,
{"code": "unitRate",
"type": 10,"name": "Курс за единицу иностранной валюты","shortname": "Курс за единицу валюты","searchable": true,"sortable": true,"visible": false
}
,
{"code": "generationTime",
"type": 4,"name": "Дата и время создания записи","shortname": "Дата и время создания","searchable": true,"sortable": true,"visible": true
}
,
{"code": "generationId",
"type": 1,"name": "Идентификатор взаимодействия","shortname": "ID взаимодействия","searchable": true,"sortable": true,"visible": true
}
,
{"code": "createdAt",
"field": "created","type": 4,"webtype": "5","dbname": "Дата-время создания записи","name": "Время создания записи","shortname": "Создано","searchable": true,"sortable": true,"ignore": true
}
,
{"code": "updatedAt",
"field": "updated","type": 4,"webtype": "5","dbname": "Дата-время изменения записи","name": "Время изменения записи","shortname": "Изменено","searchable": true,"sortable": true,"ignore": true
}
]
}
}

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--?xml-stylesheet type="text/xsl" href="\..\corp-reports\src\data\meta\meta.server.xslt"?-->
<meta version="3.9.0.73">
<meta version="3.10.0.74">
<!-- _xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" _xsi:noNamespaceSchemaLocation="file:///E:/d/projects/meta/from/meta.xsd" -->
<!--Здесь словари-->
<enums>
@ -2172,6 +2172,19 @@
<price type="10" name="Цена за 1 штуку ликвидационного актива" shortname="Цена за шт." searchable="true" sortable="true" visible="true"/>
<clearingDate type="6" name="Дата" shortname="Дата" searchable="true" sortable="true" ignore="true"/>
</marketDataLiquidation>
<sCrossRate name="Кросс курсы валют от ЦБ" destination="cross-rate" class="ru.clearing.classes.statics.data.misc.sCrossRate" table="s_cross_rate">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true" visible="false"/>
<date type="6" name="Дата торгов" shortname="Дата торгов" searchable="true" sortable="true" visible="false"/>
<currency type="2" length="50" name="Наименование валюты" shortname="Наименование валюты" searchable="true" sortable="true" visible = "true"/>
<currCode type="2" length="50" name="Код валюты" shortname="Код валюты" searchable="true" sortable="true" visible = "true"/>
<faceValue type="10" name="Номинал" shortname="Номинал" searchable="true" sortable="true" visible = "true"/>
<rate type="10" name="Курс валюты с учетом размера лота" shortname="Курс валюты" searchable="true" sortable="true" visible = "true"/>
<unitRate type="10" name="Курс за единицу иностранной валюты" shortname="Курс за единицу валюты" searchable="true" sortable="true" visible="false"/>
<generationTime type="4" name="Дата и время создания записи" shortname="Дата и время создания" searchable="true" sortable="true" visible="true"/>
<generationId type="1" name="Идентификатор взаимодействия" shortname="ID взаимодействия" searchable="true" sortable="true" visible="true"/>
<createdAt field="created" type="4" webtype="5" dbname="Дата-время создания записи" name="Время создания записи" shortname="Создано" searchable="true" sortable="true" ignore="true"/>
<updatedAt field="updated" type="4" webtype="5" dbname="Дата-время изменения записи" name="Время изменения записи" shortname="Изменено" searchable="true" sortable="true" ignore="true"/>
</sCrossRate>
</objects>
<views>
<AccountUnion>

View file

@ -1,6 +1,6 @@
{
"version": "3.9.0.73",
"version": "3.10.0.74",
"enums": {
@ -9408,6 +9408,64 @@
]
}
,
"sCrossRate": {
"name": "Кросс курсы валют от ЦБ",
"destination": "cross-rate",
"class": "ru.clearing.classes.statics.data.misc.sCrossRate",
"table": "s_cross_rate",
"fields": [
{"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","searchable": true,"sortable": true,"visible": false
}
,
{"code": "date",
"type": 6,"name": "Дата торгов","shortname": "Дата торгов","searchable": true,"sortable": true,"visible": false
}
,
{"code": "currency",
"type": 2,"length": 50,"name": "Наименование валюты","shortname": "Наименование валюты","searchable": true,"sortable": true,"visible": true
}
,
{"code": "currCode",
"type": 2,"length": 50,"name": "Код валюты","shortname": "Код валюты","searchable": true,"sortable": true,"visible": true
}
,
{"code": "faceValue",
"type": 10,"name": "Номинал","shortname": "Номинал","searchable": true,"sortable": true,"visible": true
}
,
{"code": "rate",
"type": 10,"name": "Курс валюты с учетом размера лота","shortname": "Курс валюты","searchable": true,"sortable": true,"visible": true
}
,
{"code": "unitRate",
"type": 10,"name": "Курс за единицу иностранной валюты","shortname": "Курс за единицу валюты","searchable": true,"sortable": true,"visible": false
}
,
{"code": "generationTime",
"type": 4,"name": "Дата и время создания записи","shortname": "Дата и время создания","searchable": true,"sortable": true,"visible": true
}
,
{"code": "generationId",
"type": 1,"name": "Идентификатор взаимодействия","shortname": "ID взаимодействия","searchable": true,"sortable": true,"visible": true
}
,
{"code": "createdAt",
"field": "created","type": 4,"webtype": "5","dbname": "Дата-время создания записи","name": "Время создания записи","shortname": "Создано","searchable": true,"sortable": true,"ignore": true
}
,
{"code": "updatedAt",
"field": "updated","type": 4,"webtype": "5","dbname": "Дата-время изменения записи","name": "Время изменения записи","shortname": "Изменено","searchable": true,"sortable": true,"ignore": true
}
]
}
}

View file

@ -0,0 +1,103 @@
package ru.clearing.classes.statics.data.misc;
import ru.clearing.classes.ConstSerializable;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.clearing.classes.ConstSerializable;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDate;
/**
* Кросс курсы валют от ЦБ
*
* DB table: S_CROSS_RATE
**/
public class SCrossRate extends SpcexObjectBase {
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
// (in parent) private Long id;
private LocalDate date;
private String currency;
private String currCode;
private BigDecimal faceValue;
private BigDecimal rate;
private BigDecimal unitRate;
private Instant generationTime;
private Long generationId;
private Instant createdAt;
private Instant updatedAt;
public LocalDate getDate() {
return date;
}
public void setDate(LocalDate value) {
this.date=value;
}
public String getCurrency() {
return currency;
}
public void setCurrency(String value) {
this.currency=value;
}
public String getCurrCode() {
return currCode;
}
public void setCurrCode(String value) {
this.currCode=value;
}
public BigDecimal getFaceValue() {
return faceValue;
}
public void setFaceValue(BigDecimal value) {
this.faceValue=value;
}
public BigDecimal getRate() {
return rate;
}
public void setRate(BigDecimal value) {
this.rate=value;
}
public BigDecimal getUnitRate() {
return unitRate;
}
public void setUnitRate(BigDecimal value) {
this.unitRate=value;
}
public Instant getGenerationTime() {
return generationTime;
}
public void setGenerationTime(Instant value) {
this.generationTime=value;
}
public Long getGenerationId() {
return generationId;
}
public void setGenerationId(Long value) {
this.generationId=value;
}
public Instant getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Instant value) {
this.createdAt=value;
}
public Instant getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Instant value) {
this.updatedAt=value;
}
}

View file

@ -1,4 +1,4 @@
-- DB version: 3.9.0.65
-- DB version: 3.10.0.74
/* Dictionaries */
-- allowed - Справочник признаков допустимости использования объектов
@ -1553,7 +1553,7 @@ GRANT ALL PRIVILEGES ON TABLE FIXED_INCOME_CASH_FLOW_HISTORY TO clearing;
-- couponPeriod - Купонное расписание
DROP TABLE IF EXISTS COUPON_PERIOD;
CREATE TABLE COUPON_PERIOD(SECURITY_ID bigint, COUPON_RATE numeric(72,2), NUMBER bigint, PERIOD_END_DATE date, PERIOD_START_DATE date, ID bigint PRIMARY KEY);
CREATE TABLE COUPON_PERIOD(SECURITY_ID bigint, COUPON_RATE numeric(72,2), NUMBER bigint, PERIOD_START_DATE date, PERIOD_END_DATE date, ID bigint PRIMARY KEY);
COMMENT ON TABLE COUPON_PERIOD IS 'Купонное расписание';
COMMENT ON COLUMN COUPON_PERIOD.SECURITY_ID IS 'Идентификатор инструмента (linked to security)';
@ -1562,9 +1562,9 @@ COMMENT ON COLUMN COUPON_PERIOD.COUPON_RATE IS 'Купонная ставка';
COMMENT ON COLUMN COUPON_PERIOD.NUMBER IS 'Номер купона';
COMMENT ON COLUMN COUPON_PERIOD.PERIOD_END_DATE IS 'Начало периода действия';
COMMENT ON COLUMN COUPON_PERIOD.PERIOD_START_DATE IS 'Начало периода действия';
COMMENT ON COLUMN COUPON_PERIOD.PERIOD_START_DATE IS 'Окончание периода действия';
COMMENT ON COLUMN COUPON_PERIOD.PERIOD_END_DATE IS 'Окончание периода действия';
COMMENT ON COLUMN COUPON_PERIOD.ID IS 'Идентификатор записи';
@ -1573,7 +1573,7 @@ GRANT ALL PRIVILEGES ON TABLE COUPON_PERIOD TO clearing;
-- History log of couponPeriod - Купонное расписание
DROP TABLE IF EXISTS COUPON_PERIOD_HISTORY;
CREATE TABLE COUPON_PERIOD_HISTORY(COUPON_PERIOD_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, EVENT_TYPE VARCHAR(4), SECURITY_ID bigint, COUPON_RATE numeric(72,2), NUMBER bigint, PERIOD_END_DATE date, PERIOD_START_DATE date, ID bigint PRIMARY KEY);
CREATE TABLE COUPON_PERIOD_HISTORY(COUPON_PERIOD_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, EVENT_TYPE VARCHAR(4), SECURITY_ID bigint, COUPON_RATE numeric(72,2), NUMBER bigint, PERIOD_START_DATE date, PERIOD_END_DATE date, ID bigint PRIMARY KEY);
COMMENT ON TABLE COUPON_PERIOD_HISTORY IS 'История изменений таблицы couponPeriod';
COMMENT ON COLUMN COUPON_PERIOD_HISTORY.COUPON_PERIOD_ID IS 'Идентификатор записи в таблице COUPON_PERIOD';
COMMENT ON COLUMN COUPON_PERIOD_HISTORY.EVENT_TIME IS 'Дата и время изменения';
@ -1586,9 +1586,9 @@ COMMENT ON COLUMN COUPON_PERIOD_HISTORY.COUPON_RATE IS 'Купонная ста
COMMENT ON COLUMN COUPON_PERIOD_HISTORY.NUMBER IS 'Номер купона';
COMMENT ON COLUMN COUPON_PERIOD_HISTORY.PERIOD_END_DATE IS 'Начало периода действия';
COMMENT ON COLUMN COUPON_PERIOD_HISTORY.PERIOD_START_DATE IS 'Начало периода действия';
COMMENT ON COLUMN COUPON_PERIOD_HISTORY.PERIOD_START_DATE IS 'Окончание периода действия';
COMMENT ON COLUMN COUPON_PERIOD_HISTORY.PERIOD_END_DATE IS 'Окончание периода действия';
COMMENT ON COLUMN COUPON_PERIOD_HISTORY.ID IS 'Идентификатор записи';
@ -4615,8 +4615,37 @@ COMMENT ON COLUMN MARKET_DATA_LIQUIDATION.CLEARING_DATE IS 'Дата';
GRANT ALL PRIVILEGES ON TABLE MARKET_DATA_LIQUIDATION TO clearing;
-- sCrossRate - Кросс курсы валют от ЦБ
DROP TABLE IF EXISTS S_CROSS_RATE;
CREATE TABLE S_CROSS_RATE(ID bigint PRIMARY KEY, DATE date, CURRENCY varchar(50), CURR_CODE varchar(50), FACE_VALUE numeric(72,18), RATE numeric(72,18), UNIT_RATE numeric(72,18), GENERATION_TIME timestamp, GENERATION_ID bigint, CREATED_AT timestamp, UPDATED_AT timestamp);
COMMENT ON TABLE S_CROSS_RATE IS 'Кросс курсы валют от ЦБ';
COMMENT ON COLUMN S_CROSS_RATE.ID IS 'Идентификатор записи';
COMMENT ON COLUMN S_CROSS_RATE.DATE IS 'Дата торгов';
COMMENT ON COLUMN S_CROSS_RATE.CURRENCY IS 'Наименование валюты';
COMMENT ON COLUMN S_CROSS_RATE.CURR_CODE IS 'Код валюты';
COMMENT ON COLUMN S_CROSS_RATE.FACE_VALUE IS 'Номинал';
COMMENT ON COLUMN S_CROSS_RATE.RATE IS 'Курс валюты с учетом размера лота';
COMMENT ON COLUMN S_CROSS_RATE.UNIT_RATE IS 'Курс за единицу иностранной валюты';
COMMENT ON COLUMN S_CROSS_RATE.GENERATION_TIME IS 'Дата и время создания записи';
COMMENT ON COLUMN S_CROSS_RATE.GENERATION_ID IS 'Идентификатор взаимодействия';
COMMENT ON COLUMN S_CROSS_RATE.CREATED_AT IS 'Дата-время создания записи';
COMMENT ON COLUMN S_CROSS_RATE.UPDATED_AT IS 'Дата-время изменения записи';
GRANT ALL PRIVILEGES ON TABLE S_CROSS_RATE TO clearing;
/* views */
-- Data types
INSERT INTO DB_VERSION(ID, VERSION) values (1, '3.9') ON CONFLICT (ID) DO UPDATE SET VERSION = EXCLUDED.VERSION
INSERT INTO DB_VERSION(ID, VERSION) values (1, '3.10') ON CONFLICT (ID) DO UPDATE SET VERSION = EXCLUDED.VERSION

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,21 @@
-- DB version: 3.9 -> 3.10
-- sCrossRate - Кросс курсы валют от ЦБ
DROP TABLE IF EXISTS S_CROSS_RATE;
CREATE TABLE S_CROSS_RATE(ID bigint PRIMARY KEY, DATE date, CURRENCY varchar(50), CURR_CODE varchar(50), FACE_VALUE numeric(72,18), RATE numeric(72,18), UNIT_RATE numeric(72,18), GENERATION_TIME timestamp, GENERATION_ID bigint, CREATED_AT timestamp, UPDATED_AT timestamp);
COMMENT ON TABLE S_CROSS_RATE IS 'Кросс курсы валют от ЦБ';
COMMENT ON COLUMN S_CROSS_RATE.ID IS 'Идентификатор записи';
COMMENT ON COLUMN S_CROSS_RATE.DATE IS 'Дата торгов';
COMMENT ON COLUMN S_CROSS_RATE.CURRENCY IS 'Наименование валюты';
COMMENT ON COLUMN S_CROSS_RATE.CURR_CODE IS 'Код валюты';
COMMENT ON COLUMN S_CROSS_RATE.FACE_VALUE IS 'Номинал';
COMMENT ON COLUMN S_CROSS_RATE.RATE IS 'Курс валюты с учетом размера лота';
COMMENT ON COLUMN S_CROSS_RATE.UNIT_RATE IS 'Курс за единицу иностранной валюты';
COMMENT ON COLUMN S_CROSS_RATE.GENERATION_TIME IS 'Дата и время создания записи';
COMMENT ON COLUMN S_CROSS_RATE.GENERATION_ID IS 'Идентификатор взаимодействия';
COMMENT ON COLUMN S_CROSS_RATE.CREATED_AT IS 'Дата-время создания записи';
COMMENT ON COLUMN S_CROSS_RATE.UPDATED_AT IS 'Дата-время изменения записи';
GRANT ALL PRIVILEGES ON TABLE S_CROSS_RATE TO clearing;
INSERT INTO DB_VERSION(ID, VERSION) values (1, '3.10') ON CONFLICT (ID) DO UPDATE SET VERSION = EXCLUDED.VERSION

View file

@ -0,0 +1,74 @@
package ru.spcex.clearing.imdg.object;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.clearing.classes.statics.data.misc.SCrossRate;
import ru.spcex.clearing.imdg.base.TemplateMapStore;
import ru.spcex.platform.utils.time.TimeUtil;
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
@Component
public class SCrossRateMapStore extends TemplateMapStore<SCrossRate> {
public SCrossRateMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate);
}
@Override
public String getMapName() {
return IMDGDistributedNames.Map_SCrossRate;
}
@Override
public String getTableName() {
return "S_CROSS_RATE";
}
@Override
public String[] getFields() {
return new String[]{
"ID", "DATE", "CURRENCY", "CURR_CODE", "FACE_VALUE", "RATE", "UNIT_RATE", "GENERATION_TIME", "GENERATION_ID", "CREATED_AT", "UPDATED_AT"
};
}
@Override
public SCrossRate objectReader(ResultSet resultSet) throws SQLException {
SCrossRate object = new SCrossRate();
object.setId(resultSet.getObject("ID", Long.class));
object.setDate(getLocalDateFromSqlDate(resultSet, "DATE"));
object.setCurrency(resultSet.getObject("CURRENCY", String.class));
object.setCurrCode(resultSet.getObject("CURR_CODE", String.class));
object.setFaceValue(resultSet.getObject("FACE_VALUE", BigDecimal.class));
object.setRate(resultSet.getObject("RATE", BigDecimal.class));
object.setUnitRate(resultSet.getObject("UNIT_RATE", BigDecimal.class));
object.setGenerationTime(getInstantFromTimestamp(resultSet, "GENERATION_TIME"));
object.setGenerationId(resultSet.getObject("GENERATION_ID", Long.class));
object.setCreatedAt(getInstantFromTimestamp(resultSet, "CREATED_AT"));
object.setUpdatedAt(getInstantFromTimestamp(resultSet, "UPDATED_AT"));
return object;
}
@Override
public Object[] objectToField(SCrossRate object) {
Object[] args = new Object[]{
object.getId(),
TimeUtil.toDateFromLocalDate(object.getDate()),
object.getCurrency(),
object.getCurrCode(),
object.getFaceValue(),
object.getRate(),
object.getUnitRate(),
TimeUtil.toDateFromInstant(object.getGenerationTime()),
object.getGenerationId(),
TimeUtil.toDateFromInstant(object.getCreatedAt()),
TimeUtil.toDateFromInstant(object.getUpdatedAt())
};
return args;
}
}

View file

@ -195,6 +195,7 @@ public final class IMDGDistributedNames {
public static final String Map_ExecutionFond = "Map_ExecutionFond";
public static final String Map_ExecutionFondHistory = "Map_ExecutionFondHistory";
public static final String Map_PriorityDictionary = "Map_PriorityDictionary";
public static final String Map_SCrossRate = "Map_SCrossRate";
//-------------------history and search tables
public static final String Map_SearchExecutionDeposit = "Map_SearchDeposit";