Merge remote-tracking branch 'origin/dev' into report_25_26_29

# Conflicts:
#	clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_5/ReportBR_0420312_P1.java
#	clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/QCommandExecutor.java
#	clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/builders/FileReportBuilder.java
This commit is contained in:
AKurakin 2022-12-27 15:23:14 +03:00
commit f38443ff55
25 changed files with 866 additions and 188 deletions

View file

@ -59,6 +59,10 @@ public class AccountService extends QueueConsumer implements InitializingBean {
log.debug("successfully processed, grouping id={}, processed number={}", req.getGroupingSdf01Id(), accountToStatement.size());
}
private void accountUpdateWithBrake(BaseRequest<AccountSdf01Request> userRequest) {
}
private AccountSdfToStatementRequestPart responsePart(Long sdf01Id) {
AccountSdfToStatementRequestPart responsePart = new AccountSdfToStatementRequestPart();
responsePart.setSdfId(sdf01Id);

View file

@ -30,7 +30,8 @@ public class DeleteCompanyController extends AbstractQueueController {
private final IStateLoader stateLoader;
@Autowired
public DeleteCompanyController(IOperator operator, IStateLoader stateLoader) {
public DeleteCompanyController(IOperator operator,
IStateLoader stateLoader) {
super(operator);
this.stateLoader = stateLoader;
}

View file

@ -20,6 +20,7 @@ import ru.spcex.clearing.backendapi.service.IOperator;
import ru.spcex.clearing.backendapi.service.IStateLoader;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.platform.enumeration.Status;
import java.util.Collection;
import java.util.Map;
@ -75,7 +76,9 @@ public class CudMoneyMarketSecurityController extends AbstractQueueController {
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public CommonGetAllResponse getAll() {
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class);
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_MoneyMarketSecurity,
MoneyMarketSecurity.class,
Map.of("workflowStatus", Status.Active.getKey()));
CommonGetAllResponse response = new CommonGetAllResponse();
response.fromEntity(all);
return response;

View file

@ -9,25 +9,34 @@ import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@ApiModel(description = "Ответ при получении объектов словаря.")
public class DictionaryBackendGetAll extends BasicSpcexResponse {
@JsonProperty
@ApiModelProperty(value = "Полезная нагрузка")
private DictionaryBackendPayload payload = new DictionaryBackendPayload();
private IDictionaryPayload payload;
public void fromEntity(Collection<AbstractDictionary> dictionaryValues) {
var payload = this.getPayload();
this.payload = new GeneralDictionaryBackendPayload();
GeneralDictionaryBackendPayload castedPayload = (GeneralDictionaryBackendPayload) payload;
for (AbstractDictionary dictionaryValue : dictionaryValues) {
var singleItem = new DictionaryBackendGetFields();
singleItem.fromEntity(dictionaryValue);
payload.getItems().add(singleItem);
castedPayload.getItems().add(singleItem);
}
}
public void addMap(Map<String, Object> m) {
if (this.payload == null) {
this.payload = new SpecificDictionaryBackendPayload();
}
SpecificDictionaryBackendPayload payloadCasted = (SpecificDictionaryBackendPayload) this.payload;
payloadCasted.getItems().add(m);
}
private static class DictionaryBackendPayload {
public static class GeneralDictionaryBackendPayload implements IDictionaryPayload {
private List<DictionaryBackendGetFields> items = new ArrayList<>();
public List<DictionaryBackendGetFields> getItems() {
@ -39,11 +48,24 @@ public class DictionaryBackendGetAll extends BasicSpcexResponse {
}
}
public DictionaryBackendPayload getPayload() {
public static class SpecificDictionaryBackendPayload implements IDictionaryPayload {
@JsonProperty
private List<Map<String, Object>> items = new ArrayList<>();
public List<Map<String, Object>> getItems() {
return items;
}
public void setItems(List<Map<String, Object>> items) {
this.items = items;
}
}
public IDictionaryPayload getPayload() {
return payload;
}
public void setPayload(DictionaryBackendPayload payload) {
public void setPayload(IDictionaryPayload payload) {
this.payload = payload;
}
}

View file

@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import ru.clearing.platform.dictionary.AbstractDictionary;
public class DictionaryBackendGetFields {
public class DictionaryBackendGetFields implements IDictionaryPayload {
@JsonProperty
@ApiModelProperty(value = "Идентификатор", example = "1234")
private Long id;

View file

@ -0,0 +1,25 @@
package ru.spcex.clearing.backendapi.controller.response.entity.dictionary;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
import java.util.HashMap;
import java.util.Map;
@ApiModel(description = "Ответ при получении объекта словаря.")
public class DictionaryBackendGetSingleValueV2 extends BasicSpcexResponse {
@JsonProperty
@ApiModelProperty(value = "Поля объекта")
private Map<String, Object> payload = new HashMap<>();
public Map<String, Object> getPayload() {
return payload;
}
public void setPayload(Map<String, Object> payload) {
this.payload = payload;
}
}

View file

@ -0,0 +1,4 @@
package ru.spcex.clearing.backendapi.controller.response.entity.dictionary;
public interface IDictionaryPayload {
}

View file

@ -13,10 +13,11 @@ import org.springframework.web.bind.annotation.*;
import ru.clearing.platform.dictionary.AbstractDictionary;
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
import ru.spcex.clearing.backendapi.controller.response.entity.dictionary.DictionaryBackendGetAll;
import ru.spcex.clearing.backendapi.controller.response.entity.dictionary.DictionaryBackendGetSingleValue;
import ru.spcex.clearing.backendapi.controller.response.entity.dictionary.DictionaryBackendGetSingleValueV2;
import ru.spcex.clearing.backendapi.errors.ActionValidationException;
import ru.spcex.clearing.backendapi.errors.BackEndError;
import ru.spcex.clearing.backendapi.errors.NotFound404Exception;
import ru.spcex.clearing.backendapi.meta.GetResponseFactory;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
@ -33,10 +34,12 @@ public class DictionaryController {
private final Logger log = LoggerFactory.getLogger(getClass());
private final Map<String, Imdg<?>> allDictionaryMaps;
private final ImdgProvider imdgProvider;
private final GetResponseFactory responseFactory;
@Autowired
public DictionaryController(ImdgProvider imdgProvider) {
public DictionaryController(ImdgProvider imdgProvider, GetResponseFactory responseFactory) {
this.imdgProvider = imdgProvider;
this.responseFactory = responseFactory;
this.allDictionaryMaps = new ConcurrentHashMap<>();
}
@ -49,39 +52,42 @@ public class DictionaryController {
Imdg<AbstractDictionary> dictionary = extractDictionaryImdgFromUrlParameter(dictionaryName, AbstractDictionary.class);
Collection<AbstractDictionary> allValues = dictionary.getAllValues();
DictionaryBackendGetAll response = new DictionaryBackendGetAll();
response.fromEntity(allValues);
for (AbstractDictionary val : allValues) {
Map<String, Object> fromMeta = responseFactory.responseFromDictionary(dictionaryName, val);
response.addMap(fromMeta);
}
return response;
}
@ApiOperation(value = "get dictionary value by id.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = DictionaryBackendGetSingleValue.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = DictionaryBackendGetSingleValueV2.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(value = "/{dictionary-name}/{id}", method = RequestMethod.GET)
@ResponseBody
public DictionaryBackendGetSingleValue getById(@ApiParam(value = "Название словаря", required = true, example = "moneyFlowSide")
public DictionaryBackendGetSingleValueV2 getById(@ApiParam(value = "Название словаря", required = true, example = "moneyFlowSide")
@PathVariable("dictionary-name") String dictionaryName,
@ApiParam(value = "Идентификатор объекта", required = true, example = "1234")
@PathVariable("id") Long id) {
Imdg<AbstractDictionary> dictionary = extractDictionaryImdgFromUrlParameter(dictionaryName, AbstractDictionary.class);
AbstractDictionary value = dictionary.getSingleObjectByID(id);
if (value == null) throw new NotFound404Exception(dictionaryName + " id='" + id + "'");
DictionaryBackendGetSingleValue response = new DictionaryBackendGetSingleValue();
response.fromEntity(value);
DictionaryBackendGetSingleValueV2 response = new DictionaryBackendGetSingleValueV2();
response.setPayload(responseFactory.responseFromDictionary(dictionaryName, value));
return response;
}
@ApiOperation(value = "get dictionary value by code.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = DictionaryBackendGetSingleValue.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = DictionaryBackendGetSingleValueV2.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(value = "/{dictionary-name}/code/{code}", method = RequestMethod.GET)
@ResponseBody
public DictionaryBackendGetSingleValue getByCode(@ApiParam(value = "Название словаря", required = true, example = "moneyFlowSide")
public DictionaryBackendGetSingleValueV2 getByCode(@ApiParam(value = "Название словаря", required = true, example = "moneyFlowSide")
@PathVariable("dictionary-name") String dictionaryName,
@ApiParam(value = "Код словаря", required = true, example = "1234")
@PathVariable("code") String code) {
Imdg<AbstractDictionary> dictionary = extractDictionaryImdgFromUrlParameter(dictionaryName, AbstractDictionary.class);
AbstractDictionary value = dictionary.getSingleObjectByFieldValues(Map.of("code", code));
if (value == null) throw new NotFound404Exception(dictionaryName + " code='" + code + "'");
DictionaryBackendGetSingleValue response = new DictionaryBackendGetSingleValue();
response.fromEntity(value);
DictionaryBackendGetSingleValueV2 response = new DictionaryBackendGetSingleValueV2();
response.setPayload(responseFactory.responseFromDictionary(dictionaryName, value));
return response;
}

View file

@ -0,0 +1,22 @@
package ru.spcex.clearing.backendapi.meta;
import java.util.List;
public class ClearingDictionaryExtracted extends ObjectExtracted {
public ClearingDictionaryExtracted(String clazz, List<ActionField> actionFields) {
for (ActionField field : actionFields) {
if (field.getVirtual() != null && field.isVirtual()){
continue;
}
FieldExtracted fe = getImplFieldExtracted(field);
fields.add(fe);
fieldByCode.put(field.getCode(), fe);
}
}
@Override
public FieldExtracted getImplFieldExtracted(ActionField field) {
return new ClearingFieldExtracted(field);
}
}

View file

@ -31,11 +31,26 @@ public class GetResponseFactory {
.collect(Collectors.toList());
}
/**
* dictionaryName - это имя тэга внутри <enum>
*/
public Map<String, Object> responseFromDictionary(String dictionaryName, Object o) {
ObjectExtracted objectExtracted = meta.getEnumsExtractedByTagName().get(dictionaryName);
if (objectExtracted == null) {
throw new RuntimeException("cannot find dictionary in meta for " + dictionaryName);
}
return responseFromObjectExtracted(o, objectExtracted);
}
public Map<String, Object> responseFromObject(Object o) {
ObjectExtracted objExtr = meta.getObjectsExtractedByClazz().get(o.getClass().getCanonicalName());
if (objExtr == null) {
throw new RuntimeException("cannot find object in meta for " + o.getClass().getCanonicalName());
}
return responseFromObjectExtracted(o, objExtr);
}
private Map<String, Object> responseFromObjectExtracted(Object o, ObjectExtracted objExtr) {
Map<String, Object> r = new LinkedHashMap<>();
FieldExtracted currentField = null;
try {

View file

@ -2,6 +2,7 @@ package ru.spcex.clearing.backendapi.meta;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.spcex.platform.utils.log.ExceptionUtils;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
@ -17,6 +18,8 @@ public class MetaServer extends MetaBase {
private Map<String, ObjectExtracted> objectsExtractedByDestination;
private Map<String, ObjectExtracted> actionObjectsExtracted;
private Map<String, ObjectElement> objectElementByDestination;
private Map<String, ObjectExtracted> enumsExtractedByTagName;
private final static Set<String> dictionaryDefaultFields = Set.of("id", "code", "name");
protected ObjectExtracted getImplInstanceObjectExtracted(String clazz, List<ActionField> actionFields) {
return new ClearingObjectExtracted(clazz, actionFields);
@ -31,6 +34,7 @@ public class MetaServer extends MetaBase {
objectsExtractedByClazz = new ConcurrentHashMap<>();
objectsExtractedByDestination = new ConcurrentHashMap<>();
objectElementByDestination = new ConcurrentHashMap<>();
enumsExtractedByTagName = new ConcurrentHashMap<>();
try {
Map<String, ObjectElement> objects = getObjects();
log.info("Meta objects:\n{}",
@ -84,6 +88,37 @@ public class MetaServer extends MetaBase {
} catch (Throwable e) {
throw new ClearingMetaServerValidationException(e.getLocalizedMessage());
}
try {
Map<String, ObjectEnumElement> enums = getEnums();
for (String key : enums.keySet()) {
ObjectExtracted oe;
ObjectEnumElement objectElement = enums.get(key);
try {
oe = new ClearingDictionaryExtracted(objectElement.getClazz(), objectElement.getFields());
} catch (Throwable e) {
log.warn("{} {}", key, ExceptionUtils.getStackTrace(e));
continue;
}
/**
* можно было бы хранить только для нестандартных словарей (где не только id, name, code)
*/
// List<FieldExtracted> dictFields = oe.getFields();
// boolean add = false;
// for (FieldExtracted dictField : dictFields) {
// if (!dictionaryDefaultFields.contains(dictField.getMemberName())) {
// add = true;
// break;
// }
// }
// if (add) {
// enumsExtractedByTagName.put(key, oe);
// }
enumsExtractedByTagName.put(key, oe);
}
} catch (Throwable e) {
throw new ClearingMetaServerValidationException(e.getLocalizedMessage());
}
}
for (ObjectExtracted o : this.objectsExtracted) {
try {
@ -196,4 +231,8 @@ public class MetaServer extends MetaBase {
}
return partSize;
}
public Map<String, ObjectExtracted> getEnumsExtractedByTagName() {
return enumsExtractedByTagName;
}
}

View file

@ -5,12 +5,14 @@ import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
public abstract class ObjectExtracted {
private String className;
private Class<?> clazz;
private List<FieldExtracted> fields = new LinkedList<>();
private Map<String, FieldExtracted> fieldByCode = new ConcurrentHashMap<>();
private boolean isArray = false;
protected String className;
protected Class<?> clazz;
protected List<FieldExtracted> fields = new LinkedList<>();
protected Map<String, FieldExtracted> fieldByCode = new ConcurrentHashMap<>();
protected boolean isArray = false;
public ObjectExtracted() {
}
public ObjectExtracted(String clazz, List<ActionField> actionFields) {
this.className = clazz;

View file

@ -13,4 +13,5 @@ public interface IStateLoader {
<T extends SpcexObjectBase> Optional<T> getById(Long id, String mapName, Class<T> clazz);
<T extends SpcexObjectBase> Collection<T> getAll(String mapName, Class<T> clazz);
<T extends SpcexObjectBase> Collection<Map<String, Object>> getAllMetaTransform(String mapName, Class<T> clazz);
<T extends SpcexObjectBase> Collection<Map<String, Object>> getAllMetaTransform(String mapName, Class<T> clazz, Map<String, ? extends Comparable<?>> conditions);
}

View file

@ -44,6 +44,15 @@ public class StateLoaderImpl implements IStateLoader {
return responseFactory.responseFromObjectCollection(all);
}
@Override
public <T extends SpcexObjectBase> Collection<Map<String, Object>> getAllMetaTransform(String mapName,
Class<T> clazz,
Map<String, ? extends Comparable<?>> conditions) {
Imdg<T> imdg = getImdg(mapName, clazz);
Collection<T> all = imdg.getCollectionObjectsByFieldValues(conditions);
return responseFactory.responseFromObjectCollection(all);
}
@SuppressWarnings("unchecked")
private <T extends SpcexObjectBase> Imdg<T> getImdg(String mapName, Class<T> clazz) {
return (Imdg<T>) allImdgMaps.computeIfAbsent(mapName, (mapName1) -> imdgProvider.getImdg(mapName, clazz));

View file

@ -12,15 +12,13 @@
<task id="7" code="CORD" name="Формирование сводного платежного поручения"/>
<task id="8" code="CORC" name="Получение подтверждения переводов"/>
<task id="9" code="GVER" name="Запуск сверки"/>
<task id="11" code="STCP" name="Формирование уведомления о завершении расчетов"/>
<task id="12" code="CMBA" name="Формирование распоряжения на перевод с ТБС"/>
<task id="14" code="GCMR" name="Формирование реестра участников клиринга"/>
<task id="15" code="GBRR" name="Формирование реестра остатков денежных средств "/>
<task id="16" code="GORR" name="Формирование реестра распоряжений, направленных расчетной организации"/>
<task id="17" code="GETR" name="Формирование отчетности"/>
<task id="17" code="GREP" name="Формирование отчетности"/>
<task id="21" code="GSRR" name="Формирование реестра отправленных отчетов"/>
<task id="25" code="GERP" name="Получение сделок из Торговой системы"/>
<task id="26" code="VICR" name="Сверка обеспеченности Инициатора"/>
<task id="25" code="GTRD" name="Получение сделок из Торговой системы"/>
<task id="32" code="GACA" name="Создание файла остатков CSV по клиринговым счетам"/>
<task id="33" code="GAIA" name="Создание файла остатков CSV по внутренним информационным счетам"/>
<task id="34" code="GBLD" name="Поступление средств"/>

View file

@ -1,25 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--?xml-stylesheet type="text/xsl" href="\..\corp-reports\src\data\meta\meta.server.xslt"?-->
<meta version="2.4.0.0">
<meta version="2.4.2.0">
<!-- _xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" _xsi:noNamespaceSchemaLocation="file:///E:/d/projects/meta/from/meta.xsd" -->
<!--Здесь словари-->
<enums>
<chargeDirection name="Направление начисления комиссии" class="ru.clearing.platform.dictionary.">
<chargeDirection name="Направление начисления комиссии" class="ru.clearing.platform.dictionary." table="charge_direction_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Направление комиссии" shortname="Направление комиссии" type="2" length="50"/>
</chargeDirection>
<chargeType name="Справочник типов комиссий" class="ru.clearing.platform.dictionary.">
<chargeType name="Справочник типов комиссий" class="ru.clearing.platform.dictionary." table="charge_type_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Тип комиссии" shortname="Тип комиссии" type="2" length="50"/>
</chargeType>
<courierType name="Способ доставки документа" class="ru.clearing.platform.dictionary.">
<courierType name="Способ доставки документа" class="ru.clearing.platform.dictionary." table="courier_type_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Способ доставки" shortname="Способ доставки" type="2" length="50"/>
</courierType>
<termType name="Справочник видов инструментов денежного рынка" class="com.spicex.dictionary.">
<termType name="Справочник видов инструментов денежного рынка" class="com.spicex.dictionary." table="term_type_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Тип" type="2" length="255"/>
@ -39,7 +39,7 @@
<code name="Код" shortname="Код" type="12"/>
<name name="Статус дня" shortname="Статус" type="2" length="50"/>
</dayStatus>
<transactionStatus name="Справочник статусов транзакций" class="com.spicex.dictionary.TransactionStatusDictionary" table="TransactionStatusDictionary">
<transactionStatus name="Справочник статусов транзакций" class="com.spicex.dictionary.TransactionStatusDictionary" table="transaction_status_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Статус транзакции" shortname="Статус" type="2" length="50"/>
@ -49,200 +49,200 @@
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Источник" type="2" length="50"/>
</parent>
<clearingStatus name="Справочник результатов клиринга" class="com.spicex.dictionary.">
<clearingStatus name="Справочник результатов клиринга" class="com.spicex.dictionary." table="clearing_status_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Тип" type="2" length="255"/>
</clearingStatus>
<workflowStatus name="Справочник статусов бизнес-процессов" class="com.spicex.dictionary.">
<workflowStatus name="Справочник статусов бизнес-процессов" class="com.spicex.dictionary." table="workflow_status_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Тип" type="2" length="255"/>
</workflowStatus>
<accountStatus name="Справочник статусов счетов" class="com.spicex.dictionary.AccountStatus" table="AccountStatus">
<accountStatus name="Справочник статусов счетов" class="com.spicex.dictionary.AccountStatus" table="account_status_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Тип" type="2" length="50"/>
</accountStatus>
<allowed name="Справочник признаков допустимости использования объектов" class="com.spicex.platform.dictionary.AllowedDictionary">
<allowed name="Справочник признаков допустимости использования объектов" class="com.spicex.platform.dictionary.AllowedDictionary" table="allowed_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Признак допустимости" shortname="Допустимость" type="2" length="50"/>
</allowed>
<moneyFlowSide name="Направление заявки" class="ru.clearing.platform.dictionary.MoneyFlowSideDictionary" table="MoneyFlowSideDictionary">
<moneyFlowSide name="Направление заявки" class="ru.clearing.platform.dictionary.MoneyFlowSideDictionary" table="money_flow_side_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Значение" shortname="Значение" type="2" length="255"/>
</moneyFlowSide>
<inOutDirection name="Справочник значений направления денежного потока" class="ru.clearing.platform.dictionary.InOutDirectionDictionary" table="InOutDirectionDictionary">
<inOutDirection name="Справочник значений направления денежного потока" class="ru.clearing.platform.dictionary.InOutDirectionDictionary" table="in_out_direction_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Значение" shortname="Значение" type="2" length="255"/>
</inOutDirection>
<statementType name="Справочник типов поступлений/списаний от ПРЦ" class="ru.clearing.platform.dictionary.StatementTypeDictionary" table="StatementTypeDictionary">
<statementType name="Справочник типов поступлений/списаний от ПРЦ" class="ru.clearing.platform.dictionary.StatementTypeDictionary" table="statement_type_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Значение" shortname="Значение" type="2" length="255"/>
</statementType>
<operationType name="Справочник типов операций" class="ru.clearing.platform.dictionary.OperationTypeDictionary" table="OperationTypeDictionary">
<operationType name="Справочник типов операций" class="ru.clearing.platform.dictionary.OperationTypeDictionary" table="operation_type_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Значение" shortname="Значение" type="2" length="255"/>
</operationType>
<operationStatus name="Справочник статусов операций" class="ru.clearing.platform.dictionary.OperationStatusDictionary" table="OperationStatusDictionary">
<operationStatus name="Справочник статусов операций" class="ru.clearing.platform.dictionary.OperationStatusDictionary" table="operation_status_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Значение" shortname="Значение" type="2" length="255"/>
</operationStatus>
<balanceAccountType name="Справочник типов лимитов" class="com.spicex.platform.dictionary.balanceAccountTypeDictionary">
<balanceAccountType name="Справочник типов лимитов" class="com.spicex.platform.dictionary.balanceAccountTypeDictionary" table="balance_account_type_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Тип лимитов" shortname="Тип" type="2" length="50"/>
</balanceAccountType>
<countryCode name="Справочник кодов стран" class="com.spicex.dictionary.">
<countryCode name="Справочник кодов стран" class="com.spicex.dictionary." table="country_code_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" type="2" length="255"/>
</countryCode>
<clearingCategory name="Справочник категорий участника клиринга" class="com.spicex.dictionary.ClearingMemberCategoryDictionary" table="ClearingMemberCategoryDictionary">
<clearingCategory name="Справочник категорий участника клиринга" class="com.spicex.dictionary.ClearingMemberCategoryDictionary" table="clearing_category_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="255"/>
</clearingCategory>
<contactType name="Справочник типов контактов Компании" class="com.spicex.dictionary.">
<contactType name="Справочник типов контактов Компании" class="com.spicex.dictionary." table="contact_type_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Тип" type="2" length="255"/>
</contactType>
<corporationSoleType name="Единоличный исполнительный орган" class="com.spicex.dictionary.">
<corporationSoleType name="Единоличный исполнительный орган" class="com.spicex.dictionary." table="corporation_sole_type_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="255"/>
</corporationSoleType>
<connectionState name="Справочник состояний соединений" class="com.spicex.dictionary.ConnectionStateDictionary" table="ConnectionStateDictionary">
<connectionState name="Справочник состояний соединений" class="com.spicex.dictionary.ConnectionStateDictionary" table="connection_state_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Состояние" type="2" length="50"/>
</connectionState>
<documentType name="Справочник типов документов" class="com.spicex.dictionary.">
<documentType name="Справочник типов документов" class="com.spicex.dictionary." table="document_type_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Тип" type="2" length="255"/>
</documentType>
<legalKind name="Справочник видов субъекта" class="com.spicex.dictionary.">
<legalKind name="Справочник видов субъекта" class="com.spicex.dictionary." table="legal_kind_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Вид" type="2" length="255"/>
</legalKind>
<organizationType name="Справочник типов организаций" class="com.spicex.dictionary.">
<organizationType name="Справочник типов организаций" class="com.spicex.dictionary." table="organization_type_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Тип" type="2" length="255"/>
</organizationType>
<companySymbol name="Справочник имен Компании" class="com.spicex.dictionary." logUpdates="true">
<companySymbol name="Справочник имен Компании" class="com.spicex.dictionary." logUpdates="true" table="company_symbol_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Полное имя" type="2" length="255"/>
<shortname name="Краткое наименование" shortname="Имя" type="2" length="255"/>
</companySymbol>
<companyRole name="Справочник ролей Компаний" class="com.spicex.dictionary.">
<companyRole name="Справочник ролей Компаний" class="com.spicex.dictionary." table="company_role_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Роль Участника" shortname="Роль" type="2" length="255"/>
</companyRole>
<userRole name="Роли пользователей" class="com.spicex.dictionary.UserRole" table="UserRoleDictionary">
<userRole name="Роли пользователей" class="com.spicex.dictionary.UserRole" table="user_role_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Роль пользователя" shortname="Роль" type="2" length="50"/>
</userRole>
<accountType name="Справочник типов счетов" class="com.spicex.dictionary.AccountTypeDictionary">
<accountType name="Справочник типов счетов" class="com.spicex.dictionary.AccountTypeDictionary" table="account_type_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="255"/>
</accountType>
<instrumentType name="Справочник типов инструмента" class="com.spicex.dictionary.">
<instrumentType name="Справочник типов инструмента" class="com.spicex.dictionary." table="instrument_type_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Тип" type="2" length="255"/>
</instrumentType>
<currencyCode name="Справочник кодов валют" class="com.spicex.dictionary.">
<currencyCode name="Справочник кодов валют" class="com.spicex.dictionary." table="currency_code_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="255"/>
</currencyCode>
<serviceStatus name="Справочник услуги" class="com.spicex.dictionary.">
<serviceStatus name="Справочник услуги" class="com.spicex.dictionary." table="service_status_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="255"/>
</serviceStatus>
<service name="Справочник услуги" class="com.spicex.dictionary.">
<service name="Справочник услуги" class="com.spicex.dictionary." table="service_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="255"/>
</service>
<serviceProduct name="Справочник продукта для услуги" class="com.spicex.dictionary.">
<serviceProduct name="Справочник продукта для услуги" class="com.spicex.dictionary." table="service_product_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="255"/>
</serviceProduct>
<sector name="Справочник секций" class="com.spicex.dictionary.">
<sector name="Справочник секций" class="com.spicex.dictionary." table="sector_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="255"/>
</sector>
<resultStatus name="Статус обработки" class="com.spicex.dictionary.">
<resultStatus name="Статус обработки" class="com.spicex.dictionary." table="result_status_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Статус обработки" shortname="Статус" type="2" length="255"/>
</resultStatus>
<errorCode name="Коды ошибок" class="com.spicex.dictionary.">
<errorCode name="Коды ошибок" class="com.spicex.dictionary." table="error_code_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Текст ошибки" shortname="Ошибка" type="2" length="255"/>
</errorCode>
<managementJournalStatus name="Справочник статусов журнала мониторинга и контроля" class="ru.clearing.platform.dictionary.managementJournalStatusDictionary" table="МanagementJournalStatusDictionary">
<managementJournalStatus name="Справочник статусов журнала мониторинга и контроля" class="ru.clearing.platform.dictionary.managementJournalStatusDictionary" table="management_journal_status_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Статус сообщения" shortname="Наименование" type="2" length="50"/>
</managementJournalStatus>
<managementJournalType name="Справочник типов записей в журнале мониторинга и контроля" class="ru.clearing.platform.dictionary.managementJournalTypeDictionary" table="МanagementJournalTypeDictionary">
<managementJournalType name="Справочник типов записей в журнале мониторинга и контроля" class="ru.clearing.platform.dictionary.managementJournalTypeDictionary" table="management_journal_type_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Тип записи" shortname="Наименование" type="2" length="50"/>
</managementJournalType>
<managementJournalPurpose name="Справочник целей записей в журнале мониторинга и контроля" class="ru.clearing.platform.dictionary.managementJournalPurposeDictionary" table="managementJournalPurposeDictionary">
<managementJournalPurpose name="Справочник целей записей в журнале мониторинга и контроля" class="ru.clearing.platform.dictionary.managementJournalPurposeDictionary" table="management_journal_purpose_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Тип записи" shortname="Наименование" type="2" length="50"/>
</managementJournalPurpose>
<inOutSDfType name="Справочник типов входящих и исходящих записей" class="ru.clearing.platform.dictionary.inOutSDfTypeDictionary" table="InOutSDfTypeDictionary">
<inOutSDfType name="Справочник типов входящих и исходящих записей" class="ru.clearing.platform.dictionary.inOutSDfTypeDictionary" table="in_out_s_df_type_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Тип записи" shortname="Наименование" type="2" length="50"/>
</inOutSDfType>
<sessionStatus name="Справочник статусов клиринговой сессии" class="ru.clearing.platform.dictionary.SessionStatusDictionary" table="SessionStatusDictionary">
<sessionStatus name="Справочник статусов клиринговой сессии" class="ru.clearing.platform.dictionary.SessionStatusDictionary" table="session_status_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="50"/>
</sessionStatus>
<objectType name="Справочник типов объектов" class="ru.clearing.platform.dictionary.ObjectTypeDictionary" table="ObjectTypeDictionary">
<objectType name="Справочник типов объектов" class="ru.clearing.platform.dictionary.ObjectTypeDictionary" table="object_type_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="50"/>
</objectType>
<notificationStatus name="Справочник статусов сообщений" class="ru.clearing.platform.dictionary.NotificationStatusDictionary" table="NotificationStatusDictionary">
<notificationStatus name="Справочник статусов сообщений" class="ru.clearing.platform.dictionary.NotificationStatusDictionary" table="notification_status_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="50"/>
</notificationStatus>
<eventType name="Типы изменений записей" class="ru.clearing.platform.dictionary.EventTypeDictionary" table="EventTypeDictionary">
<eventType name="Типы изменений записей" class="ru.clearing.platform.dictionary.EventTypeDictionary" table="event_type_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Тип события" shortname="Событие" type="2" length="50"/>
</eventType>
</enums>
<objects>
<userCls name="Пользователь" destination="users" class="ru.clearing.classes.statics.data.user.User" logUpdates="true" table="UserCls">
<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"/>
<createdAt field="created" type="4" name="Создано" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" name="Изменено" shortname="Изменено" searchable="true" sortable="true"/>
@ -254,14 +254,14 @@
</put>
</actions>
</userCls>
<userRoleSession name="Набор ролей" destination="user-role-sessions" class="ru.clearing.classes.statics.data.user.UserRoleSession" table="UserRoleSession">
<userRoleSession name="Набор ролей" destination="user-role-sessions" class="ru.clearing.classes.statics.data.user.UserRoleSession" table="user_role_session">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<userId type="1" name="Идентификатор пользователя" shortname="Пользователь" searchable="true" sortable="true" visible="true" link="userCls"/>
<userRole type="12" name="Идентификатор роли" shortname="Роль" searchable="true" sortable="true" visible="true" link="userRole"/>
<companyId type="1" name="Идентификатор компании" shortname="Компания" searchable="true" sortable="true" visible="true" link="company"/>
<status type="12" name="Статус" shortname="Статус" searchable="true" sortable="true" link="workflowStatus"/>
</userRoleSession>
<userSettings name="Настройки пользователя" destination="utilities/user-settings" class="ru.clearing.classes.statics.data.user.UserSettings" table="userSettings">
<userSettings name="Настройки пользователя" destination="utilities/user-settings" class="ru.clearing.classes.statics.data.user.UserSettings" table="user_settings">
<id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true"/>
<userId type="1" name="Пользователь" shortname="Пользователь" searchable="true" sortable="true" visible="true" link="userCls"/>
<version type="2" length="50" name="Версия настроек пользователя" shortname="Версия" searchable="false" sortable="false" visible="true"/>
@ -274,7 +274,7 @@
</put>
</actions>
</userSettings>
<userConnect name="Активность пользователей в системе" class="ru.clearing.classes.statics.data.user.UserConnect" logUpdates="true" table="UserConnect">
<userConnect name="Активность пользователей в системе" class="ru.clearing.classes.statics.data.user.UserConnect" logUpdates="true" table="user_connect">
<id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true"/>
<createdAt field="created" type="4" name="Создано" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" name="Изменено" shortname="Изменено" searchable="true" sortable="true"/>
@ -293,7 +293,7 @@
<taskTime type="5" name="Время задачи" shortname="Время задачи" searchable="false" sortable="false" visible="true"/>
<taskStatus type="12" name="Статус" shortname="Статус" searchable="false" sortable="true" visible="true" link="taskStatus"/>
<companyId type="1" name="Компания" shortname="Компания" searchable="false" sortable="false" visible="true" link="company" linkCode="shortName"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" searchable="false" sortable="true" visible="true" link="security" linkCode="shortName"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" searchable="false" sortable="true" visible="true" link="moneyMarketSecurity" linkCode="fullName"/>
<id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true"/>
<createdAt field="created" type="4" name="Создано" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" name="Изменено" shortname="Изменено" searchable="true" sortable="true"/>
@ -303,7 +303,7 @@
<taskTime type="5" name="Время задачи" shortname="Время задачи" required="true"/>
<taskStatus type="12" name="Статус" shortname="Статус" link="taskStatus" required="true"/>
<companyId type="1" name="Компания" shortname="Компания" link="company" linkCode="shortName"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" link="security" linkCode="shortName"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" link="moneyMarketSecurity" linkCode="fullName"/>
</post>
<put name="Изменение шаблона расписания операционного дня">
<id type="1" name="Идентификатор записи" shortname="ID" link="plannerTemplate" linkCode="id" required="true"/>
@ -311,7 +311,7 @@
<taskTime type="5" name="Время задачи" shortname="Время задачи"/>
<taskStatus type="12" name="Статус" shortname="Статус" link="taskStatus"/>
<companyId type="1" name="Компания" shortname="Компания" link="company" linkCode="shortName"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" link="security" linkCode="shortName"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" link="moneyMarketSecurity" linkCode="fullName"/>
</put>
<delete name="Удаление шаблона расписания операционного дня" confirmation="task,taskTime,taskStatus,companyId,securityId">
<id type="1" name="Идентификатор записи" shortname="ID" link="plannerTemplate" linkCode="id" required="true"/>
@ -349,7 +349,7 @@
<market type="12" name="Секция" shortname="Секция" searchable="false" sortable="false" visible="true" link="market"/>
<taskStatus type="12" name="Статус" shortname="Статус" searchable="false" sortable="true" visible="true" link="taskStatus"/>
<companyId type="1" name="Компания" shortname="Компания" searchable="false" sortable="false" visible="true" link="company" linkCode="shortName"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" searchable="false" sortable="true" visible="true" link="security" linkCode="shortName"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" searchable="false" sortable="true" visible="true" link="moneyMarketSecurity" linkCode="fullName"/>
<id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true"/>
<createdAt field="created" type="4" name="Создано" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" name="Изменено" shortname="Изменено" searchable="true" sortable="true"/>
@ -361,7 +361,7 @@
<market type="12" name="Секция" shortname="Секция" link="market"/>
<taskStatus type="12" name="Статус" shortname="Статус" link="taskStatus" required="true"/>
<companyId type="1" name="Компания" shortname="Компания" link="company" linkCode="shortName"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" link="security" linkCode="shortName"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" link="moneyMarketSecurity" linkCode="fullName"/>
</post>
<put name="Изменение расписания">
<id type="1" name="Идентификатор записи" shortname="ID" link="planner" required="true" linkCode="id"/>
@ -371,7 +371,7 @@
<market type="12" name="Секция" shortname="Секция" link="market"/>
<taskStatus type="12" name="Статус" shortname="Статус" link="taskStatus"/>
<companyId type="1" name="Компания" shortname="Компания" link="company" linkCode="shortName"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" link="security" linkCode="shortName"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" link="moneyMarketSecurity" linkCode="fullName"/>
</put>
<delete name="Удаление расписания" confirmation="task,taskTime,clearingDate,market,taskStatus,companyId,securityId">
<id type="1" name="Идентификатор записи" shortname="ID" link="planner" linkCode="id" required="true"/>
@ -385,48 +385,69 @@
<market type="12" name="Секция" shortname="Секция" searchable="true" sortable="true" visible="true" link="market"/>
<taskStatus type="12" name="Статус" shortname="Статус" searchable="true" sortable="true" visible="true" link="taskStatus"/>
<companyId type="1" name="Компания" shortname="Компания" searchable="false" sortable="false" visible="true" link="company" linkCode="shortName"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" searchable="true" sortable="true" visible="true" link="security" linkCode="shortName"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" searchable="true" sortable="true" visible="true" link="moneyMarketSecurity" linkCode="fullName"/>
<parent type="12" name="Источник записи расписания" shortname="Источник" searchable="true" sortable="true" link="parent"/>
<parentId type="1" name="Наименование источника" shortname="Источник" searchable="false" sortable="false"/>
<parentId type="1" name="Идентификатор записи в таблице-источнике" shortname="ID источника" searchable="false" sortable="false"/>
<id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true"/>
</plannerAllToday>
<launcher name="Запуск задачи" destination="launchers" class="ru.clearing.classes.statics.data.scheduler.Launcher" table="launcher_request">
<launcher name="Запуск задачи" destination="launchers" class="ru.clearing.classes.statics.data.scheduler.Launcher" table="launcher">
<senderId type="1" name="Отправитель" shortname="Отправитель" searchable="true" sortable="true" visible="true" link="userCls"/>
<task type="12" name="Задача" shortname="Задача" searchable="true" sortable="true" visible="true" link="task"/>
<id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true"/>
<createdAt field="created" type="4" name="Создано" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" name="Изменено" shortname="Изменено" searchable="true" sortable="true"/>
<actions>
<getBalance group="Обмен с расчетной организацией" name="Зачисление остатков (загрузка ДФ-01)"/>
<accBlock group="Обмен с расчетной организацией" name="Блокировка счета (загрузка ДФ-12)"/>
<getAllBalance group="Обмен с расчетной организацией" name="Запрос остатков по всем счетам (экспорт ДФ-08)"/>
<addBalance group="Обмен с расчетной организацией" name="Дозачисление/списание остатков (загрузка ДФ-16)"/>
<getBalanceDiff group="Обмен с расчетной организацией" name="Поступление средств (загрузка ДФ-09)"/>
<createOrder group="Обмен с расчетной организацией" name="Формирование сводного платежного поручения (экспорт ДФ-03/ДФ-11)"/>
<createOrderConfirm group="Обмен с расчетной организацией" name="Получение подтверждения переводов (загрузка ДФ-04)"/>
<createMBAOrder group="Обмен с расчетной организацией" name="Формирование распоряжения на перевод с ТБС (экспорт ДФ-11)"/>
<getTrades group="Обмен с Торговой системой" name="Получение сделок из Торговой системы"/>
<startClearing group="Клиринг" name="Запуск клиринговой сессии" confirmation="companyId,securityId"/>
<post destination="GBAL" group="Обмен с расчетной организацией" name="Зачисление остатков (загрузка ДФ-01)">
</post>
<post destination="ABLK" group="Обмен с расчетной организацией" name="Блокировка счета (загрузка ДФ-12)">
</post>
<post destination="GALB" group="Обмен с расчетной организацией" name="Запрос остатков по всем счетам (экспорт ДФ-08)">
</post>
<post destination="ADBL" group="Обмен с расчетной организацией" name="Дозачисление/списание остатков (загрузка ДФ-16)">
</post>
<post destination="GBLD" group="Обмен с расчетной организацией" name="Поступление средств (загрузка ДФ-09)">
</post>
<post destination="CORD" group="Обмен с расчетной организацией" name="Формирование сводного платежного поручения (экспорт ДФ-03/ДФ-11)">
</post>
<post destination="CORC" group="Обмен с расчетной организацией" name="Получение подтверждения переводов (загрузка ДФ-04)">
</post>
<post destination="CMBA" group="Обмен с расчетной организацией" name="Формирование распоряжения на перевод с ТБС (экспорт ДФ-11)">
</post>
<post destination="GTRD" group="Обмен с Торговой системой" name="Получение сделок из Торговой системы">
</post>
<post destination="GACA" group="Обмен с Торговой системой" name="Создание файла остатков CSV по клиринговым счетам">
</post>
<post destination="GAIA" group="Обмен с Торговой системой" name="Создание файла остатков CSV по внутренним информационным счетам">
</post>
<post destination="SCLR" group="Клиринг" name="Запуск клиринговой сессии" confirmation="companyId,securityId">
<companyId type="1" name="Инициатор" shortname="Инициатор" link="company" linkCode="shortName"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" link="security" linkCode="shortName"/>
<startPreClearing group="Клиринг" name="Запуск преклиринга"/>
<startPostClearing group="Клиринг" name="Запуск постклиринга"/>
<startVerification group="Клиринг" name="Запуск сверки"/>
<getAmountClearingAccounts group="Обмен с Торговой системой" name="Создание файла остатков CSV по клиринговым счетам"/>
<getAmountInfoAccounts group="Обмен с Торговой системой" name="Создание файла остатков CSV по внутренним информационным счетам"/>
<getClearMemberRegister group="Клиринг" name="Формирование реестра участников клиринга"/>
<getBalanceRegister group="Клиринг" name="Формирование реестра остатков денежных средств"/>
<getOrderRegister group="Клиринг" name="Формирование реестра распоряжений, направленных расчетной организации"/>
<getSentReportRegister group="Клиринг" name="Формирование реестра отправленных отчетов"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" link="moneyMarketSecurity" linkCode="fullName"/>
</post>
<post destination="SPRC" group="Клиринг" name="Запуск преклиринга">
</post>
<post destination="SPOC" group="Клиринг" name="Запуск постклиринга">
</post>
<post destination="GVER" group="Клиринг" name="Запуск сверки">
</post>
<post destination="GCMR" group="Клиринг" name="Формирование реестра участников клиринга">
</post>
<post destination="GBRR" group="Клиринг" name="Формирование реестра остатков денежных средств">
</post>
<post destination="GORR" group="Клиринг" name="Формирование реестра распоряжений, направленных расчетной организации">
</post>
<post destination="GSRR" group="Клиринг" name="Формирование реестра отправленных отчетов">
</post>
<post destination="GREP" group="Клиринг" name="Формирование отчетности">
</post>
</actions>
</launcher>
<company name="Компании" destination="companies" class="ru.clearing.classes.statics.data.company.Company" logUpdates="true">
<company name="Компании" destination="companies" class="ru.clearing.classes.statics.data.company.Company" logUpdates="true" table="company">
<shortName type="2" length="255" name="Краткое наименование Компании" shortname="Компания" searchable="true" sortable="true" visible="true"/>
<fullName type="2" length="255" name="Полное наименование Компании" shortname="Полное наименование" searchable="true" sortable="true" visible="true"/>
<tradingCode type="2" length="255" name="Код участника торгов" shortname="Торговый код" searchable="true" sortable="true" visible="true"/>
<clearingCode type="2" length="255" name="Код участника клиринга" shortname="Клиринговый код" searchable="true" sortable="true" visible="true"/>
<registrationCode type="2" length="255" name="Регистрационный код участника" shortname="Регистрационный код" searchable="true" sortable="true" visible="true"/>
<workflowStatus type="12" name="Статус" shortname="Статус" searchable="true" sortable="true" link="workflowStatus"/>
<shortName type="2" length="255" name="Краткое наименование Компании" shortname="Компания" searchable="true" sortable="true" visible="true"/>
<fullName type="2" length="255" name="Полное наименование Компании" shortname="Полное наименование" searchable="true" sortable="true" visible="true"/>
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<createdAt field="created" type="4" name="Дата и время создания записи" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" name="Дата и время изменения записи" shortname="Изменено" searchable="true" sortable="true"/>
@ -436,7 +457,7 @@
</delete>
</actions>
</company>
<companyInfo name="Профили Компаний" destination="company-infos" class="ru.clearing.classes.statics.data.profile.CompanyInfo" logUpdates="true">
<companyInfo name="Профили Компаний" destination="company-infos" class="ru.clearing.classes.statics.data.profile.CompanyInfo" logUpdates="true" table="company_info">
<companyId type="1" name="Наименование Компании" shortname="Компания" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
<corporationSoleType type="12" name="Единоличный исполнительный орган" shortname="Исполнительный орган" searchable="true" sortable="true" visible="true" link="corporationSoleType"/>
<countryCode type="12" name="Юрисдикция" shortname="Юрисдикция" searchable="true" sortable="true" visible="true" link="countryCode"/>
@ -470,7 +491,7 @@
</put>
</actions>
</companyInfo>
<clearingMemberCategory name="Категории Участника клиринга" destination="clearing-member-categories" class="ru.clearing.classes.statics.data.generated.ClearingMemberCategory">
<clearingMemberCategory name="Категории Участника клиринга" destination="clearing-member-categories" class="ru.clearing.classes.statics.data.generated.ClearingMemberCategory" table="clearing_member_category">
<companyId type="1" name="Наименование Компании" shortname="Компания" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
<clearingMemberCategory type="12" name="Категория участника клиринга" shortname="Категория" searchable="true" sortable="true" visible="true" link="clearingCategory"/>
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
@ -488,7 +509,7 @@
</delete>
</actions>
</clearingMemberCategory>
<contact name="Контакты Компании" destination="contacts" class="ru.clearing.classes.statics.data.profile.Contact">
<contact name="Контакты Компании" destination="contacts" class="ru.clearing.classes.statics.data.profile.Contact" table="contact">
<companyId type="1" name="Наименование Компании" shortname="Компания" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
<contactType type="12" name="Наименование справочника" shortname="Тип контакта" searchable="true" sortable="true" visible="true" link="contactType"/>
<contactValue type="2" length="255" name="Значение справочника" shortname="Значение" searchable="true" sortable="true" visible="true"/>
@ -501,7 +522,7 @@
</put>
</actions>
</contact>
<profileDocument name="Досье Компании" destination="profile-documents" class="ru.clearing.classes.statics.data.profile.ProfileDocument">
<profileDocument name="Досье Компании" destination="profile-documents" class="ru.clearing.classes.statics.data.profile.ProfileDocument" table="profile_document">
<companyId type="1" name="Наименование Компании" shortname="Компания" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
<documentType type="12" name="Тип документа" shortname="Тип документа" searchable="true" sortable="true" visible="true" link="documentType"/>
<issueDate type="6" name="Дата выдачи" shortname="Дата выдачи" searchable="true" sortable="true"/>
@ -532,7 +553,7 @@
</post>
</actions>
</profileDocument>
<companySymbols name="Реквизиты Компании" destination="company-symbols" class="ru.clearing.classes.statics.data.company.CompanySymbols">
<companySymbols name="Реквизиты Компании" destination="company-symbols" class="ru.clearing.classes.statics.data.company.CompanySymbols" table="company_symbols">
<companyId type="1" name="Наименование Компании" shortname="Компания" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
<companySymbol type="12" name="Справочник" shortname="Тип реквизита" searchable="true" sortable="true" visible="true" link="companySymbol" linkCode="shortName"/>
<companySymbolValue type="2" length="255" name="Значение справочника" shortname="Значение" searchable="true" sortable="true" visible="true"/>
@ -545,7 +566,7 @@
</put>
</actions>
</companySymbols>
<clearmemberRegister name="Реестр участников клиринга" destination="clearmember-registers" serviceProduct="MKR">
<clearmemberRegister name="Реестр участников клиринга" destination="clearmember-registers" serviceProduct="MKR" table="clearmember_register">
<tradingCode type="2" length="255" name="Код участника торгов" shortname="Торговый код" searchable="true" sortable="true" visible="true"/>
<clearingCode type="2" length="255" name="Код участника клиринга" shortname="Клиринговый код" searchable="true" sortable="true" visible="true"/>
<fullName type="2" length="255" name="Полное наименование участника клиринга" shortname="Полное наименование" searchable="true" sortable="true" visible="true"/>
@ -575,12 +596,12 @@
<createdAt field="created" type="4" name="Дата и время создания записи" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" name="Дата и время изменения записи" shortname="Изменено" searchable="true" sortable="true"/>
</clearmemberRegister>
<clearmemberRegisterChange name="Журнал изменений информации участников клиринга" destination="clearmember-register-changes">
<clearmemberRegisterChange name="Журнал изменений информации участников клиринга" destination="clearmember-register-changes" table="clearmember_register_change">
<date type="4" name="Дата и время изменения записи" shortname="Изменено" searchable="true" sortable="true" ignore="true"/>
<clearingCode type="2" length="255" name="Код участника клиринга" shortname="Клиринговый код" searchable="true" sortable="true" visible="true"/>
<comment type="2" length="255" name="Комментарий" shortname="Комментарий" searchable="true" sortable="true" visible="true"/>
</clearmemberRegisterChange>
<keyRate name="Ключевая ставка ЦБ" destination="utilities/key-rates" class="ru.clearing.classes.statics.data.misc.KeyRate">
<keyRate name="Ключевая ставка ЦБ" destination="utilities/key-rates" class="ru.clearing.classes.statics.data.misc.KeyRate" table="key_rate">
<rate type="10" name="Ключевая ставка ЦБ" shortname="Ставка" searchable="true" sortable="true" visible="true"/>
<startDate type="6" name="Дата начала действия ключевой ставки" shortname="Начальная дата" searchable="true" sortable="true" visible="true"/>
<endDate type="6" name="Дата окончания действия ключевой ставки" shortname="Конечная дата" searchable="true" sortable="true" visible="true"/>
@ -606,12 +627,12 @@
</delete>
</actions>
</keyRate>
<companyRoleSet name="Таблица ролей Компании" destination="company-role-sets" class="ru.clearing.classes.statics.data.company.CompanyRoleSet">
<companyRoleSet name="Таблица ролей Компании" destination="company-role-sets" class="ru.clearing.classes.statics.data.company.CompanyRoleSet" table="company_role_set">
<companyId type="1" name="Список ролей Компании" shortname="Роли Компании" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
<roleId type="1" name="Значение справочника" shortname="Значение" searchable="true" sortable="true" visible="true" link="companyRole"/>
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
</companyRoleSet>
<account name="Счета" destination="accounting/accounts" class="ru.clearing.classes.statics.data.account.Account" logUpdates="true">
<account name="Счета" destination="accounting/accounts" class="ru.clearing.classes.statics.data.account.Account" logUpdates="true" table="account">
<account type="2" length="50" name="Номер счета" shortname="Счёт" searchable="true" sortable="true" visible="true"/>
<accountType type="12" name="Тип счета" shortname="Тип" searchable="true" sortable="true" visible="true" link="accountType"/>
<relationId type="1" name="Договорные отношения" shortname="Договор" searchable="true" sortable="true" visible="true" link="relation"/>
@ -622,7 +643,7 @@
<createdAt field="created" type="4" name="Дата и время создания записи" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" name="Дата и время изменения записи" shortname="Изменено" searchable="true" sortable="true"/>
</account>
<relation name="Договорные отношения" destination="relations" class="ru.clearing.classes.statics.data.company.relation.Relation" logUpdates="true">
<relation name="Договорные отношения" destination="relations" class="ru.clearing.classes.statics.data.company.relation.Relation" logUpdates="true" table="relation">
<consumerId type="1" name="Компания пользователя услуги" shortname="Потребитель" searchable="true" sortable="true" visible="true" link="company"/>
<supplierId type="1" name="Компания поставщика услуги" shortname="Поставщик" searchable="true" sortable="true" visible="true" link="company"/>
<serviceStatus type="12" name="Статус" shortname="Статус" searchable="true" sortable="true" visible="true" link="serviceStatus"/>
@ -640,7 +661,7 @@
</put>
</actions>
</relation>
<bankAccount name="Банковские реквизиты для перечисления денежных средств" destination="securities/bank-accounts" class="ru.clearing.classes.statics.data.account.BankAccount" logUpdates="true">
<bankAccount name="Банковские реквизиты для перечисления денежных средств" destination="securities/bank-accounts" class="ru.clearing.classes.statics.data.account.BankAccount" logUpdates="true" table="bank_account">
<accountId type="1" name="Номер счета" shortname="Счет" searchable="true" sortable="true" link="account" ignore="true"/>
<bankIdentificationCode type="2" length="255" name="Банковский идентификационный код (БИК)" shortname="БИК" searchable="true" sortable="true" visible="true"/>
<bankName type="2" length="255" name="Наименование банка" shortname="Наименование" searchable="true" sortable="true" visible="true"/>
@ -685,19 +706,19 @@
</delete>
</actions>
</bankAccount>
<informationAccount name="Информационные счета" destination="securities/information-accounts" class="ru.clearing.classes.statics.data.account.InformationAccount" logUpdates="true">
<informationAccount name="Информационные счета" destination="securities/information-accounts" class="ru.clearing.classes.statics.data.account.InformationAccount" logUpdates="true" table="information_account">
<accountId type="1" name="Счет" shortname="Счет" searchable="true" sortable="true" visible="true" link="account" linkCode="account"/>
<clearingAccountId type="1" name="Счета" shortname="Счет" searchable="true" sortable="true" visible="true" link="account" linkCode="account"/>
<companyId type="1" name="Компания" shortname="Компания" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
</informationAccount>
<accountRouting name="Маршрутизация счета" class="ru.clearing.classes.statics.data.account.AccountRouting" logUpdates="true">
<accountRouting name="Маршрутизация счета" class="ru.clearing.classes.statics.data.account.AccountRouting" logUpdates="true" table="account_routing">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<destinationId type="1" name="Счет-назначение (зачисления)" shortname="Зачисления" searchable="true" sortable="true" visible="true" link="account"/>
<relationId type="1" name="Договорные отношения" shortname="Договор" searchable="true" sortable="true" visible="true" link="relation"/>
<sourceId type="1" name="Счет-источник (списания)" shortname="Списания" searchable="true" sortable="true" visible="true" link="account"/>
</accountRouting>
<security name="Инструменты" destination="securities" class="ru.clearing.classes.statics.data.security.Security" logUpdates="true">
<security name="Инструменты" destination="securities" class="ru.clearing.classes.statics.data.security.Security" logUpdates="true" table="security">
<instrumentType type="12" name="Наименование типа инструмента" shortname="Тип инструмента" searchable="true" sortable="true" visible="true" link="instrumentType"/>
<issuerId type="1" name="Наименование эмитента" shortname="Эмитент" searchable="true" sortable="true" link="company"/>
<shortName type="2" name="Краткое наименование инструмента" shortname="Краткое наименование" searchable="true" sortable="true" length="255" visible="true"/>
@ -710,12 +731,12 @@
<createdAt field="created" type="4" name="Дата и время создания записи" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" name="Дата и время изменения записи" shortname="Изменено" searchable="true" sortable="true"/>
</security>
<currency name="Инструменты Валюты" destination="currencies" class="ru.clearing.classes.statics.data.misc.Currency" logUpdates="true">
<currency name="Инструменты Валюты" destination="currencies" class="ru.clearing.classes.statics.data.misc.Currency" logUpdates="true" table="currency">
<countryCode type="12" name="Код страны" shortname="Страна" searchable="true" sortable="true" visible="true" link="countryCode"/>
<currencyCode type="12" name="Код валюты" shortname="Валюта" searchable="true" sortable="true" visible="true" link="currencyCode"/>
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
</currency>
<moneyMarketSecurity name="Инструменты Денежного рынка" destination="securities/money-securities" class="ru.clearing.classes.statics.data.misc.MoneyMarketSecurity" logUpdates="true">
<moneyMarketSecurity name="Инструменты Денежного рынка" destination="securities/money-securities" class="ru.clearing.classes.statics.data.misc.MoneyMarketSecurity" logUpdates="true" table="money_market_security">
<securityId type="1" name="Наименование инструмента" shortname="Инструмент" searchable="true" sortable="true" link="security" linkCode="shortName"/>
<description type="2" length="255" name="Описание" shortname="Описание" searchable="true" sortable="false"/>
<startDate type="6" name="Дата начала действия" shortname="Начальная дата" searchable="true" sortable="true"/>
@ -740,7 +761,7 @@
<endDate type="6" name="Дата окончания действия" shortname="Конечная дата" required="true"/>
</post>
<put name="Изменение инструмента">
<id type="1" name="Идентификатор записи" shortname="ID" link="security" linkCode="id" required="true"/>
<id type="1" name="Идентификатор записи" shortname="ID" link="moneyMarketSecurity" linkCode="id" required="true"/>
<fullName type="2" name="Полное наименование инструмента" shortname="Наименование" length="255"/>
<instrumentType type="12" name="Наименование типа инструмента" shortname="Тип инструмента" link="instrumentType"/>
<lotSize type="11" name="Размер лота" shortname="Лот"/>
@ -750,11 +771,11 @@
<endDate type="6" name="Дата окончания действия" shortname="Конечная дата"/>
</put>
<delete name="Удаление инструмента" confirmation="securitySymbol,fullName">
<id type="1" name="Идентификатор записи" shortname="ID" link="security" linkCode="id" required="true"/>
<id type="1" name="Идентификатор записи" shortname="ID" link="moneyMarketSecurity" linkCode="id" required="true"/>
</delete>
</actions>
</moneyMarketSecurity>
<listing name="Листинг инструментов" destination="listings" class="ru.clearing.classes.statics.data.misc.Listing" logUpdates="true">
<listing name="Листинг инструментов" destination="listings" class="ru.clearing.classes.statics.data.misc.Listing" logUpdates="true" table="listing">
<securityId type="1" name="Наименование инструмента" shortname="Инструмент" searchable="true" sortable="true" link="security"/>
<lotSize type="11" name="Размер лота" shortname="Размер лота" searchable="true" sortable="true"/>
<market type="12" name="Секция" shortname="Секция" searchable="true" sortable="true" link="market"/>
@ -766,7 +787,7 @@
<createdAt field="created" type="4" name="Дата и время создания записи" shortname="Создано" searchable="true" sortable="true" ignore="true"/>
<updatedAt field="updated" type="4" name="Дата и время изменения записи" shortname="Изменено" searchable="true" sortable="true" ignore="true"/>
</listing>
<market name="Торговые секции" destination="markets" class="ru.clearing.classes.statics.data.misc.Market" logUpdates="true">
<market name="Торговые секции" destination="markets" class="ru.clearing.classes.statics.data.misc.Market" logUpdates="true" table="market">
<description type="2" length="255" name="Описание" shortname="Описание" searchable="true" sortable="true"/>
<exchangeId type="1" name="Наименование площадки" shortname="Площадка" searchable="true" sortable="true" link="company"/>
<name type="2" length="255" name="Наименование" shortname="Наименование" searchable="true" sortable="true"/>
@ -777,7 +798,7 @@
<createdAt field="created" type="4" name="Дата и время создания записи" shortname="Создано" searchable="true" sortable="true" ignore="true"/>
<updatedAt field="updated" type="4" name="Дата и время изменения записи" shortname="Изменено" searchable="true" sortable="true" ignore="true"/>
</market>
<accountBalance name="Информация об остатках ден. средств" destination="account-balances" class="ru.clearing.classes.statics.data.account.AccountBalance" logUpdates="true">
<accountBalance name="Информация об остатках ден. средств" destination="account-balances" class="ru.clearing.classes.statics.data.account.AccountBalance" logUpdates="true" table="account_balance">
<companyId type="1" name="Наименование участника" shortname="Участник" searchable="true" sortable="true" link="company" linkCode="shortName" ignore="true"/>
<accountId type="1" name="Наименование счета" shortname="Счет" searchable="true" sortable="true" link="account" ignore="true"/>
<accountType type="12" name="Тип счета" shortname="Тип счета" searchable="true" sortable="true" link="account" linkCode="accountType"/>
@ -820,7 +841,7 @@
<createdAt field="created" type="4" name="Дата и время создания записи" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" name="Дата и время изменения записи" shortname="Изменено" searchable="true" sortable="true"/>
</balanceRegister>
<managementJournal name="Журнал мониторинга и контроля" destination="management-journals" class="ru.clearing.classes.statics.data.journal.ManagementJournal" table="managementJournal">
<managementJournal name="Журнал мониторинга и контроля" destination="management-journals" class="ru.clearing.classes.statics.data.journal.ManagementJournal" table="management_journal">
<companyId type="1" name="Участник" shortname="Участник" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
<userId type="1" name="Автор сообщения" shortname="Сотрудник" searchable="true" sortable="true" visible="true" link="userCls"/>
<managementJournalType type="12" name="Тип мониторинга" shortname="Тип" searchable="true" sortable="true" visible="true" link="managementJournalType"/>
@ -834,7 +855,7 @@
<createdAt field="created" type="4" name="Создано" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" name="Изменено" shortname="Изменено" searchable="true" sortable="true"/>
</managementJournal>
<inDocumentJournal name="Журнал входящих документов" destination="in-document-journals" class="ru.clearing.classes.statics.data.journal.InDocumentJournal" table="InDocumentJournal">
<inDocumentJournal name="Журнал входящих документов" destination="in-document-journals" class="ru.clearing.classes.statics.data.journal.InDocumentJournal" table="in_document_journal">
<registrationDate type="6" name="Дата регистрации" shortname="Дата" searchable="true" sortable="true" visible="true"/>
<registrationTime type="5" name="Время регистрации" shortname="Время" searchable="true" sortable="true" visible="true"/>
<registrationNumber type="1" name="Регистационный номер" shortname="Регистационный номер" searchable="true" sortable="true" visible="true"/>
@ -851,7 +872,7 @@
<resultStatus type="12" name="Статус загрузки документа" shortname="Статус" searchable="true" sortable="true" visible="true" link="resultStatus"/>
<id type="1" name="Идентификатор записи" shortname="№п/п" searchable="true" sortable="true"/>
</inDocumentJournal>
<outDocumentJournal name="Журнал исходящих документов" destination="out-document-journals" class="ru.clearing.classes.statics.data.journal.OutDocumentJournal" table="OutDocumentJournal">
<outDocumentJournal name="Журнал исходящих документов" destination="out-document-journals" class="ru.clearing.classes.statics.data.journal.OutDocumentJournal" table="out_document_journal">
<registrationDate type="6" name="Дата регистрации" shortname="Дата" searchable="true" sortable="true" visible="true"/>
<registrationTime type="5" name="Время регистрации" shortname="Время" searchable="true" sortable="true" visible="true"/>
<registrationNumber type="1" name="Регистационный номер" shortname="Регистационный номер" searchable="true" sortable="true" visible="true"/>
@ -887,9 +908,9 @@
<secondLegSettlementDate field="secondLeg.settlementDate" type="6" name="Дата возврата" shortname="Дата возврата" visible="true" searchable="true" sortable="true"/>
<firstLegSettlementCode field="firstLeg.settlementCode" type="6" name="Код расчетов при размещении" shortname="Код расчетов при размещении" visible="false" searchable="true" sortable="true"/>
<secondLegSettlementCode field="secondLeg.settlementCode" type="6" name="Код расчетов при возврате" shortname="Код расчетов" visible="true" searchable="true" sortable="true"/>
<securityFullName type="2" length="255" name="Наименование инструмента" shortname="Инструмент" visible="false" searchable="true" sortable="true"/>
<securitySymbol type="2" length="255" name="Код инструмента в Торговой Системе" shortname="Код инструмента" visible="false" searchable="true" sortable="true"/>
<securityId type="1" name="Финансовый инструмент" shortname="Код биржевого инструмента / товара" visible="true" searchable="true" sortable="true" link="moneyMarketSecurity" linkCode="securitySymbol"/>
<securityFullName type="2" length="255" name="Наименование инструмента" shortname="Инструмент" visible="true" searchable="true" sortable="true"/>
<securitySymbol type="2" length="255" name="Код инструмента в Торговой Системе" shortname="Код инструмента" visible="true" searchable="true" sortable="true"/>
<securityId type="1" name="Финансовый инструмент" shortname="Код биржевого инструмента / товара" searchable="true" sortable="true" link="moneyMarketSecurity" linkCode="securitySymbol" ignore="true"/>
<counterPartyId type="1" name="Имя компании-партнера, с которым заключена сделка" shortname="Партнер" visible="false" searchable="true" sortable="true" link="company"/>
<coverageStatus type="12" name="Cтатус достаточности обеспечения" shortname="Обеспеченность" searchable="true" sortable="true" link="allowed"/>
<sessionId type="1" name="Наименование сессии" shortname="Сессия" visible="true" searchable="true" sortable="true" link="moneyMarketSession"/>
@ -912,9 +933,9 @@
<companyId type="1" name="Название компании" shortname="Компания" visible="true" searchable="true" sortable="true" link="company" linkCode="shortName"/>
<firstLegSettlementDate type="6" name="Дата размещения" shortname="Дата размещения" visible="true" searchable="true" sortable="true"/>
<secondLegSettlementDate type="6" name="Дата возврата" shortname="Дата возврата" visible="true" searchable="true" sortable="true"/>
<securityFullName type="2" length="255" name="Наименование инструмента" shortname="Инструмент" visible="false" searchable="true" sortable="true"/>
<securitySymbol type="2" length="255" name="Код инструмента в Торговой Системе" shortname="Код инструмента" visible="false" searchable="true" sortable="true"/>
<securityId type="1" name="Финансовый инструмент" shortname="Код биржевого инструмента / товара" visible="true" searchable="true" sortable="true" link="security" linkCode="securitySymbol"/>
<securityFullName type="2" length="255" name="Наименование инструмента" shortname="Инструмент" visible="true" searchable="true" sortable="true"/>
<securitySymbol type="2" length="255" name="Код инструмента в Торговой Системе" shortname="Код инструмента" visible="true" searchable="true" sortable="true"/>
<securityId type="1" name="Финансовый инструмент" shortname="Код биржевого инструмента / товара" searchable="true" sortable="true" link="moneyMarketSecurity" linkCode="securitySymbol" ignore="true"/>
<counterPartyId type="1" name="Имя компании-партнера, с которым заключена сделка" shortname="Партнер" visible="false" searchable="true" sortable="true" link="company"/>
<coverageStatus type="12" name="Cтатус достаточности обеспечения" shortname="Обеспеченность" searchable="true" sortable="true" link="allowed"/>
<sessionId type="1" name="Наименование сессии" shortname="Сессия" visible="true" searchable="true" sortable="true" link="moneyMarketSession"/>
@ -984,7 +1005,7 @@
<updatedAt type="5" name="Время изменения" shortname="Время изменения" visible="false" searchable="true" sortable="true"/>
<clearingDate type="6" name="Дата клиринга" shortname="Дата клиринга" visible="false" searchable="true" sortable="true"/>
</uncoveredDealRegister>
<reportRegister name="Реестр отчетов" destination="report-registers" class="com.moex.platform.classes.TransactionData.Execution.DepositExecution" table="reportRegister">
<reportRegister name="Реестр отправленных отчетов" destination="report-registers" class="com.moex.platform.classes.TransactionData.Execution.DepositExecution" table="report_register">
<companyFullName type="2" length="255" name="Наименование участника" shortname="Участник" searchable="true" sortable="true"/>
<clearingCode type="2" length="255" name="Код клиринга" shortname="Код участника" searchable="true" sortable="true"/>
<sessionId type="1" name="Сессия" shortname="Сессия" visible="true" searchable="true" sortable="true" link="moneyMarketSession"/>
@ -996,7 +1017,7 @@
<updatedAt type="5" name="Время изменения" shortname="Время изменения" visible="false" searchable="true" sortable="true"/>
<clearingDate type="6" name="Дата клиринга" shortname="Дата клиринга" visible="false" searchable="true" sortable="true"/>
</reportRegister>
<contractRegister name="Журнал регистрации договоров" destination="contract-registers" class="ru.clearing.classes.TransactionData.Execution.DepositExecution" table="reportRegister">
<contractRegister name="Журнал регистрации договоров" destination="contract-registers" class="ru.clearing.classes.TransactionData.Execution.DepositExecution" table="contract_register">
<name type="2" length="255" name="Наименование документа" shortname="Наименование" searchable="true" sortable="true" visible="true"/>
<number type="2" length="255" name="Номер документа" shortname="Номер" searchable="true" sortable="true" visible="true"/>
<issueDate type="6" name="Дата составления" shortname="Дата выдачи" searchable="true" sortable="true"/>
@ -1015,7 +1036,7 @@
<createdAt type="5" name="Дата и время регистрации документа" shortname="Время сделки" visible="true" searchable="true" sortable="true"/>
<updatedAt type="5" name="Время изменения сделки" shortname="Время изменения" visible="false" searchable="true" sortable="true"/>
</contractRegister>
<orderRegister name="Реестра распоряжений" destination="order-registers" class="ru.clearing.classes.TransactionData.Execution.LiabilitiesClaimsAssets" table="transactionStatus">
<orderRegister name="Реестр распоряжений, направленных расчетной организации" destination="order-registers" class="ru.clearing.classes.TransactionData.Execution.LiabilitiesClaimsAssets" table="order_register">
<creditLegAccount type="2" lenght="50" name="Счет отправителя" shortname="Счет отправителя" searchable="true" sortable="true" visible="true"/>
<creditLegAmount type="10" name="Сумма отправителя" shortname="Сумма отправителя" searchable="true" sortable="true" visible="true"/>
<creditLegCurrencyCode type="12" name="Код валюты отправителя" shortname="Валюта отправителя" searchable="true" sortable="true" visible="true" link="currency"/>
@ -1059,7 +1080,7 @@
<tradingDate type="6" name="Дата торгов" shortname="Дата торгов" searchable="true" sortable="true" visible="true"/>
<refundDate type="6" name="Дата возврата" shortname="Дата возврата" searchable="true" sortable="true" visible="true"/>
<price type="10" name="Ставка по депозиту" shortname="Ставка,%" visible="true" searchable="true" sortable="true"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" searchable="true" sortable="true" visible="true" link="security" linkCode="shortName"/>
<securityId type="1" name="Инструмент" shortname="Инструмент" searchable="true" sortable="true" visible="true" link="moneyMarketSecurity" linkCode="fullName"/>
<tradingCode type="2" name="Торговый код Участника" shortname="Торговый код" searchable="true" sortable="true" visible="true" length="255" link="company" linkCode="tradingCode"/>
<clearingCode type="2" name="Клиринговый код Участника" shortname="Клиринговый код" searchable="true" sortable="true" visible="true" length="255" link="company" linkCode="clearingCode"/>
<shortName type="2" name="Короткое наименование Участника" shortname="Участник" searchable="true" sortable="true" visible="true" length="255" link="company" linkCode="shortName"/>
@ -1098,7 +1119,7 @@
<updatedAt field="updated" type="4" name="Дата и время изменения записи" shortname="Изменено" searchable="true" sortable="true" ignore="true"/>
<clearingDate type="6" name="Дата расчета" shortname="Дата расчета" searchable="true" sortable="true" visible="true"/>
</statement>
<tradeSettlement name="Проводки на базе сделок торговой системы" class="ru.clearing.classes.TransactionData.Execution.LiabilitiesClaimsAssets" table="tradeConfirmation">
<tradeSettlement name="Проводки на базе сделок торговой системы" class="ru.clearing.classes.TransactionData.Execution.LiabilitiesClaimsAssets" table="trade_settlement">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<addresseeId type="1" name="Идентификатор участника получателя" shortname="Получатель" searchable="true" sortable="true" link="company"/>
<senderId type="1" name="Идентификатор участника отправителя" shortname="Отправитель" searchable="true" sortable="true" link="company"/>
@ -1112,7 +1133,7 @@
<account type="2" length="50" name="Счет" shortname="Счет" searchable="true" sortable="true"/>
<operationStatus type="12" name="Cтатус обработки" shortname="Статус" searchable="true" sortable="true" link="operationStatus"/>
</tradeSettlement>
<operation name="Проводки" class="ru.clearing.classes.TransactionData.Execution.LiabilitiesClaimsAssets" table="tradeConfirmation">
<operation name="Проводки" class="ru.clearing.classes.TransactionData.Execution.LiabilitiesClaimsAssets" table="operation">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<addresseeId type="1" name="Идентификатор участника получателя" shortname="Получатель" searchable="true" sortable="true" link="company"/>
<senderId type="1" name="Идентификатор участника отправителя" shortname="Отправитель" searchable="true" sortable="true" link="company"/>
@ -1122,24 +1143,24 @@
<operationTypeId type="1" name="Тип проводки" shortname="Тип" searchable="true" sortable="true" link="operationType"/>
<operationStatus type="12" name="Cтатус обработки" shortname="Статус" searchable="true" sortable="true" link="operationStatus"/>
</operation>
<paymentInstruction name="Информация о денежных средствах" destination="payment-instructions" class="ru.clearing.classes.statics.data.payment.PaymentInstruction" table="PaymentInstruction">
<paymentInstruction name="Платежные поручения" destination="payment-instructions" class="ru.clearing.classes.statics.data.payment.PaymentInstruction" table="payment_instruction">
<senderId type="1" name="Наименование участника отправителя" shortname="Отправитель" searchable="true" sortable="true" link="company"/>
<addresseeId type="1" name="Наименование участника получателя" shortname="Получатель" searchable="true" sortable="true" link="company"/>
<adresseeBic type="2" length="255" name="Банковский идентификационный код (БИК) получателя" shortname="БИК получателя" searchable="true" sortable="true" visible="true"/>
<payeeBankName type="2" length="255" name="Банк отправителя" shortname="Отправитель" searchable="true" sortable="true" visible="true"/>
<payeeBankName type="2" length="255" name="Наименование банка отправителя" shortname="Банк отправителя" searchable="true" sortable="true" visible="true"/>
<payeeBic type="2" length="255" name="Банковский идентификационный код (БИК) отправителя" shortname="БИК отправителя" searchable="true" sortable="true" visible="true"/>
<addresseeBankName type="2" length="255" name="Банк получателя" shortname="Получатель" searchable="true" sortable="true" visible="true"/>
<addresseeBankName type="2" length="255" name="Наименование банка получателя" shortname="Банк получателя" searchable="true" sortable="true" visible="true"/>
<paymentDate type="4" name="Дата и время платежа" shortname="Дата и время платежа" searchable="true" sortable="true" ignore="true"/>
<paymentPurpose type="2" name="Назначение платежа" shortname="Назначение" searchable="true" sortable="true" visible="true" length="255"/>
<settlementDate type="6" name="Дата расчетов" shortname="Дата расчетов" searchable="true" sortable="true"/>
<creditLeg_amount field="creditLegAmount" type="1" name="Сумма отправителя" shortname="Сумма отправителя" searchable="true" sortable="true" visible="true"/>
<debitLeg_amount field="debitLegAmount" type="1" name="Сумма получателя" shortname="Сумма получателя" searchable="true" sortable="true" visible="true"/>
<creditLeg_accountId field="creditLegAccountId" type="1" name="Наименование счета отправителя" shortname="Счет отправителя" searchable="true" sortable="true" link="account"/>
<creditLeg_accountId field="creditLegAccountId" type="1" name="Наименование счета отправителя" shortname="Счет отправителя" searchable="true" sortable="true" link="account" ignore="true"/>
<credit_csAccount field="creditCsAccount" type="2" length="255" name="Корреспондентский счет отправителя" shortname="Корр. счет отправителя" searchable="true" sortable="true" visible="true"/>
<creditLeg_account field="creditLegAccount" type="2" length="50" name="Счет отправителя" shortname="Счет отправителя" searchable="true" sortable="true" visible="true" link="Account"/>
<debitLeg_accountId field="debitLegAccountId" type="1" name="Наименование счета получателя" shortname="Счет получателя" searchable="true" sortable="true" link="account"/>
<creditLeg_account field="creditLegAccount" type="2" length="50" name="Счет отправителя" shortname="Счет отправителя" searchable="true" sortable="true" visible="true"/>
<debitLeg_accountId field="debitLegAccountId" type="1" name="Наименование счета получателя" shortname="Счет получателя" searchable="true" sortable="true" link="account" ignore="true"/>
<debit_csAccount field="debitCsAccount" type="2" length="255" name="Корреспондентский счет получателя" shortname="Корр. счет получателя" searchable="true" sortable="true" visible="true"/>
<debitLeg_account field="debitLegAccount" type="2" length="50" name="Счет получателя" shortname="Счет получателя" searchable="true" sortable="true" visible="true" link="Account"/>
<debitLeg_account field="debitLegAccount" type="2" length="50" name="Счет получателя" shortname="Счет получателя" searchable="true" sortable="true" visible="true"/>
<creditLeg_direction field="creditLegDirection" type="1" name="Направление отправителя" shortname="Направление отправителя" searchable="true" sortable="true" link="inOutDirection" ignore="true"/>
<debitLeg_direction field="debitLegDirection" type="1" name="Направление получателя" shortname="Направление получателя" searchable="true" sortable="true" link="inOutDirection" ignore="true"/>
<creditLeg_currencyCode field="creditLegCurrencyCode" type="12" name="Код валюты отправителя" shortname="Валюта отправителя" searchable="true" sortable="true" visible="true" link="currency"/>
@ -1151,9 +1172,9 @@
<updatedAt field="updated" type="4" name="Дата и время изменения записи" shortname="Изменено" searchable="true" sortable="true" ignore="true"/>
<clearingDate type="6" name="Дата расчета" shortname="Дата расчета" searchable="true" sortable="true" visible="true"/>
</paymentInstruction>
<marketData name="Итоги торгов" class="ru.clearing.classes.TransactionData.Execution.MarketData" table="marketData">
<marketData name="Итоги торгов" class="ru.clearing.classes.TransactionData.Execution.MarketData" table="market_data">
<id type="1" name="Идентификатор записи" shortname="ID" visible="false" searchable="true" sortable="true"/>
<securitiesDepositId type="1" name="Биржевой код инструмента" shortname="Инструмент" visible="true" searchable="true" sortable="true" link="security" linkCode="shortname"/>
<securitiesDepositId type="1" name="Биржевой код инструмента" shortname="Инструмент" visible="true" searchable="true" sortable="true" link="moneyMarketSecurity" linkCode="fullName"/>
<companyName type="2" length="255" name="Инициатор торгов" shortname="Инициатор" visible="false" searchable="true" sortable="true"/>
<market type="12" name="Секция" shortname="Секция" visible="true" searchable="true" sortable="true" link="market"/>
<counterPartyNum type="1" name="Количество участников, заключивших сделки" shortname="Участников" visible="true" searchable="true" sortable="true"/>
@ -1169,7 +1190,7 @@
<updatedAt type="5" name="Время изменения сделки" shortname="Время изменения" visible="false" searchable="true" sortable="true"/>
<tradingDate type="6" name="Дата торгов" shortname="Дата торгов" visible="false" searchable="true" sortable="true"/>
</marketData>
<chargeTariff name="Тарифы комиссий" logUpdates="true">
<chargeTariff name="Тарифы комиссий" logUpdates="true" table="charge_tariff">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<market type="12" name="Секция" shortname="Секция" searchable="true" sortable="true" link="market" visible="true"/>
<clearingMemberCategory type="12" name="Категория участника клиринга" shortname="Категория" searchable="true" sortable="true" visible="true" link="clearingCategory"/>
@ -1181,7 +1202,7 @@
<createdAt field="created" type="4" name="Создано" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" name="Изменено" shortname="Изменено" searchable="true" sortable="true"/>
</chargeTariff>
<individualChargeTariff name="Индивидуальные тарифы комиссий для Участника" logUpdates="true">
<individualChargeTariff name="Индивидуальные тарифы комиссий для Участника" logUpdates="true" table="individual_charge_tariff">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<companyId type="1" name="Участник" shortname="Участник" searchable="true" sortable="true" link="company" linkCode="shortName"/>
<market type="12" name="Секция" shortname="Секция" searchable="true" sortable="true" link="market" visible="true"/>
@ -1194,7 +1215,7 @@
<createdAt field="created" type="4" name="Создано" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" name="Изменено" shortname="Изменено" searchable="true" sortable="true"/>
</individualChargeTariff>
<companyTariff name="Тарифы комиссий в разрезе Участника">
<companyTariff name="Тарифы комиссий в разрезе Участника" table="company_tariff">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<market type="12" name="Секция" shortname="Секция" searchable="true" sortable="true" link="market" visible="true"/>
<clearingMemberCategory type="12" name="Категория участника клиринга" shortname="Категория" searchable="true" sortable="true" visible="true" link="clearingCategory"/>
@ -1218,7 +1239,7 @@
<userId type="1" name="Автор сообщения" shortname="Сотрудник" searchable="true" sortable="true" visible="true" link="userCls" ignore="true"/>
<clearingDate type="6" name="Текущая дата" shortname="Дата" visible="false" searchable="true" sortable="true" ignore="true"/>
</errorText>
<sDf01 name="ДФ-01 Информация о денежных средствах, находящихся на торговых банковских счетах Участников клиринга" class="ru.clearing.classes.statics.data.sdf.SDf01">
<sDf01 name="ДФ-01 Информация о денежных средствах, находящихся на торговых банковских счетах Участников клиринга" class="ru.clearing.classes.statics.data.sdf.SDf01" table="s_df_01">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<curr_code type="2" length="12" name="Код валюты" shortname="Код валюты" searchable="true" sortable="true" visible="true"/>
<account type="2" length="35" name="Код счета участника клиринга" shortname="Счет УК" searchable="true" sortable="true"/>
@ -1236,7 +1257,7 @@
<generationTime type="4" name="Дата и время обработки файла" shortname="Дата и время обработки" searchable="true" sortable="true"/>
<generationId type="1" name="Идентификатор взаимодействия" shortname="ID взаимодействия" searchable="true" sortable="true"/>
</sDf01>
<sDf02 name="ДФ-02 Уведомление об исполнении операции загрузки денежных средств или уведомление об ошибке" class="ru.clearing.classes.statics.data.sdf.SDf02">
<sDf02 name="ДФ-02 Уведомление об исполнении операции загрузки денежных средств или уведомление об ошибке" class="ru.clearing.classes.statics.data.sdf.SDf02" table="s_df_02">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<curr_code type="2" length="12" name="Код валюты" shortname="Код валюты" searchable="true" sortable="true" visible="true"/>
<account type="2" length="35" name="Код счета участника клиринга" shortname="Счет УК" searchable="true" sortable="true"/>
@ -1255,7 +1276,7 @@
<generationId type="1" name="Идентификатор взаимодействия" shortname="ID взаимодействия" searchable="true" sortable="true"/>
<inSDf01Id type="1" name="Идентификатор соответствующей записи из таблицы-источника" shortname="Входящая запись" searchable="true" sortable="true"/>
</sDf02>
<sDf03 name="ДФ-03 Сводное платежное поручение" class="ru.clearing.classes.statics.data.sdf.SDf03">
<sDf03 name="ДФ-03 Сводное платежное поручение" class="ru.clearing.classes.statics.data.sdf.SDf03" table="s_df_03">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<seg_type type="2" length="1" name="Код инициатора в КС" shortname="Инициатор в КС" searchable="true" sortable="true"/>
<doc_type type="2" lenght="4" name="Тип документа" shortname="Тип документа" searchable="true" sortable="true"/>
@ -1307,7 +1328,7 @@
<generationId type="1" name="Идентификатор взаимодействия" shortname="ID взаимодействия" searchable="true" sortable="true"/>
<paymentInstructionId type="1" name="Идентификатор соответствующей записи из таблицы-источника" shortname="Входящая запись" searchable="true" sortable="true" link="paymentInstruction"/>
</sDf03>
<sDf04 name="ДФ-04 Подтверждение переводов из Расчетной организации для СПВБ" class="ru.clearing.classes.statics.data.sdf.SDf04">
<sDf04 name="ДФ-04 Подтверждение переводов из Расчетной организации для СПВБ" class="ru.clearing.classes.statics.data.sdf.SDf04" table="s_df_04">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<seg_type type="2" length="1" name="Код инициатора в КС" shortname="Инициатор в КС" searchable="true" sortable="true"/>
<doc_type type="2" lenght="4" name="Тип документа" shortname="Тип документа" searchable="true" sortable="true"/>
@ -1359,7 +1380,7 @@
<generationTime type="4" name="Дата и время обработки файла" shortname="Дата и время обработки" searchable="true" sortable="true"/>
<generationId type="1" name="Идентификатор взаимодействия" shortname="ID взаимодействия" searchable="true" sortable="true"/>
</sDf04>
<sDf05 name="ДФ-05 Уведомление о завершении расчетов в ПРЦ" class="ru.clearing.classes.statics.data.sdf.SDf05">
<sDf05 name="ДФ-05 Уведомление о завершении расчетов в ПРЦ" class="ru.clearing.classes.statics.data.sdf.SDf05" table="s_df_05">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<tp type="10" name="Тип документа" shortname="Тип документа" searchable="true" sortable="true"/>
<dt type="6" name="Дата завершения расчетов" shortname="Дата завершения расчетов" searchable="true" sortable="true"/>
@ -1368,14 +1389,14 @@
<generationTime type="4" name="Дата и время создания записи" shortname="Дата и время создания" searchable="true" sortable="true"/>
<generationId type="1" name="Идентификатор взаимодействия" shortname="ID взаимодействия" searchable="true" sortable="true"/>
</sDf05>
<sDf08 name="ДФ-08 Запрос остатков по всем счетам" class="ru.clearing.classes.statics.data.sdf.SDf08">
<sDf08 name="ДФ-08 Запрос остатков по всем счетам" class="ru.clearing.classes.statics.data.sdf.SDf08" table="s_df_08">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<number type="2" length="10" name="Номер запроса остатков по счетам" shortname="Номер запроса" searchable="true" sortable="true" visible="true"/>
<datetime type="2" length="13" name="Дата и время сообщения" shortname="Дата и время сообщения" searchable="true" sortable="true"/>
<generationTime type="4" name="Дата и время создания записи" shortname="Дата и время создания" searchable="true" sortable="true"/>
<generationId type="1" name="Идентификатор взаимодействия" shortname="ID взаимодействия" searchable="true" sortable="true"/>
</sDf08>
<sDf09 name="ДФ-09 Уведомление о поступлении средств на клиринговый счет" class="ru.clearing.classes.statics.data.sdf.SDf09">
<sDf09 name="ДФ-09 Уведомление о поступлении средств на клиринговый счет" class="ru.clearing.classes.statics.data.sdf.SDf09" table="s_df_09">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<account type="2" length="20" name="Номер счета участника торгов" shortname="Номер счета участника торгов" searchable="true" sortable="true"/>
<sum type="10" name="Сумма платежного документа (операции)" shortname="Сумма платежного документа" searchable="true" sortable="true"/>
@ -1387,7 +1408,7 @@
<generationTime type="4" name="Дата и время обработки файла" shortname="Дата и время обработки" searchable="true" sortable="true"/>
<generationId type="1" name="Идентификатор взаимодействия" shortname="ID взаимодействия" searchable="true" sortable="true"/>
</sDf09>
<sDf10 name="ДФ-10 Подтверждение о загрузке по поступлению на клиринговый счет" class="ru.clearing.classes.statics.data.sdf.SDf10">
<sDf10 name="ДФ-10 Подтверждение о загрузке по поступлению на клиринговый счет" class="ru.clearing.classes.statics.data.sdf.SDf10" table="s_df_10">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<account type="2" length="20" name="Номер счета участника торгов" shortname="Номер счета участника торгов" searchable="true" sortable="true"/>
<sum type="10" name="Сумма платежного документа (операции)" shortname="Сумма платежного документа" searchable="true" sortable="true"/>
@ -1400,7 +1421,7 @@
<generationId type="1" name="Идентификатор взаимодействия" shortname="ID взаимодействия" searchable="true" sortable="true"/>
<inSDf09Id type="1" name="Идентификатор соответствующей записи из таблицы-источника" shortname="Входящая запись" searchable="true" sortable="true"/>
</sDf10>
<sDf11 name="ДФ-11 Из КС в ПРЦ Платежное распоряжение на перевод средств с ТБС Участника на КС Инициатора" class="ru.clearing.classes.statics.data.sdf.SDf11">
<sDf11 name="ДФ-11 Из КС в ПРЦ Платежное распоряжение на перевод средств с ТБС Участника на КС Инициатора" class="ru.clearing.classes.statics.data.sdf.SDf11" table="s_df_11">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<seg_type type="2" length="1" name="Код инициатора в КС" shortname="Инициатор в КС" searchable="true" sortable="true"/>
<doc_type type="2" lenght="4" name="Тип документа" shortname="Тип документа" searchable="true" sortable="true"/>
@ -1451,7 +1472,7 @@
<generationId type="1" name="Идентификатор взаимодействия" shortname="ID взаимодействия" searchable="true" sortable="true"/>
<paymentInstructionId type="1" name="Идентификатор соответствующей записи из таблицы-источника" shortname="Входящая запись" searchable="true" sortable="true" link="paymentInstruction"/>
</sDf11>
<sDf12 name="ДФ-12 Из ПРЦ в КС Информация о блокировке/разблокировке/закрытии ТБС УК" class="ru.clearing.classes.statics.data.sdf.SDf12">
<sDf12 name="ДФ-12 Из ПРЦ в КС Информация о блокировке/разблокировке/закрытии ТБС УК" class="ru.clearing.classes.statics.data.sdf.SDf12" table="s_df_12">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<account type="2" length="25" name="Код счета участника клиринга" shortname="Код счета УК" searchable="true" sortable="true" visible="true"/>
<deal type="2" length="4" name="Биржевой код участника клиринга" shortname="Биржевой код УК" searchable="true" sortable="true" visible="true"/>
@ -1460,7 +1481,7 @@
<generationTime type="4" name="Дата и время обработки файла" shortname="Дата и время обработки" searchable="true" sortable="true"/>
<generationId type="1" name="Идентификатор взаимодействия" shortname="ID взаимодействия" searchable="true" sortable="true"/>
</sDf12>
<sDf13 name="ДФ-13 Вывод свободных средств для инициаторов категории В с клирингового счета 30414/7 - платежное поручение АО СПВБ на вывод средств из РО" class="ru.clearing.classes.statics.data.sdf.SDf13">
<sDf13 name="ДФ-13 Вывод свободных средств для инициаторов категории В с клирингового счета 30414/7 - платежное поручение АО СПВБ на вывод средств из РО" class="ru.clearing.classes.statics.data.sdf.SDf13" table="s_df_13">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<seg_type type="2" length="1" name="Код инициатора в КС" shortname="Инициатор в КС" searchable="true" sortable="true"/>
<doc_type type="2" lenght="4" name="Тип документа" shortname="Тип документа" searchable="true" sortable="true"/>
@ -1510,7 +1531,7 @@
<generationTime type="4" name="Дата и время создания записи" shortname="Дата и время создания" searchable="true" sortable="true"/>
<generationId type="1" name="Идентификатор взаимодействия" shortname="ID взаимодействия" searchable="true" sortable="true"/>
</sDf13>
<sDf16 name="ДФ-16 Формат запроса по возврату депозита или дозачисление/списание денежных средств" class="ru.clearing.classes.statics.data.sdf.SDf16">
<sDf16 name="ДФ-16 Формат запроса по возврату депозита или дозачисление/списание денежных средств" class="ru.clearing.classes.statics.data.sdf.SDf16" table="s_df_16">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<account type="2" length="20" name="Номер счета участника торгов" shortname="Номер счета участника торгов" searchable="true" sortable="true"/>
<sum type="10" name="Сумма платежного документа (операции)" shortname="Сумма платежного документа" searchable="true" sortable="true"/>
@ -1524,7 +1545,7 @@
<generationTime type="4" name="Дата и время обработки файла" shortname="Дата и время обработки" searchable="true" sortable="true"/>
<generationId type="1" name="Идентификатор взаимодействия" shortname="ID взаимодействия" searchable="true" sortable="true"/>
</sDf16>
<sDf17 name="ДФ-17 Формат ответа на запрос по возврату депозита или дозачисление/списание денежных средств" class="ru.clearing.classes.statics.data.sdf.SDf17">
<sDf17 name="ДФ-17 Формат ответа на запрос по возврату депозита или дозачисление/списание денежных средств" class="ru.clearing.classes.statics.data.sdf.SDf17" table="s_df_17">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<account type="2" length="20" name="Номер счета участника торгов" shortname="Номер счета участника торгов" searchable="true" sortable="true"/>
<sum type="10" name="Сумма платежного документа (операции)" shortname="Сумма платежного документа" searchable="true" sortable="true"/>
@ -1539,7 +1560,7 @@
<generationId type="1" name="Идентификатор взаимодействия" shortname="ID взаимодействия" searchable="true" sortable="true"/>
<inSDf16Id type="1" name="Идентификатор соответствующей записи из таблицы-источника" shortname="Входящая запись" searchable="true" sortable="true"/>
</sDf17>
<sDf18 name="ДФ-18 Из КС в ПРЦ Квитанция о получении информации о состоянии счета (блокировка/разблокировка/закрытие)" class="ru.clearing.classes.statics.data.sdf.SDf18">
<sDf18 name="ДФ-18 Из КС в ПРЦ Квитанция о получении информации о состоянии счета (блокировка/разблокировка/закрытие)" class="ru.clearing.classes.statics.data.sdf.SDf18" table="s_df_18">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<account type="2" length="25" name="Код счета участника клиринга" shortname="Код счета УК" searchable="true" sortable="true" visible="true"/>
<deal type="2" length="4" name="Биржевой код участника клиринга" shortname="Биржевой код УК" searchable="true" sortable="true" visible="true"/>
@ -1549,7 +1570,7 @@
<generationId type="1" name="Идентификатор взаимодействия" shortname="ID взаимодействия" searchable="true" sortable="true"/>
<inSDf12Id type="1" name="Идентификатор соответствующей записи из таблицы-источника" shortname="Входящая запись" searchable="true" sortable="true"/>
</sDf18>
<s_trade name="Сделки из Торговой системы" class="com.spicex.Static.">
<s_trade name="Сделки из Торговой системы" class="com.spicex.Static." table="s_trade">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<trade_num type="1" name="Номер сделки" shortname="Номер сделки" searchable="true" sortable="true"/>
<sec_code type="2" length="255" name="Код ценной бумаги" shortname="Код ценной бумаги" searchable="true" sortable="true"/>
@ -1571,7 +1592,7 @@
<collateral type="2" length="50" name="Признак залога (не используется)" shortname="Признак залога (не используется)" searchable="true" sortable="true"/>
<settle_code type="2" length="50" name="Код периода сделки из новой ТС" shortname="Код периода сделки из новой ТС" searchable="true" sortable="true"/>
</s_trade>
<notification name="Сообщения" destination="notifications" class="ru.clearing.classes.statics.data.misc.Notification" logUpdates="true" table="Notification">
<notification name="Сообщения" destination="notifications" class="ru.clearing.classes.statics.data.misc.Notification" logUpdates="true" table="notification">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<createdAt field="created" type="4" name="Дата и время создания записи" shortname="Создано" searchable="true" sortable="true" ignore="true"/>
<updatedAt field="updated" type="4" name="Дата и время изменения записи" shortname="Изменено" searchable="true" sortable="true" ignore="true"/>
@ -1588,7 +1609,7 @@
</put>
</actions>
</notification>
<verificationResult name="Результаты сверки" destination="verification-results" class="com.spicex.Static.">
<verificationResult name="Результаты сверки" destination="verification-results" class="com.spicex.Static." table="verification_result">
<clearingCode type="2" length="255" name="Код участника клиринга" shortname="Клиринговый код" searchable="true" sortable="true" visible="true"/>
<accountId type="1" name="Счет УК, по которому проводится сверка" shortname="Счет УК" searchable="true" sortable="true"/>
<inSum type="11" name="Входящая сумма остатков" shortname="Остатки" visible="true" searchable="true" sortable="true"/>
@ -1602,20 +1623,20 @@
<createdAt type="4" name="Дата и время создания записи" shortname="Создано" searchable="true" sortable="true" ignore="true"/>
<updatedAt type="4" name="Дата и время изменения записи" shortname="Изменено" searchable="true" sortable="true" ignore="true"/>
</verificationResult>
<session name="Клиринговая сессия" class="ru.clearing.classes.statics.data.misc.Session" logUpdates="true" table="Session">
<session name="Клиринговая сессия" class="ru.clearing.classes.statics.data.misc.Session" logUpdates="true" table="session">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<createdAt field="created" type="4" name="Дата и время создания записи" shortname="Создано" searchable="true" sortable="true" ignore="true"/>
<updatedAt field="updated" type="4" name="Дата и время изменения записи" shortname="Изменено" searchable="true" sortable="true" ignore="true"/>
<clearingDate type="6" name="Дата" shortname="Дата" searchable="true" sortable="true" visible="true"/>
<sessionStatus type="12" name="Статус клиринговой сессии" shortname="Статус" searchable="true" sortable="true" visible="true" link="sessionStatus"/>
</session>
<moneyMarketSession name="Сессия денежного рынка" class="com.spicex.TransactionData.Session" logUpdates="true" table="Session">
<moneyMarketSession name="Сессия денежного рынка" class="com.spicex.TransactionData.Session" logUpdates="true" table="money_market_session">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<clearingDate type="6" name="Дата" shortname="Дата" searchable="true" sortable="true" visible="true" extends="session"/>
<sessionStatus type="12" name="Статус клиринговой сессии" shortname="Статус" searchable="true" sortable="true" visible="true" link="sessionStatus" extends="session"/>
<companyId type="1" name="Идентификатор инициатора торгов" shortname="Инициатор" visible="false" searchable="true" sortable="true" link="company" linkCode="shortName"/>
<securityId type="1" name="Идентификатор инструмента" shortname="Инструмент" searchable="false" sortable="true" visible="true" link="security" linkCode="shortName"/>
<userId type="1" name="Идентификатор пользователя" shortname="Пользователь" searchable="true" sortable="true" visible="true" link="userCls"/>
<companyId type="1" name="Наименование инициатора торгов" shortname="Инициатор" visible="false" searchable="true" sortable="true" link="company" linkCode="shortName"/>
<securityId type="1" name="Наименование инструмента" shortname="Инструмент" searchable="false" sortable="true" visible="true" link="moneyMarketSecurity" linkCode="fullName"/>
<userId type="1" name="Наименование пользователя" shortname="Пользователь" searchable="true" sortable="true" visible="true" link="userCls"/>
</moneyMarketSession>
</objects>
<views>

View file

@ -0,0 +1,32 @@
package ru.spcex.clearing.company.config;
import org.apache.kafka.clients.producer.Producer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.service.RequestInfo;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgId;
import ru.spcex.platform.imdg.api.ImdgProvider;
@Configuration
public class KafkaSenderConfig {
@Autowired
@Bean
public KafkaSender kafkaSender(Producer<String, Object> kafkaProducer,
ImdgProvider imdgProvider) {
ImdgId imdgIdGenerator = imdgProvider.getImdgIdGenerator();
return KafkaSender
.setup()
.producer(kafkaProducer)
.idGenerator(imdgIdGenerator::nextId)
.imdgProvider(s -> {
Imdg<RequestInfo> imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_RequestInfo, RequestInfo.class);
return imdg::insert;
})
.build();
}
}

View file

@ -0,0 +1,77 @@
package ru.spcex.clearing.company.service;
import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.producer.Producer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.NonNull;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.profile.ProfileDocument;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
public class ProfileDocumentService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());
private Imdg<ProfileDocument> profileDocumentMap;
private Imdg<Company> companyMap;
private ImdgProvider imdgProvider;
private KafkaSender kafkaReqProducer;
@Autowired
public ProfileDocumentService(Consumer<String, Object> kafkaQueue,
Producer<String, Object> kafkaProducer,
KafkaSender kafkaReqProducer,
ImdgProvider imdgProvider) {
super(kafkaQueue, kafkaProducer);
this.imdgProvider = imdgProvider;
this.kafkaReqProducer = kafkaReqProducer;
}
@Override
public void afterPropertiesSet() {
this.profileDocumentMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
callback(ProfileDocumentNewRequest.class)
.setConsumer(this::newProfileDocument)
.forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_NEW, callbacks::put);
init();
}
@NonNull
private void newProfileDocument(BaseRequest<ProfileDocumentNewRequest> profileDocumentNewRequestBaseRequest) {
log.trace("Start processing ProfileDocumentNewRequest!");
ProfileDocumentNewRequest profileDocumentNewRequest = profileDocumentNewRequestBaseRequest.getRequestPayload();
Long companyId = profileDocumentNewRequest.getCompanyId();
Company company = companyMap.getSingleObjectByID(companyId);
if (company != null && !company.getWorkflowStatus().equalsIgnoreCase("ACTV")) {
throw new IllegalStateException("Wrong company with ID " + companyId + " and workflow status " + company.getWorkflowStatus());
}
ProfileDocument profileDocument = new ProfileDocument();
profileDocument.setCompanyId(profileDocumentNewRequest.getCompanyId());
profileDocument.setDocumentType(profileDocumentNewRequest.getDocumentType());
profileDocument.setIssueDate(profileDocumentNewRequest.getIssueDate());
profileDocument.setIssuePlace(profileDocumentNewRequest.getIssuePlace());
profileDocument.setIssuer(profileDocumentNewRequest.getIssuer());
profileDocument.setIssuerCode(profileDocumentNewRequest.getIssuerCode());
profileDocument.setName(profileDocumentNewRequest.getName());
profileDocument.setNumber(profileDocumentNewRequest.getNumber());
profileDocument.setPlace(profileDocumentNewRequest.getPlace());
profileDocument.setValidFromDate(profileDocumentNewRequest.getValidFromDate());
profileDocument.setValidToDate(profileDocumentNewRequest.getValidToDate());
profileDocument.setLink(profileDocumentNewRequest.getLink());
profileDocumentMap.insert(profileDocument);
if (profileDocument.getDocumentType().equalsIgnoreCase("XCNT")) {
//kafkaReqProducer.sendRequestToQueue(Consts.EXPORT_PROCESS, exportRequest);
}
}
}

View file

@ -18,6 +18,8 @@ import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.time.Instant;
@Service
public class ClearingCalendarService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());
@ -33,21 +35,23 @@ public class ClearingCalendarService extends QueueConsumer implements Initializi
@Override
public void afterPropertiesSet() {
callback(ClearingCalendarNewRequest.class)
.setConsumer(this::newTradingCalendar)
.setConsumer(this::newClearingCalendar)
.forDestination(Consts.DESTINATION_CLEARING_CALENDAR_NEW, callbacks::put);
callback(ClearingCalendarUpdateRequest.class)
.setConsumer(this::updateTradingCalendar)
.setConsumer(this::updateClearingCalendar)
.forDestination(Consts.DESTINATION_CLEARING_CALENDAR_UPDATE, callbacks::put);
callback(CommonDeleteRequest.class)
.setConsumer(this::deleteTradingCalendar)
.setConsumer(this::deleteClearingCalendar)
.forDestination(Consts.DESTINATION_CLEARING_CALENDAR_DELETE, callbacks::put);
init();
}
private void newTradingCalendar(BaseRequest<ClearingCalendarNewRequest> userRequest) {
private void newClearingCalendar(BaseRequest<ClearingCalendarNewRequest> userRequest) {
ClearingCalendarNewRequest req = userRequest.getRequestPayload();
log.debug("ClearingCalendarNewRequest received");
ClearingCalendar clearingCalendar = new ClearingCalendar();
Instant created = Instant.now();
clearingCalendar.setCreated(created);
clearingCalendar.setClearingDate(req.getClearingDate());
clearingCalendar.setCompanyId(req.getCompanyId());
clearingCalendar.setDayStatus(req.getDayStatus());
@ -55,18 +59,20 @@ public class ClearingCalendarService extends QueueConsumer implements Initializi
log.debug("successfully processed, new id {}", clearingCalendar.getId());
}
private void updateTradingCalendar(BaseRequest<ClearingCalendarUpdateRequest> userRequest) {
private void updateClearingCalendar(BaseRequest<ClearingCalendarUpdateRequest> userRequest) {
ClearingCalendarUpdateRequest req = userRequest.getRequestPayload();
log.debug("ClearingCalendarUpdateRequest received");
Instant updated = Instant.now();
ClearingCalendar clearingCalendar = clearingCalendarMap.getSingleObjectByID(req.getId());
clearingCalendar.setClearingDate(req.getClearingDate());
clearingCalendar.setCompanyId(req.getCompanyId());
clearingCalendar.setDayStatus(req.getDayStatus());
clearingCalendar.setUpdated(updated);
clearingCalendarMap.update(clearingCalendar);
log.debug("successfully processed, new id {}", clearingCalendar.getId());
}
private void deleteTradingCalendar(BaseRequest<CommonDeleteRequest> userRequest) {
private void deleteClearingCalendar(BaseRequest<CommonDeleteRequest> userRequest) {
CommonDeleteRequest req = userRequest.getRequestPayload();
log.debug("CommonDeleteRequest received id = {}", req.getId());
ClearingCalendar clearingCalendar = clearingCalendarMap.getSingleObjectByID(req.getId());

View file

@ -50,7 +50,8 @@ public class PlannerTemplateService extends QueueConsumer implements Initializin
PlannerTemplateNewRequest req = userRequest.getRequestPayload();
log.debug("PlannerTemplateNewRequest received");
PlannerTemplate plannerTemplate = new PlannerTemplate();
plannerTemplate.setCreated(Instant.now());
Instant created = Instant.now();
plannerTemplate.setCreated(created);
plannerTemplate.setTask(req.getTask());
plannerTemplate.setTaskTime(req.getTaskTime());
plannerTemplate.setTaskStatus(req.getTaskStatus());
@ -64,7 +65,8 @@ public class PlannerTemplateService extends QueueConsumer implements Initializin
PlannerTemplateUpdateRequest req = userRequest.getRequestPayload();
log.debug("PlannerTemplateUpdateRequest received");
PlannerTemplate plannerTemplate = plannerTemplateMap.getSingleObjectByID(req.getId());
plannerTemplate.setUpdated(Instant.now());
Instant updated = Instant.now();
plannerTemplate.setUpdated(updated);
plannerTemplate.setTask(req.getTask());
plannerTemplate.setTaskTime(req.getTaskTime());
plannerTemplate.setTaskStatus(req.getTaskStatus());

View file

@ -0,0 +1,68 @@
package ru.specx.clearing.scheduler.config;
import com.hazelcast.config.*;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams;
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
import ru.spcex.platform.imdg.iml.hazelcast.util.HazelcastHelper;
import java.util.List;
import java.util.Random;
@Configuration
public class HazelcastServiceTestConfiguration {
private HazelcastInstance hazelcastInstance;
private static ThreadPoolTaskExecutor createThreadPoolTaskExecutor(int maxPoolSz, boolean waitForCompletion) {
ThreadPoolTaskExecutor pool = new ThreadPoolTaskExecutor();
if (maxPoolSz > 2) {
pool.setKeepAliveSeconds(60);
pool.setAllowCoreThreadTimeOut(true);
}
pool.setCorePoolSize(maxPoolSz);
pool.setWaitForTasksToCompleteOnShutdown(waitForCompletion);
return pool;
}
@Bean(name = "hazelcastServiceTest")
public HazelcastService hazelcastService(@Qualifier("taskExecutorHazelcastClientInitializer") ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer, @Qualifier("taskExecutorIdGeneratorAwaiter") ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter, HazelcastClientParams params) {
Config cfg = new Config();
cfg.setInstanceName("localhost");
NetworkConfig networkConfig = new NetworkConfig();
JoinConfig joinConfig = new JoinConfig();
joinConfig.setMulticastConfig(new MulticastConfig().setEnabled(false));
joinConfig.setTcpIpConfig(new TcpIpConfig().setEnabled(true).setMembers(List.of("127.0.0.1")));
networkConfig.setJoin(joinConfig);
cfg.setNetworkConfig(networkConfig);
hazelcastInstance = Hazelcast.newHazelcastInstance(cfg);
HazelcastHelper.otcSystem_setStorageState(true, hazelcastInstance);
return new HazelcastService(taskExecutorHazelcastClientInitializer, taskExecutorIdGeneratorAwaiter, params);
}
@Bean(name = "taskExecutorHazelcastClientInitializer")
public ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer() {
return createThreadPoolTaskExecutor(1, true);
}
@Bean(name = "taskExecutorIdGeneratorAwaiter")
public ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter() {
return createThreadPoolTaskExecutor(1, false);
}
@Bean(name = "hazelcastClientParams")
public HazelcastClientParams getHazelcastClientParams() {
HazelcastClientParams params = new HazelcastClientParams();
params.setLogin("dev");
params.setPassword("dev-pass");
params.setClusterMembers("127.0.0.1");
params.setInstanceName("hzTestClient" + new Random().nextInt());
params.setNearCacheConfig(new NearCacheConfig());
return params;
}
}

View file

@ -0,0 +1,138 @@
package ru.specx.clearing.scheduler.service;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hazelcast.core.IMap;
import com.hazelcast.map.listener.EntryRemovedListener;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.MockConsumer;
import org.apache.kafka.clients.consumer.OffsetResetStrategy;
import org.apache.kafka.clients.producer.MockProducer;
import org.apache.kafka.common.TopicPartition;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import ru.clearing.classes.statics.data.profile.Contact;
import ru.clearing.classes.statics.data.scheduler.ClearingCalendar;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.ClearingCalendarNewRequest;
import ru.spcex.clearing.scheduler.service.ClearingCalendarService;
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
import ru.specx.clearing.scheduler.config.HazelcastServiceTestConfiguration;
import java.time.Instant;
import java.time.LocalDate;
import java.util.Collections;
import java.util.HashMap;
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = {
HazelcastServiceTestConfiguration.class})
class ClearingCalendarServiceTest {
private static final int PARTITION = 0;
private static final String TOPIC_CLEARING_CALENDAR_NEW = Consts.DESTINATION_CLEARING_CALENDAR_NEW;
private static final Long ID = 0L;
@Autowired
@Qualifier("hazelcastServiceTest")
private HazelcastService hazelcastServiceTest;
private MockConsumer<String, Object> mockConsumer;
private MockProducer<String, Object> mockProducer;
@BeforeEach
void setUp() {
mockConsumer = new MockConsumer<>(OffsetResetStrategy.EARLIEST);
mockProducer = new MockProducer<>();
}
/**
* {@link ClearingCalendarService#newTradingCalendar(BaseRequest)}(BaseRequest)}<br>
* Тест проверяет создание сущности {@link ClearingCalendar} в Hazelcast при передаче из Apache Kafka.<br>
* Входной запрос {@link ClearingCalendarNewRequest}:<br>
*/
@Test
public void newClearingCalendarInQueue() throws InterruptedException {
//ARRANGE
ClearingCalendar clearingCalendar = new ClearingCalendar();
Instant created = Instant.now();
clearingCalendar.setCreated(created);
clearingCalendar.setClearingDate(LocalDate.now());
clearingCalendar.setCompanyId(0L);
clearingCalendar.setDayStatus("STATUS");
ClearingCalendarNewRequest clearingCalendarNewRequest = new ClearingCalendarNewRequest();
clearingCalendarNewRequest.setClearingDate(clearingCalendar.getClearingDate());
clearingCalendarNewRequest.setCompanyId(clearingCalendar.getCompanyId());
clearingCalendarNewRequest.setDayStatus(clearingCalendar.getDayStatus());
BaseRequest<ClearingCalendarNewRequest> baseNewRequest = new BaseRequest<>();
baseNewRequest.setRequestPayload(clearingCalendarNewRequest);
baseNewRequest.setId(ID);
baseNewRequest.setActionType(ActionType.NEW);
String jsonBaseForRequest;
ObjectMapper objectMapper = new ObjectMapper();
try {
jsonBaseForRequest = objectMapper.writeValueAsString(baseNewRequest);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
//ACT
//service set up
ClearingCalendarService clearingCalendarService = new ClearingCalendarService(mockConsumer, mockProducer, hazelcastServiceTest);
//callbacks set up
clearingCalendarService.afterPropertiesSet();
IMap<Long, ClearingCalendar> iMap = hazelcastServiceTest.getHazelcast().getMap(IMDGDistributedNames.Map_ClearingCalendar);
//KAFKA
HashMap<TopicPartition, Long> startOffsetsUpdating = new HashMap<>();
TopicPartition topic = new TopicPartition(TOPIC_CLEARING_CALENDAR_NEW, PARTITION);
startOffsetsUpdating.put(topic, 0L);
mockConsumer.updateBeginningOffsets(startOffsetsUpdating);
mockConsumer.schedulePollTask(() -> {
mockConsumer.rebalance(Collections.singletonList(new TopicPartition(TOPIC_CLEARING_CALENDAR_NEW, PARTITION)));
mockConsumer.addRecord(new ConsumerRecord<>(TOPIC_CLEARING_CALENDAR_NEW, PARTITION, 0, "key", jsonBaseForRequest));
});
//waiting for hazelcast map item removes
Object waiter = new Object();
String listenerID = iMap.addEntryListener((EntryRemovedListener<Long, Contact>) entryEvent -> {
System.out.println("Checking If pushed..");
try {
waiter.wait(100);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
synchronized (waiter) {
waiter.notify();
}
}, false);
synchronized (waiter) {
waiter.wait(100);
}
ClearingCalendar clearingCalendarRes = iMap.get(iMap.keySet().stream().findFirst().get());
//ASSERT
Assertions.assertEquals(1, iMap.size());
Assertions.assertNotNull(clearingCalendarRes.getCreated());
Assertions.assertEquals(clearingCalendar.getClearingDate(), clearingCalendarRes.getClearingDate());
Assertions.assertEquals(clearingCalendar.getCompanyId(), clearingCalendarRes.getCompanyId());
Assertions.assertEquals(clearingCalendar.getDayStatus(), clearingCalendarRes.getDayStatus());
//preparing hazelcastImdgProvider for next test
iMap.removeEntryListener(listenerID);
}
}

View file

@ -0,0 +1,141 @@
package ru.specx.clearing.scheduler.service;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hazelcast.core.IMap;
import com.hazelcast.map.listener.EntryRemovedListener;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.MockConsumer;
import org.apache.kafka.clients.consumer.OffsetResetStrategy;
import org.apache.kafka.clients.producer.MockProducer;
import org.apache.kafka.common.TopicPartition;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import ru.clearing.classes.statics.data.profile.Contact;
import ru.clearing.classes.statics.data.scheduler.PlannerTemplate;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerTemplateNewRequest;
import ru.spcex.clearing.scheduler.service.PlannerTemplateService;
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
import ru.specx.clearing.scheduler.config.HazelcastServiceTestConfiguration;
import java.time.Instant;
import java.time.LocalTime;
import java.util.Collections;
import java.util.HashMap;
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = {
HazelcastServiceTestConfiguration.class})
class PlannerTemplateServiceTest {
private static final int PARTITION = 0;
private static final String TOPIC_PLANNER_TEMPLATE_NEW = Consts.DESTINATION_PLANNER_TEMPLATE_NEW;
private static final Long ID = 0L;
@Autowired
@Qualifier("hazelcastServiceTest")
private HazelcastService hazelcastServiceTest;
private MockConsumer<String, Object> mockConsumer;
private MockProducer<String, Object> mockProducer;
@BeforeEach
void setUp() {
mockConsumer = new MockConsumer<>(OffsetResetStrategy.EARLIEST);
mockProducer = new MockProducer<>();
}
/**
* {@link PlannerTemplateService#newTimetable(BaseRequest)}(BaseRequest)}<br>
* Тест проверяет создание сущности {@link ru.clearing.classes.statics.data.scheduler.PlannerTemplate} в Hazelcast при передаче из Apache Kafka.<br>
* Входной запрос {@link PlannerTemplateNewRequest}:<br>
*/
@Test
public void newPlannerTemplateInQueue() throws InterruptedException {
//ARRANGE
Instant created = Instant.now();
PlannerTemplate plannerTemplate = new PlannerTemplate();
plannerTemplate.setTask("TASK");
plannerTemplate.setTaskTime(LocalTime.MIDNIGHT);
plannerTemplate.setTaskStatus("TASK_STATUS");
plannerTemplate.setCompanyId(0L);
plannerTemplate.setSecurityId(10L);
PlannerTemplateNewRequest plannerTemplateNewRequest = new PlannerTemplateNewRequest();
plannerTemplateNewRequest.setTask(plannerTemplate.getTask());
plannerTemplateNewRequest.setTaskTime(plannerTemplate.getTaskTime());
plannerTemplateNewRequest.setTaskStatus(plannerTemplate.getTaskStatus());
plannerTemplateNewRequest.setCompanyId(plannerTemplate.getCompanyId());
plannerTemplateNewRequest.setSecurityId(plannerTemplate.getSecurityId());
BaseRequest<PlannerTemplateNewRequest> plannerTemplateRequest = new BaseRequest<>();
plannerTemplateRequest.setRequestPayload(plannerTemplateNewRequest);
plannerTemplateRequest.setId(ID);
plannerTemplateRequest.setActionType(ActionType.NEW);
String jsonBaseForDeleteRequest;
ObjectMapper objectMapper = new ObjectMapper();
try {
jsonBaseForDeleteRequest = objectMapper.writeValueAsString(plannerTemplateRequest);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
//ACT
//service set up
PlannerTemplateService plannerTemplateService = new PlannerTemplateService(mockConsumer, mockProducer, hazelcastServiceTest);
//callbacks set up
plannerTemplateService.afterPropertiesSet();
IMap<Long, PlannerTemplate> iMap = hazelcastServiceTest.getHazelcast().getMap(IMDGDistributedNames.Map_PlannerTemplate);
//KAFKA
HashMap<TopicPartition, Long> startOffsetsUpdating = new HashMap<>();
TopicPartition topic = new TopicPartition(TOPIC_PLANNER_TEMPLATE_NEW, PARTITION);
startOffsetsUpdating.put(topic, 0L);
mockConsumer.updateBeginningOffsets(startOffsetsUpdating);
mockConsumer.schedulePollTask(() -> {
mockConsumer.rebalance(Collections.singletonList(new TopicPartition(TOPIC_PLANNER_TEMPLATE_NEW, PARTITION)));
mockConsumer.addRecord(new ConsumerRecord<>(TOPIC_PLANNER_TEMPLATE_NEW, PARTITION, 0, "key", jsonBaseForDeleteRequest));
});
//waiting for hazelcast map item removes
Object waiter = new Object();
String listenerID = iMap.addEntryListener((EntryRemovedListener<Long, Contact>) entryEvent -> {
System.out.println("Checking If pushed..");
try {
waiter.wait(100);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
synchronized (waiter) {
waiter.notify();
}
}, false);
synchronized (waiter) {
waiter.wait(100);
}
PlannerTemplate plannerTemplateRes = iMap.get(iMap.keySet().stream().findFirst().get());
//ASSERT
Assertions.assertEquals(1, iMap.size());
Assertions.assertNotNull(plannerTemplateRes.getCreated());
Assertions.assertEquals(plannerTemplate.getTask(), plannerTemplateRes.getTask());
Assertions.assertEquals(plannerTemplate.getTaskTime(), plannerTemplateRes.getTaskTime());
Assertions.assertEquals(plannerTemplate.getTaskStatus(), plannerTemplateRes.getTaskStatus());
Assertions.assertEquals(plannerTemplate.getCompanyId(), plannerTemplateRes.getCompanyId());
Assertions.assertEquals(plannerTemplate.getSecurityId(), plannerTemplateRes.getSecurityId());
//preparing hazelcastImdgProvider for next test
iMap.removeEntryListener(listenerID);
}
}

View file

@ -0,0 +1,38 @@
package ru.specx.clearing.scheduler.utils;
import java.util.Arrays;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Factory for creating test matchers.
* <p>
* Comparing actual and expected objects via AssertJ
*/
public class MatcherFactory {
public static <T> Matcher<T> usingIgnoringFieldsComparator(String... fieldsToIgnore) {
return new Matcher<>(fieldsToIgnore);
}
public static class Matcher<T> {
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<T> actual, T... expected) {
assertMatch(actual, Arrays.asList(expected));
}
public void assertMatch(Iterable<T> actual, Iterable<T> expected) {
assertThat(actual).usingRecursiveFieldByFieldElementComparatorIgnoringFields(fieldsToIgnore).isEqualTo(expected);
}
}
}

View file

@ -0,0 +1,4 @@
package ru.spcex.clearing.platform.messaging.domain.cud.account.brake.document;
public class AccountUpdateWithBrakeRequest {
}