http://jira.mfd.msk:8088/browse/CLS-740 add BlacklistMarket (2/2)
This commit is contained in:
parent
fa01562a9c
commit
ed5b85daac
9 changed files with 5358 additions and 11 deletions
|
|
@ -336,9 +336,10 @@
|
|||
</priority>
|
||||
</enums>
|
||||
<objects>
|
||||
<dbVersion name="Версия базы данных" destination="db-versions" class="" table="db_version">
|
||||
<dbVersion name="Версия базы данных" destination="db-versions" class="ru.clearing.classes.statics.data.misc.DbVersion" table="db_version">
|
||||
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true" visible="true"/>
|
||||
<version type="2" length="50" name="Версия базы данных, привязанная к релизу" shortname="Версия БД" searchable="true" sortable="true" visible="true"/>
|
||||
<dictionaryVersion type="2" length="100" name="Версия справочника" shortname="Версия справочника" searchable="true" sortable="true" visible="true"/>
|
||||
</dbVersion>
|
||||
<userCls name="Пользователь" destination="users" class="ru.clearing.classes.statics.data.user.User" logUpdates="true" table="user_cls">
|
||||
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
|
||||
|
|
@ -2391,6 +2392,11 @@
|
|||
<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>
|
||||
<blacklistMarket name="blacklist площадок" destination="blacklist-market" class="ru.clearing.classes.statics.data.misc.BlacklistMarket" table="blacklist_market">
|
||||
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true" visible="true"/>
|
||||
<code name="Код рынка" shortname="Код рынка" type="12"/>
|
||||
<section name="Секция" shortname="Секция" type="12"/>
|
||||
</blacklistMarket>
|
||||
</objects>
|
||||
<views>
|
||||
<AccountUnion>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
package ru.clearing.classes.statics.data.misc;
|
||||
|
||||
import ru.clearing.classes.ConstSerializable;
|
||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||
|
||||
/**
|
||||
* Read-only
|
||||
*/
|
||||
public class DbVersion extends SpcexObjectBase {
|
||||
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
||||
|
||||
private String version;
|
||||
private String dictionaryVersion;
|
||||
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(String value) {
|
||||
this.version = value;
|
||||
}
|
||||
|
||||
public String getDictionaryVersion() {
|
||||
return dictionaryVersion;
|
||||
}
|
||||
|
||||
public void setDictionaryVersion(String value) {
|
||||
this.dictionaryVersion = value;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
-- DB version: 3.12.0.91
|
||||
-- DB version: 3.13.8.101
|
||||
/* Dictionaries */
|
||||
|
||||
-- allowed - Справочник признаков допустимости использования объектов
|
||||
|
|
@ -856,13 +856,15 @@ GRANT ALL PRIVILEGES ON TABLE PRIORITY_DICTIONARY TO clearing;
|
|||
|
||||
-- dbVersion - Версия базы данных
|
||||
DROP TABLE IF EXISTS DB_VERSION;
|
||||
CREATE TABLE DB_VERSION(ID bigint PRIMARY KEY, VERSION varchar(50));
|
||||
CREATE TABLE DB_VERSION(ID bigint PRIMARY KEY, VERSION varchar(50), DICTIONARY_VERSION varchar(100));
|
||||
COMMENT ON TABLE DB_VERSION IS 'Версия базы данных';
|
||||
|
||||
COMMENT ON COLUMN DB_VERSION.ID IS 'Идентификатор записи';
|
||||
|
||||
COMMENT ON COLUMN DB_VERSION.VERSION IS 'Версия базы данных, привязанная к релизу';
|
||||
|
||||
COMMENT ON COLUMN DB_VERSION.DICTIONARY_VERSION IS 'Версия справочника';
|
||||
|
||||
GRANT ALL PRIVILEGES ON TABLE DB_VERSION TO clearing;
|
||||
|
||||
-- userCls - Пользователь
|
||||
|
|
@ -2386,7 +2388,7 @@ COMMENT ON COLUMN BANK_ACCOUNT.ACCOUNT_ID IS 'Идентификатор сче
|
|||
|
||||
COMMENT ON COLUMN BANK_ACCOUNT.BANK_IDENTIFICATION_CODE IS 'Банковский идентификационный код (БИК)';
|
||||
|
||||
COMMENT ON COLUMN BANK_ACCOUNT.BANK_NAME IS 'Наименование банка';
|
||||
COMMENT ON COLUMN BANK_ACCOUNT.BANK_NAME IS 'Наименование компании в банке';
|
||||
|
||||
COMMENT ON COLUMN BANK_ACCOUNT.CORRESPONDENT_ACCOUNT IS 'Корреспондентский счет';
|
||||
|
||||
|
|
@ -2430,7 +2432,7 @@ COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.ACCOUNT_ID IS 'Идентификатор
|
|||
|
||||
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.BANK_NAME IS 'Наименование компании в банке';
|
||||
|
||||
COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.CORRESPONDENT_ACCOUNT IS 'Корреспондентский счет';
|
||||
|
||||
|
|
@ -3521,9 +3523,9 @@ COMMENT ON COLUMN EXCLUDE_LIABILITIES_REGISTER.UPDATED_AT IS 'Дата-врем
|
|||
|
||||
COMMENT ON COLUMN EXCLUDE_LIABILITIES_REGISTER.SESSION_ID IS 'Идентификатор клиринговой сессии (linked to session)';
|
||||
|
||||
COMMENT ON COLUMN EXCLUDE_LIABILITIES_REGISTER.VALID_FROM_DATE IS 'Дата начала cессии';
|
||||
COMMENT ON COLUMN EXCLUDE_LIABILITIES_REGISTER.VALID_FROM_DATE IS 'Дата начала сессии';
|
||||
|
||||
COMMENT ON COLUMN EXCLUDE_LIABILITIES_REGISTER.VALID_TO_DATE IS 'Дата окончания cессии';
|
||||
COMMENT ON COLUMN EXCLUDE_LIABILITIES_REGISTER.VALID_TO_DATE IS 'Дата окончания сессии';
|
||||
|
||||
COMMENT ON COLUMN EXCLUDE_LIABILITIES_REGISTER.COMPANY_ID IS 'Идентификатор компании (linked to company)';
|
||||
|
||||
|
|
@ -3604,9 +3606,9 @@ COMMENT ON COLUMN LIABILITIES_REGISTER.UPDATED_AT IS 'Дата-время изм
|
|||
|
||||
COMMENT ON COLUMN LIABILITIES_REGISTER.SESSION_ID IS 'Идентификатор клиринговой сессии (linked to session)';
|
||||
|
||||
COMMENT ON COLUMN LIABILITIES_REGISTER.VALID_FROM_DATE IS 'Дата начала cессии';
|
||||
COMMENT ON COLUMN LIABILITIES_REGISTER.VALID_FROM_DATE IS 'Дата начала сессии';
|
||||
|
||||
COMMENT ON COLUMN LIABILITIES_REGISTER.VALID_TO_DATE IS 'Дата окончания cессии';
|
||||
COMMENT ON COLUMN LIABILITIES_REGISTER.VALID_TO_DATE IS 'Дата окончания сессии';
|
||||
|
||||
COMMENT ON COLUMN LIABILITIES_REGISTER.COMPANY_ID IS 'Идентификатор компании (linked to company)';
|
||||
|
||||
|
|
@ -5102,8 +5104,21 @@ COMMENT ON COLUMN S_CROSS_RATE.UPDATED_AT IS 'Дата-время изменен
|
|||
|
||||
GRANT ALL PRIVILEGES ON TABLE S_CROSS_RATE TO clearing;
|
||||
|
||||
-- blacklistMarket - blacklist площадок
|
||||
DROP TABLE IF EXISTS BLACKLIST_MARKET;
|
||||
CREATE TABLE BLACKLIST_MARKET(ID bigint PRIMARY KEY, CODE varchar(4), SECTION varchar(4));
|
||||
COMMENT ON TABLE BLACKLIST_MARKET IS 'blacklist площадок';
|
||||
|
||||
COMMENT ON COLUMN BLACKLIST_MARKET.ID IS 'Идентификатор записи';
|
||||
|
||||
COMMENT ON COLUMN BLACKLIST_MARKET.CODE IS 'Код рынка';
|
||||
|
||||
COMMENT ON COLUMN BLACKLIST_MARKET.SECTION IS 'Секция';
|
||||
|
||||
GRANT ALL PRIVILEGES ON TABLE BLACKLIST_MARKET TO clearing;
|
||||
|
||||
/* views */
|
||||
|
||||
-- Data types
|
||||
|
||||
INSERT INTO DB_VERSION(ID, VERSION) values (1, '3.12') ON CONFLICT (ID) DO UPDATE SET VERSION = EXCLUDED.VERSION
|
||||
INSERT INTO DB_VERSION(ID, VERSION) values (1, '3.13') ON CONFLICT (ID) DO UPDATE SET VERSION = EXCLUDED.VERSION
|
||||
5109
clearing-parent/db-scripts/src/main/resources/db/DDL_3.12.sql
Normal file
5109
clearing-parent/db-scripts/src/main/resources/db/DDL_3.12.sql
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,4 +1,4 @@
|
|||
-- DB version: 3.12
|
||||
-- DB version: 3.13
|
||||
-- DATA version: 3.12.101.95
|
||||
|
||||
|
||||
|
|
@ -1023,3 +1023,5 @@ INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (10000, 'TRDI', 'Общ
|
|||
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (10001, 'TRDI', 'Сделка с номером в ТС = %s некорректна.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
|
||||
|
||||
/* Business objects */
|
||||
|
||||
INSERT INTO DB_VERSION(ID, DICTIONARY_VERSION) values (1, '3.12.101') ON CONFLICT (ID) DO UPDATE SET DICTIONARY_VERSION = EXCLUDED.DICTIONARY_VERSION
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
-- DB version: 3.12 -> 3.13
|
||||
|
||||
-- == alter exist tables ==
|
||||
ALTER TABLE DB_VERSION ADD COLUMN IF NOT EXISTS DICTIONARY_VERSION varchar(100);
|
||||
COMMENT ON COLUMN DB_VERSION.DICTIONARY_VERSION IS 'Версия справочника';
|
||||
|
||||
COMMENT ON COLUMN BANK_ACCOUNT.BANK_NAME IS 'Наименование компании в банке';
|
||||
COMMENT ON COLUMN BANK_ACCOUNT_HISTORY.BANK_NAME IS 'Наименование компании в банке';
|
||||
COMMENT ON COLUMN EXCLUDE_LIABILITIES_REGISTER.VALID_FROM_DATE IS 'Дата начала сессии';
|
||||
COMMENT ON COLUMN EXCLUDE_LIABILITIES_REGISTER.VALID_TO_DATE IS 'Дата окончания сессии';
|
||||
|
||||
-- == new table ==
|
||||
DROP TABLE IF EXISTS BLACKLIST_MARKET;
|
||||
CREATE TABLE BLACKLIST_MARKET(ID bigint PRIMARY KEY, CODE varchar(4), SECTION varchar(4));
|
||||
COMMENT ON TABLE BLACKLIST_MARKET IS 'blacklist площадок';
|
||||
COMMENT ON COLUMN BLACKLIST_MARKET.ID IS 'Идентификатор записи';
|
||||
COMMENT ON COLUMN BLACKLIST_MARKET.CODE IS 'Код рынка';
|
||||
COMMENT ON COLUMN BLACKLIST_MARKET.SECTION IS 'Секция';
|
||||
|
||||
GRANT ALL PRIVILEGES ON TABLE BLACKLIST_MARKET TO clearing;
|
||||
|
||||
|
||||
INSERT INTO DB_VERSION(ID, VERSION) values (1, '3.13') ON CONFLICT (ID) DO UPDATE SET VERSION = EXCLUDED.VERSION
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
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.BlacklistMarket;
|
||||
import ru.spcex.clearing.imdg.base.TemplateMapStore;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
|
||||
@Component
|
||||
public class BlacklistMarketMapStore extends TemplateMapStore<BlacklistMarket> {
|
||||
|
||||
public BlacklistMarketMapStore(JdbcTemplate jdbcTemplate) {
|
||||
super(jdbcTemplate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMapName() {
|
||||
return IMDGDistributedNames.Map_BlacklistMarket;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTableName() {
|
||||
return "BLACKLIST_MARKET";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getFields() {
|
||||
return new String[]{
|
||||
"ID", "CODE", "SECTION"
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlacklistMarket objectReader(ResultSet resultSet) throws SQLException {
|
||||
BlacklistMarket object = new BlacklistMarket();
|
||||
object.setId(resultSet.getObject("ID", Long.class));
|
||||
object.setCode(resultSet.getObject("CODE", String.class));
|
||||
object.setSection(resultSet.getObject("SECTION", String.class));
|
||||
return object;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object[] objectToField(BlacklistMarket object) {
|
||||
Object[] args = new Object[]{
|
||||
object.getId(),
|
||||
object.getCode(),
|
||||
object.getSection()
|
||||
};
|
||||
return args;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
package ru.spcex.clearing.imdg.object;
|
||||
|
||||
import com.hazelcast.core.MapLoader;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.dao.support.DataAccessUtils;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.misc.DbVersion;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.imdg.base.AutoconfiguredMap;
|
||||
import ru.spcex.clearing.imdg.base.DictionaryMapStore;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.*;
|
||||
|
||||
import static ru.spcex.clearing.imdg.base.ObjectBaseMapStore.MAX_IN_CLAUSE_SIZE;
|
||||
|
||||
/**
|
||||
* Read-only map
|
||||
*/
|
||||
@Component
|
||||
public class DbVersionMapStore implements MapLoader<Long, DbVersion>, AutoconfiguredMap<DbVersion> {
|
||||
private static final Logger log = LoggerFactory.getLogger(DictionaryMapStore.class);
|
||||
protected final JdbcTemplate jdbcTemplate;
|
||||
protected NamedParameterJdbcTemplate namedParameterJdbcTemplate;
|
||||
|
||||
protected DbVersionMapStore(JdbcTemplate jdbcTemplate) {
|
||||
this.jdbcTemplate = jdbcTemplate;
|
||||
this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMapName() {
|
||||
return IMDGDistributedNames.Map_DbVersion;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getIndexingField() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getTableName() {
|
||||
return "DB_VERSION";
|
||||
}
|
||||
|
||||
protected DbVersion mapRow(ResultSet resultSet, int rowNum) throws SQLException {
|
||||
DbVersion object = new DbVersion();
|
||||
object.setId(resultSet.getObject("ID", Long.class));
|
||||
object.setVersion(resultSet.getObject("VERSION", String.class));
|
||||
object.setDictionaryVersion(resultSet.getObject("DICTIONARY_VERSION", String.class));
|
||||
return object;
|
||||
}
|
||||
|
||||
private Collection<DbVersion> loadCollection(Collection<Long> keys) {
|
||||
Map<String, Collection<Long>> paramMap = Collections.singletonMap("ids", keys);
|
||||
return namedParameterJdbcTemplate.query("select * from " + getTableName() + " where id in (:ids)", paramMap, this::mapRow);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DbVersion load(Long id) {
|
||||
Collection<DbVersion> rows;
|
||||
List<Long> list = Collections.singletonList(id);
|
||||
try {
|
||||
rows = loadCollection(list);
|
||||
} catch (Throwable e) {
|
||||
log.trace("Retry load after {}", e.toString());
|
||||
rows = loadCollection(list);
|
||||
}
|
||||
return DataAccessUtils.singleResult(rows);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Long, DbVersion> loadAll(Collection keys) {
|
||||
log.trace("loadAll from dictionary {} {} keys", getTableName(), keys.size());
|
||||
Map<Long, DbVersion> result = new HashMap<>();
|
||||
long start = System.currentTimeMillis();
|
||||
|
||||
// загрузить данные по ключам частями, чтобы не выйти за ограничения базы по кол-ву элементов в in clause
|
||||
List<Long> keysSubList = new ArrayList<>(MAX_IN_CLAUSE_SIZE);
|
||||
for (Iterator<Long> iterator = keys.iterator(); iterator.hasNext(); ) {
|
||||
Long key = iterator.next();
|
||||
keysSubList.add(key);
|
||||
if (keysSubList.size() == MAX_IN_CLAUSE_SIZE || !iterator.hasNext()) {
|
||||
Collection<DbVersion> rows = loadCollection(keysSubList);
|
||||
for (DbVersion row : rows) {
|
||||
result.put(row.getId(), row);
|
||||
}
|
||||
keysSubList.clear();
|
||||
}
|
||||
}
|
||||
|
||||
log.trace("loadAll from {} {} keys done in {} ms", getTableName(), keys.size(), (System.currentTimeMillis() - start));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<Long> loadAllKeys() {
|
||||
log.debug("loadAllKeys from " + getTableName());
|
||||
return jdbcTemplate.query("select id from " + getTableName(), (rs, rowNum) -> rs.getLong("id"));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -216,6 +216,7 @@ public final class IMDGDistributedNames {
|
|||
public static final String Map_PairSdf = "Map_PairSdf";
|
||||
public static final String Map_GatewayResult = "Map_GatewayResult";
|
||||
public static final String Map_BlacklistMarket = "Map_BlacklistMarket";
|
||||
public static final String Map_DbVersion = "Map_DbVersion";
|
||||
|
||||
//-------------------history and search tables
|
||||
public static final String Map_SearchExecutionDeposit = "Map_SearchDeposit";
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue