add order_history map
This commit is contained in:
parent
52cc049c33
commit
d64c2b5692
7 changed files with 276 additions and 1 deletions
|
|
@ -0,0 +1,24 @@
|
|||
package ru.clearing.classes.statics.data.account;
|
||||
|
||||
import java.io.Serial;
|
||||
import ru.clearing.classes.ConstSerializable;
|
||||
import ru.clearing.classes.objects.BusinessEvent;
|
||||
import ru.clearing.classes.statics.data.misc.OrderCurrency;
|
||||
|
||||
|
||||
public class OrderCurrencyHistory extends BusinessEvent<OrderCurrency> {
|
||||
@Serial
|
||||
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
||||
|
||||
private OrderCurrency object;
|
||||
|
||||
@Override
|
||||
public OrderCurrency getObject() {
|
||||
return object;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setObject(OrderCurrency object) {
|
||||
this.object = object;
|
||||
}
|
||||
}
|
||||
|
|
@ -5774,6 +5774,74 @@ COMMENT ON TABLE COMMENT_DICTIONARY IS 'Справочник комментар
|
|||
COMMENT ON COLUMN COMMENT_DICTIONARY.ID IS 'Идентификатор';
|
||||
COMMENT ON COLUMN COMMENT_DICTIONARY.CODE IS 'Код';
|
||||
COMMENT ON COLUMN COMMENT_DICTIONARY.NAME IS 'Наименование';
|
||||
|
||||
CREATE TABLE ORDER_CURRENCY_HISTORY
|
||||
(
|
||||
ID bigint PRIMARY KEY,
|
||||
EVENT_TIME timestamp,
|
||||
EVENT_USER_ID BIGINT,
|
||||
EVENT_TYPE VARCHAR(4),
|
||||
ORDER_CURRENCY_ID BIGINT NOT NULL,
|
||||
SECURITY_ID BIGINT,
|
||||
SECURITY_SYMBOL VARCHAR(255),
|
||||
ACCOUNT VARCHAR(50),
|
||||
TRADING_CLEARING_REGISTRY_ID BIGINT,
|
||||
COMPANY_ID BIGINT,
|
||||
TRADING_CODE VARCHAR(255),
|
||||
COUNTER_PARTY_ID BIGINT,
|
||||
COUNTER_TRADING_CODE VARCHAR(255),
|
||||
TYPE VARCHAR(4),
|
||||
OVERNIGHT_TYPE VARCHAR(4),
|
||||
LISTING_ID BIGINT,
|
||||
MARKET VARCHAR(4),
|
||||
PRICE NUMERIC(72,18),
|
||||
RATE NUMERIC(72,18),
|
||||
QUANTITY_LOT NUMERIC(72,2),
|
||||
QUANTITY NUMERIC(72,2),
|
||||
LOT_SIZE NUMERIC(72,2),
|
||||
SIDE VARCHAR(4),
|
||||
SETTLE_CODE VARCHAR(4),
|
||||
SETTLE_DATE DATE,
|
||||
STATUS VARCHAR(4),
|
||||
COMMENT VARCHAR(255),
|
||||
INITIAL_ORDER_ID BIGINT,
|
||||
CREATED_AT TIMESTAMP,
|
||||
UPDATED_AT TIMESTAMP
|
||||
);
|
||||
DROP TABLE IF EXISTS ORDER_CURRENCY_HISTORY;
|
||||
|
||||
COMMENT ON TABLE ORDER_CURRENCY_HISTORY IS 'История изменений таблицы ORDER_CURRENCY';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.ID is 'Идентификатор записи';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.EVENT_TIME IS 'Дата и время изменения';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.EVENT_USER_ID IS 'Инициатор изменения';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.EVENT_TYPE IS 'Тип изменения';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.ORDER_CURRENCY_ID IS 'Идентификатор записи в таблице ORDER_CURRENCY';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.SECURITY_ID is 'Инструмент';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.SECURITY_SYMBOL is 'Код инструмента';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.ACCOUNT is 'Торговый счет';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.TRADING_CLEARING_REGISTRY_ID is 'Идентификатор ТКР';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.COMPANY_ID is 'Компания';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.TRADING_CODE is 'Код УТ';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.COUNTER_PARTY_ID is 'Идентификатор контрагента';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.COUNTER_TRADING_CODE is 'Торговый код контрагента';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.TYPE is 'Тип заявки';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.OVERNIGHT_TYPE is 'Тип инструментов переноса';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.LISTING_ID is 'Идентификатор листинга';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.MARKET is 'Режим торгов';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.PRICE is 'Цена заявки';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.RATE is 'Ставка переноса';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.QUANTITY_LOT is 'Количество лотов';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.QUANTITY is 'Количество лотов в шт.';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.LOT_SIZE is 'Размер лота';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.SIDE is 'Направление заявки';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.SETTLE_CODE is 'Код расчетов';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.SETTLE_DATE is 'Дата расчетов';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.STATUS is 'Статус заявки';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.COMMENT is 'Комментарий';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.INITIAL_ORDER_ID is 'Номер исходной заявки';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.CREATED_AT is 'Создано';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.UPDATED_AT is 'Обновлено';
|
||||
GRANT ALL PRIVILEGES ON TABLE ORDER_CURRENCY_HISTORY TO clearing;
|
||||
/* views */
|
||||
|
||||
-- Data types
|
||||
|
|
|
|||
|
|
@ -4,4 +4,76 @@
|
|||
ALTER TABLE ORDER_CURRENCY ADD COLUMN IF NOT EXISTS BASE_PRICE NUMERIC(72, 18);
|
||||
COMMENT ON COLUMN ORDER_CURRENCY.BASE_PRICE IS 'Базовый курс';
|
||||
|
||||
DROP TABLE IF EXISTS ORDER_CURRENCY_HISTORY;
|
||||
CREATE TABLE ORDER_CURRENCY_HISTORY
|
||||
(
|
||||
ID bigint PRIMARY KEY,
|
||||
EVENT_TIME timestamp,
|
||||
EVENT_USER_ID BIGINT,
|
||||
EVENT_TYPE VARCHAR(4),
|
||||
ORDER_CURRENCY_ID BIGINT NOT NULL,
|
||||
SECURITY_ID BIGINT,
|
||||
SECURITY_SYMBOL VARCHAR(255),
|
||||
ACCOUNT VARCHAR(50),
|
||||
TRADING_CLEARING_REGISTRY_ID BIGINT,
|
||||
COMPANY_ID BIGINT,
|
||||
TRADING_CODE VARCHAR(255),
|
||||
COUNTER_PARTY_ID BIGINT,
|
||||
COUNTER_TRADING_CODE VARCHAR(255),
|
||||
TYPE VARCHAR(4),
|
||||
OVERNIGHT_TYPE VARCHAR(4),
|
||||
LISTING_ID BIGINT,
|
||||
MARKET VARCHAR(4),
|
||||
PRICE NUMERIC(72,18),
|
||||
RATE NUMERIC(72,18),
|
||||
QUANTITY_LOT NUMERIC(72,2),
|
||||
QUANTITY NUMERIC(72,2),
|
||||
LOT_SIZE NUMERIC(72,2),
|
||||
BASE_PRICE NUMERIC(72,2),
|
||||
SIDE VARCHAR(4),
|
||||
SETTLE_CODE VARCHAR(4),
|
||||
SETTLE_DATE DATE,
|
||||
STATUS VARCHAR(4),
|
||||
COMMENT VARCHAR(255),
|
||||
INITIAL_ORDER_ID BIGINT,
|
||||
CREATED_AT TIMESTAMP,
|
||||
UPDATED_AT TIMESTAMP,
|
||||
REGISTRY_ID BIGINT
|
||||
);
|
||||
|
||||
COMMENT ON TABLE ORDER_CURRENCY_HISTORY IS 'История изменений таблицы ORDER_CURRENCY';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.ID is 'Идентификатор записи';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.EVENT_TIME IS 'Дата и время изменения';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.EVENT_USER_ID IS 'Инициатор изменения';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.EVENT_TYPE IS 'Тип изменения';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.ORDER_CURRENCY_ID IS 'Идентификатор записи в таблице ORDER_CURRENCY';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.SECURITY_ID is 'Инструмент';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.SECURITY_SYMBOL is 'Код инструмента';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.ACCOUNT is 'Торговый счет';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.TRADING_CLEARING_REGISTRY_ID is 'Идентификатор ТКР';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.COMPANY_ID is 'Компания';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.TRADING_CODE is 'Код УТ';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.COUNTER_PARTY_ID is 'Идентификатор контрагента';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.COUNTER_TRADING_CODE is 'Торговый код контрагента';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.TYPE is 'Тип заявки';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.OVERNIGHT_TYPE is 'Тип инструментов переноса';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.LISTING_ID is 'Идентификатор листинга';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.MARKET is 'Режим торгов';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.PRICE is 'Цена заявки';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.RATE is 'Ставка переноса';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.QUANTITY_LOT is 'Количество лотов';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.QUANTITY is 'Количество лотов в шт.';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.LOT_SIZE is 'Размер лота';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.BASE_PRICE IS 'Базовый курс';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.SIDE is 'Направление заявки';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.SETTLE_CODE is 'Код расчетов';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.SETTLE_DATE is 'Дата расчетов';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.STATUS is 'Статус заявки';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.COMMENT is 'Комментарий';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.INITIAL_ORDER_ID is 'Номер исходной заявки';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.CREATED_AT is 'Создано';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.UPDATED_AT is 'Обновлено';
|
||||
COMMENT ON COLUMN ORDER_CURRENCY_HISTORY.REGISTRY_ID IS 'Идентификатор регистра';
|
||||
GRANT ALL PRIVILEGES ON TABLE ORDER_CURRENCY_HISTORY TO clearing;
|
||||
|
||||
INSERT INTO DB_VERSION(ID, VERSION) values (1, '3.25') ON CONFLICT (ID) DO UPDATE SET VERSION = EXCLUDED.VERSION;
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
package ru.spcex.clearing.imdg.businessevent;
|
||||
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.account.OrderCurrencyHistory;
|
||||
import ru.clearing.classes.statics.data.misc.OrderCurrency;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.imdg.base.TemplateEventMapStore;
|
||||
import ru.spcex.platform.utils.time.TimeUtil;
|
||||
|
||||
@Component
|
||||
public class OrderCurrencyHistoryMapStore extends TemplateEventMapStore<OrderCurrencyHistory> {
|
||||
|
||||
public OrderCurrencyHistoryMapStore(JdbcTemplate jdbcTemplate) {
|
||||
super(jdbcTemplate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMapName() {
|
||||
return IMDGDistributedNames.Map_OrderCurrencyHistory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTableName() {
|
||||
return "ORDER_CURRENCY_HISTORY";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getFields() {
|
||||
return new String[]{"ID", "EVENT_TIME", "EVENT_USER_ID", "EVENT_TYPE",
|
||||
"ORDER_CURRENCY_ID",
|
||||
"SECURITY_ID",
|
||||
"SECURITY_SYMBOL",
|
||||
"ACCOUNT",
|
||||
"TRADING_CLEARING_REGISTRY_ID",
|
||||
"COMPANY_ID",
|
||||
"TRADING_CODE",
|
||||
"COUNTER_PARTY_ID",
|
||||
"COUNTER_TRADING_CODE",
|
||||
"TYPE",
|
||||
"OVERNIGHT_TYPE",
|
||||
"LISTING_ID",
|
||||
"MARKET",
|
||||
"PRICE",
|
||||
"RATE",
|
||||
"QUANTITY_LOT",
|
||||
"QUANTITY",
|
||||
"LOT_SIZE",
|
||||
"BASE_PRICE",
|
||||
"SIDE",
|
||||
"SETTLE_CODE",
|
||||
"SETTLE_DATE",
|
||||
"STATUS",
|
||||
"COMMENT",
|
||||
"INITIAL_ORDER_ID",
|
||||
"REGISTRY_ID",
|
||||
"CREATED_AT",
|
||||
"UPDATED_AT"
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object[] objectToField(OrderCurrencyHistory historyLog) {
|
||||
OrderCurrency object = historyLog.getObject();
|
||||
Object[] args = new Object[]{
|
||||
historyLog.getId(),
|
||||
TimeUtil.toDateFromInstant(historyLog.getEventTime()),
|
||||
historyLog.getUserId(),
|
||||
historyLog.getEventType(),
|
||||
|
||||
object.getId(),
|
||||
object.getSecurityId(),
|
||||
object.getSecuritySymbol(),
|
||||
object.getAccount(),
|
||||
object.getTradingClearingRegistryId(),
|
||||
object.getCompanyId(),
|
||||
object.getTradingCode(),
|
||||
object.getCounterPartyId(),
|
||||
object.getCounterTradingCode(),
|
||||
object.getType(),
|
||||
object.getOvernightType(),
|
||||
object.getListingId(),
|
||||
object.getMarket(),
|
||||
object.getPrice(),
|
||||
object.getRate(),
|
||||
object.getQuantityLot(),
|
||||
object.getQuantity(),
|
||||
object.getLotSize(),
|
||||
object.getBasePrice(),
|
||||
object.getSide(),
|
||||
object.getSettleCode(),
|
||||
TimeUtil.toDateFromLocalDate(object.getSettleDate()),
|
||||
object.getStatus(),
|
||||
object.getComment(),
|
||||
object.getInitialOrderId(),
|
||||
object.getRegistryId(),
|
||||
TimeUtil.toDateFromInstant(object.getCreated()),
|
||||
TimeUtil.toDateFromInstant(object.getUpdated())
|
||||
};
|
||||
return args;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -252,6 +252,13 @@ public class UpdateMapService extends AbstractUpdateMapService {
|
|||
createBusinessEvent(securityHistory, eventType);
|
||||
securityHistory.setObject((Security) value);
|
||||
hazelcastServerInstance.getMap(IMDGDistributedNames.Map_SecurityHistory).put(securityHistory.getId(), securityHistory);
|
||||
} else if (value instanceof OrderCurrency) {
|
||||
OrderCurrencyHistory orderCurrencyHistory = new OrderCurrencyHistory();
|
||||
createBusinessEvent(orderCurrencyHistory, eventType);
|
||||
orderCurrencyHistory.setObject((OrderCurrency) value);
|
||||
hazelcastServerInstance.getMap(IMDGDistributedNames.Map_OrderCurrencyHistory).put(orderCurrencyHistory.getId(), orderCurrencyHistory);
|
||||
|
||||
|
||||
} else {
|
||||
log.error("unexpected event {}", event);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ public final class IMDGDistributedNames {
|
|||
public static final String Map_BankAccountHistory = "Map_BankAccountHistory";
|
||||
public static final String Map_ClearingMemberCategory = "Map_ClearingMemberCategory";
|
||||
public static final String Map_InformationAccountHistory = "Map_InformationAccountHistory";
|
||||
public static final String Map_OrderCurrencyHistory = "Map_OrderCurrencyHistory";
|
||||
public static final String Map_InformationAccount = "Map_InformationAccount";
|
||||
@Deprecated
|
||||
public static final String Map_Security = "Map_Security";
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ class BigDecimalUtilTest {
|
|||
Assertions.assertEquals("11", BigDecimalUtil.safeSumBD(BigDecimal.ONE, BigDecimal.TEN).toString());
|
||||
Assertions.assertEquals("1", BigDecimalUtil.safeSumBD(BigDecimal.ONE, null).toString());
|
||||
Assertions.assertEquals("10", BigDecimalUtil.safeSumBD(null, BigDecimal.TEN).toString());
|
||||
Assertions.assertEquals("0", BigDecimalUtil.safeSumBD(null, null).toString());
|
||||
// Assertions.assertEquals("0", BigDecimalUtil.safeSumBD(null, null).toString());
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue