Squashed commit of the following:

commit 670d21b13f
Merge: dd41ada2 7720f416
Author: AKurakin <akurakin@mfd.ru>
Date:   Wed Apr 19 16:44:12 2023 +0300

    Merge branch 'DDL_CLS-275' into dev

commit 7720f41699
Author: AKurakin <akurakin@mfd.ru>
Date:   Wed Apr 19 15:59:48 2023 +0300

    http://jira.mfd.msk:8088/browse/CLS-275 DDL (3) часть 3 правки тестов и кода TODO

commit 07e4e946de
Author: AKurakin <akurakin@mfd.ru>
Date:   Wed Apr 19 15:51:06 2023 +0300

    http://jira.mfd.msk:8088/browse/CLS-275 DDL (3) часть 2 доделал тест IMDG

commit a1a68d50b2
Author: AKurakin <akurakin@mfd.ru>
Date:   Wed Apr 19 13:06:51 2023 +0300

    http://jira.mfd.msk:8088/browse/CLS-275 DDL (3) часть 2 переименование STrade -> STrades

commit 762ddeacc5
Author: AKurakin <akurakin@mfd.ru>
Date:   Wed Apr 19 12:14:04 2023 +0300

    http://jira.mfd.msk:8088/browse/CLS-275 DDL (3) часть 1

commit dd41ada256
Author: AKurakin <akurakin@mfd.ru>
Date:   Tue Apr 18 16:02:37 2023 +0300

    backend-api . CLS-264 CLS-257

commit d7c74b25b1
Author: AKurakin <akurakin@mfd.ru>
Date:   Tue Apr 18 15:57:32 2023 +0300

    backend-api http://jira.mfd.msk:8088/browse/CLS-257 /accounting/

commit 32590c00f8
Author: AKurakin <akurakin@mfd.ru>
Date:   Tue Apr 18 14:12:41 2023 +0300

    backend-api http://jira.mfd.msk:8088/browse/CLS-257 unit-test дополнил, поправил

commit 5d75c6f53d
Author: AKurakin <akurakin@mfd.ru>
Date:   Tue Apr 18 12:19:29 2023 +0300

    backend-api http://jira.mfd.msk:8088/browse/CLS-257

commit a213ca1872
Author: AKurakin <akurakin@mfd.ru>
Date:   Mon Apr 17 17:21:33 2023 +0300

    backend-api .

commit 0ea216fef2
Author: AKurakin <akurakin@mfd.ru>
Date:   Mon Apr 17 17:19:55 2023 +0300

    http://jira.mfd.msk:8088/browse/CLS-256 backend-api. Юбилейный 256 таск :)
This commit is contained in:
psemenkov 2023-04-20 14:44:52 +03:00
parent 45ca3d9b56
commit 9bfc038111
95 changed files with 13670 additions and 8320 deletions

View file

@ -20,4 +20,15 @@ public class AbstractQueueController {
responseToClient.setMessage("success");
return responseToClient;
}
/**
* Для оптимизации передачи userId
*/
protected <T> CudResponse processRequest(String destination, IAction<T> iAction, Long userId) throws ExecutionException, InterruptedException {
CudResponse responseToClient = new CudResponse();
responseToClient.setPayload(operator.sendRequestToQueue(destination, iAction, userId));
responseToClient.setCode(0);
responseToClient.setMessage("success");
return responseToClient;
}
}

View file

@ -16,6 +16,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
import java.util.Collection;
import java.util.Map;
@Deprecated
@Controller
@RequestMapping("/account-balances")
public class AccountBalanceController {

View file

@ -1,28 +1,38 @@
package ru.spcex.clearing.backendapi.controller.queue.account;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.*;
import ru.clearing.classes.statics.data.account.Account;
import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
import ru.spcex.clearing.backendapi.controller.request.cud.account.AccountNewAction;
import ru.spcex.clearing.backendapi.controller.request.cud.account.AccountUpdateAction;
import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction;
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse;
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
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 java.util.Collection;
import java.util.Map;
import java.util.concurrent.ExecutionException;
@Controller
@RequestMapping("/accounting/accounts")
public class AccountController {
public class AccountController extends AbstractQueueController {
private final IStateLoader stateLoader;
@Autowired
public AccountController(IStateLoader stateLoader) {
public AccountController(IOperator operator, IStateLoader stateLoader) {
super(operator);
this.stateLoader = stateLoader;
}
@ -36,4 +46,40 @@ public class AccountController {
response.fromEntity(all);
return response;
}
@ApiOperation(value = "create account.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse add(
@ApiParam(value = "Параметры команды в JSON формате.", required = true)
@RequestBody AccountNewAction accountNewAction) throws ExecutionException, InterruptedException {
return processRequest(Consts.DESTINATION_ACCOUNT_NEW, accountNewAction);
}
@ApiOperation(value = "update account.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234")
@PathVariable("id") Long id,
@ApiParam(value = "Новые значения полей объекта.", required = true)
@RequestBody AccountUpdateAction accountUpdateAction) throws ExecutionException, InterruptedException {
accountUpdateAction.setId(id);
return processRequest(Consts.DESTINATION_ACCOUNT_UPDATE, accountUpdateAction);
}
@ApiOperation(value = "delete account.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public CudResponse delete(@ApiParam(value = "Идентификатор удаляемого объекта", required = true, example = "1234")
@PathVariable("id") Long id) throws ExecutionException, InterruptedException {
CommonDeleteAction deleteAction = new CommonDeleteAction();
deleteAction.setId(id);
return processRequest(Consts.DESTINATION_ACCOUNT_DELETE, deleteAction);
}
}

View file

@ -28,7 +28,7 @@ import java.util.Optional;
import java.util.concurrent.ExecutionException;
@Controller
@RequestMapping("/securities/bank-accounts")
@RequestMapping("/accounting/bank-accounts")
public class BankAccountController extends AbstractQueueController {
private final IStateLoader stateLoader;
@ -53,7 +53,7 @@ public class BankAccountController extends AbstractQueueController {
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@ApiParam(value = "Идентификатор изменяего объекта.", required = true, example = "1234")
@ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234")
@PathVariable("id") Long id,
@ApiParam(value = "Новые значения полей объекта.", required = true)
@RequestBody BankAccountUpdateAction bankAccountUpdateAction) throws ExecutionException, InterruptedException {

View file

@ -0,0 +1,39 @@
package ru.spcex.clearing.backendapi.controller.queue.account;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import ru.clearing.classes.statics.data.account.ClearingAccount;
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
import ru.spcex.clearing.backendapi.service.IStateLoader;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import java.util.Collection;
import java.util.Map;
@Controller
@RequestMapping("/accounting/clearing-accounts")
public class ClearingAccountController {
private final IStateLoader stateLoader;
@Autowired
public ClearingAccountController(IStateLoader stateLoader) {
this.stateLoader = stateLoader;
}
@ApiOperation(value = "get all clearing account.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public CommonGetAllResponse getAll() {
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_ClearingAccount, ClearingAccount.class);
CommonGetAllResponse response = new CommonGetAllResponse();
response.fromEntity(all);
return response;
}
}

View file

@ -0,0 +1,39 @@
package ru.spcex.clearing.backendapi.controller.queue.account;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import ru.clearing.classes.statics.data.account.DepoAccount;
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
import ru.spcex.clearing.backendapi.service.IStateLoader;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import java.util.Collection;
import java.util.Map;
@Controller
@RequestMapping("/accounting/depo-accounts")
public class DepoAccountController {
private final IStateLoader stateLoader;
@Autowired
public DepoAccountController(IStateLoader stateLoader) {
this.stateLoader = stateLoader;
}
@ApiOperation(value = "get all depo account.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public CommonGetAllResponse getAll() {
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_DepoAccount, DepoAccount.class);
CommonGetAllResponse response = new CommonGetAllResponse();
response.fromEntity(all);
return response;
}
}

View file

@ -51,7 +51,7 @@ public class EditClearingMemberCategoryController extends AbstractQueueControlle
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@ApiParam(value = "Идентификатор изменяего объекта.", required = true, example = "1234")
@ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234")
@PathVariable("id") Long id,
@ApiParam(value = "Новые значения полей объекта.", required = true)
@RequestBody ClearingMemberCategoryUpdateAction clearingMemberCategoryUpdateAction) throws ExecutionException, InterruptedException {

View file

@ -47,7 +47,7 @@ public class EditCompanyInfoController extends AbstractQueueController {
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@ApiParam(value = "Идентификатор изменяего объекта.", required = true, example = "1234")
@ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234")
@PathVariable("id") Long id,
@ApiParam(value = "Новые значения полей объекта.", required = true)
@RequestBody CompanyInfoUpdateAction companyInfoUpdateAction) throws ExecutionException, InterruptedException {

View file

@ -40,7 +40,7 @@ public class EditCompanySymbolController extends AbstractQueueController {
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@ApiParam(value = "Идентификатор изменяего объекта.", required = true, example = "1234")
@ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234")
@PathVariable("id") Long id,
@ApiParam(value = "Новые значения полей объекта.", required = true)
@RequestBody CompanySymbolUpdateAction companySymbolsUpdateAction) throws ExecutionException, InterruptedException {

View file

@ -39,7 +39,7 @@ public class EditContactController extends AbstractQueueController {
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@ApiParam(value = "Идентификатор изменяего объекта.", required = true, example = "1234")
@ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234")
@PathVariable("id") Long id,
@ApiParam(value = "Новые значения полей объекта.", required = true)
@RequestBody ContactUpdateAction contactUpdateAction) throws ExecutionException, InterruptedException {

View file

@ -7,13 +7,12 @@ import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.*;
import ru.clearing.classes.statics.data.profile.ProfileDocument;
import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction;
import ru.spcex.clearing.backendapi.controller.request.cud.company.ProfileDocumentNewAction;
import ru.spcex.clearing.backendapi.controller.request.cud.company.ProfileDocumentUpdateAction;
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse;
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
@ -57,4 +56,28 @@ public class ProfileDocumentController extends AbstractQueueController {
@RequestBody ProfileDocumentNewAction profileDocumentNewAction) throws ExecutionException, InterruptedException {
return processRequest(Consts.DESTINATION_PROFILE_DOCUMENT_NEW, profileDocumentNewAction);
}
@ApiOperation(value = "update profile document.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@PathVariable("id") Long id,
@ApiParam(value = "Параметры команды в JSON формате.", required = true)
@RequestBody ProfileDocumentUpdateAction profileDocumentUpdateAction) throws ExecutionException, InterruptedException {
profileDocumentUpdateAction.setId(id);
return processRequest(Consts.DESTINATION_PROFILE_DOCUMENT_UPDATE, profileDocumentUpdateAction);
}
@ApiOperation(value = "delete profile document.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class)})
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public CudResponse delete(@ApiParam(value = "Идентификатор удаляемого объекта", required = true, example = "1234")
@PathVariable("id") Long id) throws ExecutionException, InterruptedException {
CommonDeleteAction deleteAction = new CommonDeleteAction();
deleteAction.setId(id);
return processRequest(Consts.DESTINATION_PROFILE_DOCUMENT_DELETE, deleteAction);
}
}

View file

@ -51,7 +51,7 @@ public class RelationController extends AbstractQueueController {
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@ApiParam(value = "Идентификатор изменяего объекта.", required = true, example = "1234")
@ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234")
@PathVariable("id") Long id,
@ApiParam(value = "Новые значения полей объекта.", required = true)
@RequestBody RelationUpdateAction relationUpdateAction) throws ExecutionException, InterruptedException {

View file

@ -62,7 +62,7 @@ public class ClearingCalendarController extends AbstractQueueController {
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@ApiParam(value = "Идентификатор изменяего объекта.", required = true, example = "1234")
@ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234")
@PathVariable("id") Long id,
@ApiParam(value = "Новые значения полей объекта.", required = true)
@RequestBody ClearingCalendarUpdateAction clearingCalendarUpdateAction) throws ExecutionException, InterruptedException {

View file

@ -62,7 +62,7 @@ public class PlannerController extends AbstractQueueController {
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@ApiParam(value = "Идентификатор изменяего объекта.", required = true, example = "1234")
@ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234")
@PathVariable("id") Long id,
@ApiParam(value = "Новые значения полей объекта.", required = true)
@RequestBody PlannerUpdateAction plannerUpdateAction) throws ExecutionException, InterruptedException {

View file

@ -62,7 +62,7 @@ public class PlannerTemplateController extends AbstractQueueController {
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@ApiParam(value = "Идентификатор изменяего объекта.", required = true, example = "1234")
@ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234")
@PathVariable("id") Long id,
@ApiParam(value = "Новые значения полей объекта.", required = true)
@RequestBody PlannerTemplateUpdateAction plannerTemplateUpdateAction) throws ExecutionException, InterruptedException {

View file

@ -0,0 +1,43 @@
package ru.spcex.clearing.backendapi.controller.queue.securities;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import ru.clearing.classes.statics.data.instrument.issue.CouponPeriod;
import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
import ru.spcex.clearing.backendapi.service.IOperator;
import ru.spcex.clearing.backendapi.service.IStateLoader;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import java.util.Collection;
import java.util.Map;
@Controller
@RequestMapping("/securities/coupon-period-securities")
public class CudCouponPeriodController extends AbstractQueueController {
private final IStateLoader stateLoader;
@Autowired
public CudCouponPeriodController(IOperator operator, IStateLoader stateLoader) {
super(operator);
this.stateLoader = stateLoader;
}
@ApiOperation(value = "get all coupon periods.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public CommonGetAllResponse getAll() {
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_CouponPeriod,
CouponPeriod.class);
CommonGetAllResponse response = new CommonGetAllResponse();
response.fromEntity(all);
return response;
}
}

View file

@ -0,0 +1,86 @@
package ru.spcex.clearing.backendapi.controller.queue.securities;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity;
import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction;
import ru.spcex.clearing.backendapi.controller.request.cud.securities.EquitySecurityNewAction;
import ru.spcex.clearing.backendapi.controller.request.cud.securities.EquitySecurityUpdateAction;
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse;
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
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;
import java.util.concurrent.ExecutionException;
@Controller
@RequestMapping("/securities/equity-securities")
public class CudEquitySecurityController extends AbstractQueueController {
private final IStateLoader stateLoader;
@Autowired
public CudEquitySecurityController(IOperator operator, IStateLoader stateLoader) {
super(operator);
this.stateLoader = stateLoader;
}
@ApiOperation(value = "create equity security.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse add(
@ApiParam(value = "Параметры команды в JSON формате.", required = true)
@RequestBody EquitySecurityNewAction equitySecurityNewAction) throws ExecutionException, InterruptedException {
return processRequest(Consts.DESTINATION_EQUITY_SECURITY_NEW, equitySecurityNewAction);
}
@ApiOperation(value = "update equity security.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234")
@PathVariable("id") Long id,
@ApiParam(value = "Новые значения полей объекта.", required = true)
@RequestBody EquitySecurityUpdateAction equitySecurityUpdateAction) throws ExecutionException, InterruptedException {
equitySecurityUpdateAction.setId(id);
return processRequest(Consts.DESTINATION_EQUITY_SECURITY_UPDATE, equitySecurityUpdateAction);
}
@ApiOperation(value = "delete equity security.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public CudResponse delete(@ApiParam(value = "Идентификатор удаляемого объекта", required = true, example = "1234")
@PathVariable("id") Long id) throws ExecutionException, InterruptedException {
CommonDeleteAction deleteAction = new CommonDeleteAction();
deleteAction.setId(id);
return processRequest(Consts.DESTINATION_EQUITY_SECURITY_DELETE, deleteAction);
}
@ApiOperation(value = "get all equity securities.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public CommonGetAllResponse getAll() {
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_EquitySecurity,
EquitySecurity.class,
Map.of("workflowStatus", Status.Active.getKey()));
CommonGetAllResponse response = new CommonGetAllResponse();
response.fromEntity(all);
return response;
}
}

View file

@ -0,0 +1,43 @@
package ru.spcex.clearing.backendapi.controller.queue.securities;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeCashFlow;
import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
import ru.spcex.clearing.backendapi.service.IOperator;
import ru.spcex.clearing.backendapi.service.IStateLoader;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import java.util.Collection;
import java.util.Map;
@Controller
@RequestMapping("/securities/fixed-income-cash-flow-securities")
public class CudFixedIncomeCashFlowController extends AbstractQueueController {
private final IStateLoader stateLoader;
@Autowired
public CudFixedIncomeCashFlowController(IOperator operator, IStateLoader stateLoader) {
super(operator);
this.stateLoader = stateLoader;
}
@ApiOperation(value = "get all fixed income cash flow securities.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public CommonGetAllResponse getAll() {
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_FixedIncomeCashFlow,
FixedIncomeCashFlow.class);
CommonGetAllResponse response = new CommonGetAllResponse();
response.fromEntity(all);
return response;
}
}

View file

@ -0,0 +1,86 @@
package ru.spcex.clearing.backendapi.controller.queue.securities;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction;
import ru.spcex.clearing.backendapi.controller.request.cud.securities.FixedIncomeSecurityNewAction;
import ru.spcex.clearing.backendapi.controller.request.cud.securities.FixedIncomeSecurityUpdateAction;
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse;
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
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;
import java.util.concurrent.ExecutionException;
@Controller
@RequestMapping("/securities/fixed-income-securities")
public class CudFixedIncomeSecurityController extends AbstractQueueController {
private final IStateLoader stateLoader;
@Autowired
public CudFixedIncomeSecurityController(IOperator operator, IStateLoader stateLoader) {
super(operator);
this.stateLoader = stateLoader;
}
@ApiOperation(value = "create fixed income security.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse add(
@ApiParam(value = "Параметры команды в JSON формате.", required = true)
@RequestBody FixedIncomeSecurityNewAction fixedIncomeSecurityNewAction) throws ExecutionException, InterruptedException {
return processRequest(Consts.DESTINATION_FIXED_INCOME_SECURITY_NEW, fixedIncomeSecurityNewAction);
}
@ApiOperation(value = "update fixed income security.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234")
@PathVariable("id") Long id,
@ApiParam(value = "Новые значения полей объекта.", required = true)
@RequestBody FixedIncomeSecurityUpdateAction fixedIncomeSecurityUpdateAction) throws ExecutionException, InterruptedException {
fixedIncomeSecurityUpdateAction.setId(id);
return processRequest(Consts.DESTINATION_FIXED_INCOME_SECURITY_UPDATE, fixedIncomeSecurityUpdateAction);
}
@ApiOperation(value = "delete fixed income security.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public CudResponse delete(@ApiParam(value = "Идентификатор удаляемого объекта", required = true, example = "1234")
@PathVariable("id") Long id) throws ExecutionException, InterruptedException {
CommonDeleteAction deleteAction = new CommonDeleteAction();
deleteAction.setId(id);
return processRequest(Consts.DESTINATION_FIXED_INCOME_SECURITY_DELETE, deleteAction);
}
@ApiOperation(value = "get all equity securities.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public CommonGetAllResponse getAll() {
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_FixedIncomeSecurity,
FixedIncomeSecurity.class,
Map.of("workflowStatus", Status.Active.getKey()));
CommonGetAllResponse response = new CommonGetAllResponse();
response.fromEntity(all);
return response;
}
}

View file

@ -52,7 +52,7 @@ public class CudMoneyMarketSecurityController extends AbstractQueueController {
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@ApiParam(value = "Идентификатор изменяего объекта.", required = true, example = "1234")
@ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234")
@PathVariable("id") Long id,
@ApiParam(value = "Новые значения полей объекта.", required = true)
@RequestBody MoneyMarketSecurityUpdateAction moneySecurityUpdateAction) throws ExecutionException, InterruptedException {

View file

@ -16,6 +16,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
import java.util.Collection;
import java.util.Map;
@Deprecated //todo не лишний ли этот контроллер? См. CudMoneyMarketSecurityController @Deprecated
@Controller
@RequestMapping("/securities")
public class SecurityController {

View file

@ -51,7 +51,7 @@ public class CudKeyRateController extends AbstractQueueController {
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@ApiParam(value = "Идентификатор изменяего объекта.", required = true, example = "1234")
@ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234")
@PathVariable("id") Long id,
@ApiParam(value = "Новые значения полей объекта.", required = true)
@RequestBody KeyRateUpdateAction keyRateUpdateAction) throws ExecutionException, InterruptedException {

View file

@ -0,0 +1,91 @@
package ru.spcex.clearing.backendapi.controller.request.cud.account;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.util.StringUtils;
import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.backendapi.errors.BackEndError;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.account.AccountNewRequest;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
public class AccountNewAction implements IAction<AccountNewRequest> {
@ApiModelProperty(value = "Наименование компании", example = "1200")
@JsonProperty
private Long companyId;
@ApiModelProperty(value = "Номер счета", example = "A30101111111111111776")
@JsonProperty
private String account;
@ApiModelProperty(value = "Наименование статуса", example = "ACTV")
@JsonProperty
private String status;
@ApiModelProperty(value = "Наименование типа счета", example = "CLRN")
@JsonProperty
private String accountType;
@Override
public Collection<EnumMessage> validate() {
List<EnumMessage> errors = new ArrayList<>();
if (this.companyId == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "companyId"));
if (!StringUtils.hasLength(this.account))
errors.add(new EnumMessage(BackEndError.ValidationError, "account"));
if (!StringUtils.hasLength(this.accountType))
errors.add(new EnumMessage(BackEndError.ValidationError, "accountType"));
return errors.isEmpty() ? Collections.emptyList() : errors;
}
@Override
public AccountNewRequest toRequest() {
var req = new AccountNewRequest();
req.setCompanyId(this.companyId);
req.setAccount(this.account);
req.setStatus(this.status);
req.setAccountType(this.accountType);
return req;
}
@ApiModelProperty(hidden = true)
@Override
public ActionType getActionType() {
return ActionType.NEW;
}
public Long getCompanyId() {
return companyId;
}
public void setCompanyId(Long companyId) {
this.companyId = companyId;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getAccountType() {
return accountType;
}
public void setAccountType(String accountType) {
this.accountType = accountType;
}
}

View file

@ -0,0 +1,101 @@
package ru.spcex.clearing.backendapi.controller.request.cud.account;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.util.StringUtils;
import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.backendapi.errors.BackEndError;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.account.AccountUpdateRequest;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
public class AccountUpdateAction implements IAction<AccountUpdateRequest> {
@ApiModelProperty(hidden = true)
@JsonProperty
public Long id;
@ApiModelProperty(value = "Наименование компании", example = "1200")
@JsonProperty
private Long companyId;
@ApiModelProperty(value = "Номер счета", example = "A30101111111111111776")
@JsonProperty
private String account;
@ApiModelProperty(value = "Наименование статуса", example = "ACTV")
@JsonProperty
private String status;
@ApiModelProperty(value = "Наименование типа счета", example = "CLRN")
@JsonProperty
private String accountType;
@Override
public Collection<EnumMessage> validate() {
List<EnumMessage> errors = new ArrayList<>();
if (this.id == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "id"));
if (!StringUtils.hasLength(this.accountType))
errors.add(new EnumMessage(BackEndError.ValidationError, "accountType"));
return errors.isEmpty() ? Collections.emptyList() : errors;
}
@Override
public AccountUpdateRequest toRequest() {
var req = new AccountUpdateRequest();
req.setId(this.id);
req.setCompanyId(this.companyId);
req.setAccount(this.account);
req.setStatus(this.status);
req.setAccountType(this.accountType);
return req;
}
@ApiModelProperty(hidden = true)
@Override
public ActionType getActionType() {
return ActionType.UPDATE;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getCompanyId() {
return companyId;
}
public void setCompanyId(Long companyId) {
this.companyId = companyId;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getAccountType() {
return accountType;
}
public void setAccountType(String accountType) {
this.accountType = accountType;
}
}

View file

@ -11,45 +11,42 @@ public class CompanyInfoUpdateAction implements IAction<CompanyInfoUpdateRequest
@JsonProperty
public Long id;
@ApiModelProperty(value = "Идентификатор единоличного исполнительного органа", example = "ABCD")
@JsonProperty
private String corporationSoleType;
@ApiModelProperty(value = "Идентификатор кода страны", example = "ABCD")
@JsonProperty
private String countryCode;
@ApiModelProperty(value = "Описание", example = "ABCD")
@JsonProperty
private String description;
@ApiModelProperty(value = "Признак проф. Участника", example = "ABCD")
@JsonProperty
private String professionalSign;
@ApiModelProperty(value = "Идентификатор вида субъекта", example = "ABCD")
@JsonProperty
private String legalKind;
@ApiModelProperty(value = "Идентификатор типа организации", example = "ABCD")
@JsonProperty
private String organizationType;
@ApiModelProperty(value = "Идентификатор кода страны", example = "ABCD")
@JsonProperty
private String residence;
@ApiModelProperty(value = "Краткое наименование Компании на английском", example = "Test Company Inc.")
@JsonProperty
private String shortNameEng;
@ApiModelProperty(value = "Полное наименование Компании на английском", example = "Test Company Incorporated")
@JsonProperty
private String fullNameEng;
@ApiModelProperty(value = "Краткое наименование Компании", example = "Test Company Incorporated")
@ApiModelProperty(value = "Краткое наименование компании", example = "ABCD")
@JsonProperty
private String shortName;
@ApiModelProperty(value = "Полное наименование Компании", example = "Test Company Incorporated PlaceHolder Text Communication")
@ApiModelProperty(value = "Полное наименование компании", example = "Test Компания Incorporated PlaceHolder Text Communication")
@JsonProperty
private String fullName;
@ApiModelProperty(value = "Код участника торгов", example = "ABCD")
@ApiModelProperty(value = "Юрисдикция", example = "ABCD")
@JsonProperty
private String tradingCode;
@ApiModelProperty(value = "Код участника клиринга", example = "ABCD")
private String countryCode;
@ApiModelProperty(value = "Единоличный исполнительный орган", example = "ABCD")
@JsonProperty
private String clearingCode;
private String corporationSoleType;
@ApiModelProperty(value = "Вид субъекта", example = "ABCD")
@JsonProperty
private String legalKind;
@ApiModelProperty(value = "Тип организации", example = "ABCD")
@JsonProperty
private String organizationType;
@ApiModelProperty(value = "Резиденция (идентификатор кода страны)", example = "ABCD")
@JsonProperty
private String residence;
@ApiModelProperty(value = "Полное наименование компании на английском", example = "Test Company Incorporated")
@JsonProperty
private String fullNameEng;
@ApiModelProperty(value = "Краткое наименование компании на английском", example = "Test Company Inc.")
@JsonProperty
private String shortNameEng;
@ApiModelProperty(value = "Признак профессионального участника", example = "ABCD")
@JsonProperty
private String professionalSign;
@ApiModelProperty(value = "Описание компании", example = "ABCD")
@JsonProperty
private String description;
@ApiModelProperty(value = "Наименование статуса", example = "ACTV")
@JsonProperty
private String workflowStatus;
@Override
public CompanyInfoUpdateRequest toRequest() {
@ -66,8 +63,7 @@ public class CompanyInfoUpdateAction implements IAction<CompanyInfoUpdateRequest
request.setFullNameEng(this.fullNameEng);
request.setShortName(this.shortName);
request.setFullName(this.fullName);
request.setTradingCode(this.tradingCode);
request.setClearingCode(this.clearingCode);
request.setWorkflowStatus(workflowStatus);
return request;
}
@ -173,19 +169,11 @@ public class CompanyInfoUpdateAction implements IAction<CompanyInfoUpdateRequest
this.fullName = fullName;
}
public String getTradingCode() {
return tradingCode;
public String getWorkflowStatus() {
return workflowStatus;
}
public void setTradingCode(String tradingCode) {
this.tradingCode = tradingCode;
}
public String getClearingCode() {
return clearingCode;
}
public void setClearingCode(String clearingCode) {
this.clearingCode = clearingCode;
public void setWorkflowStatus(String workflowStatus) {
this.workflowStatus = workflowStatus;
}
}

View file

@ -0,0 +1,95 @@
package ru.spcex.clearing.backendapi.controller.request.cud.company;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentUpdateRequest;
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer;
import java.time.LocalDate;
public class ProfileDocumentUpdateAction implements IAction<ProfileDocumentUpdateRequest> {
@ApiModelProperty(hidden = true)
@JsonProperty
private Long id;
@ApiModelProperty(value = "Идентификатор Компании", example = "123")
@JsonProperty
private Long companyId;
@ApiModelProperty(value = "Идентификатор типа документа", example = "ABCD")
@JsonProperty
private String documentType;
@ApiModelProperty(value = "Дата выдачи", example = "2022-12-25")
@JsonSerialize(using = LocalDateSerializer.class)
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonProperty
private LocalDate issueDate;
@ApiModelProperty(value = "Место выдачи", example = "Example string")
@JsonProperty
private String issuePlace;
@ApiModelProperty(value = "Кем выдан", example = "Example string")
@JsonProperty
private String issuer;
@ApiModelProperty(value = "Код выдавшего органа", example = "Example string")
@JsonProperty
private String issuerCode;
@ApiModelProperty(value = "Наименование", example = "Example string")
@JsonProperty
private String name;
@ApiModelProperty(value = "Номер", example = "Example string")
@JsonProperty
private String number;
@ApiModelProperty(value = "Место", example = "Example string")
@JsonProperty
private String place;
@ApiModelProperty(value = "Дата начала срока действия", example = "2022-12-25")
@JsonSerialize(using = LocalDateSerializer.class)
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonProperty
private LocalDate validFromDate;
@ApiModelProperty(value = "Дата окончания срока действия", example = "2022-12-25")
@JsonSerialize(using = LocalDateSerializer.class)
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonProperty
private LocalDate validToDate;
@ApiModelProperty(value = "Ссылка на документ", example = "Example string")
@JsonProperty
private String link;
@Override
public ProfileDocumentUpdateRequest toRequest() {
ProfileDocumentUpdateRequest request = new ProfileDocumentUpdateRequest();
request.setId(this.id);
request.setCompanyId(this.companyId);
request.setDocumentType(this.documentType);
request.setIssueDate(this.issueDate);
request.setIssuePlace(this.issuePlace);
request.setIssuer(this.issuer);
request.setIssuerCode(this.issuerCode);
request.setName(this.name);
request.setNumber(this.number);
request.setPlace(this.place);
request.setValidFromDate(this.validFromDate);
request.setValidToDate(this.validToDate);
request.setLink(this.link);
return request;
}
@ApiModelProperty(hidden = true)
@Override
public ActionType getActionType() {
return ActionType.UPDATE;
}
@ApiModelProperty(hidden = true)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}

View file

@ -0,0 +1,179 @@
package ru.spcex.clearing.backendapi.controller.request.cud.securities;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.backendapi.errors.BackEndError;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityNewRequest;
import ru.spcex.platform.classes.base.interfaces.WithSecuritySymbol;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.text.TextUtil;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
public class EquitySecurityNewAction implements IAction<EquitySecurityNewRequest>, WithSecuritySymbol {
@ApiModelProperty(value = "Код инструмента", example = "ABSDEFJ")
@JsonProperty
public String securitySymbol;
@ApiModelProperty(value = "Краткое наименование инструмента", example = "ABSDE")
@JsonProperty
public String shortName;
@ApiModelProperty(value = "Полное наименование инструмента", example = "Treasury bills")
@JsonProperty
public String fullName;
@ApiModelProperty(value = "Наименование инструмента ISIN", example = "AFLT")
@JsonProperty
public String isin;
@ApiModelProperty(value = "Код типа акции", example = "S")
@JsonProperty
public String shareType;
@ApiModelProperty(value = "Размер лота", example = "300.5")
@JsonProperty
public BigDecimal lotSize;
@ApiModelProperty(value = "Наименование эмитента (company)", example = "123")
@JsonProperty
public Long issuerId;
@ApiModelProperty(value = "Краткое наименование инструмента на английском", example = "Aero LLC")
@JsonProperty
public String shortNameEng;
@ApiModelProperty(value = "Полное наименование инструмента на английском", example = "Aero floating Limited local Company")
@JsonProperty
public String fullNameEng;
@ApiModelProperty(value = "Наименование статуса", example = "ACTV")
@JsonProperty
public String workflowStatus;
@ApiModelProperty(value = "Наименование типа инструмента", example = "EQTY")
@JsonProperty
public String instrumentType;
@Override
public Collection<EnumMessage> validate() {
List<EnumMessage> errors = new ArrayList<>();
if (TextUtil.isEmpty(shortName))
errors.add(new EnumMessage(BackEndError.ValidationError, "shortName"));
if (TextUtil.isEmpty(securitySymbol))
errors.add(new EnumMessage(BackEndError.ValidationError, "securitySymbol"));
if (lotSize == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "lotSize"));
if (TextUtil.isEmpty(instrumentType))
errors.add(new EnumMessage(BackEndError.ValidationError, "instrumentType"));
return errors.size() > 0 ? errors : Collections.emptyList();
}
@Override
public EquitySecurityNewRequest toRequest() {
var req = new EquitySecurityNewRequest();
req.setSecuritySymbol(this.getSecuritySymbol());
req.setShortName(this.getShortName());
req.setFullName(this.getFullName());
req.setIsin(this.getIsin());
req.setShareType(this.getShareType());
req.setLotSize(this.getLotSize());
req.setIssuerId(this.getIssuerId());
req.setShortNameEng(this.getShortNameEng());
req.setFullNameEng(this.getFullNameEng());
req.setWorkflowStatus(this.getWorkflowStatus());
req.setInstrumentType(this.getInstrumentType());
return req;
}
@ApiModelProperty(hidden = true)
@Override
public ActionType getActionType() {
return ActionType.NEW;
}
@Override
public String getSecuritySymbol() {
return securitySymbol;
}
public void setSecuritySymbol(String securitySymbol) {
this.securitySymbol = securitySymbol;
}
public String getShortName() {
return shortName;
}
public void setShortName(String shortName) {
this.shortName = shortName;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public String getIsin() {
return isin;
}
public void setIsin(String isin) {
this.isin = isin;
}
public String getShareType() {
return shareType;
}
public void setShareType(String shareType) {
this.shareType = shareType;
}
public BigDecimal getLotSize() {
return lotSize;
}
public void setLotSize(BigDecimal lotSize) {
this.lotSize = lotSize;
}
public Long getIssuerId() {
return issuerId;
}
public void setIssuerId(Long issuerId) {
this.issuerId = issuerId;
}
public String getShortNameEng() {
return shortNameEng;
}
public void setShortNameEng(String shortNameEng) {
this.shortNameEng = shortNameEng;
}
public String getFullNameEng() {
return fullNameEng;
}
public void setFullNameEng(String fullNameEng) {
this.fullNameEng = fullNameEng;
}
public String getWorkflowStatus() {
return workflowStatus;
}
public void setWorkflowStatus(String workflowStatus) {
this.workflowStatus = workflowStatus;
}
public String getInstrumentType() {
return instrumentType;
}
public void setInstrumentType(String instrumentType) {
this.instrumentType = instrumentType;
}
}

View file

@ -0,0 +1,184 @@
package ru.spcex.clearing.backendapi.controller.request.cud.securities;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.backendapi.errors.BackEndError;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityUpdateRequest;
import ru.spcex.platform.classes.base.interfaces.WithSecuritySymbol;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
public class EquitySecurityUpdateAction implements IAction<EquitySecurityUpdateRequest>, WithSecuritySymbol {
@ApiModelProperty(hidden = true)
@JsonProperty
public Long id;
@ApiModelProperty(value = "Код инструмента", example = "ABSDEFJ")
@JsonProperty
public String securitySymbol;
@ApiModelProperty(value = "Краткое наименование инструмента", example = "ABSDE")
@JsonProperty
public String shortName;
@ApiModelProperty(value = "Полное наименование инструмента", example = "Treasury bills")
@JsonProperty
public String fullName;
@ApiModelProperty(value = "Наименование инструмента ISIN", example = "AFLT")
@JsonProperty
public String isin;
@ApiModelProperty(value = "Код типа акции", example = "S")
@JsonProperty
public String shareType;
@ApiModelProperty(value = "Размер лота", example = "300.5")
@JsonProperty
public BigDecimal lotSize;
@ApiModelProperty(value = "Наименование эмитента (company)", example = "123")
@JsonProperty
public Long issuerId;
@ApiModelProperty(value = "Краткое наименование инструмента на английском", example = "Aero LLC")
@JsonProperty
public String shortNameEng;
@ApiModelProperty(value = "Полное наименование инструмента на английском", example = "Aero floating Limited local Company")
@JsonProperty
public String fullNameEng;
@ApiModelProperty(value = "Наименование статуса", example = "ACTV")
@JsonProperty
public String workflowStatus;
@ApiModelProperty(value = "Наименование типа инструмента", example = "EQTY")
@JsonProperty
public String instrumentType;
@Override
public Collection<EnumMessage> validate() {
List<EnumMessage> errors = new ArrayList<>();
if (id == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "id"));
return errors.size() > 0 ? errors : Collections.emptyList();
}
@Override
public EquitySecurityUpdateRequest toRequest() {
var req = new EquitySecurityUpdateRequest();
req.setId(this.getId());
req.setSecuritySymbol(this.getSecuritySymbol());
req.setShortName(this.getShortName());
req.setFullName(this.getFullName());
req.setIsin(this.getIsin());
req.setShareType(this.getShareType());
req.setLotSize(this.getLotSize());
req.setIssuerId(this.getIssuerId());
req.setShortNameEng(this.getShortNameEng());
req.setFullNameEng(this.getFullNameEng());
req.setWorkflowStatus(this.getWorkflowStatus());
req.setInstrumentType(this.getInstrumentType());
return req;
}
@ApiModelProperty(hidden = true)
@Override
public ActionType getActionType() {
return ActionType.UPDATE;
}
@Override
public String getSecuritySymbol() {
return securitySymbol;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public void setSecuritySymbol(String securitySymbol) {
this.securitySymbol = securitySymbol;
}
public String getShortName() {
return shortName;
}
public void setShortName(String shortName) {
this.shortName = shortName;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public String getIsin() {
return isin;
}
public void setIsin(String isin) {
this.isin = isin;
}
public String getShareType() {
return shareType;
}
public void setShareType(String shareType) {
this.shareType = shareType;
}
public BigDecimal getLotSize() {
return lotSize;
}
public void setLotSize(BigDecimal lotSize) {
this.lotSize = lotSize;
}
public Long getIssuerId() {
return issuerId;
}
public void setIssuerId(Long issuerId) {
this.issuerId = issuerId;
}
public String getShortNameEng() {
return shortNameEng;
}
public void setShortNameEng(String shortNameEng) {
this.shortNameEng = shortNameEng;
}
public String getFullNameEng() {
return fullNameEng;
}
public void setFullNameEng(String fullNameEng) {
this.fullNameEng = fullNameEng;
}
public String getWorkflowStatus() {
return workflowStatus;
}
public void setWorkflowStatus(String workflowStatus) {
this.workflowStatus = workflowStatus;
}
public String getInstrumentType() {
return instrumentType;
}
public void setInstrumentType(String instrumentType) {
this.instrumentType = instrumentType;
}
}

View file

@ -0,0 +1,246 @@
package ru.spcex.clearing.backendapi.controller.request.cud.securities;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.backendapi.errors.BackEndError;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeSecurityNewRequest;
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
import ru.spcex.platform.classes.base.interfaces.WithSecuritySymbol;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.text.TextUtil;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
public class FixedIncomeSecurityNewAction implements IAction<FixedIncomeSecurityNewRequest>, WithSecuritySymbol {
@ApiModelProperty(value = "Код инструмента", example = "ABSDEFJ")
@JsonProperty
public String securitySymbol;
@ApiModelProperty(value = "Краткое наименование инструмента", example = "ABSDE")
@JsonProperty
public String shortName;
@ApiModelProperty(value = "Полное наименование инструмента", example = "Treasury bills")
@JsonProperty
public String fullName;
@ApiModelProperty(value = "Наименование инструмента ISIN", example = "AFLT")
@JsonProperty
public String isin;
@ApiModelProperty(value = "Код типа облигации", example = "AFLT")
@JsonProperty
public String bondType;
@ApiModelProperty(value = "Размер лота", example = "300.5")
@JsonProperty
public BigDecimal lotSize;
@ApiModelProperty(value = "Номинал", example = "200.5")
@JsonProperty
public BigDecimal nominalValue;
@ApiModelProperty(value = "Наименование валюты номинала", example = "RUB")
@JsonProperty
public String nominalCurrency;
@ApiModelProperty(value = "Дата погашения", example = "2022-02-21")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "Europe/Moscow")
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonProperty
public LocalDate maturityDate;
@ApiModelProperty(value = "Купон", example = "310.5")
@JsonProperty
public BigDecimal coupon;
@ApiModelProperty(value = "Длительность купона", example = "4")
@JsonProperty
public Long couponFrequency;
@ApiModelProperty(value = "Наименование эмитента", example = "1000")
@JsonProperty
public Long issuerId;
@ApiModelProperty(value = "Краткое наименование инструмента на английском", example = "Short LLT")
@JsonProperty
public String shortNameEng;
@ApiModelProperty(value = "Полное наименование инструмента на английском", example = "True short name Limited Lumia Technology LLT")
@JsonProperty
public String fullNameEng;
@ApiModelProperty(value = "Наименование статуса", example = "ACTV")
@JsonProperty
public String workflowStatus;
@ApiModelProperty(value = "Наименование типа инструмента", example = "EQTY")
@JsonProperty
public String instrumentType;
@Override
public Collection<EnumMessage> validate() {
List<EnumMessage> errors = new ArrayList<>();
if (TextUtil.isEmpty(securitySymbol))
errors.add(new EnumMessage(BackEndError.ValidationError, "securitySymbol"));
if (TextUtil.isEmpty(shortName))
errors.add(new EnumMessage(BackEndError.ValidationError, "shortName"));
if (lotSize == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "lotSize"));
if (TextUtil.isEmpty(instrumentType))
errors.add(new EnumMessage(BackEndError.ValidationError, "instrumentType"));
return errors.size() > 0 ? errors : Collections.emptyList();
}
@Override
public FixedIncomeSecurityNewRequest toRequest() {
var req = new FixedIncomeSecurityNewRequest();
req.setSecuritySymbol(this.getSecuritySymbol());
req.setShortName(this.getShortName());
req.setFullName(this.getFullName());
req.setIsin(this.getIsin());
req.setBondType(this.getBondType());
req.setLotSize(this.getLotSize());
req.setNominalValue(this.getNominalValue());
req.setNominalCurrency(this.getNominalCurrency());
req.setMaturityDate(this.getMaturityDate());
req.setCoupon(this.getCoupon());
req.setCouponFrequency(this.getCouponFrequency());
req.setIssuerId(this.getIssuerId());
req.setShortNameEng(this.getShortNameEng());
req.setFullNameEng(this.getFullNameEng());
req.setWorkflowStatus(this.getWorkflowStatus());
req.setInstrumentType(this.getInstrumentType());
return req;
}
@ApiModelProperty(hidden = true)
@Override
public ActionType getActionType() {
return ActionType.NEW;
}
@Override
public String getSecuritySymbol() {
return securitySymbol;
}
public void setSecuritySymbol(String securitySymbol) {
this.securitySymbol = securitySymbol;
}
public String getShortName() {
return shortName;
}
public void setShortName(String shortName) {
this.shortName = shortName;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public String getIsin() {
return isin;
}
public void setIsin(String isin) {
this.isin = isin;
}
public String getBondType() {
return bondType;
}
public void setBondType(String bondType) {
this.bondType = bondType;
}
public BigDecimal getLotSize() {
return lotSize;
}
public void setLotSize(BigDecimal lotSize) {
this.lotSize = lotSize;
}
public BigDecimal getNominalValue() {
return nominalValue;
}
public void setNominalValue(BigDecimal nominalValue) {
this.nominalValue = nominalValue;
}
public String getNominalCurrency() {
return nominalCurrency;
}
public void setNominalCurrency(String nominalCurrency) {
this.nominalCurrency = nominalCurrency;
}
public LocalDate getMaturityDate() {
return maturityDate;
}
public void setMaturityDate(LocalDate maturityDate) {
this.maturityDate = maturityDate;
}
public BigDecimal getCoupon() {
return coupon;
}
public void setCoupon(BigDecimal coupon) {
this.coupon = coupon;
}
public Long getCouponFrequency() {
return couponFrequency;
}
public void setCouponFrequency(Long couponFrequency) {
this.couponFrequency = couponFrequency;
}
public Long getIssuerId() {
return issuerId;
}
public void setIssuerId(Long issuerId) {
this.issuerId = issuerId;
}
public String getShortNameEng() {
return shortNameEng;
}
public void setShortNameEng(String shortNameEng) {
this.shortNameEng = shortNameEng;
}
public String getFullNameEng() {
return fullNameEng;
}
public void setFullNameEng(String fullNameEng) {
this.fullNameEng = fullNameEng;
}
public String getWorkflowStatus() {
return workflowStatus;
}
public void setWorkflowStatus(String workflowStatus) {
this.workflowStatus = workflowStatus;
}
public String getInstrumentType() {
return instrumentType;
}
public void setInstrumentType(String instrumentType) {
this.instrumentType = instrumentType;
}
}

View file

@ -0,0 +1,251 @@
package ru.spcex.clearing.backendapi.controller.request.cud.securities;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.backendapi.errors.BackEndError;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeSecurityUpdateRequest;
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
import ru.spcex.platform.classes.base.interfaces.WithSecuritySymbol;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
public class FixedIncomeSecurityUpdateAction implements IAction<FixedIncomeSecurityUpdateRequest>, WithSecuritySymbol {
@ApiModelProperty(hidden = true)
@JsonProperty
public Long id;
@ApiModelProperty(value = "Код инструмента", example = "ABSDEFJ")
@JsonProperty
public String securitySymbol;
@ApiModelProperty(value = "Краткое наименование инструмента", example = "ABSDE")
@JsonProperty
public String shortName;
@ApiModelProperty(value = "Полное наименование инструмента", example = "Treasury bills")
@JsonProperty
public String fullName;
@ApiModelProperty(value = "Наименование инструмента ISIN", example = "AFLT")
@JsonProperty
public String isin;
@ApiModelProperty(value = "Код типа облигации", example = "AFLT")
@JsonProperty
public String bondType;
@ApiModelProperty(value = "Размер лота", example = "300.5")
@JsonProperty
public BigDecimal lotSize;
@ApiModelProperty(value = "Номинал", example = "200.5")
@JsonProperty
public BigDecimal nominalValue;
@ApiModelProperty(value = "Наименование валюты номинала", example = "RUB")
@JsonProperty
public String nominalCurrency;
@ApiModelProperty(value = "Дата погашения", example = "2022-02-21")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "Europe/Moscow")
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonProperty
public LocalDate maturityDate;
@ApiModelProperty(value = "Купон", example = "310.5")
@JsonProperty
public BigDecimal coupon;
@ApiModelProperty(value = "Длительность купона", example = "4")
@JsonProperty
public Long couponFrequency;
@ApiModelProperty(value = "Наименование эмитента", example = "1000")
@JsonProperty
public Long issuerId;
@ApiModelProperty(value = "Краткое наименование инструмента на английском", example = "Short LLT")
@JsonProperty
public String shortNameEng;
@ApiModelProperty(value = "Полное наименование инструмента на английском", example = "True short name Limited Lumia Technology LLT")
@JsonProperty
public String fullNameEng;
@ApiModelProperty(value = "Наименование статуса", example = "ACTV")
@JsonProperty
public String workflowStatus;
@ApiModelProperty(value = "Наименование типа инструмента", example = "EQTY")
@JsonProperty
public String instrumentType;
@Override
public Collection<EnumMessage> validate() {
List<EnumMessage> errors = new ArrayList<>();
if (id == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "id"));
return errors.size() > 0 ? errors : Collections.emptyList();
}
@Override
public FixedIncomeSecurityUpdateRequest toRequest() {
var req = new FixedIncomeSecurityUpdateRequest();
req.setId(this.getId());
req.setSecuritySymbol(this.getSecuritySymbol());
req.setShortName(this.getShortName());
req.setFullName(this.getFullName());
req.setIsin(this.getIsin());
req.setBondType(this.getBondType());
req.setLotSize(this.getLotSize());
req.setNominalValue(this.getNominalValue());
req.setNominalCurrency(this.getNominalCurrency());
req.setMaturityDate(this.getMaturityDate());
req.setCoupon(this.getCoupon());
req.setCouponFrequency(this.getCouponFrequency());
req.setIssuerId(this.getIssuerId());
req.setShortNameEng(this.getShortNameEng());
req.setFullNameEng(this.getFullNameEng());
req.setWorkflowStatus(this.getWorkflowStatus());
req.setInstrumentType(this.getInstrumentType());
return req;
}
@ApiModelProperty(hidden = true)
@Override
public ActionType getActionType() {
return ActionType.UPDATE;
}
@Override
public String getSecuritySymbol() {
return securitySymbol;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public void setSecuritySymbol(String securitySymbol) {
this.securitySymbol = securitySymbol;
}
public String getShortName() {
return shortName;
}
public void setShortName(String shortName) {
this.shortName = shortName;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public String getIsin() {
return isin;
}
public void setIsin(String isin) {
this.isin = isin;
}
public String getBondType() {
return bondType;
}
public void setBondType(String bondType) {
this.bondType = bondType;
}
public BigDecimal getLotSize() {
return lotSize;
}
public void setLotSize(BigDecimal lotSize) {
this.lotSize = lotSize;
}
public BigDecimal getNominalValue() {
return nominalValue;
}
public void setNominalValue(BigDecimal nominalValue) {
this.nominalValue = nominalValue;
}
public String getNominalCurrency() {
return nominalCurrency;
}
public void setNominalCurrency(String nominalCurrency) {
this.nominalCurrency = nominalCurrency;
}
public LocalDate getMaturityDate() {
return maturityDate;
}
public void setMaturityDate(LocalDate maturityDate) {
this.maturityDate = maturityDate;
}
public BigDecimal getCoupon() {
return coupon;
}
public void setCoupon(BigDecimal coupon) {
this.coupon = coupon;
}
public Long getCouponFrequency() {
return couponFrequency;
}
public void setCouponFrequency(Long couponFrequency) {
this.couponFrequency = couponFrequency;
}
public Long getIssuerId() {
return issuerId;
}
public void setIssuerId(Long issuerId) {
this.issuerId = issuerId;
}
public String getShortNameEng() {
return shortNameEng;
}
public void setShortNameEng(String shortNameEng) {
this.shortNameEng = shortNameEng;
}
public String getFullNameEng() {
return fullNameEng;
}
public void setFullNameEng(String fullNameEng) {
this.fullNameEng = fullNameEng;
}
public String getWorkflowStatus() {
return workflowStatus;
}
public void setWorkflowStatus(String workflowStatus) {
this.workflowStatus = workflowStatus;
}
public String getInstrumentType() {
return instrumentType;
}
public void setInstrumentType(String instrumentType) {
this.instrumentType = instrumentType;
}
}

View file

@ -49,26 +49,31 @@ public class MoneyMarketSecurityNewAction implements IAction<MoneyMarketSecurity
@ApiModelProperty(value = "Размер лота", example = "300.5")
@JsonProperty
public BigDecimal lotSize;
@ApiModelProperty(value = "Краткое наименование инструмента", example = "ABSDE")
@JsonProperty
public String shortName;
@Override
public Collection<EnumMessage> validate() {
List<EnumMessage> errors = new ArrayList<>();
if (this.startDate == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "startDate"));
if (this.endDate == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "endDate"));
if (TextUtil.isEmpty(securitySymbol))
errors.add(new EnumMessage(BackEndError.ValidationError, "securitySymbol"));
if (TextUtil.isEmpty(shortName))
errors.add(new EnumMessage(BackEndError.ValidationError, "shortName"));
if (this.lotSize == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "lotSize"));
if (this.nominalValue == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "nominalValue"));
if (TextUtil.isEmpty(nominalCurrency))
errors.add(new EnumMessage(BackEndError.ValidationError, "nominalCurrency"));
if (this.startDate == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "startDate"));
if (this.endDate == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "endDate"));
// if (this.termType == null)
// errors.add(new EnumMessage(BackEndError.ValidationError, "termType"));
if (TextUtil.isEmpty(instrumentType))
errors.add(new EnumMessage(BackEndError.ValidationError, "instrumentType"));
if (TextUtil.isEmpty(fullName))
errors.add(new EnumMessage(BackEndError.ValidationError, "fullName"));
if (TextUtil.isEmpty(securitySymbol))
errors.add(new EnumMessage(BackEndError.ValidationError, "securitySymbol"));
if (this.lotSize == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "lotSize"));
return errors.size() > 0 ? errors : Collections.emptyList();
}
@ -83,6 +88,7 @@ public class MoneyMarketSecurityNewAction implements IAction<MoneyMarketSecurity
req.setFullName(this.getFullName());
req.setSecuritySymbol(this.getSecuritySymbol());
req.setLotSize(this.getLotSize());
req.setShortName(this.getShortName());
return req;
}
@ -155,4 +161,12 @@ public class MoneyMarketSecurityNewAction implements IAction<MoneyMarketSecurity
public void setLotSize(BigDecimal lotSize) {
this.lotSize = lotSize;
}
public String getShortName() {
return shortName;
}
public void setShortName(String shortName) {
this.shortName = shortName;
}
}

View file

@ -11,7 +11,6 @@ import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSe
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
import ru.spcex.platform.classes.base.interfaces.WithId;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.text.TextUtil;
import java.math.BigDecimal;
import java.time.LocalDate;
@ -49,6 +48,9 @@ public class MoneyMarketSecurityUpdateAction implements IAction<MoneyMarketSecur
@ApiModelProperty(value = "Размер лота", example = "300.5")
@JsonProperty
public BigDecimal lotSize;
@ApiModelProperty(value = "Краткое наименование инструмента", example = "ABSDE")
@JsonProperty
public String shortName;
@Override
public MoneyMarketSecurityUpdateRequest toRequest() {
@ -61,26 +63,15 @@ public class MoneyMarketSecurityUpdateAction implements IAction<MoneyMarketSecur
req.setInstrumentType(this.getInstrumentType());
req.setFullName(this.getFullName());
req.setLotSize(this.getLotSize());
req.setShortName(this.getShortName());
return req;
}
@Override
public Collection<EnumMessage> validate() {
List<EnumMessage> errors = new ArrayList<>();
if (this.startDate == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "startDate"));
if (this.endDate == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "endDate"));
if (this.nominalValue == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "nominalValue"));
if (TextUtil.isEmpty(nominalCurrency))
errors.add(new EnumMessage(BackEndError.ValidationError, "nominalCurrency"));
if (TextUtil.isEmpty(instrumentType))
errors.add(new EnumMessage(BackEndError.ValidationError, "instrumentType"));
if (TextUtil.isEmpty(fullName))
errors.add(new EnumMessage(BackEndError.ValidationError, "fullName"));
if (this.lotSize == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "lotSize"));
if (this.id == null)
errors.add(new EnumMessage(BackEndError.ValidationError, "id"));
return errors.size() > 0 ? errors : Collections.emptyList();
}
@ -154,4 +145,12 @@ public class MoneyMarketSecurityUpdateAction implements IAction<MoneyMarketSecur
public void setStartDate(LocalDate startDate) {
this.startDate = startDate;
}
public String getShortName() {
return shortName;
}
public void setShortName(String shortName) {
this.shortName = shortName;
}
}

View file

@ -60,13 +60,8 @@ public class CompanyBackendGetAll extends BasicSpcexResponse {
singleItem.setLegalKind(profile.getLegalKind());
singleItem.setOrganizationType(profile.getOrganizationType());
singleItem.setResidence(profile.getResidence());
singleItem.setShortName(profile.getShortName());
singleItem.setFullName(profile.getFullName());
singleItem.setShortNameEng(profile.getShortNameEng());
singleItem.setFullNameEng(profile.getFullNameEng());
singleItem.setTradingCode(profile.getTradingCode());
singleItem.setClearingCode(profile.getClearingCode());
singleItem.setRegistrationCode(profile.getRegistrationCode());
}
payload.getItems().add(singleItem);
}

View file

@ -50,13 +50,8 @@ public class CompanyBackendInfoGetAll extends BasicSpcexResponse {
singleItem.setLegalKind(companyInfo.getLegalKind());
singleItem.setOrganizationType(companyInfo.getOrganizationType());
singleItem.setResidence(companyInfo.getResidence());
singleItem.setShortName(companyInfo.getShortName());
singleItem.setFullName(companyInfo.getFullName());
singleItem.setShortNameEng(companyInfo.getShortNameEng());
singleItem.setFullNameEng(companyInfo.getFullNameEng());
singleItem.setTradingCode(companyInfo.getTradingCode());
singleItem.setClearingCode(companyInfo.getClearingCode());
singleItem.setRegistrationCode(companyInfo.getRegistrationCode());
payload.getItems().add(singleItem);
}
}

View file

@ -24,4 +24,10 @@ public class ActionValidationException extends RuntimeException {
public Collection<EnumMessage> getErrors() {
return errors;
}
@Override
public String toString() {
return "ActionValidationException{message:" + getMessage() +
", errors=" + errors + "}";
}
}

View file

@ -7,4 +7,17 @@ import java.util.concurrent.ExecutionException;
public interface IOperator {
QueueSuccessResponse sendRequestToQueue(String destination, IAction<?> iAction, boolean appendUserId) throws ExecutionException, InterruptedException;
/**
* Для оптимизации проставления userId.
* Аналог sendRequestToQueue(String destination, IAction<?> iAction, true)
*
* @param destination
* @param iAction
* @param userId совершивший запрос
* @return
* @throws ExecutionException
* @throws InterruptedException
*/
QueueSuccessResponse sendRequestToQueue(String destination, IAction<?> iAction, Long userId) throws ExecutionException, InterruptedException;
}

View file

@ -25,6 +25,7 @@ import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgId;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.log.ExceptionUtils;
import ru.spcex.platform.utils.validation.IValidator;
import java.util.Collection;
@ -80,6 +81,25 @@ public class OperatorImpl implements IOperator {
return new QueueSuccessResponse(request.getActionType(), request.getId());
}
@Override
public QueueSuccessResponse sendRequestToQueue(String destination, IAction<?> iAction, Long userId) throws ExecutionException, InterruptedException {
throwValidate(destination, iAction);
BaseRequest<Object> request = new BaseRequest<>();
request.setId(idGenerator.nextId());
request.setActionType(iAction.getActionType());
request.setRequestPayload(iAction.toRequest());
if (userId == null) {
log.warn("userId not set, Stacktrace: {}", ExceptionUtils.getStackTrace(new IllegalArgumentException("Empty userId")));
} else {
request.setUserId(userId);
}
//сохраняет данные о запросе в хранилище
saveRequestToStorage(destination, request);
Future<RecordMetadata> send = kafka.send(new ProducerRecord<>(destination, request));
send.get();
return new QueueSuccessResponse(request.getActionType(), request.getId());
}
private void saveRequestToStorage(String destination, BaseRequest<Object> request) {
Imdg<RequestInfo> requestStorage = imdgProvider.getImdg(IMDGDistributedNames.Map_RequestInfo, RequestInfo.class);
RequestInfo requestInfo = RequestInfo.create(request.getId());

View file

@ -1,230 +1,245 @@
<?xml version="1.0" encoding="UTF-8"?>
<meta version="3.5.0.2">
<meta version="3.5.0.3">
<enums>
<allowed id="1" code="ALWD" name="Разрешено" part="1"/>
<allowed id="2" code="DEND" name="Запрещено" part="1"/>
<workflowStatus id="1" code="ACTV" name="Активен" part="1"/>
<workflowStatus id="2" code="BLKD" name="Не активен" part="1"/>
<countryCode id="1" code="RUS" name="Россия" part="1"/>
<section id="1" code="MKR" name="Секция Денежного рынка МКР" part="1"/>
<section id="2" code="FOND" name="Фондовая секция" part="1"/>
<userRole id="1" code="ADMN" name="Администратор Клиринга МКР" part="1"/>
<userRole id="2" code="SPVS" name="Супервайзер Клиринга МКР" part="1"/>
<userRole id="3" code="SCRT" name="Администратор безопасности Клиринга МКР" part="1"/>
<connectionState id="1" code="CNCT" name="Подключен" part="1"/>
<connectionState id="2" code="DSBL" name="Отключен" part="1"/>
<legalKind id="1" code="JURD" name="Юридическое лицо" part="1"/>
<legalKind id="2" code="PHYS" name="Физическое лицо" part="1"/>
<organizationType id="1" code="CRED" name="Кредитная" part="1"/>
<organizationType id="2" code="NCRD" name="Некредитная" part="1"/>
<corporationSoleType id="1" code="PRSD" name="Президент" part="1"/>
<corporationSoleType id="2" code="GDIR" name="Генеральный директор" part="1"/>
<corporationSoleType id="3" code="CMAN" name="Председатель правления" part="1"/>
<corporationSoleType id="4" code="MGNT" name="Управляющая компания" part="1"/>
<corporationSoleType id="5" code="OTHR" name="Другой" part="1"/>
<clearingCategory id="1" code="C" name="Категория «Ц» - Банк России" part="1"/>
<clearingCategory id="2" code="B" name="Категория «Б» - Кредитная организация ДР" part="1"/>
<clearingCategory id="3" code="F" name="Категория «Ф» - Участник рынка РЦБ" part="1"/>
<clearingCategory id="4" code="I" name="Категория «И» - Инициатор по ТБС" part="1"/>
<clearingCategory id="5" code="V" name="Категория «В» - Инициатор по ТКС" part="1"/>
<clearingCategory id="6" code="T" name="Категория «Т» - Участник товарного рынка" part="1"/>
<clearingCategory id="7" code="K" name="Категория «К» - Участник клиринга - Контроллер" part="1"/>
<contactType id="1" code="ADRS" name="Адрес" part="1"/>
<contactType id="2" code="POST" name="Почтовый адрес" part="1"/>
<contactType id="3" code="CONT" name="Контактное лицо" part="1"/>
<contactType id="4" code="MAIL" name="Электронная почта" part="1"/>
<contactType id="5" code="PHON" name="Телефон" part="1"/>
<contactType id="6" code="GDIR" name="Генеральный директор" part="1"/>
<contactType id="7" code="TRST" name="Доверенное лицо" part="1"/>
<contactType id="8" code="FAX" name="Факс" part="1"/>
<contactType id="9" code="INFO" name="Контактная информация" part="1"/>
<contactType id="10" code="CMNT" name="Примечание" part="1"/>
<documentType id="1" code="PASP" name="Паспорт" part="1"/>
<documentType id="2" code="ICRT" name="Удостоверение личности" part="1"/>
<documentType id="3" code="PRXY" name="Доверенность" part="1"/>
<documentType id="4" code="CNTR" name="Договор клиринга" part="1"/>
<documentType id="5" code="REGS" name="Регистрация" part="1"/>
<documentType id="6" code="FORM" name="Анкета участника" part="1"/>
<documentType id="7" code="OGRN" name="ОГРН" part="1"/>
<documentType id="8" code="LICB" name="Банковская лицензия" part="1"/>
<documentType id="9" code="LICP" name="Лицензия проф. участника" part="1"/>
<documentType id="10" code="PLAC" name="Регистрация по месту пребывания" part="1"/>
<documentType id="11" code="INN" name="ИНН" part="1"/>
<documentType id="12" code="CIO" name="КИО" part="1"/>
<documentType id="13" code="LICR" name="Брокерская лицензия" part="1"/>
<documentType id="14" code="FIN" name="Финансовая отчетность" part="1"/>
<documentType id="15" code="TRST" name="Полномочия должностных лиц" part="1"/>
<documentType id="16" code="PMKR" name="Распоряжение на списание МКР" part="1"/>
<documentType id="17" code="TAUT" name="Допуск к торгам" part="1"/>
<documentType id="18" code="EDOC" name="Договор об электронном взаимодействии" part="1"/>
<documentType id="19" code="XCNT" name="Документ о расторжении Договора клиринга" part="1"/>
<documentType id="20" code="LICD" name="Документ о дилерской лицензии" shortname="Дилерская деятельность" part="1"/>
<documentType id="21" code="LICT" name="Документ о лицензии по управлению ЦБ" shortname="Управление ценными бумагами" part="1"/>
<documentType id="22" code="LICС" name="Документ о лицензии по брокерской деятельности ПФИ (производных финансовых инструментов)" shortname="Брокерская деятельность ПФИ" part="1"/>
<documentType id="23" code="LICF" name="Документ о лицензии форекс-дилера" shortname="Деятельность форекс-дилера" part="1"/>
<companySymbol id="1" code="OCVD" name="Общероссийский классификатор видов экономической деятельности" shortname="ОКВЭД" part="1"/>
<companySymbol id="2" code="INN" name="Индивидуальный налоговый номер" shortname="ИНН" part="1"/>
<companySymbol id="3" code="CPP" name="Код причины постановки" shortname="КПП" part="1"/>
<companySymbol id="4" code="OCPO" name="Общероссийский классификатор предприятий и организаций" shortname="ОКПО" part="1"/>
<companySymbol id="5" code="LICP" name="Номер лицензии профессионального участника по брокерской деятельности" shortname="Профессиональная деятельность на рынке ценных бумаг" part="1"/>
<companySymbol id="6" code="LICB" name="Номер банковской лицензии" shortname="Банковская деятельность" part="1"/>
<companySymbol id="7" code="BIC" name="Банковский идентификационный код" shortname="БИК" part="1"/>
<companySymbol id="8" code="OGRN" name="Основной государственный регистрационный номер" shortname="ОГРН" part="1"/>
<companySymbol id="9" code="CIO" name="Код иностранной организации" shortname="КИО" part="1"/>
<companySymbol id="10" code="LICD" name="Номер дилерской лицензии" shortname="Дилерская деятельность" part="1"/>
<companySymbol id="11" code="LICT" name="Номер лицензии по управлению ЦБ" shortname="Управление ценными бумагами" part="1"/>
<companySymbol id="12" code="LICС" name="Номер лицензии по брокерской деятельности ПФИ (производных финансовых инструментов)" shortname="Брокерская деятельность ПФИ" part="1"/>
<companySymbol id="13" code="LICF" name="Номер лицензии форекс-дилера" shortname="Деятельность форекс-дилера" part="1"/>
<companySymbol id="14" code="LICR" name="Номер брокерской лицензии" shortname="Брокерская деятельность" part="1"/>
<companySymbol id="15" code="TRDC" name="Код участника торгов" shortname="Биржевой код" part="1"/>
<companySymbol id="16" code="CLRC" name="Код участника клиринга" shortname="Клиринговый код" part="1"/>
<companySymbol id="17" code="RGRC" name="Регистрационный код участника" shortname="Регистрационный код" part="1"/>
<companySymbol id="18" code="UUID" name="Идентификатор во внешней системе" shortname="Внешний идентификатор" part="1"/>
<companyRole id="1" code="RPRT" name="Отчетная организация" part="1"/>
<companyRole id="2" code="CLRH" name="Клиринговая организация" part="1"/>
<companyRole id="3" code="EXCH" name="Торговая система" part="1"/>
<companyRole id="4" code="SETH" name="Расчетный центр" part="1"/>
<companyRole id="5" code="DEPS" name="Депозитарий" part="1"/>
<companyRole id="6" code="CLRM" name="Участник клиринга" part="1"/>
<currencyCode id="643" code="RUB" name="Российский рубль" part="1"/>
<instrumentType id="1" code="RATE" name="Инструмент Денежного рынка" part="1"/>
<instrumentType id="2" code="CRNC" name="Валюта" part="1"/>
<instrumentType id="3" code="EQTY" name="Акция" part="1"/>
<instrumentType id="4" code="BOND" name="Облигация" part="1"/>
<instrumentType id="5" code="MFND" name="ПАИ" part="1"/>
<termType id="1" code="S" name="Срочный" part="1"/>
<termType id="2" code="K" name="Комбинированный" part="1"/>
<termType id="3" code="V" name="До востребования" part="1"/>
<shareType id="1" code="S" name="Обыкновенная акция" part="1"/>
<shareType id="2" code="P" name="Привилегированная акция" part="1"/>
<bondType id="1" code="Z" name="Дисконтная облигация" part="1"/>
<bondType id="2" code="F" name="Купонная облигация с постоянным купоном" part="1"/>
<bondType id="3" code="V" name="Купонная облигация с переменным купоном" part="1"/>
<bondType id="4" code="C" name="Купонная облигация Банка России" part="1"/>
<bondType id="5" code="E" name="Биржевая облигация" part="1"/>
<bondType id="6" code="I" name="Облигации с индексированным номиналом" part="1"/>
<bondType id="7" code="M" name="Облигации с амортизацией долга" part="1"/>
<allowed id="1" code="ALWD" name="Разрешено"/>
<allowed id="2" code="DEND" name="Запрещено"/>
<workflowStatus id="1" code="ACTV" name="Активен"/>
<workflowStatus id="2" code="BLKD" name="Не активен"/>
<countryCode id="1" code="RUS" name="Россия"/>
<section id="1" code="MKR" name="Секция Денежного рынка МКР"/>
<section id="2" code="FOND" name="Фондовая секция"/>
<userRole id="1" code="ADMN" name="Администратор Клиринга МКР"/>
<userRole id="2" code="SPVS" name="Супервайзер Клиринга МКР"/>
<userRole id="3" code="SCRT" name="Администратор безопасности Клиринга МКР"/>
<connectionState id="1" code="CNCT" name="Подключен"/>
<connectionState id="2" code="DSBL" name="Отключен"/>
<legalKind id="1" code="JURD" name="Юридическое лицо"/>
<legalKind id="2" code="PHYS" name="Физическое лицо"/>
<organizationType id="1" code="CRED" name="Кредитная"/>
<organizationType id="2" code="NCRD" name="Некредитная"/>
<corporationSoleType id="1" code="PRSD" name="Президент"/>
<corporationSoleType id="2" code="GDIR" name="Генеральный директор"/>
<corporationSoleType id="3" code="CMAN" name="Председатель правления"/>
<corporationSoleType id="4" code="MGNT" name="Управляющая компания"/>
<corporationSoleType id="5" code="OTHR" name="Другой"/>
<clearingCategory id="1" code="C" name="Категория «Ц» - Банк России"/>
<clearingCategory id="2" code="B" name="Категория «Б» - Кредитная организация ДР"/>
<clearingCategory id="3" code="F" name="Категория «Ф» - Участник рынка РЦБ"/>
<clearingCategory id="4" code="I" name="Категория «И» - Инициатор по ТБС"/>
<clearingCategory id="5" code="V" name="Категория «В» - Инициатор по ТКС"/>
<clearingCategory id="6" code="T" name="Категория «Т» - Участник товарного рынка"/>
<clearingCategory id="7" code="K" name="Категория «К» - Участник клиринга - Контроллер"/>
<contactType id="1" code="ADRS" name="Адрес"/>
<contactType id="2" code="POST" name="Почтовый адрес"/>
<contactType id="3" code="CONT" name="Контактное лицо"/>
<contactType id="4" code="MAIL" name="Электронная почта"/>
<contactType id="5" code="PHON" name="Телефон"/>
<contactType id="6" code="GDIR" name="Генеральный директор"/>
<contactType id="7" code="TRST" name="Доверенное лицо"/>
<contactType id="8" code="FAX" name="Факс"/>
<contactType id="9" code="INFO" name="Контактная информация"/>
<contactType id="10" code="CMNT" name="Примечание"/>
<documentType id="1" code="PASP" name="Паспорт"/>
<documentType id="2" code="ICRT" name="Удостоверение личности"/>
<documentType id="3" code="PRXY" name="Доверенность"/>
<documentType id="4" code="CNTR" name="Договор клиринга"/>
<documentType id="5" code="REGS" name="Регистрация"/>
<documentType id="6" code="FORM" name="Анкета участника"/>
<documentType id="7" code="OGRN" name="ОГРН"/>
<documentType id="8" code="LICB" name="Банковская лицензия"/>
<documentType id="9" code="LICP" name="Лицензия проф. участника"/>
<documentType id="10" code="PLAC" name="Регистрация по месту пребывания"/>
<documentType id="11" code="INN" name="ИНН"/>
<documentType id="12" code="CIO" name="КИО"/>
<documentType id="13" code="LICR" name="Брокерская лицензия"/>
<documentType id="14" code="FIN" name="Финансовая отчетность"/>
<documentType id="15" code="TRST" name="Полномочия должностных лиц"/>
<documentType id="16" code="PMKR" name="Распоряжение на списание МКР"/>
<documentType id="17" code="TAUT" name="Допуск к торгам"/>
<documentType id="18" code="EDOC" name="Договор об электронном взаимодействии"/>
<documentType id="19" code="XCNT" name="Документ о расторжении Договора клиринга"/>
<documentType id="20" code="LICD" name="Документ о дилерской лицензии" shortname="Дилерская деятельность"/>
<documentType id="21" code="LICT" name="Документ о лицензии по управлению ЦБ" shortname="Управление ценными бумагами"/>
<documentType id="22" code="LICС" name="Документ о лицензии по брокерской деятельности ПФИ (производных финансовых инструментов)" shortname="Брокерская деятельность ПФИ"/>
<documentType id="23" code="LICF" name="Документ о лицензии форекс-дилера" shortname="Деятельность форекс-дилера"/>
<companySymbol id="1" code="OCVD" name="Общероссийский классификатор видов экономической деятельности" shortname="ОКВЭД"/>
<companySymbol id="2" code="INN" name="Индивидуальный налоговый номер" shortname="ИНН"/>
<companySymbol id="3" code="CPP" name="Код причины постановки" shortname="КПП"/>
<companySymbol id="4" code="OCPO" name="Общероссийский классификатор предприятий и организаций" shortname="ОКПО"/>
<companySymbol id="5" code="LICP" name="Номер лицензии профессионального участника по брокерской деятельности" shortname="Профессиональная деятельность на рынке ценных бумаг"/>
<companySymbol id="6" code="LICB" name="Номер банковской лицензии" shortname="Банковская деятельность"/>
<companySymbol id="7" code="BIC" name="Банковский идентификационный код" shortname="БИК"/>
<companySymbol id="8" code="OGRN" name="Основной государственный регистрационный номер" shortname="ОГРН"/>
<companySymbol id="9" code="CIO" name="Код иностранной организации" shortname="КИО"/>
<companySymbol id="10" code="LICD" name="Номер дилерской лицензии" shortname="Дилерская деятельность"/>
<companySymbol id="11" code="LICT" name="Номер лицензии по управлению ЦБ" shortname="Управление ценными бумагами"/>
<companySymbol id="12" code="LICС" name="Номер лицензии по брокерской деятельности ПФИ (производных финансовых инструментов)" shortname="Брокерская деятельность ПФИ"/>
<companySymbol id="13" code="LICF" name="Номер лицензии форекс-дилера" shortname="Деятельность форекс-дилера"/>
<companySymbol id="14" code="LICR" name="Номер брокерской лицензии" shortname="Брокерская деятельность"/>
<companySymbol id="15" code="TRDC" name="Код участника торгов" shortname="Биржевой код"/>
<companySymbol id="16" code="CLRC" name="Код участника клиринга" shortname="Клиринговый код"/>
<companySymbol id="17" code="RGRC" name="Регистрационный код участника" shortname="Регистрационный код"/>
<companySymbol id="18" code="UUID" name="Идентификатор во внешней системе" shortname="Внешний идентификатор"/>
<companySymbol id="19" code="RDPZ" name="Требуется получение документа о подтверждении открытия депозитного счета" shortname="Подтверждение депозитного счета"/>
<companyRole id="1" code="RPRT" name="Отчетная организация"/>
<companyRole id="2" code="CLRH" name="Клиринговая организация"/>
<companyRole id="3" code="EXCH" name="Торговая система"/>
<companyRole id="4" code="SETH" name="Расчетный центр"/>
<companyRole id="5" code="DEPS" name="Депозитарий"/>
<companyRole id="6" code="CLRM" name="Участник клиринга"/>
<currencyCode id="643" code="RUB" name="Российский рубль"/>
<instrumentType id="1" code="RATE" name="Инструмент Денежного рынка"/>
<instrumentType id="2" code="CRNC" name="Валюта"/>
<instrumentType id="3" code="EQTY" name="Акция"/>
<instrumentType id="4" code="BOND" name="Облигация"/>
<instrumentType id="5" code="MFND" name="ПАИ"/>
<termType id="1" code="S" name="Срочный"/>
<termType id="2" code="K" name="Комбинированный"/>
<termType id="3" code="V" name="До востребования"/>
<shareType id="1" code="S" name="Обыкновенная акция"/>
<shareType id="2" code="P" name="Привилегированная акция"/>
<bondType id="1" code="Z" name="Дисконтная облигация"/>
<bondType id="2" code="F" name="Купонная облигация с постоянным купоном"/>
<bondType id="3" code="V" name="Купонная облигация с переменным купоном"/>
<bondType id="4" code="C" name="Купонная облигация Банка России"/>
<bondType id="5" code="E" name="Биржевая облигация"/>
<bondType id="6" code="I" name="Облигации с индексированным номиналом"/>
<bondType id="7" code="M" name="Облигации с амортизацией долга"/>
<tradingClearingRegistryType id="1" code="А" name="Владелец" part="2"/>
<tradingClearingRegistryType id="2" code="B" name="Клиентский" part="2"/>
<tradingClearingRegistryType id="3" code="С" name="Попечитель" part="2"/>
<tradingClearingRegistryType id="4" code="D" name="Доверительный управляющий" part="2"/>
<tradingClearingRegistryType id="5" code="E" name="Эмитент" part="2"/>
<tradingClearingRegistryType id="6" code="Z" name="К размещению/выкупу" part="2"/>
<tradingClearingRegistryType id="7" code="H" name="Депо по учету облигаций" part="2"/>
<tradingClearingRegistryType id="8" code="T" name="Депо по учету акций" part="2"/>
<tradingClearingRegistryType id="9" code="N" name="Депо по учету облигаций с попечителем" part="2"/>
<tradingClearingRegistryType id="10" code="S" name="Депо по учету акций с попечителем" part="2"/>
<tradingClearingRegistryLevel id="1" code="ONE" name="Первый уровень ТКР" part="2"/>
<tradingClearingRegistryLevel id="2" code="TWO" name="Второй уровень ТКР" part="2"/>
<tradingClearingRegistryPurpose id="1" code="C" name="Общий" part="2"/>
<tradingClearingRegistryPurpose id="2" code="M" name="Денежный рынок" part="2"/>
<tradingClearingRegistryPurpose id="3" code="K" name="Код ТКР второго уровня" part="2"/>
<service id="1" code="MKR" name="Денежный рынок МКР" part="2"/>
<service id="2" code="FOND" name="Фондовый рынок" part="2"/>
<serviceStatus id="1" code="ACTV" name="Активен" part="2"/>
<serviceStatus id="2" code="BLKD" name="Заблокирован" part="2"/>
<serviceStatus id="3" code="SSPD" name="Приостановлен" part="2"/>
<serviceStatus id="4" code="CLOS" name="Закрыт" part="2"/>
<serviceStatus id="5" code="ROPN" name="Возобновлен" part="2"/>
<serviceStatus id="6" code="APPL" name="Допущен к клиринговому обслуживанию" part="2"/>
<serviceProduct id="1" code="PRNT" name="Расчет обязательств с процентом" part="2"/>
<serviceProduct id="2" code="ZERO" name="Расчет обязательств без процента (по умолчанию)" part="2"/>
<registryDesignation id="1" code="L" name="Обязательства" part="2"/>
<registryDesignation id="2" code="A" name="Активы" part="2"/>
<registryDesignation id="3" code="C" name="Требования" part="2"/>
<registryDesignation id="4" code="O" name="Обязательства по сделкам в рамках формирования клирингового пула" part="2"/>
<registryDesignation id="5" code="T" name="Требования по сделкам в рамках формирования клирингового пула" part="2"/>
<registryDesignation id="6" code="D" name="Депозиты" part="2"/>
<registryInstrumentType id="1" code="M" name="Деньги" part="2"/>
<registryInstrumentType id="2" code="S" name="Бумаги" part="2"/>
<registryCapacity id="1" code="A" name="Принципал" part="2"/>
<registryCapacity id="2" code="B" name="Клиент" part="2"/>
<registryCapacity id="3" code="C" name="Попечитель" part="2"/>
<registryCapacity id="4" code="D" name="ДУ" part="2"/>
<registryCapacity id="5" code="Z" name="Размещение/Выкуп" part="2"/>
<registryCapacity id="6" code="F" name="Держатель" part="2"/>
<registryCapacity id="7" code="E" name="Эмитент" part="2"/>
<registryUnit id="1" code="T" name="Под торги" part="2"/>
<registryUnit id="2" code="F" name="Свободные" part="2"/>
<registryUnit id="3" code="B" name="Заблокированные" part="2"/>
<registryUnit id="4" code="C" name="Комиссия" part="2"/>
<registryCode id="1" code="AMPT" name="Денежные средства - на торги" part="2"/>
<registryCode id="2" code="AMPF" name="Денежные средства - свободные" part="2"/>
<registryCode id="3" code="AMPB" name="Денежные средства - блокированные" part="2"/>
<registryCode id="4" code="TMPT" name="Требования по деньгам - клиринговый пул" part="2"/>
<registryCode id="5" code="OSPT" name="Обязательства по инструментам - клиринговый пул" part="2"/>
<registryCode id="6" code="OMPT" name="Обязательства по деньгам - клиринговый пул" part="2"/>
<registryCode id="7" code="TSPT" name="Требования по инструментам - клиринговый пул" part="2"/>
<registryCode id="8" code="CMPT" name="Требования по деньгам - свои" part="2"/>
<registryCode id="9" code="LSPT" name="Обязательства по инструментам - свои" part="2"/>
<registryCode id="10" code="LMPT" name="Обязательства по деньгам - свои" part="2"/>
<registryCode id="11" code="CSPT" name="Требования по инструментам - свои" part="2"/>
<registryStatus id="1" code="OK" name="Успешно" part="2"/>
<registryStatus id="2" code="FAIL" name="Не успешно" part="2"/>
<registryStatus id="3" code="MNG" name="Не учитывать" part="2"/>
<registryStatus id="4" code="PROC" name="К клирингу" part="2"/>
<registryStatus id="5" code="LIQU" name="Ликвидационный неттинг" part="2"/>
<balanceDimension id="1" code="PICS" name="Штуки" part="2"/>
<balanceDimension id="2" code="LOTS" name="Лоты" part="2"/>
<balanceDimension id="3" code="MONY" name="Деньги" part="2"/>
<accountType id="1" code="CLRN" name="Торгово-Банковский Счет" part="2"/>
<accountType id="2" code="BANK" name="Счет вывода средств из ПРЦ" part="2"/>
<accountType id="3" code="USPD" name="Регистр невыясненных поступлений" part="2"/>
<accountType id="4" code="CORR" name="Корреспондентский счет" part="2"/>
<accountType id="5" code="INFO" name="Регистр" part="2"/>
<accountType id="6" code="PYER" name="Счет плательщика" part="2"/>
<accountType id="7" code="ANLT" name="Клиринговый-Банковский Счет" part="2"/>
<accountType id="8" code="TRAN" name="Транзакционный счет" part="2"/>
<accountType id="9" code="DEPO" name="Депозитарный счет" part="2"/>
<depoAccountType id="1" code="A" name="Счет участника" part="2"/>
<depoAccountType id="2" code="B" name="Счет клиента" part="2"/>
<depoAccountType id="3" code="C" name="Счет попечителя" part="2"/>
<depoAccountType id="4" code="D" name="Счет доверительного управляющего" part="2"/>
<depoAccountType id="5" code="Z" name="Счет к размещению/выкупу" part="2"/>
<depoAccountType id="6" code="F" name="Счет держателя" part="2"/>
<depoAccountType id="7" code="E" name="Счет эмитента" part="2"/>
<clearingAccountType id="1" code="A" name="Счет участника" part="2"/>
<clearingAccountType id="2" code="B" name="Счет клиента" part="2"/>
<task id="1" code="GBAL" name="Зачисление остатков" part="2"/>
<task id="3" code="ABLK" name="Блокировка счета" part="2"/>
<task id="4" code="GALB" name="Запрос остатков по всем счетам" part="2"/>
<task id="5" code="ADBL" name="Дозачисление/списание остатков" part="2"/>
<task id="7" code="CORD" name="Формирование сводного платежного поручения" part="2"/>
<task id="8" code="CORC" name="Получение подтверждения переводов" part="2"/>
<task id="9" code="GVER" name="Запуск сверки" part="2"/>
<task id="12" code="CMBA" name="Формирование распоряжения на перевод с ТБС" part="2"/>
<task id="14" code="GCMR" name="Формирование реестра участников клиринга" part="2"/>
<task id="15" code="GBRR" name="Формирование реестра остатков денежных средств " part="2"/>
<task id="16" code="GORR" name="Формирование реестра распоряжений, направленных расчетной организации" part="2"/>
<task id="17" code="GREP" name="Формирование отчетности" part="2"/>
<task id="21" code="GSRR" name="Формирование реестра отправленных отчетов" part="2"/>
<task id="25" code="GTRD" name="Получение сделок из Торговой системы" part="2"/>
<task id="32" code="GACA" name="Создание файла остатков CSV по клиринговым счетам" part="2"/>
<task id="33" code="GAIA" name="Создание файла остатков CSV по внутренним информацион.счетам" part="2"/>
<task id="35" code="SCLR" name="Запуск клиринговой сессии" part="2"/>
<task id="36" code="SPRC" name="Запуск преклиринга" part="2"/>
<task id="37" code="SPOC" name="Запуск постклиринга" part="2"/>
<task id="38" code="LIMM" name="Выгрузка в торговую систему остатков секции МКР" part="2"/>
<task id="38" code="LIMF" name="Выгрузка в торговую систему остатков Фондовой секции" part="2"/>
<task id="39" code="LIQU" name="Ликвидационная сессия по обязательтсвам участника" part="2"/>
<task id="40" code="STRM" name="Начало торговой сессии секции МКР" part="2"/>
<task id="41" code="ETRM" name="Завершение торговой сессии секции МКР" part="2"/>
<task id="42" code="SIPO" name="Начало торговой сессии по первичным торгам" part="2"/>
<task id="43" code="EIPO" name="Завершение торговой сессии по первичным торгам" part="2"/>
<task id="44" code="STRF" name="Начало торговой сессии по вторичным торгам" part="2"/>
<task id="45" code="ETRF" name="Завершение торговой сессии по вторичным торгам" part="2"/>
<task id="46" code="RCHK" name="Запрос на сверку активов" part="2"/>
<task id="47" code="GRYT" name="Сформировать регистр на текущий день" part="2"/>
<task id="48" code="GRRT" name="Сформировать реестр на текущий день" part="2"/>
<taskStatus id="1" code="ACTV" name="Активна" part="2"/>
<taskStatus id="2" code="BLKD" name="Не активна" part="2"/>
<taskStatus id="3" code="CNCL" name="Отмена расписания" part="2"/>
<dayStatus id="1" code="BDAY" name="Рабочий" part="2"/>
<dayStatus id="2" code="DOFF" name="Нерабочий" part="2"/>
<parent id="1" code="TMPL" name="Шаблон" part="2"/>
<parent id="2" code="PLNR" name="Расписание" part="2"/>
<parent id="3" code="CLND" name="Календарь" part="2"/>
<tradingClearingRegistryType id="1" code="А" name="Владелец"/>
<tradingClearingRegistryType id="2" code="B" name="Клиентский"/>
<tradingClearingRegistryType id="3" code="С" name="Попечитель"/>
<tradingClearingRegistryType id="4" code="D" name="Доверительный управляющий"/>
<tradingClearingRegistryType id="5" code="E" name="Эмитент"/>
<tradingClearingRegistryType id="6" code="Z" name="К размещению/выкупу"/>
<tradingClearingRegistryType id="7" code="H" name="Депо по учету облигаций"/>
<tradingClearingRegistryType id="8" code="T" name="Депо по учету акций"/>
<tradingClearingRegistryType id="9" code="N" name="Депо по учету облигаций с попечителем"/>
<tradingClearingRegistryType id="10" code="S" name="Депо по учету акций с попечителем"/>
<tradingClearingRegistryLevel id="1" code="ONE" name="Первый уровень ТКР"/>
<tradingClearingRegistryLevel id="2" code="TWO" name="Второй уровень ТКР"/>
<tradingClearingRegistryPurpose id="1" code="C" name="Общий"/>
<tradingClearingRegistryPurpose id="2" code="M" name="Денежный рынок"/>
<tradingClearingRegistryPurpose id="3" code="K" name="Код ТКР второго уровня"/>
<service id="1" code="MKR" name="Денежный рынок МКР"/>
<service id="2" code="FOND" name="Фондовый рынок"/>
<serviceStatus id="1" code="ACTV" name="Активен"/>
<serviceStatus id="2" code="BLKD" name="Заблокирован"/>
<serviceStatus id="3" code="SSPD" name="Приостановлен"/>
<serviceStatus id="4" code="CLOS" name="Закрыт"/>
<serviceStatus id="5" code="ROPN" name="Возобновлен"/>
<serviceStatus id="6" code="APPL" name="Допущен к клиринговому обслуживанию"/>
<serviceProduct id="1" code="PRNT" name="Расчет обязательств с процентом"/>
<serviceProduct id="2" code="ZERO" name="Расчет обязательств без процента (по умолчанию)"/>
<registryDesignation id="1" code="L" name="Обязательства"/>
<registryDesignation id="2" code="A" name="Активы"/>
<registryDesignation id="3" code="C" name="Требования"/>
<registryDesignation id="4" code="O" name="Обязательства по сделкам в рамках формирования клирингового пула"/>
<registryDesignation id="5" code="T" name="Требования по сделкам в рамках формирования клирингового пула"/>
<registryDesignation id="6" code="D" name="Депозиты"/>
<registryInstrumentType id="1" code="M" name="Деньги"/>
<registryInstrumentType id="2" code="S" name="Бумаги"/>
<registryCapacity id="1" code="A" name="Принципал"/>
<registryCapacity id="2" code="B" name="Клиент"/>
<registryCapacity id="3" code="C" name="Попечитель"/>
<registryCapacity id="4" code="D" name="ДУ"/>
<registryCapacity id="5" code="Z" name="Размещение/Выкуп"/>
<registryCapacity id="6" code="F" name="Держатель"/>
<registryCapacity id="7" code="E" name="Эмитент"/>
<registryUnit id="1" code="T" name="Под торги"/>
<registryUnit id="2" code="F" name="Свободные"/>
<registryUnit id="3" code="B" name="Заблокированные"/>
<registryUnit id="4" code="C" name="Комиссия"/>
<registryCode id="1" code="AMPT" name="Денежные средства - на торги"/>
<registryCode id="2" code="AMPF" name="Денежные средства - свободные"/>
<registryCode id="3" code="AMPB" name="Денежные средства - блокированные"/>
<registryCode id="4" code="TMPT" name="Требования по деньгам - клиринговый пул"/>
<registryCode id="5" code="OSPT" name="Обязательства по инструментам - клиринговый пул"/>
<registryCode id="6" code="OMPT" name="Обязательства по деньгам - клиринговый пул"/>
<registryCode id="7" code="TSPT" name="Требования по инструментам - клиринговый пул"/>
<registryCode id="8" code="CMPT" name="Требования по деньгам - свои"/>
<registryCode id="9" code="LSPT" name="Обязательства по инструментам - свои"/>
<registryCode id="10" code="LMPT" name="Обязательства по деньгам - свои"/>
<registryCode id="11" code="CSPT" name="Требования по инструментам - свои"/>
<registryStatus id="1" code="OK" name="Успешно"/>
<registryStatus id="2" code="FAIL" name="Не успешно"/>
<registryStatus id="3" code="MNG" name="Не учитывать"/>
<registryStatus id="4" code="PROC" name="К клирингу"/>
<registryStatus id="5" code="LIQU" name="Ликвидационный неттинг"/>
<balanceDimension id="1" code="PICS" name="Штуки"/>
<balanceDimension id="2" code="LOTS" name="Лоты"/>
<balanceDimension id="3" code="MONY" name="Деньги"/>
<accountType id="1" code="CLRN" name="Торгово-Банковский Счет"/>
<accountType id="2" code="BANK" name="Счет вывода средств из ПРЦ"/>
<accountType id="3" code="USPD" name="Регистр невыясненных поступлений"/>
<accountType id="4" code="CORR" name="Корреспондентский счет"/>
<accountType id="5" code="INFO" name="Регистр"/>
<accountType id="6" code="PYER" name="Счет плательщика"/>
<accountType id="7" code="ANLT" name="Клиринговый-Банковский Счет"/>
<accountType id="8" code="TRAN" name="Транзакционный счет"/>
<accountType id="9" code="DEPO" name="Депозитарный счет"/>
<depoAccountType id="1" code="A" name="Счет участника"/>
<depoAccountType id="2" code="B" name="Счет клиента"/>
<depoAccountType id="3" code="C" name="Счет попечителя"/>
<depoAccountType id="4" code="D" name="Счет доверительного управляющего"/>
<depoAccountType id="5" code="Z" name="Счет к размещению/выкупу"/>
<depoAccountType id="6" code="F" name="Счет держателя"/>
<depoAccountType id="7" code="E" name="Счет эмитента"/>
<clearingAccountType id="1" code="A" name="Счет участника"/>
<clearingAccountType id="2" code="B" name="Счет клиента"/>
<task id="1" code="GBAL" name="Зачисление остатков"/>
<task id="3" code="ABLK" name="Блокировка счета"/>
<task id="4" code="GALB" name="Запрос остатков по всем счетам"/>
<task id="5" code="ADBL" name="Дозачисление/списание остатков"/>
<task id="7" code="CORD" name="Формирование сводного платежного поручения"/>
<task id="8" code="CORC" name="Получение подтверждения переводов"/>
<task id="9" code="GVER" 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="GREP" name="Формирование отчетности"/>
<task id="21" code="GSRR" name="Формирование реестра отправленных отчетов"/>
<task id="25" code="GTRD" name="Получение сделок из Торговой системы"/>
<task id="32" code="GACA" name="Создание файла остатков CSV по клиринговым счетам"/>
<task id="33" code="GAIA" name="Создание файла остатков CSV по внутренним информацион.счетам"/>
<task id="35" code="SCLR" name="Запуск клиринговой сессии"/>
<task id="36" code="SPRC" name="Запуск преклиринга"/>
<task id="37" code="SPOC" name="Запуск постклиринга"/>
<task id="38" code="LIMM" name="Выгрузка в торговую систему остатков секции МКР"/>
<task id="38" code="LIMF" name="Выгрузка в торговую систему остатков Фондовой секции"/>
<task id="39" code="LIQU" name="Ликвидационная сессия по обязательтсвам участника"/>
<task id="40" code="STRM" name="Начало торговой сессии секции МКР"/>
<task id="41" code="ETRM" name="Завершение торговой сессии секции МКР"/>
<task id="42" code="SIPO" name="Начало торговой сессии по первичным торгам"/>
<task id="43" code="EIPO" name="Завершение торговой сессии по первичным торгам"/>
<task id="44" code="STRF" name="Начало торговой сессии по вторичным торгам"/>
<task id="45" code="ETRF" name="Завершение торговой сессии по вторичным торгам"/>
<task id="46" code="RCHK" name="Запрос на сверку активов"/>
<task id="47" code="GRYT" name="Сформировать регистр на текущий день"/>
<task id="48" code="GRRT" name="Сформировать реестр на текущий день"/>
<taskStatus id="1" code="ACTV" name="Активна"/>
<taskStatus id="2" code="BLKD" name="Не активна"/>
<taskStatus id="3" code="CNCL" name="Отмена расписания"/>
<dayStatus id="1" code="BDAY" name="Рабочий"/>
<dayStatus id="2" code="DOFF" name="Нерабочий"/>
<parent id="1" code="TMPL" name="Шаблон"/>
<parent id="2" code="PLNR" name="Расписание"/>
<parent id="3" code="CLND" name="Календарь"/>
<sessionStatus id="1" code="ACTV" name="Сессия активна"/>
<sessionStatus id="2" code="CLRN" name="Идет клиринг"/>
<sessionStatus id="3" code="CLOS" name="Клиринг завершен"/>
<sessionType id="1" code="FINL" name="Итоговая клиринговая сессия"/>
<sessionType id="2" code="MEDM" name="Промежуточная клиринговая сессия"/>
<sessionType id="3" code="XDEP" name="Промежуточная возврат депозитов"/>
<sessionType id="4" code="IPOT" name="Первичные торги Т0"/>
<sessionType id="5" code="TRDT" name="Вторичные торги Т0"/>
<sessionType id="6" code="LIQU" name="Ликвидационное прекращение обязательств"/>
<sessionType id="7" code="IPOB" name="Первичные торги Bn"/>
<sessionType id="8" code="IPO0" name="Первичные торги B0"/>
<moneyFlowSide id="1" code="BUY" name="Разместить"/>
<moneyFlowSide id="2" code="SELL" name="Привлечь"/>
<courierType id="1" code="STHS" name="ЭДО с Расчетной Организацией"/>
<transactionStatus id="1" code="STLD" name="Рассчитан"/>
@ -243,8 +258,6 @@
<balanceAccountType id="1" code="ACNT" name="Остатки по счетам"/>
<inOutDirection id="1" code="IN" name="Зачисление"/>
<inOutDirection id="2" code="OUT" name="Списание"/>
<moneyFlowSide id="1" code="BUY" name="Разместить"/>
<moneyFlowSide id="2" code="SELL" name="Привлечь"/>
<statementType id="1" code="FULL" name="Установка суммы"/>
<statementType id="2" code="INCR" name="Изменение суммы"/>
<operationType id="1" code="STMT" name="Расчетные операции"/>
@ -266,9 +279,6 @@
<inOutSDfType id="1" code="0102" name="Входящий ДФ-01/Исходящий ДФ-02"/>
<inOutSDfType id="2" code="1617" name="Входящий ДФ-16/Исходящий ДФ-17"/>
<inOutSDfType id="3" code="0910" name="Входящий ДФ-09/Исходящий ДФ-10"/>
<sessionStatus id="1" code="ACTV" name="Сессия активна"/>
<sessionStatus id="2" code="CLRN" name="Идет клиринг"/>
<sessionStatus id="3" code="CLOS" name="Клиринг завершен"/>
<objectType id="1" code="STMT" name="STATEMENT"/>
<objectType id="2" code="VFRS" name="verificationResult"/>
<notificationStatus id="1" code="PEND" name="В ожидании"/>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--?xml-stylesheet type="text/xsl" href="\..\corp-reports\src\data\meta\meta.server.xslt"?-->
<meta version="3.5.0.18">
<meta version="3.5.0.19">
<!-- _xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" _xsi:noNamespaceSchemaLocation="file:///E:/d/projects/meta/from/meta.xsd" -->
<!--Здесь словари-->
<enums>
@ -136,32 +136,32 @@
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="255"/>
</serviceProduct>
<registryDesignation name="Справочник символов регистров - назначения" class="com.spicex.dictionary.RegistryDesignationDictionary" table="registry_designation_dictionary">
<registryDesignation name="Справочник символов регистров - назначения" class="ru.clearing.platform.dictionary.RegistryDesignationDictionary" table="registry_designation_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="255"/>
</registryDesignation>
<registryInstrumentType name="Справочник символов регистров - инструменты" class="com.spicex.dictionary.RegistryInstrumentTypeDictionary" table="registry_instrument_type_dictionary">
<registryInstrumentType name="Справочник символов регистров - инструменты" class="ru.clearing.platform.dictionary.RegistryInstrumentTypeDictionary" table="registry_instrument_type_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="255"/>
</registryInstrumentType>
<registryCapacity name="Справочник символов регистров - источники средств" class="com.spicex.dictionary.RegistryCapacityDictionary" table="registry_capacity_dictionary">
<registryCapacity name="Справочник символов регистров - источники средств" class="ru.clearing.platform.dictionary.RegistryCapacityDictionary" table="registry_capacity_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="255"/>
</registryCapacity>
<registryUnit name="Справочник символов регистров - части регистров" class="com.spicex.dictionary.RegistryUnitDictionary" table="registry_unit_dictionary">
<registryUnit name="Справочник символов регистров - части регистров" class="ru.clearing.platform.dictionary.RegistryUnitDictionary" table="registry_unit_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="255"/>
</registryUnit>
<registryCode name="Справочник кодов регистров" class="com.spicex.dictionary.RegistryCodeDictionary" table="registry_code_dictionary">
<registryCode name="Справочник кодов регистров" class="ru.clearing.platform.dictionary.RegistryCodeDictionary" table="registry_code_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="255"/>
</registryCode>
<registryStatus name="Справочник статусов регистров" class="com.spicex.dictionary.RegistryStatusDictionary" table="registry_status_dictionary">
<registryStatus name="Справочник статусов регистров" class="ru.clearing.platform.dictionary.RegistryStatusDictionary" table="registry_status_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="255"/>
@ -207,6 +207,22 @@
<name name="Наименование" shortname="Источник" type="2" length="50"/>
</parent>
<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>
<sessionType name="Справочник типов клиринговых сессий" class="ru.clearing.platform.dictionary.SessionTypeDictionary" table="session_type_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Наименование" type="2" length="50"/>
</sessionType>
<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>
<chargeDirection name="Направление начисления комиссии" class="ru.clearing.platform.dictionary.ChargeDirectionDictionary" table="charge_direction_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
@ -232,11 +248,6 @@
<code name="Код" shortname="Код" type="12"/>
<name name="Наименование" shortname="Тип" type="2" length="255"/>
</clearingStatus>
<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="in_out_direction_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
@ -287,11 +298,6 @@
<code name="Код" shortname="Код" type="12"/>
<name name="Тип записи" shortname="Наименование" type="2" length="50"/>
</inOutSDfType>
<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="object_type_dictionary">
<id name="Идентификатор" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/>
@ -421,7 +427,7 @@
</put>
</actions>
</companyInfo>
<clearingMemberCategory name="Категории участника клиринга" destination="clearing-member-categories" class="ru.clearing.classes.statics.data.generated.ClearingMemberCategory" logUpdates="true" table="clearing_member_category">
<clearingMemberCategory name="Категории участника клиринга" destination="clearing-member-categories" class="ru.clearing.classes.statics.data.company.ClearingMemberCategory" logUpdates="true" table="clearing_member_category">
<companyId type="1" dbname="Идентификатор компании" name="Наименование компании" shortname="Компания" searchable="true" sortable="true" visible="true" link="company" linkCode="shortName"/>
<clearingMemberCategory type="12" dbname="Код категории участника клиринга" name="Категория участника клиринга" shortname="Категория" searchable="true" sortable="true" visible="true" link="clearingCategory"/>
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
@ -602,7 +608,7 @@
</delete>
</actions>
</moneyMarketSecurity>
<equitySecurity name="Акции" destination="securities/equity-securities" class="com.spicex.platform.classes.StaticData.Instrument.Issue.Equity" logUpdates="true" table="equity_security">
<equitySecurity name="Акции" destination="securities/equity-securities" class="ru.clearing.classes.statics.data.instrument.issue.EquitySecurity" logUpdates="true" table="equity_security">
<securityId type="1" dbname="Идентификатор инструмента" name="Наименование инструмента" shortname="Инструмент" searchable="true" sortable="true" link="security" linkCode="shortName"/>
<shortName type="2" length="255" name="Краткое наименование инструмента" shortname="Краткое наименование" searchable="true" sortable="true" visible="true" extends="security"/>
<securitySymbol type="2" length="255" name="Код инструмента" shortname="Код" searchable="true" sortable="true" visible="true" extends="security"/>
@ -649,7 +655,7 @@
</delete>
</actions>
</equitySecurity>
<fixedIncomeSecurity name="Облигации" destination="securities/fixed-income-securities" class="com.spicex.platform.classes.StaticData.Instrument.Issue.FixedIncome" logUpdates="true" table="fixed_income_security">
<fixedIncomeSecurity name="Облигации" destination="securities/fixed-income-securities" class="ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity" logUpdates="true" table="fixed_income_security">
<securityId type="1" dbname="Идентификатор инструмента" name="Наименование инструмента" shortname="Инструмент" searchable="true" sortable="true" link="security" linkCode="shortName"/>
<shortName type="2" length="255" name="Краткое наименование инструмента" shortname="Краткое наименование" searchable="true" sortable="true" visible="true" extends="security"/>
<securitySymbol type="2" length="255" name="Код инструмента" shortname="Код" searchable="true" sortable="true" visible="true" extends="security"/>
@ -711,7 +717,7 @@
</delete>
</actions>
</fixedIncomeSecurity>
<fixedIncomeCashFlow name="Выплаты по купонам" destination="securities/fixed-income-cash-flows" class="com.spicex.platform.classes.StaticData.Instrument.Issue.FixedIncome" logUpdates="true" table="fixed_income_cash_flow">
<fixedIncomeCashFlow name="Выплаты по купонам" destination="securities/fixed-income-cash-flows" class="ru.clearing.classes.statics.data.instrument.issue.FixedIncomeCashFlow" logUpdates="true" table="fixed_income_cash_flow">
<securityId type="1" dbname="Идентификатор инструмента" name="Наименование инструмента" shortname="Инструмент" searchable="true" sortable="true" link="security" linkCode="shortName"/>
<accruedCoupon type="11" name="Купон" shortname="Купон" searchable="true" sortable="true" visible="true"/>
<nominalValue type="10" name="Номинал" shortname="Номинал" searchable="true" sortable="true"/>
@ -719,7 +725,7 @@
<valueDate type="6" name="Дата выплаты купона" shortname="Выплата" searchable="true" sortable="true" visible="true"/>
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
</fixedIncomeCashFlow>
<couponPeriod name="Купонное расписание" destination="securities/coupon-periods" class="com.spicex.platform.classes.StaticData.Instrument.Issue.FixedIncome" logUpdates="true" table="coupon_period">
<couponPeriod name="Купонное расписание" destination="securities/coupon-periods" class="ru.clearing.classes.statics.data.instrument.issue.CouponPeriod" logUpdates="true" table="coupon_period">
<securityId type="1" dbname="Идентификатор инструмента" name="Наименование инструмента" shortname="Инструмент" searchable="true" sortable="true" link="security" linkCode="shortName"/>
<couponRate type="11" name="Купонная ставка" shortname="Ставка" searchable="true" sortable="true" visible="true"/>
<number type="3" name="Номер купона" shortname="Номер" searchable="true" sortable="true" visible="true"/>
@ -788,7 +794,7 @@
<depoAccountId type="1" name="Номер депозитарного счета" shortname="Депозитарный счет" link="account" linkCode="account"/>
<status type="12" name="Наименование статуса" shortname="Статус" link="workflowStatus"/>
</put>
<delete name="Блокировка кода клиента">
<delete name="Блокировка кода клиента" confirmation="companyId,code">
<id type="1" name="Идентификатор записи" shortname="ID" link="clientCode" linkCode="id" required="true"/>
</delete>
</actions>
@ -805,6 +811,21 @@
<status type="12" dbname="Код статуса" name="Наименование статуса" shortname="Статус" searchable="true" sortable="true" link="serviceStatus"/>
<createdAt field="created" type="4" webtype="5" dbname="Дата-время создания записи" name="Время создания записи" shortname="Создано" searchable="true" sortable="true" ignore="true"/>
<updatedAt field="updated" type="4" webtype="5" dbname="Дата-время изменения записи" name="Время изменения записи" shortname="Изменено" searchable="true" sortable="true" ignore="true"/>
<actions>
<post name="Добавление ТКР" confirmation="companyId,moneyAccountId,depoAccountId,status">
<companyId type="1" name="Наименование компании" shortname="Компания" link="company" linkCode="shortName" required="true"/>
<moneyAccountId type="1" name="Номер денежного счета" shortname="Денежный счет" link="account" linkCode="account" required="true"/>
<depoAccountId type="1" name="Номер депозитарного счета" shortname="Депозитарный счет" link="account" linkCode="account"/>
<status type="12" name="Наименование статуса" shortname="Статус" link="workflowStatus"/>
</post>
<put name="Изменение ТКР" confirmation="companyId,moneyAccountId,depoAccountId,status">
<id type="1" name="Идентификатор записи" shortname="ID" link="clientCode" linkCode="id" required="true"/>
<status type="12" name="Наименование статуса" shortname="Статус" link="workflowStatus"/>
</put>
<delete name="Блокировка ТКР" confirmation="companyId,code">
<id type="1" name="Идентификатор записи" shortname="ID" link="clientCode" linkCode="id" required="true"/>
</delete>
</actions>
</tradingClearingRegistry>
<registry name="Регистр активов, обязательств и требований УК" destination="registries" class="ru.clearing.classes.statics.data.registry.Registry" logUpdates="true" table="registry">
<companyId type="1" dbname="Идентификатор участника" name="Наименование участника" shortname="Участник" searchable="true" sortable="true" visible="true" link="company"/>
@ -864,6 +885,24 @@
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<createdAt field="created" type="4" webtype="5" dbname="Дата-время создания записи" name="Время создания записи" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" webtype="5" dbname="Дата-время изменения записи" name="Время изменения записи" shortname="Изменено" searchable="true" sortable="true"/>
<actions>
<post name="Добавление корреспондентского счета" confirmation="companyId,account,status">
<companyId type="1" name="Наименование компании" shortname="Компания" link="company" linkCode="shortName" required="true"/>
<account type="2" length="50" name="Номер счета" shortname="Счет" required="true"/>
<status type="12" name="Наименование статуса" shortname="Статус" link="serviceStatus"/>
<accountType type="12" name="Наименование типа счета" shortname="Тип" link="accountType" required="true" visible="false"/>
</post>
<put name="Изменение корреспондентского счета" confirmation="companyId,account,status">
<id type="1" name="Идентификатор записи" shortname="ID" link="account" linkCode="id" required="true"/>
<companyId type="1" name="Наименование компании" shortname="Компания" link="company" linkCode="shortName"/>
<account type="2" length="50" name="Номер счета" shortname="Счет"/>
<status type="12" name="Наименование статуса" shortname="Статус" link="serviceStatus"/>
<accountType type="12" name="Наименование типа счета" shortname="Тип" link="accountType" required="true" visible="false"/>
</put>
<delete name="Блокировка корреспондентского счета" confirmation="companyId,account">
<id type="1" name="Идентификатор записи" shortname="ID" link="account" linkCode="id" required="true"/>
</delete>
</actions>
</account>
<relation name="Доступ в секцию" destination="relations" class="ru.clearing.classes.statics.data.company.relation.Relation" logUpdates="true" table="relation">
<consumerId type="1" dbname="Идентификатор компании пользователя услуги" name="Наименование компании пользователя услуги" shortname="Потребитель" searchable="true" sortable="true" visible="true" link="company"/>
@ -1151,6 +1190,130 @@
</actions>
</launcher>
<session name="Клиринговая сессия" destination="sessions" 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" webtype="5" dbname="Дата-время создания записи" name="Время создания записи" shortname="Создано" searchable="true" sortable="true" ignore="true"/>
<updatedAt field="updated" type="4" webtype="5" dbname="Дата-время изменения записи" name="Время изменения записи" shortname="Изменено" searchable="true" sortable="true" ignore="true"/>
<clearingDate type="6" name="Дата" shortname="Дата" searchable="true" sortable="true" visible="true"/>
<sessionStatus type="12" dbname="Код статуса клиринговой сессии" name="Статус клиринговой сессии" shortname="Статус" searchable="true" sortable="true" visible="true" link="sessionStatus"/>
<companyId type="1" dbname="Идентификатор инициатора торгов" name="Наименование инициатора торгов" shortname="Инициатор" visible="false" searchable="true" sortable="true" link="company" linkCode="shortName"/>
<securityId type="1" dbname="Идентификатор инструмента" name="Наименование инструмента" shortname="Инструмент" searchable="false" sortable="true" visible="true" link="security" linkCode="shortName"/>
<userId type="1" dbname="Идентификатор пользователя" name="Наименование пользователя" shortname="Пользователь" searchable="true" sortable="true" visible="true" link="userCls"/>
<section type="12" dbname="Код наименования секции" name="Наименование секции" shortname="Секция" searchable="true" sortable="true" visible="true" link="section"/>
<sessionType type="12" dbname="Код типа клиринговой сессии" name="Тип клиринговой сессии" shortname="Тип" searchable="true" sortable="true" visible="true" link="sessionType"/>
</session>
<sTrades name="Сделки из Торговой системы" class="ru.clearing.classes.statics.data.misc.STrades" table="s_trades">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<tradeNum type="1" name="Номер сделки" shortname="Номер сделки" searchable="true" sortable="true"/>
<operation type="2" length="40" name="Направленность сделки (BUY или SELL)" shortname="Направленность сделки" searchable="true" sortable="true"/>
<classCode type="2" length="255" name="Код класса инструментов" shortname="Код класса инструментов" searchable="true" sortable="true"/>
<tradeDate type="6" name="Дата торговой сессии" shortname="Дата торговой сессии" searchable="true" sortable="true"/>
<secCode type="2" length="255" name="Код инструмента" shortname="Код инструмента" searchable="true" sortable="true"/>
<accruedint type="10" name="Накопленный купонный доход" shortname="НКД" searchable="true" sortable="true"/>
<accruedint2 type="10" name="Доход(%) на дату выкупа" shortname="Доход(%) на дату выкупа" searchable="true" sortable="true"/>
<lowerDiscount type="10" name="Нижний дисконт(%)" shortname="Нижний дисконт(%)" searchable="true" sortable="true"/>
<orderNum type="1" name="Номер заявки" shortname="Номер заявки" searchable="true" sortable="true"/>
<price type="10" name="Цена сделки" shortname="Цена сделки" searchable="true" sortable="true"/>
<price2 type="10" name="Цена выкупа второй части РЕПО" shortname="Цена выкупа второй части РЕПО" searchable="true" sortable="true"/>
<repoRate type="10" name="Ставка РЕПО (%)" shortname="Ставка РЕПО (%)" searchable="true" sortable="true"/>
<repoValue type="10" name="Сумма РЕПО" shortname="Сумма РЕПО" searchable="true" sortable="true"/>
<repo2Value type="10" name="Объем сделки выкупа РЕПО, рублей" shortname="Объем сделки выкупа РЕПО, рублей" searchable="true" sortable="true"/>
<startDiscount type="10" name="Начальный дисконт(%)" shortname="Начальный дисконт(%)" searchable="true" sortable="true"/>
<tsCommission type="10" name="Комиссия торговой системы" shortname="Комиссия торговой системы" searchable="true" sortable="true"/>
<upperDiscount type="10" name="Верхний дисконт(%)" shortname="Верхний дисконт(%)" searchable="true" sortable="true"/>
<value type="10" name="Объем сделки без учета комиссионного сбора биржи и % дохода" shortname="Объем сделки без сбора" searchable="true" sortable="true"/>
<yield type="10" name="Доходность" shortname="Доходность" searchable="true" sortable="true"/>
<qty type="10" name="Количество бумаг в лотах" shortname="Количество в лотах" searchable="true" sortable="true"/>
<qtyPcs type="10" name="Количество бумаг в штуках" shortname="Количество в штуках" searchable="true" sortable="true"/>
<tradeDateTime type="4" name="Дата и время сделки" shortname="Дата и время сделки" searchable="true" sortable="true"/>
<repoTerm type="3" name="Срок РЕПО" shortname="Срок РЕПО" searchable="true" sortable="true"/>
<clearingCommission type="10" name="Клиринговая комиссия. Параметр сделок на МБ" shortname="Клиринговая комиссия" searchable="true" sortable="true"/>
<exchangeCommission type="10" name="Комиссия Фондовой биржи. Параметр сделок на МБ" shortname="Комиссия Фондовой биржи" searchable="true" sortable="true"/>
<techCenterCommission type="10" name="Комиссия Технического центра. Параметр сделок на МБ" shortname="Комиссия Технического центра" searchable="true" sortable="true"/>
<account type="2" length="50" name="Торговый счет" shortname="Торговый счет" searchable="true" sortable="true"/>
<brokerRef type="2" length="34" name="Комментарий, обычно: код клиента>/номер поручения>" shortname="Комментарий" searchable="true" sortable="true"/>
<clientCode type="2" length="255" name="Код участника торгов = Код участника клиринга = Код участника расчетов" shortname="Код клиента" searchable="true" sortable="true"/>
<settleCode type="2" length="50" name="Код расчетов по сделке" shortname="Код расчетов" searchable="true" sortable="true"/>
<userId type="2" length="32" name="Идентификатор трейдера" shortname="Идентификатор трейдера" searchable="true" sortable="true"/>
<exchangeCode type="2" length="64" name="Идентификатор биржи" shortname="Идентификатор биржи" searchable="true" sortable="true"/>
<firmId type="2" length="255" name="Трейдер" shortname="Трейдер" searchable="true" sortable="true"/>
<firmName type="2" length="255" name="Организация трейдера" shortname="Организация трейдера" searchable="true" sortable="true"/>
<cpFirmId type="2" length="255" name="Партнер" shortname="Партнер" searchable="true" sortable="true"/>
<cpFirmName type="2" length="255" name="Организация партнера" shortname="Организация партнера" searchable="true" sortable="true"/>
<className type="2" length="255" name="Класс инструмента" shortname="Класс инструмента" searchable="true" sortable="true"/>
<secName type="2" length="255" name="Полное наименование инструмента" shortname="Полное наименование инструмента" searchable="true" sortable="true"/>
<settleDate type="6" name="Дата расчетов" shortname="Дата расчетов" searchable="true" sortable="true"/>
<settleCurrency type="2" length="4" name="Валюта расчетов" shortname="Валюта расчетов" searchable="true" sortable="true"/>
<tradeCurrency type="2" length="4" name="Валюта сделки" shortname="Валюта сделки" searchable="true" sortable="true"/>
<tradeTimeMs type="3" name="Микросекунды времени сделки" shortname="Микросекунды времени сделки" searchable="true" sortable="true"/>
<bankAccId type="2" length="12" name="Идентификатор расчетного счета/кода в клиринговой организации" shortname="Код позиции" searchable="true" sortable="true"/>
<section type="12" dbname="Код наименования секции" name="Наименование секции" shortname="Секция" searchable="true" sortable="true" visible="true" link="section"/>
</sTrades>
<executionDeposit name="Сделки" destination="execution-deposits" class="ru.clearing.classes.statics.data.execution.ExecutionDeposit" logUpdates="true" table="execution_deposit">
<exchangeExecutionId type="1" name="Идентификационный номер сделки в Торговой системе" shortname="Номер сделки" visible="true" searchable="true" sortable="true"/>
<exchangeExecutionTime type="4" name="Время заключения сделки в Торговой системе" shortname="Время заключения сделки" visible="true" searchable="true" sortable="true"/>
<tradingDate type="6" name="Дата заключения сделки" shortname="Дата заключения сделки" visible="true" searchable="true" sortable="true"/>
<tradingClearingRegistryId type="1" dbname="Идентификатор торгово-клирингового регистра" name="Торгово-клиринговый регистр" shortname="ТКР" visible="true" searchable="true" sortable="true" link="tradingClearingRegistry"/>
<market type="12" dbname="Код секции финансового инструмента" name="Секция финансового инструмента" shortname="Секция" visible="true" searchable="true" sortable="true" link="market" linkCode="name"/>
<price type="10" name="Ставка по депозиту" shortname="Ставка, %" visible="true" searchable="true" sortable="true"/>
<lots type="11" name="Количество лотов" shortname="Лоты" visible="true" searchable="true" sortable="true"/>
<quantity type="11" name="Количество штук" shortname="Штуки" visible="false" searchable="true" sortable="true"/>
<firstLegAmount type="11" name="Объем сделки" shortname="Объем" visible="true" searchable="true" sortable="true"/>
<secondLegAmount type="11" name="Объем возврата" shortname="Объем возврата" visible="false" searchable="true" sortable="true"/>
<interestAmount type="11" name="Объем процентов" shortname="Проценты" visible="false" searchable="true" sortable="true"/>
<side type="12" dbname="Код направления сделки" name="Направление сделки" shortname="Направление" visible="true" searchable="true" sortable="true" link="moneyFlowSide"/>
<settlementCurrency type="12" dbname="Код валюты расчетов по инструменту" name="Валюта расчетов по инструменту" shortname="Валюта" visible="true" searchable="true" sortable="true" link="currencyCode" linkCode="code"/>
<companyId type="1" dbname="Идентификатор компании" name="Наименование компании" shortname="Компания" visible="true" searchable="true" sortable="true" link="company" linkCode="shortName"/>
<duration type="1" name="Срок, дней" shortname="Срок" visible="true" searchable="true" sortable="true"/>
<firstLegSettlementDate type="6" name="Дата размещения" shortname="Дата размещения" visible="true" searchable="true" sortable="true"/>
<secondLegSettlementDate type="6" name="Дата возврата" shortname="Дата возврата" visible="true" searchable="true" sortable="true"/>
<firstLegSettlementCode type="2" length="12" name="Код расчетов при размещении" shortname="Код расчетов при размещении" visible="false" searchable="true" sortable="true" ignore="true"/>
<secondLegSettlementCode type="2" length="12" name="Код расчетов при возврате" shortname="Код расчетов" visible="false" searchable="true" sortable="true" ignore="true"/>
<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" dbname="Идентификатор финансового инструмента" name="Финансовый инструмент" shortname="Код биржевого инструмента / товара" searchable="true" sortable="true" link="moneyMarketSecurity" linkCode="securitySymbol" ignore="true"/>
<contract type="2" name="Продукт" shortname="Продукт" searchable="true" sortable="true" length="255" visible="true"/>
<counterPartyId type="1" dbname="Идентификатор компании-партнера, с которой заключена сделка" name="Наименование компании-партнера, с которой заключена сделка" shortname="Партнер" visible="false" searchable="true" sortable="true" link="company"/>
<coverageStatus type="12" dbname="Код статуса достаточности обеспечения" name="Cтатус достаточности обеспечения" shortname="Обеспеченность" searchable="true" sortable="true" link="allowed"/>
<sessionId type="1" name="Сессия" shortname="Сессия" visible="true" searchable="true" sortable="true" link="session"/>
<id type="1" name="Идентификатор записи" shortname="ID" visible="false" searchable="true" sortable="true"/>
<createdAt field="created" type="4" webtype="5" dbname="Дата-время создания записи" name="Время создания записи" shortname="Создано" visible="false" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" webtype="5" dbname="Дата-время изменения записи" name="Время изменения записи" shortname="Изменено" visible="false" searchable="true" sortable="true"/>
<clearingDate type="6" name="Дата клиринга" shortname="Дата клиринга" visible="false" searchable="true" sortable="true"/>
</executionDeposit>
<executionFond name="Сделки на Фондовой секции" destination="execution-fonds" class="" logUpdates="true" table="execution_fond">
<id type="1" name="Идентификатор записи" shortname="ID" visible="false" searchable="true" sortable="true"/>
<createdAt field="created" type="4" webtype="5" dbname="Дата-время создания записи" name="Время создания записи" shortname="Создано" visible="false" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" webtype="5" dbname="Дата-время изменения записи" name="Время изменения записи" shortname="Изменено" visible="false" searchable="true" sortable="true"/>
<clearingDate type="6" name="Дата клиринга" shortname="Дата клиринга" visible="false" searchable="true" sortable="true"/>
<exchangeExecutionId type="1" name="Идентификационный номер сделки в Торговой системе" shortname="Номер сделки" visible="true" searchable="true" sortable="true"/>
<side type="12" dbname="Код направления сделки" name="Направление сделки" shortname="Направление" visible="true" searchable="true" sortable="true" link="moneyFlowSide"/>
<market type="12" dbname="Код секции финансового инструмента" name="Секция финансового инструмента" shortname="Секция" visible="true" searchable="true" sortable="true" link="market" linkCode="name"/>
<tradingDate type="6" name="Дата заключения сделки" shortname="Дата заключения сделки" visible="true" searchable="true" sortable="true"/>
<securitySymbol type="2" length="255" name="Код инструмента в Торговой Системе" shortname="Код инструмента" visible="true" searchable="true" sortable="true"/>
<securityId type="1" dbname="Идентификатор финансового инструмента" name="Финансовый инструмент" shortname="Код биржевого инструмента / товара" searchable="true" sortable="true" link="security" linkCode="securitySymbol" ignore="true"/>
<interestAmount type="11" name="Объем процентов" shortname="Проценты" visible="false" searchable="true" sortable="true"/>
<exchangeOrderId type="1" name="Идентификационный номер заявки в Торговой системе" shortname="Номер заявки" visible="true" searchable="true" sortable="true"/>
<price type="10" name="Ставка по депозиту" shortname="Ставка, %" visible="true" searchable="true" sortable="true"/>
<settlementAmount type="11" name="Объем сделки" shortname="Объем" visible="true" searchable="true" sortable="true"/>
<lots type="11" name="Количество лотов" shortname="Лоты" visible="true" searchable="true" sortable="true"/>
<quantity type="11" name="Количество штук" shortname="Штуки" visible="false" searchable="true" sortable="true"/>
<exchangeExecutionTime type="4" name="Время заключения сделки в Торговой системе" shortname="Время заключения сделки" visible="true" searchable="true" sortable="true"/>
<duration type="1" name="Срок, дней" shortname="Срок" visible="true" searchable="true" sortable="true"/>
<tradingClearingRegistryId type="1" dbname="Идентификатор торгово-клирингового регистра" name="Торгово-клиринговый регистр" shortname="ТКР" visible="true" searchable="true" sortable="true" link="tradingClearingRegistry"/>
<comment type="2" name="Комментарий" shortname="Комментарий" searchable="true" sortable="true" length="255"/>
<clientCodeId type="1" dbname="Идентификатор кода клиента" name="Код клиента" shortname="Клиент" searchable="true" sortable="true" visible="true"/>
<settlementCode type="2" length="12" name="Код расчетов при размещении" shortname="Код расчетов при размещении" visible="false" searchable="true" sortable="true" ignore="true"/>
<companyId type="1" dbname="Идентификатор компании" name="Наименование компании" shortname="Компания" visible="true" searchable="true" sortable="true" link="company" linkCode="shortName"/>
<counterPartyId type="1" dbname="Идентификатор компании-партнера, с которой заключена сделка" name="Наименование компании-партнера, с которой заключена сделка" shortname="Партнер" visible="false" searchable="true" sortable="true" link="company"/>
<securityFullName type="2" length="255" name="Наименование инструмента" shortname="Инструмент" visible="true" searchable="true" sortable="true"/>
<settlementDate type="6" name="Дата расчетов" shortname="Дата расчетов" visible="true" searchable="true" sortable="true"/>
<settlementCurrency type="12" dbname="Код валюты расчетов по инструменту" name="Валюта расчетов по инструменту" shortname="Валюта" visible="true" searchable="true" sortable="true" link="currencyCode" linkCode="code"/>
<exchangeExecutionMicroseconds type="4" name="Микросекунды заключения сделки в Торговой системе" shortname="Микросекунды заключения сделки" visible="true" searchable="true" sortable="true"/>
<coverageStatus type="12" dbname="Код статуса достаточности обеспечения" name="Cтатус достаточности обеспечения" shortname="Обеспеченность" searchable="true" sortable="true" link="allowed"/>
<sessionId type="1" dbname="Идентификатор сессии" name="Сессия" shortname="Сессия" visible="true" searchable="true" sortable="true" link="session"/>
</executionFond>
<clearmemberRegister name="Реестр участников клиринга" destination="clearmember-registers" serviceProduct="MKR" class="ru.clearing.classes.statics.data.misc.ClearMemberRegister" 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"/>
@ -1278,37 +1441,6 @@
<resultStatus type="12" name="Статус выгрузки документа" shortname="Статус" searchable="true" sortable="true" visible="true" link="resultStatus"/>
<id type="1" name="Идентификатор записи" shortname="№п/п" searchable="true" sortable="true"/>
</outDocumentJournal>
<executionDeposit name="Сделки" destination="execution-deposits" class="ru.clearing.classes.statics.data.execution.ExecutionDeposit" table="execution_deposit">
<exchangeExecutionId type="1" name="Идентификационный номер сделки в Торговой системе" shortname="Номер сделки" visible="true" searchable="true" sortable="true"/>
<exchangeExecutionTime type="4" name="Время заключения сделки в Торговой системе" shortname="Время заключения сделки" visible="true" searchable="true" sortable="true"/>
<tradingDate type="6" name="Дата заключения сделки" shortname="Дата заключения сделки" visible="true" searchable="true" sortable="true"/>
<accountId type="1" name="Торговый счет" shortname="Счет" visible="true" searchable="true" sortable="true" link="account" linkCode="account"/>
<market type="12" name="Секция финансового инструмента" shortname="Секция" visible="true" searchable="true" sortable="true" link="market" linkCode="name"/>
<price type="10" name="Ставка по депозиту" shortname="Ставка, %" visible="true" searchable="true" sortable="true"/>
<lots type="11" name="Количество лотов" shortname="Лоты" visible="true" searchable="true" sortable="true"/>
<quantity type="11" name="Количество штук" shortname="Штуки" visible="false" searchable="true" sortable="true"/>
<firstLegAmount type="11" name="Объем сделки" shortname="Объем" visible="true" searchable="true" sortable="true"/>
<secondLegAmount type="11" name="Объем возврата" shortname="Объем возврата" visible="false" searchable="true" sortable="true"/>
<interestAmount type="11" name="Объем процентов" shortname="Проценты" visible="false" searchable="true" sortable="true"/>
<side type="12" name="Направление сделки" shortname="Направление" visible="true" searchable="true" sortable="true" link="moneyFlowSide"/>
<settlementCurrency type="12" name="Валюта расчетов по инструменту" shortname="Валюта" visible="true" searchable="true" sortable="true" link="currencyCode" linkCode="code"/>
<companyId type="1" name="Название компании" shortname="Компания" visible="true" searchable="true" sortable="true" link="company" linkCode="shortName"/>
<duration type="1" name="Срок, дней" shortname="Срок" visible="true" searchable="true" sortable="true"/>
<firstLegSettlementDate type="6" name="Дата размещения" shortname="Дата размещения" visible="true" searchable="true" sortable="true"/>
<secondLegSettlementDate type="6" name="Дата возврата" shortname="Дата возврата" visible="true" searchable="true" sortable="true"/>
<firstLegSettlementCode type="6" name="Код расчетов при размещении" shortname="Код расчетов при размещении" visible="false" searchable="true" sortable="true" ignore="true"/>
<secondLegSettlementCode type="6" name="Код расчетов при возврате" shortname="Код расчетов" visible="false" searchable="true" sortable="true" ignore="true"/>
<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"/>
<id type="1" name="Идентификатор записи" shortname="ID" visible="false" searchable="true" sortable="true"/>
<createdAt field="created" type="5" name="Время регистрации сделки" shortname="Время сделки" visible="false" searchable="true" sortable="true"/>
<updatedAt field="updated" type="5" name="Время изменения сделки" shortname="Время изменения" visible="false" searchable="true" sortable="true"/>
<clearingDate type="6" name="Дата клиринга" shortname="Дата клиринга" visible="false" searchable="true" sortable="true"/>
</executionDeposit>
<dealRegister name="Реестр сделок" destination="deal-registers" class="ru.clearing.classes.statics.data.register.DealRegister" table="deal_register">
<executionId type="1" name="Идентификационный номер сделки в Клиринговой системе" shortname="Номер сделки КС" visible="false" searchable="true" sortable="true"/>
<exchangeExecutionId type="1" name="Идентификационный номер сделки в Торговой системе" shortname="Номер сделки" visible="true" searchable="true" sortable="true"/>
@ -1951,28 +2083,6 @@
<generationId type="1" name="Идентификатор взаимодействия" shortname="ID взаимодействия" searchable="true" sortable="true"/>
<inSDf12Id type="1" name="Идентификатор соответствующей записи из таблицы-источника" shortname="Входящая запись" searchable="true" sortable="true"/>
</sDf18>
<s_trade name="Сделки из Торговой системы" class="ru.clearing.classes.statics.data.misc.STrade" 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"/>
<trade_date_time type="4" name="Дата-время сделки" shortname="Дата-время сделки" searchable="true" sortable="true"/>
<settle_date type="6" name="Плановая дата исполнения сделки" shortname="Плановая дата исполнения сделки" searchable="true" sortable="true"/>
<price type="10" name="Цена сделки" shortname="Цена сделки" searchable="true" sortable="true"/>
<value type="11" name="Сумма сделки" shortname="Сумма сделки" searchable="true" sortable="true"/>
<qty type="11" name="Количество лотов по сделке" shortname="Количество лотов по сделке" searchable="true" sortable="true"/>
<accruedint type="10" name="НКД за 1 ценную бумагу" shortname="НКД за 1 ценную бумагу" searchable="true" sortable="true"/>
<firm_id type="2" length="255" name="ID клиента в КС" shortname="ID клиента в КС" searchable="true" sortable="true"/>
<client_code type="2" length="255" name="Код участника торгов = Код участника клиринга = Код участника расчетов" shortname="Участник" searchable="true" sortable="true"/>
<exchange_commission type="11" name="Комиссия по сделке" shortname="Комиссия" searchable="true" sortable="true"/>
<class_code type="2" length="255" name="Код класса сделки из новой ТС" shortname="Код класса сделки" searchable="true" sortable="true"/>
<operation type="2" length="255" name="Тип плеча (Купля/Продажа)" shortname="Тип плеча" searchable="true" sortable="true"/>
<issue_account type="2" length="50" name="Счет для учета ценной бумаги" shortname="Счет для учета ценной бумаги" searchable="true" sortable="true"/>
<money_account type="2" length="50" name="Счет для учета денежных средств" shortname="Счет для учета денежных средств" searchable="true" sortable="true"/>
<trade_type type="2" length="50" name="Первичное размещение/торги" shortname="Первичное размещение/торги" searchable="true" sortable="true"/>
<days_to_mat_date type="1" name="Количество дней до погашения" shortname="Количество дней до погашения" searchable="true" sortable="true"/>
<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">
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
<createdAt field="created" type="4" name="Дата и время создания записи" shortname="Создано" searchable="true" sortable="true" ignore="true"/>
@ -2004,13 +2114,6 @@
<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">
<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="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"/>

View file

@ -28,9 +28,7 @@ import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.filter.CharacterEncodingFilter;
import ru.clearing.classes.statics.data.user.User;
import ru.spcex.clearing.backendapi.controller.config.*;
import ru.spcex.clearing.backendapi.controller.queue.account.AccountBalanceController;
import ru.spcex.clearing.backendapi.controller.queue.account.AccountController;
import ru.spcex.clearing.backendapi.controller.queue.account.BankAccountController;
import ru.spcex.clearing.backendapi.controller.queue.account.*;
import ru.spcex.clearing.backendapi.controller.queue.company.*;
import ru.spcex.clearing.backendapi.controller.queue.execution.ExecutionDepositController;
import ru.spcex.clearing.backendapi.controller.queue.journal.InDocumentJournalController;
@ -42,9 +40,7 @@ import ru.spcex.clearing.backendapi.controller.queue.misc.*;
import ru.spcex.clearing.backendapi.controller.queue.payment.PaymentInstructionController;
import ru.spcex.clearing.backendapi.controller.queue.register.*;
import ru.spcex.clearing.backendapi.controller.queue.scheduler.*;
import ru.spcex.clearing.backendapi.controller.queue.securities.CudMoneyMarketSecurityController;
import ru.spcex.clearing.backendapi.controller.queue.securities.InformationAccountController;
import ru.spcex.clearing.backendapi.controller.queue.securities.SecurityController;
import ru.spcex.clearing.backendapi.controller.queue.securities.*;
import ru.spcex.clearing.backendapi.controller.queue.user.UserController;
import ru.spcex.clearing.backendapi.controller.queue.user.UserRoleSessionController;
import ru.spcex.clearing.backendapi.controller.queue.utilities.CudKeyRateController;
@ -90,6 +86,8 @@ import static ru.spcex.clearing.test.json.MatcherFactoryWithJson.usingIgnoringFi
AccountBalanceController.class,
AccountController.class,
BankAccountController.class,
ClearingAccountController.class,
DepoAccountController.class,
//company
CompanyRoleSetController.class,
CompanyController.class,
@ -135,6 +133,10 @@ import static ru.spcex.clearing.test.json.MatcherFactoryWithJson.usingIgnoringFi
PlannerTemplateController.class,
//securities
CudMoneyMarketSecurityController.class,
CudCouponPeriodController.class,
CudEquitySecurityController.class,
CudFixedIncomeCashFlowController.class,
CudFixedIncomeSecurityController.class,
InformationAccountController.class,
SecurityController.class,
//user
@ -156,7 +158,7 @@ import static ru.spcex.clearing.test.json.MatcherFactoryWithJson.usingIgnoringFi
@WebMvcTest//(controllers = DeleteCompanyController.class)
//@TestPropertySource(properties = "spring.config.location=D:/repo/mfd/clearing/clearing-parent/backend-api/src/main/resources/")
public abstract class AbstractControllerTest {
protected static final MatcherFactoryWithJson.Matcher<BaseRequest> BASE_REQUEST_MATCHER = usingIgnoringFieldsComparatorForClass(BaseRequest.class);
protected static final MatcherFactoryWithJson.Matcher<BaseRequest> BASE_REQUEST_MATCHER = usingIgnoringFieldsComparatorForClass(BaseRequest.class,"userId");
protected static final MatcherFactoryWithJson.Matcher<CudResponse> CUD_RESPONSE_MATCHER = usingIgnoringFieldsComparatorForClass(CudResponse.class);
protected static final AtomicLong currentId = new AtomicLong();
private static final CharacterEncodingFilter CHARACTER_ENCODING_FILTER = new CharacterEncodingFilter();

View file

@ -5,6 +5,7 @@ import ru.clearing.classes.statics.data.account.AccountBalance;
import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
@Deprecated
class AccountBalanceControllerTest extends AbstractControllerTest {
private static final String REST_URL = "/account-balances/";

View file

@ -3,7 +3,11 @@ package ru.spcex.clearing.backendapi.controller.queue.account;
import org.junit.jupiter.api.Test;
import ru.clearing.classes.statics.data.account.Account;
import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest;
import ru.spcex.clearing.backendapi.controller.request.cud.account.AccountNewAction;
import ru.spcex.clearing.backendapi.controller.request.cud.account.AccountUpdateAction;
import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts;
class AccountControllerTest extends AbstractControllerTest {
private static final String REST_URL = "/accounting/accounts/";
@ -11,7 +15,7 @@ class AccountControllerTest extends AbstractControllerTest {
/**
* {@link AccountController#getAll()} <br>
* Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_BankAccount.<br>
* Входной запрос /securities/bank-accounts/ <br>
* Входной запрос /accounting/accounts/ <br>
* Ответ CommonGetAllResponse <br>
*/
@Test
@ -25,4 +29,79 @@ class AccountControllerTest extends AbstractControllerTest {
//ACT and ASSERT
checkGettingAllFromRestApi(IMDGDistributedNames.Map_Account, existBankAccount, REST_URL);
}
/**
* {@link AccountController#add(AccountNewAction)} <br>
* Тест проверяет получение сущности {@link AccountNewAction} по REST API и отправку в Apache Kafka.<br>
* Входной запрос {@link AccountNewAction}:<br>
*/
@Test
void add() throws Exception {
//ARRANGE
AccountNewAction accountNewAction = new AccountNewAction();
accountNewAction.setStatus("ACTV");
accountNewAction.setAccount("A11112222333");
accountNewAction.setCompanyId(5L);
accountNewAction.setAccountType("BANK");
//ACT and ASSERT
checkAddingByRestApi(REST_URL, accountNewAction);
checkSendedMessegeFromKafka(Consts.DESTINATION_ACCOUNT_NEW, accountNewAction);
}
/**
* {@link AccountController#update(Long, AccountUpdateAction)} <br>
* Тест проверяет получение сущности {@link AccountUpdateAction} по REST API и отправку в Apache Kafka.<br>
* Входной запрос {@link AccountUpdateAction}:<br>
*/
@Test
void update() throws Exception {
//ARRANGE
long id = currentId.getAndIncrement();
AccountUpdateAction accountUpdateAction = new AccountUpdateAction();
accountUpdateAction.setId(id);
accountUpdateAction.setStatus("ACTV");
accountUpdateAction.setAccount("A11112222333");
accountUpdateAction.setCompanyId(5L);
accountUpdateAction.setAccountType("BANK");
Account account = getAccount(id);
//ACT and ASSERT
checkUpdatingWithIdVolidationByRestApi(IMDGDistributedNames.Map_Account, account,
REST_URL, accountUpdateAction, id);
checkSendedMessegeFromKafka(Consts.DESTINATION_ACCOUNT_UPDATE, accountUpdateAction);
}
/**
* {@link AccountController#delete(Long)} <br>
* Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.<br>
* Входной запрос /securities/account/{@link Long}: - 0L<br>
*/
@Test
void delete() throws Exception {
//ARRANGE
long id = currentId.getAndIncrement();
CommonDeleteAction deleteAction = new CommonDeleteAction();
deleteAction.setId(id);
Account account = getAccount(id);
//ACT and ASSERT
checkDeletingWithIdVolidationByRestApi(IMDGDistributedNames.Map_Account, account,
REST_URL, id);
checkSendedMessegeFromKafka(Consts.DESTINATION_ACCOUNT_DELETE, deleteAction);
}
private Account getAccount(Long id) {
Account account = new Account();
account.setId(id);
account.setStatus("ACTV");
account.setAccount("A11112222333");
account.setRelationId(4L);
account.setCompanyId(5L);
account.setAccountType("BANK");
account.setProcessingSign("B");
account.setRelationId(6L);
return account;
}
}

View file

@ -25,7 +25,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
import static ru.spcex.clearing.test.json.JsonUtil.writeValue;
class BankAccountControllerTest extends AbstractControllerTest {
private static final String REST_URL = "/securities/bank-accounts/";
private static final String REST_URL = "/accounting/bank-accounts/";
/**
* {@link BankAccountController#add(BankAccountNewAction)}<br>
@ -124,7 +124,7 @@ class BankAccountControllerTest extends AbstractControllerTest {
/**
* {@link BankAccountController#delete(Long)} <br>
* Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.<br>
* Входной запрос /securities/bank-accounts/{@link Long}: - 0L<br>
* Входной запрос /accounting/bank-accounts/{@link Long}: - 0L<br>
*/
@Test
void delete() throws Exception {
@ -140,7 +140,7 @@ class BankAccountControllerTest extends AbstractControllerTest {
/**
* {@link BankAccountController#getById(Long)} <br>
* Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_BankAccount.<br>
* Входной запрос /securities/bank-accounts/{@link Long}: - 0L <br>
* Входной запрос /accounting/bank-accounts/{@link Long}: - 0L <br>
* Ответ BankAccountBackendGetById <br>
*/
@Test
@ -185,7 +185,7 @@ class BankAccountControllerTest extends AbstractControllerTest {
/**
* {@link BankAccountController#getAll()} <br>
* Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_BankAccount.<br>
* Входной запрос /securities/bank-accounts/ <br>
* Входной запрос /accounting/bank-accounts/ <br>
* Ответ CommonGetAllResponse <br>
*/
@Test

View file

@ -0,0 +1,30 @@
package ru.spcex.clearing.backendapi.controller.queue.account;
import org.junit.jupiter.api.Test;
import ru.clearing.classes.statics.data.account.ClearingAccount;
import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
class ClearingAccountControllerTest extends AbstractControllerTest {
private static final String REST_URL = "/accounting/clearing-accounts/";
/**
* {@link ClearingAccountController#getAll()} <br>
* Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_ClearingAccount.<br>
* Входной запрос /securities/clearing-accounts/ <br>
* Ответ CommonGetAllResponse <br>
*/
@Test
void getAll() throws Exception {
//ARRANGE
ClearingAccount existClearingAccount = new ClearingAccount();
existClearingAccount.setAccountId(99L);
existClearingAccount.setClearingAccountType("CATPE-1");
existClearingAccount.setCompanyId(6L);
existClearingAccount.setId(currentId.get());
//ACT and ASSERT
checkGettingAllFromRestApi(IMDGDistributedNames.Map_ClearingAccount, existClearingAccount, REST_URL);
}
}

View file

@ -0,0 +1,30 @@
package ru.spcex.clearing.backendapi.controller.queue.account;
import org.junit.jupiter.api.Test;
import ru.clearing.classes.statics.data.account.DepoAccount;
import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
class DepoAccountControllerTest extends AbstractControllerTest {
private static final String REST_URL = "/accounting/depo-accounts/";
/**
* {@link DepoAccountController#getAll()} <br>
* Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_ClearingAccount.<br>
* Входной запрос /securities/depo-accounts/ <br>
* Ответ CommonGetAllResponse <br>
*/
@Test
void getAll() throws Exception {
//ARRANGE
DepoAccount existDepoAccount = new DepoAccount();
existDepoAccount.setAccountId(99L);
existDepoAccount.setDepoAccountType("T1001");
existDepoAccount.setCompanyId(6L);
existDepoAccount.setId(currentId.get());
//ACT and ASSERT
checkGettingAllFromRestApi(IMDGDistributedNames.Map_DepoAccount, existDepoAccount, REST_URL);
}
}

View file

@ -33,8 +33,7 @@ class EditCompanyInfoControllerTest extends AbstractControllerTest {
* {@link EditCompanyInfoController#update(Long, CompanyInfoUpdateAction)}<br>
* Тест проверяет получение сущности {@link CompanyInfoUpdateAction} по REST API и отправку в Apache Kafka.<br>
* Входной запрос {@link CompanyInfoUpdateAction}:<br>
* {@link CompanyInfoUpdateAction#clearingCode} - 11<br>
* {@link CompanyInfoUpdateAction#tradingCode} - 11<br>
* {@link CompanyInfoUpdateAction#workflowStatus} - ACTV<br>
* {@link CompanyInfoUpdateAction#corporationSoleType} - 0000<br>
* {@link CompanyInfoUpdateAction#countryCode} - 0000<br>
* {@link CompanyInfoUpdateAction#description} - exists description<br>
@ -58,8 +57,7 @@ class EditCompanyInfoControllerTest extends AbstractControllerTest {
* {@link EditCompanyInfoController#update(Long, CompanyInfoUpdateAction)}<br>
* Тест проверяет получение сущности {@link CompanyInfoUpdateAction} по REST API и отправку в Apache Kafka.<br>
* Входной запрос {@link CompanyInfoUpdateAction}:<br>
* {@link CompanyInfoUpdateAction#clearingCode} - 11<br>
* {@link CompanyInfoUpdateAction#tradingCode} - 11<br>
* {@link CompanyInfoUpdateAction#workflowStatus} - ACTV<br>
* {@link CompanyInfoUpdateAction#corporationSoleType} - 0000<br>
* {@link CompanyInfoUpdateAction#countryCode} - 0000<br>
* {@link CompanyInfoUpdateAction#description} - exists description<br>
@ -77,8 +75,7 @@ class EditCompanyInfoControllerTest extends AbstractControllerTest {
void update() throws Exception {
//ARRANGE
CompanyInfoUpdateAction companyInfoUpdateAction = new CompanyInfoUpdateAction();
companyInfoUpdateAction.setClearingCode("11");
companyInfoUpdateAction.setTradingCode("11");
companyInfoUpdateAction.setWorkflowStatus("ACTV");
companyInfoUpdateAction.setCorporationSoleType("0000");
companyInfoUpdateAction.setCountryCode("0000");
companyInfoUpdateAction.setDescription("exists description");
@ -100,7 +97,7 @@ class EditCompanyInfoControllerTest extends AbstractControllerTest {
/**
* {@link EditCompanyInfoController#getAll()} <br>
* Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_Company.<br>
* Входной запрос /securities/bank-accounts/ <br>
* Входной запрос /company-infos/ <br>
* Ответ CommonGetAllResponse <br>
*/
@Test
@ -119,8 +116,6 @@ class EditCompanyInfoControllerTest extends AbstractControllerTest {
existsCompanyInfo.setResidence("0000");
existsCompanyInfo.setShortNameEng("exists shortNameEng");
existsCompanyInfo.setFullNameEng("exists fullNameEng");
existsCompanyInfo.setShortName("exists shortName");
existsCompanyInfo.setFullName("exists fullName");
Company existsCompany = new Company();
existsCompany.setId(ID);
existsCompany.setProfile(existsCompanyInfo);

View file

@ -26,7 +26,10 @@ class ExecutionDepositControllerTest extends AbstractControllerTest {
executionDeposit.setExchangeExecutionId(currentId.get());
executionDeposit.setExchangeExecutionTime(Instant.now());
executionDeposit.setTradingDate(LocalDate.now());
executionDeposit.setAccountId(currentId.get());
executionDeposit.setTradingClearingRegistryId(currentId.get());
executionDeposit.setFirstLegSettlementCode("lcde1");
executionDeposit.setSecondLegSettlementCode("lcde2");
executionDeposit.setContract("contract12");
executionDeposit.setMarket("mark");
executionDeposit.setPrice(new BigDecimal(0));
executionDeposit.setLots(new BigDecimal(0));
@ -40,8 +43,8 @@ class ExecutionDepositControllerTest extends AbstractControllerTest {
executionDeposit.setDuration(currentId.get());
executionDeposit.setFirstLegSettlementDate(LocalDate.now());
executionDeposit.setSecondLegSettlementDate(LocalDate.now());
executionDeposit.setFirstLegSettlementCode(LocalDate.now());
executionDeposit.setSecondLegSettlementCode(LocalDate.now());
executionDeposit.setFirstLegSettlementCode("leg1c");
executionDeposit.setSecondLegSettlementCode("leg2c");
executionDeposit.setSecurityFullName("sec");
executionDeposit.setSecuritySymbol("sec");
executionDeposit.setSecurityId(currentId.get());

View file

@ -15,7 +15,7 @@ class InDocumentJournalControllerTest extends AbstractControllerTest {
/**
* {@link InDocumentJournalController#getAll()} <br>
* Тест проверяет получение запроса по REST API.<br>
* Входной запрос /securities/bank-accounts/ <br>
* Входной запрос /in-document-journals/ <br>
* Ответ CommonGetAllResponse <br>
*/
@Test

View file

@ -0,0 +1,38 @@
package ru.spcex.clearing.backendapi.controller.queue.securities;
import org.junit.jupiter.api.Test;
import ru.clearing.classes.statics.data.instrument.issue.CouponPeriod;
import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import java.math.BigDecimal;
import java.time.LocalDate;
class CudCouponPeriodControllerTest extends AbstractControllerTest {
public static final String REST_URL = "/securities/coupon-period-securities/";
/**
* {@link CudCouponPeriodController#getAll()} <br>
* Тест проверяет получение запроса по REST API.<br>
* Входной запрос /securities/coupon-period-securities/ <br>
* Ответ CommonGetAllResponse <br>
*/
@Test
void getAll() throws Exception {
//ARRANGE
CouponPeriod couponPeriod = getCouponPeriod(currentId.get());
//ACT and ASSERT
checkGettingAllFromRestApi(IMDGDistributedNames.Map_CouponPeriod, couponPeriod, REST_URL);
}
private CouponPeriod getCouponPeriod(Long id) {
CouponPeriod couponPeriod = new CouponPeriod();
couponPeriod.setId(id);
couponPeriod.setCouponRate(BigDecimal.valueOf(120.33));
couponPeriod.setNumber(3L);
couponPeriod.setPeriodStartDate(LocalDate.now().minusDays(1));
couponPeriod.setPeriodEndDate(LocalDate.now().plusDays(2));
return couponPeriod;
}
}

View file

@ -0,0 +1,113 @@
package ru.spcex.clearing.backendapi.controller.queue.securities;
import org.junit.jupiter.api.Test;
import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity;
import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest;
import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction;
import ru.spcex.clearing.backendapi.controller.request.cud.securities.EquitySecurityNewAction;
import ru.spcex.clearing.backendapi.controller.request.cud.securities.EquitySecurityUpdateAction;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.platform.enumeration.Status;
import java.math.BigDecimal;
class CudEquitySecurityControllerTest extends AbstractControllerTest {
public static final String REST_URL = "/securities/equity-securities/";
/**
* {@link CudEquitySecurityController#add(EquitySecurityNewAction)} <br>
* Тест проверяет получение сущности {@link EquitySecurityNewAction} по REST API и отправку в Apache Kafka.<br>
* Входной запрос {@link EquitySecurityNewAction}:<br>
*/
@Test
void add() throws Exception {
//ARRANGE
EquitySecurityNewAction equitySecurityNewAction = new EquitySecurityNewAction();
equitySecurityNewAction.setShareType("shType");
equitySecurityNewAction.setLotSize(BigDecimal.valueOf(120.33));
equitySecurityNewAction.setShortName("name");
equitySecurityNewAction.setFullName("name 2");
equitySecurityNewAction.setWorkflowStatus(Status.Active.getKey());
equitySecurityNewAction.setInstrumentType("status T");
equitySecurityNewAction.setSecuritySymbol("symbol1");
equitySecurityNewAction.setLotSize(new BigDecimal("3.5"));
//ACT and ASSERT
checkAddingByRestApi(REST_URL, equitySecurityNewAction);
checkSendedMessegeFromKafka(Consts.DESTINATION_EQUITY_SECURITY_NEW, equitySecurityNewAction);
}
/**
* {@link CudEquitySecurityController#update(Long, EquitySecurityUpdateAction)} <br>
* Тест проверяет получение сущности {@link EquitySecurityUpdateAction} по REST API и отправку в Apache Kafka.<br>
* Входной запрос {@link EquitySecurityUpdateAction}:<br>
*/
@Test
void update() throws Exception {
//ARRANGE
long id = currentId.getAndIncrement();
EquitySecurityUpdateAction equitySecurityUpdateAction = new EquitySecurityUpdateAction();
equitySecurityUpdateAction.setId(id);
equitySecurityUpdateAction.setShareType("shType");
equitySecurityUpdateAction.setLotSize(BigDecimal.valueOf(120.33));
equitySecurityUpdateAction.setShortName("name");
equitySecurityUpdateAction.setFullName("name 2");
equitySecurityUpdateAction.setWorkflowStatus(Status.Active.getKey());
equitySecurityUpdateAction.setInstrumentType("status T");
equitySecurityUpdateAction.setSecuritySymbol("symbol1");
equitySecurityUpdateAction.setLotSize(new BigDecimal("3.5"));
EquitySecurity equitySecurity = getEquitySecurity(id);
//ACT and ASSERT
checkUpdatingWithIdVolidationByRestApi(IMDGDistributedNames.Map_EquitySecurity, equitySecurity,
REST_URL, equitySecurityUpdateAction, id);
checkSendedMessegeFromKafka(Consts.DESTINATION_EQUITY_SECURITY_UPDATE, equitySecurityUpdateAction);
}
/**
* {@link CudEquitySecurityController#delete(Long)} <br>
* Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.<br>
* Входной запрос /securities/equity-securities/{@link Long}: - 0L<br>
*/
@Test
void delete() throws Exception {
//ARRANGE
long id = currentId.getAndIncrement();
CommonDeleteAction deleteAction = new CommonDeleteAction();
deleteAction.setId(id);
EquitySecurity equitySecurity = getEquitySecurity(id);
//ACT and ASSERT
checkDeletingWithIdVolidationByRestApi(IMDGDistributedNames.Map_MoneyMarketSecurity, equitySecurity,
REST_URL, id);
checkSendedMessegeFromKafka(Consts.DESTINATION_EQUITY_SECURITY_DELETE, deleteAction);
}
/**
* {@link CudEquitySecurityController#getAll()} <br>
* Тест проверяет получение запроса по REST API.<br>
* Входной запрос /securities/equity-securities/ <br>
* Ответ CommonGetAllResponse <br>
*/
@Test
void getAll() throws Exception {
//ARRANGE
EquitySecurity equitySecurity = getEquitySecurity(currentId.get());
//ACT and ASSERT
checkGettingAllFromRestApi(IMDGDistributedNames.Map_EquitySecurity, equitySecurity, REST_URL);
}
private EquitySecurity getEquitySecurity(Long id) {
EquitySecurity equitySecurity = new EquitySecurity();
equitySecurity.setId(id);
equitySecurity.setSecurityId(currentId.get());
equitySecurity.setShareType("shType");
equitySecurity.setLotSize(BigDecimal.valueOf(120.33));
equitySecurity.setShortName("name");
equitySecurity.setWorkflowStatus(Status.Active.getKey());
equitySecurity.setFullName("name 2");
return equitySecurity;
}
}

View file

@ -0,0 +1,39 @@
package ru.spcex.clearing.backendapi.controller.queue.securities;
import org.junit.jupiter.api.Test;
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeCashFlow;
import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import java.math.BigDecimal;
import java.time.LocalDate;
class CudFixedIncomeCashFlowControllerTest extends AbstractControllerTest {
public static final String REST_URL = "/securities/fixed-income-cash-flow-securities/";
/**
* {@link CudFixedIncomeCashFlowController#getAll()} <br>
* Тест проверяет получение запроса по REST API.<br>
* Входной запрос /securities/fixed-income-cash-flow-securities/ <br>
* Ответ CommonGetAllResponse <br>
*/
@Test
void getAll() throws Exception {
//ARRANGE
FixedIncomeCashFlow fixedIncomeCashFlow = getFixedIncomeCashFlow(currentId.get());
//ACT and ASSERT
checkGettingAllFromRestApi(IMDGDistributedNames.Map_FixedIncomeCashFlow, fixedIncomeCashFlow, REST_URL);
}
private FixedIncomeCashFlow getFixedIncomeCashFlow(Long id) {
FixedIncomeCashFlow fixedIncomeCashFlow = new FixedIncomeCashFlow();
fixedIncomeCashFlow.setId(id);
fixedIncomeCashFlow.setSecurityId(100L);
fixedIncomeCashFlow.setAccruedCoupon(BigDecimal.valueOf(120.33));
fixedIncomeCashFlow.setNominalValue(BigDecimal.valueOf(130.33));
fixedIncomeCashFlow.setNumber(2L);
fixedIncomeCashFlow.setValueDate(LocalDate.now());
return fixedIncomeCashFlow;
}
}

View file

@ -0,0 +1,113 @@
package ru.spcex.clearing.backendapi.controller.queue.securities;
import org.junit.jupiter.api.Test;
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest;
import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction;
import ru.spcex.clearing.backendapi.controller.request.cud.securities.FixedIncomeSecurityNewAction;
import ru.spcex.clearing.backendapi.controller.request.cud.securities.FixedIncomeSecurityUpdateAction;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.platform.enumeration.Status;
import java.math.BigDecimal;
class CudFixedIncomeSecurityControllerTest extends AbstractControllerTest {
public static final String REST_URL = "/securities/fixed-income-securities/";
/**
* {@link CudFixedIncomeSecurityController#add(FixedIncomeSecurityNewAction)} <br>
* Тест проверяет получение сущности {@link FixedIncomeSecurityNewAction} по REST API и отправку в Apache Kafka.<br>
* Входной запрос {@link FixedIncomeSecurityNewAction}:<br>
*/
@Test
void add() throws Exception {
//ARRANGE
FixedIncomeSecurityNewAction fixedIncomeSecurityNewAction = new FixedIncomeSecurityNewAction();
fixedIncomeSecurityNewAction.setBondType("bType");
fixedIncomeSecurityNewAction.setLotSize(BigDecimal.valueOf(120.33));
fixedIncomeSecurityNewAction.setShortName("name");
fixedIncomeSecurityNewAction.setFullName("name 2");
fixedIncomeSecurityNewAction.setWorkflowStatus(Status.Active.getKey());
fixedIncomeSecurityNewAction.setInstrumentType("status T");
fixedIncomeSecurityNewAction.setSecuritySymbol("symbol1");
fixedIncomeSecurityNewAction.setLotSize(new BigDecimal("3.5"));
//ACT and ASSERT
checkAddingByRestApi(REST_URL, fixedIncomeSecurityNewAction);
checkSendedMessegeFromKafka(Consts.DESTINATION_FIXED_INCOME_SECURITY_NEW, fixedIncomeSecurityNewAction);
}
/**
* {@link CudFixedIncomeSecurityController#update(Long, FixedIncomeSecurityUpdateAction)} <br>
* Тест проверяет получение сущности {@link FixedIncomeSecurityUpdateAction} по REST API и отправку в Apache Kafka.<br>
* Входной запрос {@link FixedIncomeSecurityUpdateAction}:<br>
*/
@Test
void update() throws Exception {
//ARRANGE
long id = currentId.getAndIncrement();
FixedIncomeSecurityUpdateAction fixedIncomeSecurityUpdateAction = new FixedIncomeSecurityUpdateAction();
fixedIncomeSecurityUpdateAction.setId(id);
fixedIncomeSecurityUpdateAction.setBondType("bType");
fixedIncomeSecurityUpdateAction.setLotSize(BigDecimal.valueOf(120.33));
fixedIncomeSecurityUpdateAction.setShortName("name");
fixedIncomeSecurityUpdateAction.setFullName("name 2");
fixedIncomeSecurityUpdateAction.setWorkflowStatus(Status.Active.getKey());
fixedIncomeSecurityUpdateAction.setInstrumentType("status T");
fixedIncomeSecurityUpdateAction.setSecuritySymbol("symbol1");
fixedIncomeSecurityUpdateAction.setLotSize(new BigDecimal("3.5"));
FixedIncomeSecurity fixedIncomeSecurity = getFixedIncomeSecurity(id);
//ACT and ASSERT
checkUpdatingWithIdVolidationByRestApi(IMDGDistributedNames.Map_FixedIncomeSecurity, fixedIncomeSecurity,
REST_URL, fixedIncomeSecurityUpdateAction, id);
checkSendedMessegeFromKafka(Consts.DESTINATION_FIXED_INCOME_SECURITY_UPDATE, fixedIncomeSecurityUpdateAction);
}
/**
* {@link CudFixedIncomeSecurityController#delete(Long)} <br>
* Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.<br>
* Входной запрос /securities/fixed-income-securities/{@link Long}: - 0L<br>
*/
@Test
void delete() throws Exception {
//ARRANGE
long id = currentId.getAndIncrement();
CommonDeleteAction deleteAction = new CommonDeleteAction();
deleteAction.setId(id);
FixedIncomeSecurity fixedIncomeSecurity = getFixedIncomeSecurity(id);
//ACT and ASSERT
checkDeletingWithIdVolidationByRestApi(IMDGDistributedNames.Map_MoneyMarketSecurity, fixedIncomeSecurity,
REST_URL, id);
checkSendedMessegeFromKafka(Consts.DESTINATION_FIXED_INCOME_SECURITY_DELETE, deleteAction);
}
/**
* {@link CudFixedIncomeSecurityController#getAll()} <br>
* Тест проверяет получение запроса по REST API.<br>
* Входной запрос /securities/fixed-income-securities/ <br>
* Ответ CommonGetAllResponse <br>
*/
@Test
void getAll() throws Exception {
//ARRANGE
FixedIncomeSecurity fixedIncomeSecurity = getFixedIncomeSecurity(currentId.get());
//ACT and ASSERT
checkGettingAllFromRestApi(IMDGDistributedNames.Map_FixedIncomeSecurity, fixedIncomeSecurity, REST_URL);
}
private FixedIncomeSecurity getFixedIncomeSecurity(Long id) {
FixedIncomeSecurity fixedIncomeSecurity = new FixedIncomeSecurity();
fixedIncomeSecurity.setId(id);
fixedIncomeSecurity.setSecurityId(currentId.get());
fixedIncomeSecurity.setBondType("bType");
fixedIncomeSecurity.setLotSize(BigDecimal.valueOf(120.33));
fixedIncomeSecurity.setShortName("name");
fixedIncomeSecurity.setWorkflowStatus(Status.Active.getKey());
fixedIncomeSecurity.setFullName("name 2");
return fixedIncomeSecurity;
}
}

View file

@ -4,7 +4,6 @@ import org.junit.jupiter.api.Test;
import ru.clearing.classes.statics.data.misc.MoneyMarketSecurity;
import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest;
import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction;
import ru.spcex.clearing.backendapi.controller.request.cud.schedule.PlannerTemplateNewAction;
import ru.spcex.clearing.backendapi.controller.request.cud.securities.MoneyMarketSecurityNewAction;
import ru.spcex.clearing.backendapi.controller.request.cud.securities.MoneyMarketSecurityUpdateAction;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
@ -19,8 +18,8 @@ class CudMoneyMarketSecurityControllerTest extends AbstractControllerTest {
/**
* {@link CudMoneyMarketSecurityController#add(MoneyMarketSecurityNewAction)} <br>
* Тест проверяет получение сущности {@link PlannerTemplateNewAction} по REST API и отправку в Apache Kafka.<br>
* Входной запрос {@link PlannerTemplateNewAction}:<br>
* Тест проверяет получение сущности {@link MoneyMarketSecurityNewAction} по REST API и отправку в Apache Kafka.<br>
* Входной запрос {@link MoneyMarketSecurityNewAction}:<br>
*/
@Test
void add() throws Exception {
@ -32,7 +31,8 @@ class CudMoneyMarketSecurityControllerTest extends AbstractControllerTest {
moneyMarketSecurityNewAction.setNominalCurrency("nominal");
moneyMarketSecurityNewAction.setInstrumentType("status");
moneyMarketSecurityNewAction.setFullName("fname");
moneyMarketSecurityNewAction.setSecuritySymbol("sname");
moneyMarketSecurityNewAction.setShortName("shortName");
moneyMarketSecurityNewAction.setSecuritySymbol("s-symbol");
moneyMarketSecurityNewAction.setLotSize(new BigDecimal("3.5"));
//ACT and ASSERT

View file

@ -59,7 +59,7 @@ class CudKeyRateControllerTest extends AbstractControllerTest {
/**
* {@link CudKeyRateController#delete(Long)} <br>
* Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.<br>
* Входной запрос /securities/bank-accounts/{@link Long}: - 0L<br>
* Входной запрос /utilities/key-rates/{@link Long}: - 0L<br>
*/
@Test
void delete() throws Exception {

File diff suppressed because it is too large Load diff

View file

@ -10,7 +10,7 @@ public class ExecutionDeposit extends BusinessObject {
private Long exchangeExecutionId;
private Instant exchangeExecutionTime;
private LocalDate tradingDate;
private Long accountId;
private Long tradingClearingRegistryId;
private String market;
private BigDecimal price;
private BigDecimal lots;
@ -24,11 +24,12 @@ public class ExecutionDeposit extends BusinessObject {
private Long duration;
private LocalDate firstLegSettlementDate;
private LocalDate secondLegSettlementDate;
private LocalDate firstLegSettlementCode;
private LocalDate secondLegSettlementCode;
private String firstLegSettlementCode;
private String secondLegSettlementCode;
private String securityFullName;
private String securitySymbol;
private Long securityId;
private String contract;
private Long counterPartyId;
private String coverageStatus;
private Long sessionId;
@ -58,12 +59,12 @@ public class ExecutionDeposit extends BusinessObject {
this.tradingDate = tradingDate;
}
public Long getAccountId() {
return accountId;
public Long getTradingClearingRegistryId() {
return tradingClearingRegistryId;
}
public void setAccountId(Long accountId) {
this.accountId = accountId;
public void setTradingClearingRegistryId(Long tradingClearingRegistryId) {
this.tradingClearingRegistryId = tradingClearingRegistryId;
}
public String getMarket() {
@ -170,19 +171,19 @@ public class ExecutionDeposit extends BusinessObject {
this.secondLegSettlementDate = secondLegSettlementDate;
}
public LocalDate getFirstLegSettlementCode() {
public String getFirstLegSettlementCode() {
return firstLegSettlementCode;
}
public void setFirstLegSettlementCode(LocalDate firstLegSettlementCode) {
public void setFirstLegSettlementCode(String firstLegSettlementCode) {
this.firstLegSettlementCode = firstLegSettlementCode;
}
public LocalDate getSecondLegSettlementCode() {
public String getSecondLegSettlementCode() {
return secondLegSettlementCode;
}
public void setSecondLegSettlementCode(LocalDate secondLegSettlementCode) {
public void setSecondLegSettlementCode(String secondLegSettlementCode) {
this.secondLegSettlementCode = secondLegSettlementCode;
}
@ -210,6 +211,14 @@ public class ExecutionDeposit extends BusinessObject {
this.securityId = securityId;
}
public String getContract() {
return contract;
}
public void setContract(String contract) {
this.contract = contract;
}
public Long getCounterPartyId() {
return counterPartyId;
}

View file

@ -0,0 +1,28 @@
package ru.clearing.classes.statics.data.execution;
import ru.clearing.classes.ConstSerializable;
import ru.clearing.classes.objects.BusinessEvent;
import java.io.Serial;
/**
* Изменение состояния объекта Сделки
* <p>
* DB table: EXECUTION_DEPOSIT_HISTORY
**/
public class ExecutionDepositHistory extends BusinessEvent<ExecutionDeposit> {
@Serial
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private ExecutionDeposit object;
@Override
public ExecutionDeposit getObject() {
return object;
}
@Override
public void setObject(ExecutionDeposit object) {
this.object = object;
}
}

View file

@ -0,0 +1,263 @@
package ru.clearing.classes.statics.data.execution;
import ru.clearing.classes.ConstSerializable;
import ru.clearing.classes.objects.BusinessObject;
import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDate;
/**
* Сделки на Фондовой секции
* <p>
* DB table: EXECUTION_FOND
**/
public class ExecutionFond extends BusinessObject {
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private LocalDate clearingDate;
private Long exchangeExecutionId;
private String side;
private String market;
private LocalDate tradingDate;
private String securitySymbol;
private Long securityId;
private BigDecimal interestAmount;
private Long exchangeOrderId;
private BigDecimal price;
private BigDecimal settlementAmount;
private BigDecimal lots;
private BigDecimal quantity;
private Instant exchangeExecutionTime;
private Long duration;
private Long tradingClearingRegistryId;
private String comment;
private Long clientCodeId;
private String settlementCode;
private Long companyId;
private Long counterPartyId;
private String securityFullName;
private LocalDate settlementDate;
private String settlementCurrency;
private Instant exchangeExecutionMicroseconds;
private String coverageStatus;
private Long sessionId;
public LocalDate getClearingDate() {
return clearingDate;
}
public void setClearingDate(LocalDate value) {
this.clearingDate = value;
}
public Long getExchangeExecutionId() {
return exchangeExecutionId;
}
public void setExchangeExecutionId(Long value) {
this.exchangeExecutionId = value;
}
public String getSide() {
return side;
}
public void setSide(String value) {
this.side = value;
}
public String getMarket() {
return market;
}
public void setMarket(String value) {
this.market = value;
}
public LocalDate getTradingDate() {
return tradingDate;
}
public void setTradingDate(LocalDate value) {
this.tradingDate = value;
}
public String getSecuritySymbol() {
return securitySymbol;
}
public void setSecuritySymbol(String value) {
this.securitySymbol = value;
}
public Long getSecurityId() {
return securityId;
}
public void setSecurityId(Long value) {
this.securityId = value;
}
public BigDecimal getInterestAmount() {
return interestAmount;
}
public void setInterestAmount(BigDecimal value) {
this.interestAmount = value;
}
public Long getExchangeOrderId() {
return exchangeOrderId;
}
public void setExchangeOrderId(Long value) {
this.exchangeOrderId = value;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal value) {
this.price = value;
}
public BigDecimal getSettlementAmount() {
return settlementAmount;
}
public void setSettlementAmount(BigDecimal value) {
this.settlementAmount = value;
}
public BigDecimal getLots() {
return lots;
}
public void setLots(BigDecimal value) {
this.lots = value;
}
public BigDecimal getQuantity() {
return quantity;
}
public void setQuantity(BigDecimal value) {
this.quantity = value;
}
public Instant getExchangeExecutionTime() {
return exchangeExecutionTime;
}
public void setExchangeExecutionTime(Instant value) {
this.exchangeExecutionTime = value;
}
public Long getDuration() {
return duration;
}
public void setDuration(Long value) {
this.duration = value;
}
public Long getTradingClearingRegistryId() {
return tradingClearingRegistryId;
}
public void setTradingClearingRegistryId(Long value) {
this.tradingClearingRegistryId = value;
}
public String getComment() {
return comment;
}
public void setComment(String value) {
this.comment = value;
}
public Long getClientCodeId() {
return clientCodeId;
}
public void setClientCodeId(Long value) {
this.clientCodeId = value;
}
public String getSettlementCode() {
return settlementCode;
}
public void setSettlementCode(String value) {
this.settlementCode = value;
}
public Long getCompanyId() {
return companyId;
}
public void setCompanyId(Long value) {
this.companyId = value;
}
public Long getCounterPartyId() {
return counterPartyId;
}
public void setCounterPartyId(Long value) {
this.counterPartyId = value;
}
public String getSecurityFullName() {
return securityFullName;
}
public void setSecurityFullName(String value) {
this.securityFullName = value;
}
public LocalDate getSettlementDate() {
return settlementDate;
}
public void setSettlementDate(LocalDate value) {
this.settlementDate = value;
}
public String getSettlementCurrency() {
return settlementCurrency;
}
public void setSettlementCurrency(String value) {
this.settlementCurrency = value;
}
public Instant getExchangeExecutionMicroseconds() {
return exchangeExecutionMicroseconds;
}
public void setExchangeExecutionMicroseconds(Instant value) {
this.exchangeExecutionMicroseconds = value;
}
public String getCoverageStatus() {
return coverageStatus;
}
public void setCoverageStatus(String value) {
this.coverageStatus = value;
}
public Long getSessionId() {
return sessionId;
}
public void setSessionId(Long value) {
this.sessionId = value;
}
}

View file

@ -0,0 +1,28 @@
package ru.clearing.classes.statics.data.execution;
import ru.clearing.classes.ConstSerializable;
import ru.clearing.classes.objects.BusinessEvent;
import java.io.Serial;
/**
* Изменение состояния объекта Сделки на Фондовой секции
* <p>
* DB table: EXECUTION_FOND_HISTORY
**/
public class ExecutionFondHistory extends BusinessEvent<ExecutionFond> {
@Serial
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private ExecutionFond object;
@Override
public ExecutionFond getObject() {
return object;
}
@Override
public void setObject(ExecutionFond object) {
this.object = object;
}
}

View file

@ -1,189 +0,0 @@
package ru.clearing.classes.statics.data.misc;
import ru.clearing.classes.ConstSerializable;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDate;
/**
* Сделки из Торговой системы
* <p>
* DB table: S_TRADE
**/
public class STrade extends SpcexObjectBase {
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private Long tradeNum;
private String secCode;
private Instant tradeDateTime;
private LocalDate settleDate;
private BigDecimal price;
private BigDecimal value;
private BigDecimal qty;
private BigDecimal accruedint;
private String firmId;
private String clientCode;
private BigDecimal exchangeCommission;
private String classCode;
private String operation;
private String issueAccount;
private String moneyAccount;
private String tradeType;
private Long daysToMatDate;
private String collateral;
private String settleCode;
public Long getTradeNum() {
return tradeNum;
}
public void setTradeNum(Long value) {
this.tradeNum = value;
}
public String getSecCode() {
return secCode;
}
public void setSecCode(String value) {
this.secCode = value;
}
public Instant getTradeDateTime() {
return tradeDateTime;
}
public void setTradeDateTime(Instant value) {
this.tradeDateTime = value;
}
public LocalDate getSettleDate() {
return settleDate;
}
public void setSettleDate(LocalDate value) {
this.settleDate = value;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal value) {
this.price = value;
}
public BigDecimal getValue() {
return value;
}
public void setValue(BigDecimal value) {
this.value = value;
}
public BigDecimal getQty() {
return qty;
}
public void setQty(BigDecimal value) {
this.qty = value;
}
public BigDecimal getAccruedint() {
return accruedint;
}
public void setAccruedint(BigDecimal value) {
this.accruedint = value;
}
public String getFirmId() {
return firmId;
}
public void setFirmId(String value) {
this.firmId = value;
}
public String getClientCode() {
return clientCode;
}
public void setClientCode(String value) {
this.clientCode = value;
}
public BigDecimal getExchangeCommission() {
return exchangeCommission;
}
public void setExchangeCommission(BigDecimal value) {
this.exchangeCommission = value;
}
public String getClassCode() {
return classCode;
}
public void setClassCode(String value) {
this.classCode = value;
}
public String getOperation() {
return operation;
}
public void setOperation(String value) {
this.operation = value;
}
public String getIssueAccount() {
return issueAccount;
}
public void setIssueAccount(String value) {
this.issueAccount = value;
}
public String getMoneyAccount() {
return moneyAccount;
}
public void setMoneyAccount(String value) {
this.moneyAccount = value;
}
public String getTradeType() {
return tradeType;
}
public void setTradeType(String value) {
this.tradeType = value;
}
public Long getDaysToMatDate() {
return daysToMatDate;
}
public void setDaysToMatDate(Long value) {
this.daysToMatDate = value;
}
public String getCollateral() {
return collateral;
}
public void setCollateral(String value) {
this.collateral = value;
}
public String getSettleCode() {
return settleCode;
}
public void setSettleCode(String value) {
this.settleCode = value;
}
}

View file

@ -0,0 +1,414 @@
package ru.clearing.classes.statics.data.misc;
import ru.clearing.classes.ConstSerializable;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDate;
/**
* Сделки из Торговой системы
* <p>
* DB table: S_TRADE
**/
public class STrades extends SpcexObjectBase {
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private Long tradeNum;
private String operation;
private String classCode;
private LocalDate tradeDate;
private String secCode;
private BigDecimal accruedint;
private BigDecimal accruedint2;
private BigDecimal lowerDiscount;
private Long orderNum;
private BigDecimal price;
private BigDecimal price2;
private BigDecimal repoRate;
private BigDecimal repoValue;
private BigDecimal repo2Value;
private BigDecimal startDiscount;
private BigDecimal tsCommission;
private BigDecimal upperDiscount;
private BigDecimal value;
private BigDecimal yield;
private BigDecimal qty;
private BigDecimal qtyPcs;
private Instant tradeDateTime;
private Long repoTerm;
private BigDecimal clearingCommission;
private BigDecimal exchangeCommission;
private BigDecimal techCenterCommission;
private String account;
private String brokerRef;
private String clientCode;
private String settleCode;
private String userId;
private String exchangeCode;
private String firmId;
private String firmName;
private String cpFirmId;
private String cpFirmName;
private String className;
private String secName;
private LocalDate settleDate;
private String settleCurrency;
private String tradeCurrency;
private Long tradeTimeMs;
private String bankAccId;
private String section;
public Long getTradeNum() {
return tradeNum;
}
public void setTradeNum(Long tradeNum) {
this.tradeNum = tradeNum;
}
public String getOperation() {
return operation;
}
public void setOperation(String operation) {
this.operation = operation;
}
public String getClassCode() {
return classCode;
}
public void setClassCode(String classCode) {
this.classCode = classCode;
}
public LocalDate getTradeDate() {
return tradeDate;
}
public void setTradeDate(LocalDate tradeDate) {
this.tradeDate = tradeDate;
}
public String getSecCode() {
return secCode;
}
public void setSecCode(String secCode) {
this.secCode = secCode;
}
public BigDecimal getAccruedint() {
return accruedint;
}
public void setAccruedint(BigDecimal accruedint) {
this.accruedint = accruedint;
}
public BigDecimal getAccruedint2() {
return accruedint2;
}
public void setAccruedint2(BigDecimal accruedint2) {
this.accruedint2 = accruedint2;
}
public BigDecimal getLowerDiscount() {
return lowerDiscount;
}
public void setLowerDiscount(BigDecimal lowerDiscount) {
this.lowerDiscount = lowerDiscount;
}
public Long getOrderNum() {
return orderNum;
}
public void setOrderNum(Long orderNum) {
this.orderNum = orderNum;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public BigDecimal getPrice2() {
return price2;
}
public void setPrice2(BigDecimal price2) {
this.price2 = price2;
}
public BigDecimal getRepoRate() {
return repoRate;
}
public void setRepoRate(BigDecimal repoRate) {
this.repoRate = repoRate;
}
public BigDecimal getRepoValue() {
return repoValue;
}
public void setRepoValue(BigDecimal repoValue) {
this.repoValue = repoValue;
}
public BigDecimal getRepo2Value() {
return repo2Value;
}
public void setRepo2Value(BigDecimal repo2Value) {
this.repo2Value = repo2Value;
}
public BigDecimal getStartDiscount() {
return startDiscount;
}
public void setStartDiscount(BigDecimal startDiscount) {
this.startDiscount = startDiscount;
}
public BigDecimal getTsCommission() {
return tsCommission;
}
public void setTsCommission(BigDecimal tsCommission) {
this.tsCommission = tsCommission;
}
public BigDecimal getUpperDiscount() {
return upperDiscount;
}
public void setUpperDiscount(BigDecimal upperDiscount) {
this.upperDiscount = upperDiscount;
}
public BigDecimal getValue() {
return value;
}
public void setValue(BigDecimal value) {
this.value = value;
}
public BigDecimal getYield() {
return yield;
}
public void setYield(BigDecimal yield) {
this.yield = yield;
}
public BigDecimal getQty() {
return qty;
}
public void setQty(BigDecimal qty) {
this.qty = qty;
}
public BigDecimal getQtyPcs() {
return qtyPcs;
}
public void setQtyPcs(BigDecimal qtyPcs) {
this.qtyPcs = qtyPcs;
}
public Instant getTradeDateTime() {
return tradeDateTime;
}
public void setTradeDateTime(Instant tradeDateTime) {
this.tradeDateTime = tradeDateTime;
}
public Long getRepoTerm() {
return repoTerm;
}
public void setRepoTerm(Long repoTerm) {
this.repoTerm = repoTerm;
}
public BigDecimal getClearingCommission() {
return clearingCommission;
}
public void setClearingCommission(BigDecimal clearingCommission) {
this.clearingCommission = clearingCommission;
}
public BigDecimal getExchangeCommission() {
return exchangeCommission;
}
public void setExchangeCommission(BigDecimal exchangeCommission) {
this.exchangeCommission = exchangeCommission;
}
public BigDecimal getTechCenterCommission() {
return techCenterCommission;
}
public void setTechCenterCommission(BigDecimal techCenterCommission) {
this.techCenterCommission = techCenterCommission;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getBrokerRef() {
return brokerRef;
}
public void setBrokerRef(String brokerRef) {
this.brokerRef = brokerRef;
}
public String getClientCode() {
return clientCode;
}
public void setClientCode(String clientCode) {
this.clientCode = clientCode;
}
public String getSettleCode() {
return settleCode;
}
public void setSettleCode(String settleCode) {
this.settleCode = settleCode;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getExchangeCode() {
return exchangeCode;
}
public void setExchangeCode(String exchangeCode) {
this.exchangeCode = exchangeCode;
}
public String getFirmId() {
return firmId;
}
public void setFirmId(String firmId) {
this.firmId = firmId;
}
public String getFirmName() {
return firmName;
}
public void setFirmName(String firmName) {
this.firmName = firmName;
}
public String getCpFirmId() {
return cpFirmId;
}
public void setCpFirmId(String cpFirmId) {
this.cpFirmId = cpFirmId;
}
public String getCpFirmName() {
return cpFirmName;
}
public void setCpFirmName(String cpFirmName) {
this.cpFirmName = cpFirmName;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public String getSecName() {
return secName;
}
public void setSecName(String secName) {
this.secName = secName;
}
public LocalDate getSettleDate() {
return settleDate;
}
public void setSettleDate(LocalDate settleDate) {
this.settleDate = settleDate;
}
public String getSettleCurrency() {
return settleCurrency;
}
public void setSettleCurrency(String settleCurrency) {
this.settleCurrency = settleCurrency;
}
public String getTradeCurrency() {
return tradeCurrency;
}
public void setTradeCurrency(String tradeCurrency) {
this.tradeCurrency = tradeCurrency;
}
public Long getTradeTimeMs() {
return tradeTimeMs;
}
public void setTradeTimeMs(Long tradeTimeMs) {
this.tradeTimeMs = tradeTimeMs;
}
public String getBankAccId() {
return bankAccId;
}
public void setBankAccId(String bankAccId) {
this.bankAccId = bankAccId;
}
public String getSection() {
return section;
}
public void setSection(String section) {
this.section = section;
}
}

View file

@ -9,6 +9,11 @@ public class Session extends BusinessObject {
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private LocalDate clearingDate;
private String sessionStatus;
private Long companyId;
private Long securityId;
private Long userId;
private String section;
private String sessionType;
public LocalDate getClearingDate() {
return clearingDate;
@ -25,4 +30,44 @@ public class Session extends BusinessObject {
public void setSessionStatus(String sessionStatus) {
this.sessionStatus = sessionStatus;
}
public Long getCompanyId() {
return companyId;
}
public void setCompanyId(Long companyId) {
this.companyId = companyId;
}
public Long getSecurityId() {
return securityId;
}
public void setSecurityId(Long securityId) {
this.securityId = securityId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getSection() {
return section;
}
public void setSection(String section) {
this.section = section;
}
public String getSessionType() {
return sessionType;
}
public void setSessionType(String sessionType) {
this.sessionType = sessionType;
}
}

View file

@ -0,0 +1,28 @@
package ru.clearing.classes.statics.data.misc;
import ru.clearing.classes.ConstSerializable;
import ru.clearing.classes.objects.BusinessEvent;
import java.io.Serial;
/**
* Изменение состояния объекта Клиринговая сессия
* <p>
* DB table: SESSION_HISTORY
**/
public class SessionHistory extends BusinessEvent<Session> {
@Serial
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private Session object;
@Override
public Session getObject() {
return object;
}
@Override
public void setObject(Session object) {
this.object = object;
}
}

View file

@ -17,13 +17,14 @@ public class CompanyInfo extends SpcexObjectBase {
private String legalKind; // ref CHAR(4),
private String organizationType; // ref CHAR(4),
private String residence; // ref CHAR(4),
private String shortName;
private String fullName;
// private String shortName; // extends Company
// private String fullName; // extends Company
private String shortNameEng;
private String fullNameEng;
private String tradingCode;
private String clearingCode;
private String registrationCode;
// private String tradingCode; // extends Company
// private String clearingCode; // extends Company
// private String registrationCode; // extends Company
// private String workflowStatus; // extends Company
public Long getCompanyId() {
return companyId;
@ -89,22 +90,6 @@ public class CompanyInfo extends SpcexObjectBase {
this.residence = residence;
}
public String getShortName() {
return shortName;
}
public void setShortName(String shortName) {
this.shortName = shortName;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public String getShortNameEng() {
return shortNameEng;
}
@ -121,27 +106,4 @@ public class CompanyInfo extends SpcexObjectBase {
this.fullNameEng = fullNameEng;
}
public String getTradingCode() {
return tradingCode;
}
public void setTradingCode(String tradingCode) {
this.tradingCode = tradingCode;
}
public String getClearingCode() {
return clearingCode;
}
public void setClearingCode(String clearingCode) {
this.clearingCode = clearingCode;
}
public String getRegistrationCode() {
return registrationCode;
}
public void setRegistrationCode(String registrationCode) {
this.registrationCode = registrationCode;
}
}

View file

@ -4,8 +4,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsMoney;
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
@ -175,7 +175,7 @@ public class Clearing {
//send request to kafka, wait for a reply
synchronized (this) {
AccountBalanceClearingRequest request = new AccountBalanceClearingRequest();
request.setAccountId(execDeposit.getAccountId());
// todo CLS-275 request.setAccountId(execDeposit.getAccountId());
request.setCompanyId(execDeposit.getCompanyId());
request.setFirstLegAmount(execDeposit.getFirstLegAmount());
Long sentRequestId = kafka.sendRequestToQueue(Consts.BALANCE_ACCOUNT_UPDATE, request);
@ -199,7 +199,7 @@ public class Clearing {
}
}
Optional<LiabilitiesClaimsAssets> lcaFirstLegFound = lbltsClmsAssetsCreator.searchLCA(
execDeposit.getAccountId(), execDeposit.getCompanyId(),
/* null execDeposit.getAccountId() todo CLS-275 */ null, execDeposit.getCompanyId(),
execDeposit.getSecurityId(), execDeposit.getFirstLegSettlementDate());
LiabilitiesClaimsAssets lcaFirstLeg = orElse(lcaFirstLegFound).ifPresentOrElse(lca -> {
log.trace("LiabilitiesClaimsAssets first leg {} was found", lca.getId());
@ -213,7 +213,7 @@ public class Clearing {
return lca;
});
Optional<LiabilitiesClaimsAssets> lcaSecondLegFound = lbltsClmsAssetsCreator.searchLCA(
execDeposit.getAccountId(), execDeposit.getCompanyId(),
/*todo CLS-275 execDeposit.getAccountId()*/ null, execDeposit.getCompanyId(),
execDeposit.getSecurityId(), execDeposit.getSecondLegSettlementDate());
LiabilitiesClaimsAssets lcaSecondLeg = orElse(lcaSecondLegFound).ifPresentOrElse(lca -> {
log.trace("LiabilitiesClaimsAssets second leg {} was found", lca.getId());

View file

@ -13,7 +13,7 @@ import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
import ru.clearing.classes.statics.data.misc.Listing;
import ru.clearing.classes.statics.data.misc.STrade;
import ru.clearing.classes.statics.data.misc.STrades;
import ru.clearing.classes.statics.data.security.Security;
import ru.spcex.clearing.error.ClearingError;
import ru.spcex.clearing.error.ClearingException;
@ -22,8 +22,6 @@ 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.registry.DealRegisterNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.spcex.platform.enumeration.Allowed;
import ru.spcex.platform.enumeration.Market;
import ru.spcex.platform.enumeration.MoneyFlowSide;
@ -54,7 +52,7 @@ public class ExecutionDepositComponent {
private final Logger log = LoggerFactory.getLogger(getClass());
private final ImdgProvider imdgProvider;
private Imdg<STrade> sTradeImdg;
private Imdg<STrades> sTradeImdg;
private Imdg<Security> securityImdg;
private Imdg<ExecutionDeposit> executionDepositImdg;
private Imdg<Company> companyImdg;
@ -71,7 +69,7 @@ public class ExecutionDepositComponent {
@Autowired
public ExecutionDepositComponent(ImdgProvider imdgProvider, Producer<String, Object> kafka) {
this.imdgProvider = imdgProvider;
this.sTradeImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrade, STrade.class);
this.sTradeImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class);
this.securityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Security, Security.class);
this.executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class);
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
@ -100,7 +98,7 @@ public class ExecutionDepositComponent {
public void processNewTS() {
log.debug("Start check new S_TRADE after {}", tradingDay);
Collection<STrade> sTrades;
Collection<STrades> sTrades;
{
ImdgPredicateBuilder pb = sTradeImdg.predicateBuilder();
ImdgPredicate sql = pb.greatEqual("tradeDateTime", tradingDay);
@ -118,7 +116,7 @@ public class ExecutionDepositComponent {
// Проверить все инструменты.
Set<String> secCodesOfSecurity;
{
Set<String> secCodesOfSTrade = sTrades.stream().map(STrade::getSecCode).filter(Objects::nonNull).collect(Collectors.toSet());
Set<String> secCodesOfSTrade = sTrades.stream().map(STrades::getSecCode).filter(Objects::nonNull).collect(Collectors.toSet());
log.debug("Verify {} instruments for {} STrade's.", secCodesOfSTrade.size(), sTrades.size());
ImdgPredicate allIn = securityImdg.predicateBuilder().in("securitySymbol", secCodesOfSTrade.toArray(new String[0]));
Collection<Security> foundSecurities = securityImdg.getCollectionObjectsByPredicate(allIn);
@ -138,7 +136,7 @@ public class ExecutionDepositComponent {
// Но при этом, во время создания новых ExecutionDeposit по STrade, TradeNum могут повторяться.
LocalDate today = LocalDate.now();
for (STrade trade : sTrades) {
for (STrades trade : sTrades) {
log.trace("Check s_trade[{}].tradeNum={} operation={} on date {}", trade.getId(), trade.getTradeNum(), trade.getOperation(), today);
boolean existEDeposit;
{
@ -200,7 +198,7 @@ public class ExecutionDepositComponent {
}
Long newMaxTradeNum = sTrades.stream().mapToLong(STrade::getTradeNum).max().orElseGet(() -> tradeNum);
Long newMaxTradeNum = sTrades.stream().mapToLong(STrades::getTradeNum).max().orElseGet(() -> tradeNum);
log.info("Process completed. Next tradeNum is {}", newMaxTradeNum);
}
@ -240,27 +238,27 @@ public class ExecutionDepositComponent {
}
}
protected ExecutionDeposit createExecutionDeposit(STrade sTrade,
protected ExecutionDeposit createExecutionDeposit(STrades sTrades,
Allowed coverageStatus, Long sessionId) throws ClearingException {
Account account = accountImdg.getSingleObjectByFieldValues(Map.of("account", sTrade.getMoneyAccount()));
Security security = securityImdg.getSingleObjectByFieldValues(Map.of("securitySymbol", sTrade.getSecCode()));
Account account = null; // todo CLS-275 accountImdg.getSingleObjectByFieldValues(Map.of("account", sTrades.getMoneyAccount()));
Security security = securityImdg.getSingleObjectByFieldValues(Map.of("securitySymbol", sTrades.getSecCode()));
if (security == null) {
log.warn("security securitySymbol=\"{}\" not found", sTrade.getSecCode());
throw new ClearingException(new EnumMessage(ClearingError.RecordNotFound, sTrade.getSecCode()));
log.warn("security securitySymbol=\"{}\" not found", sTrades.getSecCode());
throw new ClearingException(new EnumMessage(ClearingError.RecordNotFound, sTrades.getSecCode()));
}
Listing listing = null;
if (security != null) {
listing = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", security.getId()));
}
Company company = companyImdg.getSingleObjectByFieldValues(Map.of("tradingCode", sTrade.getFirmId()));
Company company = companyImdg.getSingleObjectByFieldValues(Map.of("tradingCode", sTrades.getFirmId()));
if (company == null) {
throw new ClearingException(new EnumMessage(ClearingError.CompanyNotFound, sTrade.getFirmId()));
throw new ClearingException(new EnumMessage(ClearingError.CompanyNotFound, sTrades.getFirmId()));
}
return createExecutionDeposit(sTrade, account, listing, company, security, coverageStatus, sessionId);
return createExecutionDeposit(sTrades, account, listing, company, security, coverageStatus, sessionId);
}
private ExecutionDeposit createExecutionDeposit(STrade sTrade, Account account, Listing listing,
private ExecutionDeposit createExecutionDeposit(STrades sTrades, Account account, Listing listing,
Company company, Security security,
Allowed coverageStatus, Long sessionId) {
ExecutionDeposit eDeposit = new ExecutionDeposit();
@ -271,22 +269,22 @@ public class ExecutionDepositComponent {
eDeposit.setTradingDate(nowDay);
eDeposit.setClearingDate(nowDay);
eDeposit.setExchangeExecutionId(sTrade.getTradeNum());
eDeposit.setExchangeExecutionTime(sTrade.getTradeDateTime());
eDeposit.setExchangeExecutionId(sTrades.getTradeNum());
eDeposit.setExchangeExecutionTime(sTrades.getTradeDateTime());
if (account != null) {
eDeposit.setAccountId(account.getId());
// todo CLS-275 eDeposit.setAccountId(account.getId());
}
eDeposit.setMarket(Market.mkrs.getKey());
eDeposit.setPrice(sTrade.getPrice());
eDeposit.setLots(sTrade.getQty());
eDeposit.setPrice(sTrades.getPrice());
eDeposit.setLots(sTrades.getQty());
if (listing != null && listing.getLotSize() != null && eDeposit.getLots() != null) {
BigDecimal quantity = eDeposit.getLots().multiply(listing.getLotSize());
eDeposit.setQuantity(quantity);
}
eDeposit.setFirstLegAmount(sTrade.getValue());
eDeposit.setSecondLegAmount(sTrade.getValue());
eDeposit.setFirstLegAmount(sTrades.getValue());
eDeposit.setSecondLegAmount(sTrades.getValue());
//eDeposit.setInterestAmount(null);
String operation = sTrade.getOperation(); //Символьный код по справочнику moneyFlowSide), соответствующий значению из s_trade.operation (sTrade.getOperation())
String operation = sTrades.getOperation(); //Символьный код по справочнику moneyFlowSide), соответствующий значению из s_trade.operation (sTrade.getOperation())
if ("B".equalsIgnoreCase(operation)) {
operation = MoneyFlowSide.BUY.getKey();
}
@ -296,9 +294,9 @@ public class ExecutionDepositComponent {
eDeposit.setSide(operation);
eDeposit.setSettlementCurrency("RUB"); // (справочник currencyCode)
eDeposit.setCompanyId(company.getId());
eDeposit.setDuration(sTrade.getDaysToMatDate());
// todo CLS-275 eDeposit.setDuration(sTrades.getDaysToMatDate());
eDeposit.setFirstLegSettlementDate(nowDay);
eDeposit.setSecondLegSettlementDate(sTrade.getSettleDate());
eDeposit.setSecondLegSettlementDate(sTrades.getSettleDate());
//eDeposit.setFirstLegSettlementCode(null);
//eDeposit.setSecondLegSettlementCode(null);
eDeposit.setSecurityFullName(security.getFullName());

View file

@ -40,7 +40,7 @@ public class LiabilitiesClaimsAssetsCreator {
private LiabilitiesClaimsAssets createLCA(ExecutionDeposit executionDeposit, Account account) {
LiabilitiesClaimsAssets liabilitiesClaimsAssets = new LiabilitiesClaimsAssets();
liabilitiesClaimsAssets.setCompanyId(executionDeposit.getCompanyId());
liabilitiesClaimsAssets.setAccountId(executionDeposit.getAccountId());
// todo new fields liabilitiesClaimsAssets.setAccountId(executionDeposit.getAccountId());
liabilitiesClaimsAssets.setAccountType(account.getAccountType());
liabilitiesClaimsAssets.setAccount(account.getAccount());
liabilitiesClaimsAssets.setCurrency(executionDeposit.getSettlementCurrency());
@ -61,7 +61,7 @@ public class LiabilitiesClaimsAssetsCreator {
public LiabilitiesClaimsAssets createFirstLegLCA(ClearingCategory category, ExecutionDeposit executionDeposit) {
Account account = accountImdg.getSingleObjectByID(executionDeposit.getAccountId());
Account account = null; // todo CLS-275 accountImdg.getSingleObjectByID(executionDeposit.getAccountId());
LiabilitiesClaimsAssets lca = createLCA(executionDeposit, account);
lca.setSettlementDate(executionDeposit.getFirstLegSettlementDate());
AccountType accType = IEnumKey.getEnumByKey(AccountType.class, account.getAccountType());
@ -79,7 +79,7 @@ public class LiabilitiesClaimsAssetsCreator {
}
public LiabilitiesClaimsAssets createSecondLegLCA(ClearingCategory category, ExecutionDeposit executionDeposit) {
Account account = accountImdg.getSingleObjectByID(executionDeposit.getAccountId());
Account account = null;// todo CLS-275 accountImdg.getSingleObjectByID(executionDeposit.getAccountId());
LiabilitiesClaimsAssets lca = createLCA(executionDeposit, account);
lca.setSettlementDate(executionDeposit.getSecondLegSettlementDate());
AccountType accType = IEnumKey.getEnumByKey(AccountType.class, account.getAccountType());
@ -115,7 +115,7 @@ public class LiabilitiesClaimsAssetsCreator {
public void updateSecondLegLca(LiabilitiesClaimsAssets lca, ExecutionDeposit executionDeposit, ClearingCategory category) {
Account account = accountImdg.getSingleObjectByID(executionDeposit.getAccountId());
Account account = null; // todo CLS-275 accountImdg.getSingleObjectByID(executionDeposit.getAccountId());
AccountType accType = IEnumKey.getEnumByKey(AccountType.class, account.getAccountType());
boolean iClrn = ClearingCategory.I.equals(category) && AccountType.Clrn.equals(accType);
boolean vInfo = ClearingCategory.V.equals(category) && AccountType.Info.equals(accType);
@ -135,7 +135,7 @@ public class LiabilitiesClaimsAssetsCreator {
}
public void updateFirstLegLca(LiabilitiesClaimsAssets lca, ExecutionDeposit executionDeposit, ClearingCategory category) {
Account account = accountImdg.getSingleObjectByID(executionDeposit.getAccountId());
Account account = null; // todo CLS-275 accountImdg.getSingleObjectByID(executionDeposit.getAccountId());
AccountType accType = IEnumKey.getEnumByKey(AccountType.class, account.getAccountType());
boolean iClrn = ClearingCategory.I.equals(category) && AccountType.Clrn.equals(accType);
boolean vInfo = ClearingCategory.V.equals(category) && AccountType.Info.equals(accType);

View file

@ -1,13 +1,10 @@
package ru.spcex.clearing.service.validation;
import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.account.AccountBalance;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.company.relation.Relation;
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
import ru.spcex.clearing.error.ClearingErrorInternal;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.platform.enumeration.AccountStatus;
import ru.spcex.platform.enumeration.ClearingCategory;
import ru.spcex.platform.enumeration.ServiceStatus;
import ru.spcex.platform.enumeration.WorkflowStatus;
@ -37,17 +34,17 @@ public enum ExecutionDepositValidationRule implements IValidationRule<ImdgValida
@Override
public Optional<EnumMessage> validate(ImdgValidationContext<ExecutionDeposit> context) {
ExecutionDeposit validatedObject = context.getValidatedObject();
if (validatedObject.getAccountId() == null) {
// todo CLS-275 if (validatedObject.getAccountId() == null) {
return of(ClearingErrorInternal.AccountNotActive);
}
Imdg<Account> accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class);
Relation relation = context.getStoredObject(ClrngValidationStored.relation);
Account account = accountImdg.getSingleObjectByFieldValues(
Map.of("id", validatedObject.getAccountId(), "relationId", relation.getId()));
if (account == null || !AccountStatus.ACTIVE.equalsByKey(account.getStatus())) {
return of(ClearingErrorInternal.AccountNotActive);
}
return empty();
// }
// Imdg<Account> accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class);
// Relation relation = context.getStoredObject(ClrngValidationStored.relation);
// Account account = accountImdg.getSingleObjectByFieldValues(
// Map.of("id", validatedObject.getAccountId(), "relationId", relation.getId()));
// if (account == null || !AccountStatus.ACTIVE.equalsByKey(account.getStatus())) {
// return of(ClearingErrorInternal.AccountNotActive);
// }
// return empty();
}
},
CompanyIsNotBlocked() {
@ -70,18 +67,18 @@ public enum ExecutionDepositValidationRule implements IValidationRule<ImdgValida
return Optional.empty();
}
ExecutionDeposit validatedObject = context.getValidatedObject();
Imdg<AccountBalance> accountBalanceImdg = context.obtainMap(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class);
AccountBalance accountBalance = accountBalanceImdg.getSingleObjectByFieldValues(
Map.of("accountId", validatedObject.getAccountId(),
"companyId", validatedObject.getCompanyId()));
if (accountBalance == null) {
// Imdg<AccountBalance> accountBalanceImdg = context.obtainMap(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class);
// todo CLS-275 AccountBalance accountBalance = accountBalanceImdg.getSingleObjectByFieldValues(
// Map.of("accountId", validatedObject.getAccountId(),
// "companyId", validatedObject.getCompanyId()));
// if (accountBalance == null) {
return of(ClearingErrorInternal.FinancialObligationNotSatisfied);
}
// }
//todo ABS
if (validatedObject.getFirstLegAmount().compareTo(accountBalance.getFreeBalanceAmount()) > 0) {
return of(ClearingErrorInternal.FinancialObligationNotSatisfied);
}
return empty();
// todo CLS-275 if (validatedObject.getFirstLegAmount().compareTo(accountBalance.getFreeBalanceAmount()) > 0) {
// return of(ClearingErrorInternal.FinancialObligationNotSatisfied);
// }
// return empty();
}
};

View file

@ -6,10 +6,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.account.AccountBalance;
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.company.relation.Relation;
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsMoney;
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
@ -378,7 +378,7 @@ class ClearingServiceTest extends AbstractClearingTest {
executionDeposit.setExchangeExecutionId(5L);
executionDeposit.setExchangeExecutionTime(Instant.now());
executionDeposit.setTradingDate(LocalDate.now());
executionDeposit.setAccountId(accountId);
executionDeposit.setTradingClearingRegistryId(accountId); //todo CLS-275 executionDeposit.setAccountId(accountId);
executionDeposit.setMarket("market");
executionDeposit.setPrice(new BigDecimal(9));
executionDeposit.setLots(new BigDecimal(0));
@ -392,8 +392,9 @@ class ClearingServiceTest extends AbstractClearingTest {
executionDeposit.setDuration(1L);
executionDeposit.setFirstLegSettlementDate(dtF);
executionDeposit.setSecondLegSettlementDate(dtS);
executionDeposit.setFirstLegSettlementCode(LocalDate.now());
executionDeposit.setSecondLegSettlementCode(LocalDate.now());
executionDeposit.setFirstLegSettlementCode("leg1c");
executionDeposit.setSecondLegSettlementCode("legcc");
executionDeposit.setContract("contract");
executionDeposit.setSecurityFullName("full");
executionDeposit.setSecuritySymbol("symbol");
executionDeposit.setSecurityId(securityId);

View file

@ -7,7 +7,7 @@ import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
import ru.clearing.classes.statics.data.misc.Listing;
import ru.clearing.classes.statics.data.misc.STrade;
import ru.clearing.classes.statics.data.misc.STrades;
import ru.clearing.classes.statics.data.security.Security;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
@ -31,7 +31,7 @@ class ExecutionDepositComponentTest extends AbstractClearingTest {
@Autowired
ExecutionDepositComponent executionDepositComponent;
private Instant todayInstant;
private Imdg<STrade> sTradeImdg;
private Imdg<STrades> sTradeImdg;
private Imdg<Security> securityImdg;
private Imdg<ExecutionDeposit> executionDepositImdg;
private Imdg<Company> companyImdg;
@ -43,7 +43,7 @@ class ExecutionDepositComponentTest extends AbstractClearingTest {
super.init();
executionDepositComponent.resetTradingDay();
this.todayInstant = executionDepositComponent.tradingDay;
this.sTradeImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_STrade, STrade.class);
this.sTradeImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_STrades, STrades.class);
this.securityImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Security, Security.class);
this.executionDepositImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class);
this.companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
@ -62,13 +62,13 @@ class ExecutionDepositComponentTest extends AbstractClearingTest {
void processNewTS() {
String secCode = "SecCode";
String operation = "oper";
STrade sTrade = new STrade();
STrades sTrades = new STrades();
Long exchangeExecutionId = 1221L;
LocalDate today = LocalDate.now();
sTrade.setTradeDateTime(todayInstant);
sTrade.setSecCode(secCode);
sTrade.setOperation(operation);
sTradeImdg.insert(sTrade);
sTrades.setTradeDateTime(todayInstant);
sTrades.setSecCode(secCode);
sTrades.setOperation(operation);
sTradeImdg.insert(sTrades);
Security security = new Security();
security.setSecuritySymbol(secCode);

View file

@ -92,8 +92,6 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea
companyInfo.setResidence(req.getResidence());
companyInfo.setShortNameEng(req.getShortNameEng());
companyInfo.setFullNameEng(req.getFullNameEng());
companyInfo.setShortName(req.getShortName());
companyInfo.setFullName(req.getFullName());
company.setUpdated(Instant.now());
companyMap.update(company);

View file

@ -113,8 +113,6 @@ class CompanyInfoServiceTest {
* {@link CompanyInfoUpdateRequest#residence} - RUS<br>
* {@link CompanyInfoUpdateRequest#shortNameEng} - updated shortNameEng<br>
* {@link CompanyInfoUpdateRequest#fullNameEng} - updated fullNameEng<br>
* {@link CompanyInfoUpdateRequest#shortName} - updated shortName<br>
* {@link CompanyInfoUpdateRequest#fullName} - updated fullName<br>
*/
@Test
void companyInfoUpdate() throws InterruptedException {
@ -131,12 +129,12 @@ class CompanyInfoServiceTest {
existsCompanyInfo.setResidence("0000");
existsCompanyInfo.setShortNameEng("exists shortNameEng");
existsCompanyInfo.setFullNameEng("exists fullNameEng");
existsCompanyInfo.setShortName("exists shortName");
existsCompanyInfo.setFullName("exists fullName");
Company existsCompany = new Company();
existsCompany.setId(ID);
existsCompany.setWorkflowStatus(WorkflowStatus.Active.getKey());
existsCompany.setProfile(existsCompanyInfo);
existsCompany.setShortName("exists shortName");
existsCompany.setFullName("exists fullName");
companyImdg.insert(existsCompany);
CompanyInfoUpdateRequest companyInfoUpdateRequest = new CompanyInfoUpdateRequest();
@ -165,8 +163,6 @@ class CompanyInfoServiceTest {
predictableCompanyInfo.setResidence("RUS");
predictableCompanyInfo.setShortNameEng("updated shortNameEng");
predictableCompanyInfo.setFullNameEng("updated fullNameEng");
predictableCompanyInfo.setShortName("updated shortName");
predictableCompanyInfo.setFullName("updated fullName");
//ACT
String jsonString = getJsonStringForUpdate(companyInfoUpdateRequest, ID);

View file

@ -1,5 +1,5 @@
-- DB version: 3.5.0.18
-- DATA version: 3.5.0.2
-- DB version: 3.5.0.19
-- DATA version: 3.5.0.3
/* Dictionaries */
INSERT INTO ALLOWED_DICTIONARY(ID, CODE, NAME) values (1, 'ALWD', 'Разрешено') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
@ -160,6 +160,8 @@ INSERT INTO COMPANY_SYMBOL_DICTIONARY(ID, CODE, NAME, SHORTNAME) values (17, 'RG
INSERT INTO COMPANY_SYMBOL_DICTIONARY(ID, CODE, NAME, SHORTNAME) values (18, 'UUID', 'Идентификатор во внешней системе', 'Внешний идентификатор') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME, SHORTNAME = EXCLUDED.SHORTNAME;
INSERT INTO COMPANY_SYMBOL_DICTIONARY(ID, CODE, NAME, SHORTNAME) values (19, 'RDPZ', 'Требуется получение документа о подтверждении открытия депозитного счета', 'Подтверждение депозитного счета') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME, SHORTNAME = EXCLUDED.SHORTNAME;
INSERT INTO COMPANY_ROLE_DICTIONARY(ID, CODE, NAME) values (1, 'RPRT', 'Отчетная организация') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO COMPANY_ROLE_DICTIONARY(ID, CODE, NAME) values (2, 'CLRH', 'Клиринговая организация') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
@ -448,6 +450,32 @@ INSERT INTO PARENT_DICTIONARY(ID, CODE, NAME) values (2, 'PLNR', 'Расписа
INSERT INTO PARENT_DICTIONARY(ID, CODE, NAME) values (3, 'CLND', 'Календарь') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO SESSION_STATUS_DICTIONARY(ID, CODE, NAME) values (1, 'ACTV', 'Сессия активна') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO SESSION_STATUS_DICTIONARY(ID, CODE, NAME) values (2, 'CLRN', 'Идет клиринг') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO SESSION_STATUS_DICTIONARY(ID, CODE, NAME) values (3, 'CLOS', 'Клиринг завершен') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO SESSION_TYPE_DICTIONARY(ID, CODE, NAME) values (1, 'FINL', 'Итоговая клиринговая сессия') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO SESSION_TYPE_DICTIONARY(ID, CODE, NAME) values (2, 'MEDM', 'Промежуточная клиринговая сессия') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO SESSION_TYPE_DICTIONARY(ID, CODE, NAME) values (3, 'XDEP', 'Промежуточная возврат депозитов') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO SESSION_TYPE_DICTIONARY(ID, CODE, NAME) values (4, 'IPOT', 'Первичные торги Т0') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO SESSION_TYPE_DICTIONARY(ID, CODE, NAME) values (5, 'TRDT', 'Вторичные торги Т0') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO SESSION_TYPE_DICTIONARY(ID, CODE, NAME) values (6, 'LIQU', 'Ликвидационное прекращение обязательств') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO SESSION_TYPE_DICTIONARY(ID, CODE, NAME) values (7, 'IPOB', 'Первичные торги Bn') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO SESSION_TYPE_DICTIONARY(ID, CODE, NAME) values (8, 'IPO0', 'Первичные торги B0') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO MONEY_FLOW_SIDE_DICTIONARY(ID, CODE, NAME) values (1, 'BUY', 'Разместить') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO MONEY_FLOW_SIDE_DICTIONARY(ID, CODE, NAME) values (2, 'SELL', 'Привлечь') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO COURIER_TYPE_DICTIONARY(ID, CODE, NAME) values (1, 'STHS', 'ЭДО с Расчетной Организацией') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO TRANSACTION_STATUS_DICTIONARY(ID, CODE, NAME) values (1, 'STLD', 'Рассчитан') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
@ -482,10 +510,6 @@ INSERT INTO IN_OUT_DIRECTION_DICTIONARY(ID, CODE, NAME) values (1, 'IN', 'Зач
INSERT INTO IN_OUT_DIRECTION_DICTIONARY(ID, CODE, NAME) values (2, 'OUT', 'Списание') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO MONEY_FLOW_SIDE_DICTIONARY(ID, CODE, NAME) values (1, 'BUY', 'Разместить') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO MONEY_FLOW_SIDE_DICTIONARY(ID, CODE, NAME) values (2, 'SELL', 'Привлечь') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO STATEMENT_TYPE_DICTIONARY(ID, CODE, NAME) values (1, 'FULL', 'Установка суммы') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO STATEMENT_TYPE_DICTIONARY(ID, CODE, NAME) values (2, 'INCR', 'Изменение суммы') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
@ -528,12 +552,6 @@ INSERT INTO IN_OUT_S_DF_TYPE_DICTIONARY(ID, CODE, NAME) values (2, '1617', 'Вх
INSERT INTO IN_OUT_S_DF_TYPE_DICTIONARY(ID, CODE, NAME) values (3, '0910', 'Входящий ДФ-09/Исходящий ДФ-10') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO SESSION_STATUS_DICTIONARY(ID, CODE, NAME) values (1, 'ACTV', 'Сессия активна') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO SESSION_STATUS_DICTIONARY(ID, CODE, NAME) values (2, 'CLRN', 'Идет клиринг') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO SESSION_STATUS_DICTIONARY(ID, CODE, NAME) values (3, 'CLOS', 'Клиринг завершен') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO OBJECT_TYPE_DICTIONARY(ID, CODE, NAME) values (1, 'STMT', 'STATEMENT') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO OBJECT_TYPE_DICTIONARY(ID, CODE, NAME) values (2, 'VFRS', 'verificationResult') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;

View file

@ -1,4 +1,4 @@
-- DB version: 3.5.0.18
-- DB version: 3.5.0.19
/* Dictionaries */
-- allowed - Справочник признаков допустимости использования объектов
@ -443,6 +443,39 @@ COMMENT ON COLUMN PARENT_DICTIONARY.CODE IS 'Код';
COMMENT ON COLUMN PARENT_DICTIONARY.NAME IS 'Наименование';
-- sessionStatus - Справочник статусов клиринговых сессий
DROP TABLE IF EXISTS SESSION_STATUS_DICTIONARY;
CREATE TABLE SESSION_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50));
COMMENT ON TABLE SESSION_STATUS_DICTIONARY IS 'Справочник статусов клиринговых сессий';
COMMENT ON COLUMN SESSION_STATUS_DICTIONARY.ID IS 'Идентификатор';
COMMENT ON COLUMN SESSION_STATUS_DICTIONARY.CODE IS 'Код';
COMMENT ON COLUMN SESSION_STATUS_DICTIONARY.NAME IS 'Наименование';
-- sessionType - Справочник типов клиринговых сессий
DROP TABLE IF EXISTS SESSION_TYPE_DICTIONARY;
CREATE TABLE SESSION_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50));
COMMENT ON TABLE SESSION_TYPE_DICTIONARY IS 'Справочник типов клиринговых сессий';
COMMENT ON COLUMN SESSION_TYPE_DICTIONARY.ID IS 'Идентификатор';
COMMENT ON COLUMN SESSION_TYPE_DICTIONARY.CODE IS 'Код';
COMMENT ON COLUMN SESSION_TYPE_DICTIONARY.NAME IS 'Наименование';
-- moneyFlowSide - Справочник направлений
DROP TABLE IF EXISTS MONEY_FLOW_SIDE_DICTIONARY;
CREATE TABLE MONEY_FLOW_SIDE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255));
COMMENT ON TABLE MONEY_FLOW_SIDE_DICTIONARY IS 'Справочник направлений';
COMMENT ON COLUMN MONEY_FLOW_SIDE_DICTIONARY.ID IS 'Идентификатор';
COMMENT ON COLUMN MONEY_FLOW_SIDE_DICTIONARY.CODE IS 'Код';
COMMENT ON COLUMN MONEY_FLOW_SIDE_DICTIONARY.NAME IS 'Значение';
-- chargeDirection - Направление начисления комиссии
DROP TABLE IF EXISTS CHARGE_DIRECTION_DICTIONARY;
CREATE TABLE CHARGE_DIRECTION_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50));
@ -498,17 +531,6 @@ COMMENT ON COLUMN CLEARING_STATUS_DICTIONARY.CODE IS 'Код';
COMMENT ON COLUMN CLEARING_STATUS_DICTIONARY.NAME IS 'Наименование';
-- moneyFlowSide - Направление заявки
DROP TABLE IF EXISTS MONEY_FLOW_SIDE_DICTIONARY;
CREATE TABLE MONEY_FLOW_SIDE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255));
COMMENT ON TABLE MONEY_FLOW_SIDE_DICTIONARY IS 'Направление заявки';
COMMENT ON COLUMN MONEY_FLOW_SIDE_DICTIONARY.ID IS 'Идентификатор';
COMMENT ON COLUMN MONEY_FLOW_SIDE_DICTIONARY.CODE IS 'Код';
COMMENT ON COLUMN MONEY_FLOW_SIDE_DICTIONARY.NAME IS 'Значение';
-- inOutDirection - Справочник значений направления денежного потока
DROP TABLE IF EXISTS IN_OUT_DIRECTION_DICTIONARY;
CREATE TABLE IN_OUT_DIRECTION_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(255));
@ -619,17 +641,6 @@ COMMENT ON COLUMN IN_OUT_S_DF_TYPE_DICTIONARY.CODE IS 'Код';
COMMENT ON COLUMN IN_OUT_S_DF_TYPE_DICTIONARY.NAME IS 'Тип записи';
-- sessionStatus - Справочник статусов клиринговой сессии
DROP TABLE IF EXISTS SESSION_STATUS_DICTIONARY;
CREATE TABLE SESSION_STATUS_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50));
COMMENT ON TABLE SESSION_STATUS_DICTIONARY IS 'Справочник статусов клиринговой сессии';
COMMENT ON COLUMN SESSION_STATUS_DICTIONARY.ID IS 'Идентификатор';
COMMENT ON COLUMN SESSION_STATUS_DICTIONARY.CODE IS 'Код';
COMMENT ON COLUMN SESSION_STATUS_DICTIONARY.NAME IS 'Наименование';
-- objectType - Справочник типов объектов
DROP TABLE IF EXISTS OBJECT_TYPE_DICTIONARY;
CREATE TABLE OBJECT_TYPE_DICTIONARY(ID bigint PRIMARY KEY, CODE varchar(4), NAME varchar(50));
@ -2227,6 +2238,426 @@ COMMENT ON COLUMN LAUNCHER.CREATED_AT IS 'Дата-время создания
COMMENT ON COLUMN LAUNCHER.UPDATED_AT IS 'Дата-время изменения записи';
-- session - Клиринговая сессия
DROP TABLE IF EXISTS SESSION;
CREATE TABLE SESSION(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, SESSION_STATUS varchar(4), COMPANY_ID bigint, SECURITY_ID bigint, USER_ID bigint, SECTION varchar(4), SESSION_TYPE varchar(4));
COMMENT ON TABLE SESSION IS 'Клиринговая сессия';
COMMENT ON COLUMN SESSION.ID IS 'Идентификатор записи';
COMMENT ON COLUMN SESSION.CREATED_AT IS 'Дата-время создания записи';
COMMENT ON COLUMN SESSION.UPDATED_AT IS 'Дата-время изменения записи';
COMMENT ON COLUMN SESSION.CLEARING_DATE IS 'Дата';
COMMENT ON COLUMN SESSION.SESSION_STATUS IS 'Код статуса клиринговой сессии (linked to sessionStatus)';
COMMENT ON COLUMN SESSION.COMPANY_ID IS 'Идентификатор инициатора торгов (linked to company)';
COMMENT ON COLUMN SESSION.SECURITY_ID IS 'Идентификатор инструмента (linked to security)';
COMMENT ON COLUMN SESSION.USER_ID IS 'Идентификатор пользователя (linked to userCls)';
COMMENT ON COLUMN SESSION.SECTION IS 'Код наименования секции (linked to section)';
COMMENT ON COLUMN SESSION.SESSION_TYPE IS 'Код типа клиринговой сессии (linked to sessionType)';
-- History log of session - Клиринговая сессия
DROP TABLE IF EXISTS SESSION_HISTORY;
CREATE TABLE SESSION_HISTORY(SESSION_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, EVENT_TYPE VARCHAR(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, SESSION_STATUS varchar(4), COMPANY_ID bigint, SECURITY_ID bigint, USER_ID bigint, SECTION varchar(4), SESSION_TYPE varchar(4));
COMMENT ON TABLE SESSION_HISTORY IS 'История изменений таблицы session';
COMMENT ON COLUMN SESSION_HISTORY.SESSION_ID IS 'Идентификатор записи в таблице SESSION';
COMMENT ON COLUMN SESSION_HISTORY.EVENT_TIME IS 'Дата и время изменения';
COMMENT ON COLUMN SESSION_HISTORY.EVENT_USER_ID IS 'Инициатор изменения';
COMMENT ON COLUMN SESSION_HISTORY.EVENT_TYPE IS 'Тип изменения';
COMMENT ON COLUMN SESSION_HISTORY.ID IS 'Идентификатор записи';
COMMENT ON COLUMN SESSION_HISTORY.CREATED_AT IS 'Дата-время создания записи';
COMMENT ON COLUMN SESSION_HISTORY.UPDATED_AT IS 'Дата-время изменения записи';
COMMENT ON COLUMN SESSION_HISTORY.CLEARING_DATE IS 'Дата';
COMMENT ON COLUMN SESSION_HISTORY.SESSION_STATUS IS 'Код статуса клиринговой сессии (linked to sessionStatus)';
COMMENT ON COLUMN SESSION_HISTORY.COMPANY_ID IS 'Идентификатор инициатора торгов (linked to company)';
COMMENT ON COLUMN SESSION_HISTORY.SECURITY_ID IS 'Идентификатор инструмента (linked to security)';
COMMENT ON COLUMN SESSION_HISTORY.USER_ID IS 'Идентификатор пользователя (linked to userCls)';
COMMENT ON COLUMN SESSION_HISTORY.SECTION IS 'Код наименования секции (linked to section)';
COMMENT ON COLUMN SESSION_HISTORY.SESSION_TYPE IS 'Код типа клиринговой сессии (linked to sessionType)';
-- sTrades - Сделки из Торговой системы
DROP TABLE IF EXISTS S_TRADES;
CREATE TABLE S_TRADES(ID bigint PRIMARY KEY, TRADE_NUM bigint, OPERATION varchar(40), CLASS_CODE varchar(255), TRADE_DATE date, SEC_CODE varchar(255), ACCRUEDINT numeric(72,18), ACCRUEDINT2 numeric(72,18), LOWER_DISCOUNT numeric(72,18), ORDER_NUM bigint, PRICE numeric(72,18), PRICE2 numeric(72,18), REPO_RATE numeric(72,18), REPO_VALUE numeric(72,18), REPO2_VALUE numeric(72,18), START_DISCOUNT numeric(72,18), TS_COMMISSION numeric(72,18), UPPER_DISCOUNT numeric(72,18), VALUE numeric(72,18), YIELD numeric(72,18), QTY numeric(72,18), QTY_PCS numeric(72,18), TRADE_DATE_TIME timestamp, REPO_TERM bigint, CLEARING_COMMISSION numeric(72,18), EXCHANGE_COMMISSION numeric(72,18), TECH_CENTER_COMMISSION numeric(72,18), ACCOUNT varchar(50), BROKER_REF varchar(34), CLIENT_CODE varchar(255), SETTLE_CODE varchar(50), USER_ID varchar(32), EXCHANGE_CODE varchar(64), FIRM_ID varchar(255), FIRM_NAME varchar(255), CP_FIRM_ID varchar(255), CP_FIRM_NAME varchar(255), CLASS_NAME varchar(255), SEC_NAME varchar(255), SETTLE_DATE date, SETTLE_CURRENCY varchar(4), TRADE_CURRENCY varchar(4), TRADE_TIME_MS bigint, BANK_ACC_ID varchar(12), SECTION varchar(4));
COMMENT ON TABLE S_TRADES IS 'Сделки из Торговой системы';
COMMENT ON COLUMN S_TRADES.ID IS 'Идентификатор записи';
COMMENT ON COLUMN S_TRADES.TRADE_NUM IS 'Номер сделки';
COMMENT ON COLUMN S_TRADES.OPERATION IS 'Направленность сделки (BUY или SELL)';
COMMENT ON COLUMN S_TRADES.CLASS_CODE IS 'Код класса инструментов';
COMMENT ON COLUMN S_TRADES.TRADE_DATE IS 'Дата торговой сессии';
COMMENT ON COLUMN S_TRADES.SEC_CODE IS 'Код инструмента';
COMMENT ON COLUMN S_TRADES.ACCRUEDINT IS 'Накопленный купонный доход';
COMMENT ON COLUMN S_TRADES.ACCRUEDINT2 IS 'Доход(%) на дату выкупа';
COMMENT ON COLUMN S_TRADES.LOWER_DISCOUNT IS 'Нижний дисконт(%)';
COMMENT ON COLUMN S_TRADES.ORDER_NUM IS 'Номер заявки';
COMMENT ON COLUMN S_TRADES.PRICE IS 'Цена сделки';
COMMENT ON COLUMN S_TRADES.PRICE2 IS 'Цена выкупа второй части РЕПО';
COMMENT ON COLUMN S_TRADES.REPO_RATE IS 'Ставка РЕПО (%)';
COMMENT ON COLUMN S_TRADES.REPO_VALUE IS 'Сумма РЕПО';
COMMENT ON COLUMN S_TRADES.REPO2_VALUE IS 'Объем сделки выкупа РЕПО, рублей';
COMMENT ON COLUMN S_TRADES.START_DISCOUNT IS 'Начальный дисконт(%)';
COMMENT ON COLUMN S_TRADES.TS_COMMISSION IS 'Комиссия торговой системы';
COMMENT ON COLUMN S_TRADES.UPPER_DISCOUNT IS 'Верхний дисконт(%)';
COMMENT ON COLUMN S_TRADES.VALUE IS 'Объем сделки без учета комиссионного сбора биржи и % дохода';
COMMENT ON COLUMN S_TRADES.YIELD IS 'Доходность';
COMMENT ON COLUMN S_TRADES.QTY IS 'Количество бумаг в лотах';
COMMENT ON COLUMN S_TRADES.QTY_PCS IS 'Количество бумаг в штуках';
COMMENT ON COLUMN S_TRADES.TRADE_DATE_TIME IS 'Дата и время сделки';
COMMENT ON COLUMN S_TRADES.REPO_TERM IS 'Срок РЕПО';
COMMENT ON COLUMN S_TRADES.CLEARING_COMMISSION IS 'Клиринговая комиссия. Параметр сделок на МБ';
COMMENT ON COLUMN S_TRADES.EXCHANGE_COMMISSION IS 'Комиссия Фондовой биржи. Параметр сделок на МБ';
COMMENT ON COLUMN S_TRADES.TECH_CENTER_COMMISSION IS 'Комиссия Технического центра. Параметр сделок на МБ';
COMMENT ON COLUMN S_TRADES.ACCOUNT IS 'Торговый счет';
COMMENT ON COLUMN S_TRADES.BROKER_REF IS 'Комментарий, обычно: код клиента>/номер поручения>';
COMMENT ON COLUMN S_TRADES.CLIENT_CODE IS 'Код участника торгов = Код участника клиринга = Код участника расчетов';
COMMENT ON COLUMN S_TRADES.SETTLE_CODE IS 'Код расчетов по сделке';
COMMENT ON COLUMN S_TRADES.USER_ID IS 'Идентификатор трейдера';
COMMENT ON COLUMN S_TRADES.EXCHANGE_CODE IS 'Идентификатор биржи';
COMMENT ON COLUMN S_TRADES.FIRM_ID IS 'Трейдер';
COMMENT ON COLUMN S_TRADES.FIRM_NAME IS 'Организация трейдера';
COMMENT ON COLUMN S_TRADES.CP_FIRM_ID IS 'Партнер';
COMMENT ON COLUMN S_TRADES.CP_FIRM_NAME IS 'Организация партнера';
COMMENT ON COLUMN S_TRADES.CLASS_NAME IS 'Класс инструмента';
COMMENT ON COLUMN S_TRADES.SEC_NAME IS 'Полное наименование инструмента';
COMMENT ON COLUMN S_TRADES.SETTLE_DATE IS 'Дата расчетов';
COMMENT ON COLUMN S_TRADES.SETTLE_CURRENCY IS 'Валюта расчетов';
COMMENT ON COLUMN S_TRADES.TRADE_CURRENCY IS 'Валюта сделки';
COMMENT ON COLUMN S_TRADES.TRADE_TIME_MS IS 'Микросекунды времени сделки';
COMMENT ON COLUMN S_TRADES.BANK_ACC_ID IS 'Идентификатор расчетного счета/кода в клиринговой организации';
COMMENT ON COLUMN S_TRADES.SECTION IS 'Код наименования секции (linked to section)';
-- executionDeposit - Сделки
DROP TABLE IF EXISTS EXECUTION_DEPOSIT;
CREATE TABLE EXECUTION_DEPOSIT(EXCHANGE_EXECUTION_ID bigint, EXCHANGE_EXECUTION_TIME timestamp, TRADING_DATE date, TRADING_CLEARING_REGISTRY_ID bigint, MARKET varchar(4), PRICE numeric(72,18), LOTS numeric(72,2), QUANTITY numeric(72,2), FIRST_LEG_AMOUNT numeric(72,2), SECOND_LEG_AMOUNT numeric(72,2), INTEREST_AMOUNT numeric(72,2), SIDE varchar(4), SETTLEMENT_CURRENCY varchar(4), COMPANY_ID bigint, DURATION bigint, FIRST_LEG_SETTLEMENT_DATE date, SECOND_LEG_SETTLEMENT_DATE date, FIRST_LEG_SETTLEMENT_CODE varchar(12), SECOND_LEG_SETTLEMENT_CODE varchar(12), SECURITY_FULL_NAME varchar(255), SECURITY_SYMBOL varchar(255), SECURITY_ID bigint, CONTRACT varchar(255), COUNTER_PARTY_ID bigint, COVERAGE_STATUS varchar(4), SESSION_ID bigint, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date);
COMMENT ON TABLE EXECUTION_DEPOSIT IS 'Сделки';
COMMENT ON COLUMN EXECUTION_DEPOSIT.EXCHANGE_EXECUTION_ID IS 'Идентификационный номер сделки в Торговой системе';
COMMENT ON COLUMN EXECUTION_DEPOSIT.EXCHANGE_EXECUTION_TIME IS 'Время заключения сделки в Торговой системе';
COMMENT ON COLUMN EXECUTION_DEPOSIT.TRADING_DATE IS 'Дата заключения сделки';
COMMENT ON COLUMN EXECUTION_DEPOSIT.TRADING_CLEARING_REGISTRY_ID IS 'Идентификатор торгово-клирингового регистра (linked to tradingClearingRegistry)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.MARKET IS 'Код секции финансового инструмента (linked to market)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.PRICE IS 'Ставка по депозиту';
COMMENT ON COLUMN EXECUTION_DEPOSIT.LOTS IS 'Количество лотов';
COMMENT ON COLUMN EXECUTION_DEPOSIT.QUANTITY IS 'Количество штук';
COMMENT ON COLUMN EXECUTION_DEPOSIT.FIRST_LEG_AMOUNT IS 'Объем сделки';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SECOND_LEG_AMOUNT IS 'Объем возврата';
COMMENT ON COLUMN EXECUTION_DEPOSIT.INTEREST_AMOUNT IS 'Объем процентов';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SIDE IS 'Код направления сделки (linked to moneyFlowSide)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SETTLEMENT_CURRENCY IS 'Код валюты расчетов по инструменту (linked to currencyCode)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.COMPANY_ID IS 'Идентификатор компании (linked to company)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.DURATION IS 'Срок, дней';
COMMENT ON COLUMN EXECUTION_DEPOSIT.FIRST_LEG_SETTLEMENT_DATE IS 'Дата размещения';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SECOND_LEG_SETTLEMENT_DATE IS 'Дата возврата';
COMMENT ON COLUMN EXECUTION_DEPOSIT.FIRST_LEG_SETTLEMENT_CODE IS 'Код расчетов при размещении';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SECOND_LEG_SETTLEMENT_CODE IS 'Код расчетов при возврате';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SECURITY_FULL_NAME IS 'Наименование инструмента';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SECURITY_SYMBOL IS 'Код инструмента в Торговой Системе';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SECURITY_ID IS 'Идентификатор финансового инструмента (linked to moneyMarketSecurity)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.CONTRACT IS 'Продукт';
COMMENT ON COLUMN EXECUTION_DEPOSIT.COUNTER_PARTY_ID IS 'Идентификатор компании-партнера, с которой заключена сделка (linked to company)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.COVERAGE_STATUS IS 'Код статуса достаточности обеспечения (linked to allowed)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SESSION_ID IS 'Сессия (linked to session)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.ID IS 'Идентификатор записи';
COMMENT ON COLUMN EXECUTION_DEPOSIT.CREATED_AT IS 'Дата-время создания записи';
COMMENT ON COLUMN EXECUTION_DEPOSIT.UPDATED_AT IS 'Дата-время изменения записи';
COMMENT ON COLUMN EXECUTION_DEPOSIT.CLEARING_DATE IS 'Дата клиринга';
-- History log of executionDeposit - Сделки
DROP TABLE IF EXISTS EXECUTION_DEPOSIT_HISTORY;
CREATE TABLE EXECUTION_DEPOSIT_HISTORY(EXECUTION_DEPOSIT_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, EVENT_TYPE VARCHAR(4), EXCHANGE_EXECUTION_ID bigint, EXCHANGE_EXECUTION_TIME timestamp, TRADING_DATE date, TRADING_CLEARING_REGISTRY_ID bigint, MARKET varchar(4), PRICE numeric(72,18), LOTS numeric(72,2), QUANTITY numeric(72,2), FIRST_LEG_AMOUNT numeric(72,2), SECOND_LEG_AMOUNT numeric(72,2), INTEREST_AMOUNT numeric(72,2), SIDE varchar(4), SETTLEMENT_CURRENCY varchar(4), COMPANY_ID bigint, DURATION bigint, FIRST_LEG_SETTLEMENT_DATE date, SECOND_LEG_SETTLEMENT_DATE date, FIRST_LEG_SETTLEMENT_CODE varchar(12), SECOND_LEG_SETTLEMENT_CODE varchar(12), SECURITY_FULL_NAME varchar(255), SECURITY_SYMBOL varchar(255), SECURITY_ID bigint, CONTRACT varchar(255), COUNTER_PARTY_ID bigint, COVERAGE_STATUS varchar(4), SESSION_ID bigint, ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date);
COMMENT ON TABLE EXECUTION_DEPOSIT_HISTORY IS 'История изменений таблицы executionDeposit';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.EXECUTION_DEPOSIT_ID IS 'Идентификатор записи в таблице EXECUTION_DEPOSIT';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.EVENT_TIME IS 'Дата и время изменения';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.EVENT_USER_ID IS 'Инициатор изменения';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.EVENT_TYPE IS 'Тип изменения';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.EXCHANGE_EXECUTION_ID IS 'Идентификационный номер сделки в Торговой системе';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.EXCHANGE_EXECUTION_TIME IS 'Время заключения сделки в Торговой системе';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.TRADING_DATE IS 'Дата заключения сделки';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.TRADING_CLEARING_REGISTRY_ID IS 'Идентификатор торгово-клирингового регистра (linked to tradingClearingRegistry)';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.MARKET IS 'Код секции финансового инструмента (linked to market)';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.PRICE IS 'Ставка по депозиту';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.LOTS IS 'Количество лотов';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.QUANTITY IS 'Количество штук';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.FIRST_LEG_AMOUNT IS 'Объем сделки';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.SECOND_LEG_AMOUNT IS 'Объем возврата';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.INTEREST_AMOUNT IS 'Объем процентов';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.SIDE IS 'Код направления сделки (linked to moneyFlowSide)';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.SETTLEMENT_CURRENCY IS 'Код валюты расчетов по инструменту (linked to currencyCode)';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.COMPANY_ID IS 'Идентификатор компании (linked to company)';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.DURATION IS 'Срок, дней';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.FIRST_LEG_SETTLEMENT_DATE IS 'Дата размещения';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.SECOND_LEG_SETTLEMENT_DATE IS 'Дата возврата';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.FIRST_LEG_SETTLEMENT_CODE IS 'Код расчетов при размещении';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.SECOND_LEG_SETTLEMENT_CODE IS 'Код расчетов при возврате';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.SECURITY_FULL_NAME IS 'Наименование инструмента';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.SECURITY_SYMBOL IS 'Код инструмента в Торговой Системе';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.SECURITY_ID IS 'Идентификатор финансового инструмента (linked to moneyMarketSecurity)';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.CONTRACT IS 'Продукт';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.COUNTER_PARTY_ID IS 'Идентификатор компании-партнера, с которой заключена сделка (linked to company)';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.COVERAGE_STATUS IS 'Код статуса достаточности обеспечения (linked to allowed)';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.SESSION_ID IS 'Сессия (linked to session)';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.ID IS 'Идентификатор записи';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.CREATED_AT IS 'Дата-время создания записи';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.UPDATED_AT IS 'Дата-время изменения записи';
COMMENT ON COLUMN EXECUTION_DEPOSIT_HISTORY.CLEARING_DATE IS 'Дата клиринга';
-- executionFond - Сделки на Фондовой секции
DROP TABLE IF EXISTS EXECUTION_FOND;
CREATE TABLE EXECUTION_FOND(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, EXCHANGE_EXECUTION_ID bigint, SIDE varchar(4), MARKET varchar(4), TRADING_DATE date, SECURITY_SYMBOL varchar(255), SECURITY_ID bigint, INTEREST_AMOUNT numeric(72,2), EXCHANGE_ORDER_ID bigint, PRICE numeric(72,18), SETTLEMENT_AMOUNT numeric(72,2), LOTS numeric(72,2), QUANTITY numeric(72,2), EXCHANGE_EXECUTION_TIME timestamp, DURATION bigint, TRADING_CLEARING_REGISTRY_ID bigint, COMMENT varchar(255), CLIENT_CODE_ID bigint, SETTLEMENT_CODE varchar(12), COMPANY_ID bigint, COUNTER_PARTY_ID bigint, SECURITY_FULL_NAME varchar(255), SETTLEMENT_DATE date, SETTLEMENT_CURRENCY varchar(4), EXCHANGE_EXECUTION_MICROSECONDS timestamp, COVERAGE_STATUS varchar(4), SESSION_ID bigint);
COMMENT ON TABLE EXECUTION_FOND IS 'Сделки на Фондовой секции';
COMMENT ON COLUMN EXECUTION_FOND.ID IS 'Идентификатор записи';
COMMENT ON COLUMN EXECUTION_FOND.CREATED_AT IS 'Дата-время создания записи';
COMMENT ON COLUMN EXECUTION_FOND.UPDATED_AT IS 'Дата-время изменения записи';
COMMENT ON COLUMN EXECUTION_FOND.CLEARING_DATE IS 'Дата клиринга';
COMMENT ON COLUMN EXECUTION_FOND.EXCHANGE_EXECUTION_ID IS 'Идентификационный номер сделки в Торговой системе';
COMMENT ON COLUMN EXECUTION_FOND.SIDE IS 'Код направления сделки (linked to moneyFlowSide)';
COMMENT ON COLUMN EXECUTION_FOND.MARKET IS 'Код секции финансового инструмента (linked to market)';
COMMENT ON COLUMN EXECUTION_FOND.TRADING_DATE IS 'Дата заключения сделки';
COMMENT ON COLUMN EXECUTION_FOND.SECURITY_SYMBOL IS 'Код инструмента в Торговой Системе';
COMMENT ON COLUMN EXECUTION_FOND.SECURITY_ID IS 'Идентификатор финансового инструмента (linked to security)';
COMMENT ON COLUMN EXECUTION_FOND.INTEREST_AMOUNT IS 'Объем процентов';
COMMENT ON COLUMN EXECUTION_FOND.EXCHANGE_ORDER_ID IS 'Идентификационный номер заявки в Торговой системе';
COMMENT ON COLUMN EXECUTION_FOND.PRICE IS 'Ставка по депозиту';
COMMENT ON COLUMN EXECUTION_FOND.SETTLEMENT_AMOUNT IS 'Объем сделки';
COMMENT ON COLUMN EXECUTION_FOND.LOTS IS 'Количество лотов';
COMMENT ON COLUMN EXECUTION_FOND.QUANTITY IS 'Количество штук';
COMMENT ON COLUMN EXECUTION_FOND.EXCHANGE_EXECUTION_TIME IS 'Время заключения сделки в Торговой системе';
COMMENT ON COLUMN EXECUTION_FOND.DURATION IS 'Срок, дней';
COMMENT ON COLUMN EXECUTION_FOND.TRADING_CLEARING_REGISTRY_ID IS 'Идентификатор торгово-клирингового регистра (linked to tradingClearingRegistry)';
COMMENT ON COLUMN EXECUTION_FOND.COMMENT IS 'Комментарий';
COMMENT ON COLUMN EXECUTION_FOND.CLIENT_CODE_ID IS 'Идентификатор кода клиента';
COMMENT ON COLUMN EXECUTION_FOND.SETTLEMENT_CODE IS 'Код расчетов при размещении';
COMMENT ON COLUMN EXECUTION_FOND.COMPANY_ID IS 'Идентификатор компании (linked to company)';
COMMENT ON COLUMN EXECUTION_FOND.COUNTER_PARTY_ID IS 'Идентификатор компании-партнера, с которой заключена сделка (linked to company)';
COMMENT ON COLUMN EXECUTION_FOND.SECURITY_FULL_NAME IS 'Наименование инструмента';
COMMENT ON COLUMN EXECUTION_FOND.SETTLEMENT_DATE IS 'Дата расчетов';
COMMENT ON COLUMN EXECUTION_FOND.SETTLEMENT_CURRENCY IS 'Код валюты расчетов по инструменту (linked to currencyCode)';
COMMENT ON COLUMN EXECUTION_FOND.EXCHANGE_EXECUTION_MICROSECONDS IS 'Микросекунды заключения сделки в Торговой системе';
COMMENT ON COLUMN EXECUTION_FOND.COVERAGE_STATUS IS 'Код статуса достаточности обеспечения (linked to allowed)';
COMMENT ON COLUMN EXECUTION_FOND.SESSION_ID IS 'Идентификатор сессии (linked to session)';
-- History log of executionFond - Сделки на Фондовой секции
DROP TABLE IF EXISTS EXECUTION_FOND_HISTORY;
CREATE TABLE EXECUTION_FOND_HISTORY(EXECUTION_FOND_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, EVENT_TYPE VARCHAR(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, EXCHANGE_EXECUTION_ID bigint, SIDE varchar(4), MARKET varchar(4), TRADING_DATE date, SECURITY_SYMBOL varchar(255), SECURITY_ID bigint, INTEREST_AMOUNT numeric(72,2), EXCHANGE_ORDER_ID bigint, PRICE numeric(72,18), SETTLEMENT_AMOUNT numeric(72,2), LOTS numeric(72,2), QUANTITY numeric(72,2), EXCHANGE_EXECUTION_TIME timestamp, DURATION bigint, TRADING_CLEARING_REGISTRY_ID bigint, COMMENT varchar(255), CLIENT_CODE_ID bigint, SETTLEMENT_CODE varchar(12), COMPANY_ID bigint, COUNTER_PARTY_ID bigint, SECURITY_FULL_NAME varchar(255), SETTLEMENT_DATE date, SETTLEMENT_CURRENCY varchar(4), EXCHANGE_EXECUTION_MICROSECONDS timestamp, COVERAGE_STATUS varchar(4), SESSION_ID bigint);
COMMENT ON TABLE EXECUTION_FOND_HISTORY IS 'История изменений таблицы executionFond';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.EXECUTION_FOND_ID IS 'Идентификатор записи в таблице EXECUTION_FOND';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.EVENT_TIME IS 'Дата и время изменения';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.EVENT_USER_ID IS 'Инициатор изменения';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.EVENT_TYPE IS 'Тип изменения';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.ID IS 'Идентификатор записи';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.CREATED_AT IS 'Дата-время создания записи';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.UPDATED_AT IS 'Дата-время изменения записи';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.CLEARING_DATE IS 'Дата клиринга';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.EXCHANGE_EXECUTION_ID IS 'Идентификационный номер сделки в Торговой системе';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.SIDE IS 'Код направления сделки (linked to moneyFlowSide)';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.MARKET IS 'Код секции финансового инструмента (linked to market)';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.TRADING_DATE IS 'Дата заключения сделки';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.SECURITY_SYMBOL IS 'Код инструмента в Торговой Системе';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.SECURITY_ID IS 'Идентификатор финансового инструмента (linked to security)';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.INTEREST_AMOUNT IS 'Объем процентов';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.EXCHANGE_ORDER_ID IS 'Идентификационный номер заявки в Торговой системе';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.PRICE IS 'Ставка по депозиту';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.SETTLEMENT_AMOUNT IS 'Объем сделки';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.LOTS IS 'Количество лотов';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.QUANTITY IS 'Количество штук';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.EXCHANGE_EXECUTION_TIME IS 'Время заключения сделки в Торговой системе';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.DURATION IS 'Срок, дней';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.TRADING_CLEARING_REGISTRY_ID IS 'Идентификатор торгово-клирингового регистра (linked to tradingClearingRegistry)';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.COMMENT IS 'Комментарий';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.CLIENT_CODE_ID IS 'Идентификатор кода клиента';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.SETTLEMENT_CODE IS 'Код расчетов при размещении';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.COMPANY_ID IS 'Идентификатор компании (linked to company)';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.COUNTER_PARTY_ID IS 'Идентификатор компании-партнера, с которой заключена сделка (linked to company)';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.SECURITY_FULL_NAME IS 'Наименование инструмента';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.SETTLEMENT_DATE IS 'Дата расчетов';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.SETTLEMENT_CURRENCY IS 'Код валюты расчетов по инструменту (linked to currencyCode)';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.EXCHANGE_EXECUTION_MICROSECONDS IS 'Микросекунды заключения сделки в Торговой системе';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.COVERAGE_STATUS IS 'Код статуса достаточности обеспечения (linked to allowed)';
COMMENT ON COLUMN EXECUTION_FOND_HISTORY.SESSION_ID IS 'Идентификатор сессии (linked to session)';
-- clearmemberRegister - Реестр участников клиринга
DROP TABLE IF EXISTS CLEARMEMBER_REGISTER;
CREATE TABLE CLEARMEMBER_REGISTER(TRADING_CODE varchar(255), CLEARING_CODE varchar(255), FULL_NAME varchar(255), SHORT_NAME varchar(255), CATEGORY_LIST varchar(4), CORPORATION_SOLE varchar(4), ACCOUNT varchar(50), BANK bigint, BANK_NAME varchar(255), INN varchar(255), BIC varchar(255), OGRN varchar(255), CPP varchar(255), OCPO varchar(255), CONTRACT_NUMBER varchar(255), CONTRACT_DATE date, REGISTRATION_DATE date, SYSTEM_DATE date, ACCESS_DATE timestamp, SUSPENTION_DATE timestamp, REOPENING_DATE timestamp, CLOSE_DATE timestamp, EXCLUSION_DATE timestamp, ADDRESS varchar(255), EMAIL varchar(255), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp);
@ -2452,69 +2883,6 @@ COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.RESULT_STATUS IS 'Статус выгру
COMMENT ON COLUMN OUT_DOCUMENT_JOURNAL.ID IS 'Идентификатор записи';
-- executionDeposit - Сделки
DROP TABLE IF EXISTS EXECUTION_DEPOSIT;
CREATE TABLE EXECUTION_DEPOSIT(EXCHANGE_EXECUTION_ID bigint, EXCHANGE_EXECUTION_TIME timestamp, TRADING_DATE date, ACCOUNT_ID bigint, MARKET varchar(4), PRICE numeric(72,18), LOTS numeric(72,2), QUANTITY numeric(72,2), FIRST_LEG_AMOUNT numeric(72,2), SECOND_LEG_AMOUNT numeric(72,2), INTEREST_AMOUNT numeric(72,2), SIDE varchar(4), SETTLEMENT_CURRENCY varchar(4), COMPANY_ID bigint, DURATION bigint, FIRST_LEG_SETTLEMENT_DATE date, SECOND_LEG_SETTLEMENT_DATE date, FIRST_LEG_SETTLEMENT_CODE date, SECOND_LEG_SETTLEMENT_CODE date, SECURITY_FULL_NAME varchar(255), SECURITY_SYMBOL varchar(255), SECURITY_ID bigint, COUNTER_PARTY_ID bigint, COVERAGE_STATUS varchar(4), SESSION_ID bigint, ID bigint PRIMARY KEY, CREATED_AT time, UPDATED_AT time, CLEARING_DATE date);
COMMENT ON TABLE EXECUTION_DEPOSIT IS 'Сделки';
COMMENT ON COLUMN EXECUTION_DEPOSIT.EXCHANGE_EXECUTION_ID IS 'Идентификационный номер сделки в Торговой системе';
COMMENT ON COLUMN EXECUTION_DEPOSIT.EXCHANGE_EXECUTION_TIME IS 'Время заключения сделки в Торговой системе';
COMMENT ON COLUMN EXECUTION_DEPOSIT.TRADING_DATE IS 'Дата заключения сделки';
COMMENT ON COLUMN EXECUTION_DEPOSIT.ACCOUNT_ID IS 'Торговый счет (linked to account)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.MARKET IS 'Секция финансового инструмента (linked to market)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.PRICE IS 'Ставка по депозиту';
COMMENT ON COLUMN EXECUTION_DEPOSIT.LOTS IS 'Количество лотов';
COMMENT ON COLUMN EXECUTION_DEPOSIT.QUANTITY IS 'Количество штук';
COMMENT ON COLUMN EXECUTION_DEPOSIT.FIRST_LEG_AMOUNT IS 'Объем сделки';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SECOND_LEG_AMOUNT IS 'Объем возврата';
COMMENT ON COLUMN EXECUTION_DEPOSIT.INTEREST_AMOUNT IS 'Объем процентов';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SIDE IS 'Направление сделки (linked to moneyFlowSide)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SETTLEMENT_CURRENCY IS 'Валюта расчетов по инструменту (linked to currencyCode)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.COMPANY_ID IS 'Название компании (linked to company)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.DURATION IS 'Срок, дней';
COMMENT ON COLUMN EXECUTION_DEPOSIT.FIRST_LEG_SETTLEMENT_DATE IS 'Дата размещения';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SECOND_LEG_SETTLEMENT_DATE IS 'Дата возврата';
COMMENT ON COLUMN EXECUTION_DEPOSIT.FIRST_LEG_SETTLEMENT_CODE IS 'Код расчетов при размещении';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SECOND_LEG_SETTLEMENT_CODE IS 'Код расчетов при возврате';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SECURITY_FULL_NAME IS 'Наименование инструмента';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SECURITY_SYMBOL IS 'Код инструмента в Торговой Системе';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SECURITY_ID IS 'Финансовый инструмент (linked to moneyMarketSecurity)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.COUNTER_PARTY_ID IS 'Имя компании-партнера, с которым заключена сделка (linked to company)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.COVERAGE_STATUS IS 'атус достаточности обеспечения (linked to allowed)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.SESSION_ID IS 'Наименование сессии (linked to moneyMarketSession)';
COMMENT ON COLUMN EXECUTION_DEPOSIT.ID IS 'Идентификатор записи';
COMMENT ON COLUMN EXECUTION_DEPOSIT.CREATED_AT IS 'Время регистрации сделки';
COMMENT ON COLUMN EXECUTION_DEPOSIT.UPDATED_AT IS 'Время изменения сделки';
COMMENT ON COLUMN EXECUTION_DEPOSIT.CLEARING_DATE IS 'Дата клиринга';
-- dealRegister - Реестр сделок
DROP TABLE IF EXISTS DEAL_REGISTER;
CREATE TABLE DEAL_REGISTER(EXECUTION_ID bigint, EXCHANGE_EXECUTION_ID bigint, EXCHANGE_EXECUTION_TIME timestamp, TRADING_DATE date, ACCOUNT varchar(50), MARKET varchar(4), PRICE numeric(72,18), AMOUNT numeric(72,2), SIDE varchar(4), SETTLEMENT_CURRENCY varchar(4), COMPANY_ID bigint, FIRST_LEG_SETTLEMENT_DATE date, SECOND_LEG_SETTLEMENT_DATE date, SECURITY_FULL_NAME varchar(255), SECURITY_SYMBOL varchar(255), SECURITY_ID bigint, COUNTER_PARTY_ID bigint, COVERAGE_STATUS varchar(4), SESSION_ID bigint, ID bigint PRIMARY KEY, CREATED_AT time, UPDATED_AT time, CLEARING_DATE date);
@ -3892,51 +4260,6 @@ COMMENT ON COLUMN S_DF18.GENERATION_ID IS 'Идентификатор взаим
COMMENT ON COLUMN S_DF18.IN_S_DF12_ID IS 'Идентификатор соответствующей записи из таблицы-источника';
-- s_trade - Сделки из Торговой системы
DROP TABLE IF EXISTS S_TRADE;
CREATE TABLE S_TRADE(ID bigint PRIMARY KEY, TRADE_NUM bigint, SEC_CODE varchar(255), TRADE_DATE_TIME timestamp, SETTLE_DATE date, PRICE numeric(72,18), VALUE numeric(72,2), QTY numeric(72,2), ACCRUEDINT numeric(72,18), FIRM_ID varchar(255), CLIENT_CODE varchar(255), EXCHANGE_COMMISSION numeric(72,2), CLASS_CODE varchar(255), OPERATION varchar(255), ISSUE_ACCOUNT varchar(50), MONEY_ACCOUNT varchar(50), TRADE_TYPE varchar(50), DAYS_TO_MAT_DATE bigint, COLLATERAL varchar(50), SETTLE_CODE varchar(50));
COMMENT ON TABLE S_TRADE IS 'Сделки из Торговой системы';
COMMENT ON COLUMN S_TRADE.ID IS 'Идентификатор записи';
COMMENT ON COLUMN S_TRADE.TRADE_NUM IS 'Номер сделки';
COMMENT ON COLUMN S_TRADE.SEC_CODE IS 'Код ценной бумаги';
COMMENT ON COLUMN S_TRADE.TRADE_DATE_TIME IS 'Дата-время сделки';
COMMENT ON COLUMN S_TRADE.SETTLE_DATE IS 'Плановая дата исполнения сделки';
COMMENT ON COLUMN S_TRADE.PRICE IS 'Цена сделки';
COMMENT ON COLUMN S_TRADE.VALUE IS 'Сумма сделки';
COMMENT ON COLUMN S_TRADE.QTY IS 'Количество лотов по сделке';
COMMENT ON COLUMN S_TRADE.ACCRUEDINT IS 'НКД за 1 ценную бумагу';
COMMENT ON COLUMN S_TRADE.FIRM_ID IS 'ID клиента в КС';
COMMENT ON COLUMN S_TRADE.CLIENT_CODE IS 'Код участника торгов = Код участника клиринга = Код участника расчетов';
COMMENT ON COLUMN S_TRADE.EXCHANGE_COMMISSION IS 'Комиссия по сделке';
COMMENT ON COLUMN S_TRADE.CLASS_CODE IS 'Код класса сделки из новой ТС';
COMMENT ON COLUMN S_TRADE.OPERATION IS 'Тип плеча (Купля/Продажа)';
COMMENT ON COLUMN S_TRADE.ISSUE_ACCOUNT IS 'Счет для учета ценной бумаги';
COMMENT ON COLUMN S_TRADE.MONEY_ACCOUNT IS 'Счет для учета денежных средств';
COMMENT ON COLUMN S_TRADE.TRADE_TYPE IS 'Первичное размещение/торги';
COMMENT ON COLUMN S_TRADE.DAYS_TO_MAT_DATE IS 'Количество дней до погашения';
COMMENT ON COLUMN S_TRADE.COLLATERAL IS 'Признак залога (не используется)';
COMMENT ON COLUMN S_TRADE.SETTLE_CODE IS 'Код периода сделки из новой ТС';
-- notification - Сообщения
DROP TABLE IF EXISTS NOTIFICATION;
CREATE TABLE NOTIFICATION(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, SENDER_ID bigint, ADDRESSEE_ID bigint, OBJECT_TYPE varchar(4), OBJECT_ID timestamp, NOTIFICATION_STATUS varchar(4));
@ -4017,41 +4340,6 @@ COMMENT ON COLUMN VERIFICATION_RESULT.CREATED_AT IS 'Дата и время со
COMMENT ON COLUMN VERIFICATION_RESULT.UPDATED_AT IS 'Дата и время изменения записи';
-- session - Клиринговая сессия
DROP TABLE IF EXISTS SESSION;
CREATE TABLE SESSION(ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, SESSION_STATUS varchar(4));
COMMENT ON TABLE SESSION IS 'Клиринговая сессия';
COMMENT ON COLUMN SESSION.ID IS 'Идентификатор записи';
COMMENT ON COLUMN SESSION.CREATED_AT IS 'Дата и время создания записи';
COMMENT ON COLUMN SESSION.UPDATED_AT IS 'Дата и время изменения записи';
COMMENT ON COLUMN SESSION.CLEARING_DATE IS 'Дата';
COMMENT ON COLUMN SESSION.SESSION_STATUS IS 'Статус клиринговой сессии (linked to sessionStatus)';
-- History log of session - Клиринговая сессия
DROP TABLE IF EXISTS SESSION_HISTORY;
CREATE TABLE SESSION_HISTORY(SESSION_ID BIGINT NOT NULL, EVENT_TIME timestamp, EVENT_USER_ID BIGINT, EVENT_TYPE VARCHAR(4), ID bigint PRIMARY KEY, CREATED_AT timestamp, UPDATED_AT timestamp, CLEARING_DATE date, SESSION_STATUS varchar(4));
COMMENT ON TABLE SESSION_HISTORY IS 'История изменений таблицы session';
COMMENT ON COLUMN SESSION_HISTORY.SESSION_ID IS 'Идентификатор записи в таблице SESSION';
COMMENT ON COLUMN SESSION_HISTORY.EVENT_TIME IS 'Дата и время изменения';
COMMENT ON COLUMN SESSION_HISTORY.EVENT_USER_ID IS 'Инициатор изменения';
COMMENT ON COLUMN SESSION_HISTORY.EVENT_TYPE IS 'Тип изменения';
COMMENT ON COLUMN SESSION_HISTORY.ID IS 'Идентификатор записи';
COMMENT ON COLUMN SESSION_HISTORY.CREATED_AT IS 'Дата и время создания записи';
COMMENT ON COLUMN SESSION_HISTORY.UPDATED_AT IS 'Дата и время изменения записи';
COMMENT ON COLUMN SESSION_HISTORY.CLEARING_DATE IS 'Дата';
COMMENT ON COLUMN SESSION_HISTORY.SESSION_STATUS IS 'Статус клиринговой сессии (linked to sessionStatus)';
-- moneyMarketSession - Сессия денежного рынка
DROP TABLE IF EXISTS MONEY_MARKET_SESSION;
CREATE TABLE MONEY_MARKET_SESSION(ID bigint PRIMARY KEY, COMPANY_ID bigint, SECURITY_ID bigint, USER_ID bigint);

View file

@ -0,0 +1,11 @@
package ru.clearing.platform.dictionary;
/**
* Справочник статусов клиринговых сессий
*
* Dictionary DB table: SESSION_STATUS_DICTIONARY
**/
public class SessionStatusDictionary extends AbstractDictionary {
private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID;
}

View file

@ -0,0 +1,11 @@
package ru.clearing.platform.dictionary;
/**
* Справочник типов клиринговых сессий
*
* Dictionary DB table: SESSION_TYPE_DICTIONARY
**/
public class SessionTypeDictionary extends AbstractDictionary {
private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID;
}

View file

@ -0,0 +1,82 @@
package ru.spcex.clearing.imdg.businessevent;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
import ru.clearing.classes.statics.data.execution.ExecutionDepositHistory;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.imdg.base.TemplateEventMapStore;
import ru.spcex.platform.utils.time.TimeUtil;
@Component
public class ExecutionDepositHistoryMapStore extends TemplateEventMapStore<ExecutionDepositHistory> {
public ExecutionDepositHistoryMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate);
}
@Override
public String getMapName() {
return IMDGDistributedNames.Map_ExecutionDepositHistory;
}
@Override
public String getTableName() {
return "EXECUTION_DEPOSIT_HISTORY";
}
@Override
public String[] getFields() {
return new String[]{"ID", "EVENT_TIME", "EVENT_USER_ID", "EVENT_TYPE",
"EXECUTION_DEPOSIT_ID", "CREATED_AT", "UPDATED_AT", "EXCHANGE_EXECUTION_ID", "EXCHANGE_EXECUTION_TIME",
"TRADING_DATE", "TRADING_CLEARING_REGISTRY_ID", "MARKET", "PRICE", "LOTS", "QUANTITY", "FIRST_LEG_AMOUNT",
"SECOND_LEG_AMOUNT", "INTEREST_AMOUNT", "SIDE", "SETTLEMENT_CURRENCY", "COMPANY_ID", "DURATION",
"FIRST_LEG_SETTLEMENT_DATE", "SECOND_LEG_SETTLEMENT_DATE", "FIRST_LEG_SETTLEMENT_CODE",
"SECOND_LEG_SETTLEMENT_CODE", "SECURITY_FULL_NAME", "SECURITY_SYMBOL", "SECURITY_ID", "CONTRACT",
"COUNTER_PARTY_ID", "COVERAGE_STATUS", "SESSION_ID", "CLEARING_DATE"
};
}
@Override
public Object[] objectToField(ExecutionDepositHistory historyLog) {
ExecutionDeposit object = historyLog.getObject();
Object[] args = new Object[]{
historyLog.getId(),
TimeUtil.toDateFromInstant(historyLog.getEventTime()),
historyLog.getUserId(),
historyLog.getEventType(),
object.getId(),
TimeUtil.toDateFromInstant(object.getCreated()),
TimeUtil.toDateFromInstant(object.getUpdated()),
object.getExchangeExecutionId(),
TimeUtil.toDateFromInstant(object.getExchangeExecutionTime()),
TimeUtil.toDateFromLocalDate(object.getTradingDate()),
object.getTradingClearingRegistryId(),
object.getMarket(),
object.getPrice(),
object.getLots(),
object.getQuantity(),
object.getFirstLegAmount(),
object.getSecondLegAmount(),
object.getInterestAmount(),
object.getSide(),
object.getSettlementCurrency(),
object.getCompanyId(),
object.getDuration(),
TimeUtil.toDateFromLocalDate(object.getFirstLegSettlementDate()),
TimeUtil.toDateFromLocalDate(object.getSecondLegSettlementDate()),
object.getFirstLegSettlementCode(),
object.getSecondLegSettlementCode(),
object.getSecurityFullName(),
object.getSecuritySymbol(),
object.getSecurityId(),
object.getContract(),
object.getCounterPartyId(),
object.getCoverageStatus(),
object.getSessionId(),
TimeUtil.toDateFromLocalDate(object.getClearingDate())
};
return args;
}
}

View file

@ -0,0 +1,78 @@
package ru.spcex.clearing.imdg.businessevent;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.execution.ExecutionFond;
import ru.clearing.classes.statics.data.execution.ExecutionFondHistory;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.imdg.base.TemplateEventMapStore;
import ru.spcex.platform.utils.time.TimeUtil;
@Component
public class ExecutionFondHistoryMapStore extends TemplateEventMapStore<ExecutionFondHistory> {
public ExecutionFondHistoryMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate);
}
@Override
public String getMapName() {
return IMDGDistributedNames.Map_ExecutionFondHistory;
}
@Override
public String getTableName() {
return "EXECUTION_FOND_HISTORY";
}
@Override
public String[] getFields() {
return new String[]{"ID", "EVENT_TIME", "EVENT_USER_ID", "EVENT_TYPE",
"EXECUTION_FOND_ID", "CREATED_AT", "UPDATED_AT", "CLEARING_DATE", "EXCHANGE_EXECUTION_ID", "SIDE", "MARKET", "TRADING_DATE", "SECURITY_SYMBOL", "SECURITY_ID", "INTEREST_AMOUNT", "EXCHANGE_ORDER_ID", "PRICE", "SETTLEMENT_AMOUNT", "LOTS", "QUANTITY", "EXCHANGE_EXECUTION_TIME", "DURATION", "TRADING_CLEARING_REGISTRY_ID", "COMMENT", "CLIENT_CODE_ID", "SETTLEMENT_CODE", "COMPANY_ID", "COUNTER_PARTY_ID", "SECURITY_FULL_NAME", "SETTLEMENT_DATE", "SETTLEMENT_CURRENCY", "EXCHANGE_EXECUTION_MICROSECONDS", "COVERAGE_STATUS", "SESSION_ID"
};
}
@Override
public Object[] objectToField(ExecutionFondHistory historyLog) {
ExecutionFond object = historyLog.getObject();
Object[] args = new Object[]{
historyLog.getId(),
TimeUtil.toDateFromInstant(historyLog.getEventTime()),
historyLog.getUserId(),
historyLog.getEventType(),
object.getId(),
TimeUtil.toDateFromInstant(object.getCreated()),
TimeUtil.toDateFromInstant(object.getUpdated()),
TimeUtil.toDateFromLocalDate(object.getClearingDate()),
object.getExchangeExecutionId(),
object.getSide(),
object.getMarket(),
TimeUtil.toDateFromLocalDate(object.getTradingDate()),
object.getSecuritySymbol(),
object.getSecurityId(),
object.getInterestAmount(),
object.getExchangeOrderId(),
object.getPrice(),
object.getSettlementAmount(),
object.getLots(),
object.getQuantity(),
TimeUtil.toDateFromInstant(object.getExchangeExecutionTime()),
object.getDuration(),
object.getTradingClearingRegistryId(),
object.getComment(),
object.getClientCodeId(),
object.getSettlementCode(),
object.getCompanyId(),
object.getCounterPartyId(),
object.getSecurityFullName(),
TimeUtil.toDateFromLocalDate(object.getSettlementDate()),
object.getSettlementCurrency(),
TimeUtil.toDateFromInstant(object.getExchangeExecutionMicroseconds()),
object.getCoverageStatus(),
object.getSessionId()
};
return args;
}
}

View file

@ -0,0 +1,58 @@
package ru.spcex.clearing.imdg.businessevent;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.misc.Session;
import ru.clearing.classes.statics.data.misc.SessionHistory;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.imdg.base.TemplateEventMapStore;
import ru.spcex.platform.utils.time.TimeUtil;
@Component
public class SessionHistoryMapStore extends TemplateEventMapStore<SessionHistory> {
public SessionHistoryMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate);
}
@Override
public String getMapName() {
return IMDGDistributedNames.Map_SessionHistory;
}
@Override
public String getTableName() {
return "SESSION_HISTORY";
}
@Override
public String[] getFields() {
return new String[]{"ID", "EVENT_TIME", "EVENT_USER_ID", "EVENT_TYPE",
"SESSION_ID", "CREATED_AT", "UPDATED_AT", "CLEARING_DATE", "SESSION_STATUS", "COMPANY_ID", "SECURITY_ID", "USER_ID", "SECTION", "SESSION_TYPE"
};
}
@Override
public Object[] objectToField(SessionHistory historyLog) {
Session object = historyLog.getObject();
Object[] args = new Object[]{
historyLog.getId(),
TimeUtil.toDateFromInstant(historyLog.getEventTime()),
historyLog.getUserId(),
historyLog.getEventType(),
object.getId(),
TimeUtil.toDateFromInstant(object.getCreated()),
TimeUtil.toDateFromInstant(object.getUpdated()),
TimeUtil.toDateFromLocalDate(object.getClearingDate()),
object.getSessionStatus(),
object.getCompanyId(),
object.getSecurityId(),
object.getUserId(),
object.getSection(),
object.getSessionType()
};
return args;
}
}

View file

@ -0,0 +1,114 @@
package ru.spcex.clearing.imdg.businessobject;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.execution.ExecutionFond;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.imdg.base.TemplateMapStore;
import ru.spcex.platform.utils.time.TimeUtil;
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;
@Component
public class ExecutionFondMapStore extends TemplateMapStore<ExecutionFond> {
public ExecutionFondMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate);
}
@Override
public String getMapName() {
return IMDGDistributedNames.Map_ExecutionFond;
}
@Override
public String getTableName() {
return "EXECUTION_FOND";
}
@Override
public String[] getFields() {
return new String[]{
"ID", "CREATED_AT", "UPDATED_AT", "CLEARING_DATE", "EXCHANGE_EXECUTION_ID", "SIDE", "MARKET",
"TRADING_DATE", "SECURITY_SYMBOL", "SECURITY_ID", "INTEREST_AMOUNT", "EXCHANGE_ORDER_ID", "PRICE",
"SETTLEMENT_AMOUNT", "LOTS", "QUANTITY", "EXCHANGE_EXECUTION_TIME", "DURATION", "TRADING_CLEARING_REGISTRY_ID",
"COMMENT", "CLIENT_CODE_ID", "SETTLEMENT_CODE", "COMPANY_ID", "COUNTER_PARTY_ID", "SECURITY_FULL_NAME",
"SETTLEMENT_DATE", "SETTLEMENT_CURRENCY", "EXCHANGE_EXECUTION_MICROSECONDS", "COVERAGE_STATUS", "SESSION_ID"
};
}
@Override
public ExecutionFond objectReader(ResultSet resultSet) throws SQLException {
ExecutionFond object = new ExecutionFond();
object.setId(resultSet.getObject("ID", Long.class));
object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT"));
object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT"));
object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE"));
object.setExchangeExecutionId(resultSet.getObject("EXCHANGE_EXECUTION_ID", Long.class));
object.setSide(resultSet.getObject("SIDE", String.class));
object.setMarket(resultSet.getObject("MARKET", String.class));
object.setTradingDate(getLocalDateFromSqlDate(resultSet, "TRADING_DATE"));
object.setSecuritySymbol(resultSet.getObject("SECURITY_SYMBOL", String.class));
object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class));
object.setInterestAmount(resultSet.getObject("INTEREST_AMOUNT", BigDecimal.class));
object.setExchangeOrderId(resultSet.getObject("EXCHANGE_ORDER_ID", Long.class));
object.setPrice(resultSet.getObject("PRICE", BigDecimal.class));
object.setSettlementAmount(resultSet.getObject("SETTLEMENT_AMOUNT", BigDecimal.class));
object.setLots(resultSet.getObject("LOTS", BigDecimal.class));
object.setQuantity(resultSet.getObject("QUANTITY", BigDecimal.class));
object.setExchangeExecutionTime(getInstantFromTimestamp(resultSet, "EXCHANGE_EXECUTION_TIME"));
object.setDuration(resultSet.getObject("DURATION", Long.class));
object.setTradingClearingRegistryId(resultSet.getObject("TRADING_CLEARING_REGISTRY_ID", Long.class));
object.setComment(resultSet.getObject("COMMENT", String.class));
object.setClientCodeId(resultSet.getObject("CLIENT_CODE_ID", Long.class));
object.setSettlementCode(resultSet.getObject("SETTLEMENT_CODE", String.class));
object.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class));
object.setCounterPartyId(resultSet.getObject("COUNTER_PARTY_ID", Long.class));
object.setSecurityFullName(resultSet.getObject("SECURITY_FULL_NAME", String.class));
object.setSettlementDate(getLocalDateFromSqlDate(resultSet, "SETTLEMENT_DATE"));
object.setSettlementCurrency(resultSet.getObject("SETTLEMENT_CURRENCY", String.class));
object.setExchangeExecutionMicroseconds(getInstantFromTimestamp(resultSet, "EXCHANGE_EXECUTION_MICROSECONDS"));
object.setCoverageStatus(resultSet.getObject("COVERAGE_STATUS", String.class));
object.setSessionId(resultSet.getObject("SESSION_ID", Long.class));
return object;
}
@Override
public Object[] objectToField(ExecutionFond object) {
Object[] args = new Object[]{
object.getId(),
TimeUtil.toDateFromInstant(object.getCreated()),
TimeUtil.toDateFromInstant(object.getUpdated()),
TimeUtil.toDateFromLocalDate(object.getClearingDate()),
object.getExchangeExecutionId(),
object.getSide(),
object.getMarket(),
TimeUtil.toDateFromLocalDate(object.getTradingDate()),
object.getSecuritySymbol(),
object.getSecurityId(),
object.getInterestAmount(),
object.getExchangeOrderId(),
object.getPrice(),
object.getSettlementAmount(),
object.getLots(),
object.getQuantity(),
TimeUtil.toDateFromInstant(object.getExchangeExecutionTime()),
object.getDuration(),
object.getTradingClearingRegistryId(),
object.getComment(),
object.getClientCodeId(),
object.getSettlementCode(),
object.getCompanyId(),
object.getCounterPartyId(),
object.getSecurityFullName(),
TimeUtil.toDateFromLocalDate(object.getSettlementDate()),
object.getSettlementCurrency(),
TimeUtil.toDateFromInstant(object.getExchangeExecutionMicroseconds()),
object.getCoverageStatus(),
object.getSessionId()
};
return args;
}
}

View file

@ -0,0 +1,31 @@
package ru.spcex.clearing.imdg.dictionary;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import ru.clearing.platform.dictionary.SessionStatusDictionary;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.imdg.base.DictionaryTMapStore;
@Component
public class SessionStatusDictionaryMapStore extends DictionaryTMapStore<SessionStatusDictionary> {
public SessionStatusDictionaryMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate);
}
@Override
public String getMapName() {
return IMDGDistributedNames.Map_SessionStatusDictionary;
}
@Override
public String getTableName() {
return "SESSION_STATUS_DICTIONARY";
}
@Override
public SessionStatusDictionary getDictionaryObject() {
return new SessionStatusDictionary();
}
}

View file

@ -0,0 +1,31 @@
package ru.spcex.clearing.imdg.dictionary;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import ru.clearing.platform.dictionary.SessionTypeDictionary;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.imdg.base.DictionaryTMapStore;
@Component
public class SessionTypeDictionaryMapStore extends DictionaryTMapStore<SessionTypeDictionary> {
public SessionTypeDictionaryMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate);
}
@Override
public String getMapName() {
return IMDGDistributedNames.Map_SessionTypeDictionary;
}
@Override
public String getTableName() {
return "SESSION_TYPE_DICTIONARY";
}
@Override
public SessionTypeDictionary getDictionaryObject() {
return new SessionTypeDictionary();
}
}

View file

@ -33,33 +33,13 @@ public class ExecutionDepositMapStore extends TemplateMapStore<ExecutionDeposit>
@Override
public String[] getFields() {
return new String[]{"ID", "CREATED_AT", "UPDATED_AT",
"EXCHANGE_EXECUTION_ID",
"EXCHANGE_EXECUTION_TIME",
"TRADING_DATE",
"ACCOUNT_ID",
"MARKET",
"PRICE",
"LOTS",
"QUANTITY",
"FIRST_LEG_AMOUNT",
"SECOND_LEG_AMOUNT",
"INTEREST_AMOUNT",
"SIDE",
"SETTLEMENT_CURRENCY",
"COMPANY_ID",
"DURATION",
"FIRST_LEG_SETTLEMENT_DATE",
"SECOND_LEG_SETTLEMENT_DATE",
"FIRST_LEG_SETTLEMENT_CODE",
"SECOND_LEG_SETTLEMENT_CODE",
"SECURITY_FULL_NAME",
"SECURITY_SYMBOL",
"SECURITY_ID",
"COUNTER_PARTY_ID",
"COVERAGE_STATUS",
"SESSION_ID",
"CLEARING_DATE",
return new String[]{
"ID", "CREATED_AT", "UPDATED_AT",
"EXCHANGE_EXECUTION_ID", "EXCHANGE_EXECUTION_TIME", "TRADING_DATE", "TRADING_CLEARING_REGISTRY_ID",
"MARKET", "PRICE", "LOTS", "QUANTITY", "FIRST_LEG_AMOUNT", "SECOND_LEG_AMOUNT", "INTEREST_AMOUNT",
"SIDE", "SETTLEMENT_CURRENCY", "COMPANY_ID", "DURATION", "FIRST_LEG_SETTLEMENT_DATE", "SECOND_LEG_SETTLEMENT_DATE",
"FIRST_LEG_SETTLEMENT_CODE", "SECOND_LEG_SETTLEMENT_CODE", "SECURITY_FULL_NAME", "SECURITY_SYMBOL",
"SECURITY_ID", "CONTRACT", "COUNTER_PARTY_ID", "COVERAGE_STATUS", "SESSION_ID", "CLEARING_DATE"
};
}
@ -72,7 +52,7 @@ public class ExecutionDepositMapStore extends TemplateMapStore<ExecutionDeposit>
object.setExchangeExecutionId(resultSet.getObject("EXCHANGE_EXECUTION_ID", Long.class));
object.setExchangeExecutionTime(getInstantFromTimestamp(resultSet, "EXCHANGE_EXECUTION_TIME"));
object.setTradingDate(getLocalDateFromSqlDate(resultSet, "TRADING_DATE"));
object.setAccountId(resultSet.getObject("ACCOUNT_ID", Long.class));
object.setTradingClearingRegistryId(resultSet.getObject("TRADING_CLEARING_REGISTRY_ID", Long.class));
object.setMarket(resultSet.getObject("MARKET", String.class));
object.setPrice(resultSet.getObject("PRICE", BigDecimal.class));
object.setLots(resultSet.getObject("LOTS", BigDecimal.class));
@ -86,11 +66,12 @@ public class ExecutionDepositMapStore extends TemplateMapStore<ExecutionDeposit>
object.setDuration(resultSet.getObject("DURATION", Long.class));
object.setFirstLegSettlementDate(getLocalDateFromSqlDate(resultSet, "FIRST_LEG_SETTLEMENT_DATE"));
object.setSecondLegSettlementDate(getLocalDateFromSqlDate(resultSet, "SECOND_LEG_SETTLEMENT_DATE"));
object.setFirstLegSettlementCode(getLocalDateFromSqlDate(resultSet, "FIRST_LEG_SETTLEMENT_CODE"));
object.setSecondLegSettlementCode(getLocalDateFromSqlDate(resultSet, "SECOND_LEG_SETTLEMENT_CODE"));
object.setFirstLegSettlementCode(resultSet.getObject("FIRST_LEG_SETTLEMENT_CODE", String.class));
object.setSecondLegSettlementCode(resultSet.getObject("SECOND_LEG_SETTLEMENT_CODE", String.class));
object.setSecurityFullName(resultSet.getObject("SECURITY_FULL_NAME", String.class));
object.setSecuritySymbol(resultSet.getObject("SECURITY_SYMBOL", String.class));
object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class));
object.setContract(resultSet.getObject("CONTRACT", String.class));
object.setCounterPartyId(resultSet.getObject("COUNTER_PARTY_ID", Long.class));
object.setCoverageStatus(resultSet.getObject("COVERAGE_STATUS", String.class));
object.setSessionId(resultSet.getObject("SESSION_ID", Long.class));
@ -107,7 +88,7 @@ public class ExecutionDepositMapStore extends TemplateMapStore<ExecutionDeposit>
object.getExchangeExecutionId(),
TimeUtil.toDateFromInstant(object.getExchangeExecutionTime()),
TimeUtil.toDateFromLocalDate(object.getTradingDate()),
object.getAccountId(),
object.getTradingClearingRegistryId(),
object.getMarket(),
object.getPrice(),
object.getLots(),
@ -121,15 +102,16 @@ public class ExecutionDepositMapStore extends TemplateMapStore<ExecutionDeposit>
object.getDuration(),
TimeUtil.toDateFromLocalDate(object.getFirstLegSettlementDate()),
TimeUtil.toDateFromLocalDate(object.getSecondLegSettlementDate()),
TimeUtil.toDateFromLocalDate(object.getFirstLegSettlementCode()),
TimeUtil.toDateFromLocalDate(object.getSecondLegSettlementCode()),
object.getFirstLegSettlementCode(),
object.getSecondLegSettlementCode(),
object.getSecurityFullName(),
object.getSecuritySymbol(),
object.getSecurityId(),
object.getContract(),
object.getCounterPartyId(),
object.getCoverageStatus(),
object.getSessionId(),
TimeUtil.toDateFromLocalDate(object.getClearingDate()),
TimeUtil.toDateFromLocalDate(object.getClearingDate())
};
return args;
}

View file

@ -1,94 +0,0 @@
package ru.spcex.clearing.imdg.object;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.misc.STrade;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.imdg.base.TemplateMapStore;
import ru.spcex.platform.utils.time.TimeUtil;
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;
@Component
public class STradeMapStore extends TemplateMapStore<STrade> {
public STradeMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate);
}
@Override
public String getMapName() {
return IMDGDistributedNames.Map_STrade;
}
@Override
public String getTableName() {
return "S_TRADE";
}
@Override
public String[] getFields() {
return new String[]{
"ID", "TRADE_NUM", "SEC_CODE", "TRADE_DATE_TIME", "SETTLE_DATE", "PRICE", "VALUE", "QTY", "ACCRUEDINT",
"FIRM_ID", "CLIENT_CODE", "EXCHANGE_COMMISSION", "CLASS_CODE", "OPERATION", "ISSUE_ACCOUNT",
"MONEY_ACCOUNT", "TRADE_TYPE", "DAYS_TO_MAT_DATE", "COLLATERAL", "SETTLE_CODE"
};
}
@Override
public STrade objectReader(ResultSet resultSet) throws SQLException {
STrade object = new STrade();
object.setId(resultSet.getObject("ID", Long.class));
object.setTradeNum(resultSet.getObject("TRADE_NUM", Long.class));
object.setSecCode(resultSet.getObject("SEC_CODE", String.class));
object.setTradeDateTime(getInstantFromTimestamp(resultSet, "TRADE_DATE_TIME"));
object.setSettleDate(resultSet.getObject("SETTLE_DATE", LocalDate.class));
object.setPrice(resultSet.getObject("PRICE", BigDecimal.class));
object.setValue(resultSet.getObject("VALUE", BigDecimal.class));
object.setQty(resultSet.getObject("QTY", BigDecimal.class));
object.setAccruedint(resultSet.getObject("ACCRUEDINT", BigDecimal.class));
object.setFirmId(resultSet.getObject("FIRM_ID", String.class));
object.setClientCode(resultSet.getObject("CLIENT_CODE", String.class));
object.setExchangeCommission(resultSet.getObject("EXCHANGE_COMMISSION", BigDecimal.class));
object.setClassCode(resultSet.getObject("CLASS_CODE", String.class));
object.setOperation(resultSet.getObject("OPERATION", String.class));
object.setIssueAccount(resultSet.getObject("ISSUE_ACCOUNT", String.class));
object.setMoneyAccount(resultSet.getObject("MONEY_ACCOUNT", String.class));
object.setTradeType(resultSet.getObject("TRADE_TYPE", String.class));
object.setDaysToMatDate(resultSet.getObject("DAYS_TO_MAT_DATE", Long.class));
object.setCollateral(resultSet.getObject("COLLATERAL", String.class));
object.setSettleCode(resultSet.getObject("SETTLE_CODE", String.class));
return object;
}
@Override
public Object[] objectToField(STrade object) {
Object[] args = new Object[]{
object.getId(),
object.getTradeNum(),
object.getSecCode(),
TimeUtil.toDateFromInstant(object.getTradeDateTime()),
object.getSettleDate(),
object.getPrice(),
object.getValue(),
object.getQty(),
object.getAccruedint(),
object.getFirmId(),
object.getClientCode(),
object.getExchangeCommission(),
object.getClassCode(),
object.getOperation(),
object.getIssueAccount(),
object.getMoneyAccount(),
object.getTradeType(),
object.getDaysToMatDate(),
object.getCollateral(),
object.getSettleCode()
};
return args;
}
}

View file

@ -0,0 +1,147 @@
package ru.spcex.clearing.imdg.object;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.misc.STrades;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.imdg.base.TemplateMapStore;
import ru.spcex.platform.utils.time.TimeUtil;
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;
@Component
public class STradesMapStore extends TemplateMapStore<STrades> {
public STradesMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate);
}
@Override
public String getMapName() {
return IMDGDistributedNames.Map_STrades;
}
@Override
public String getTableName() {
return "S_TRADES";
}
@Override
public String[] getFields() {
return new String[]{
"ID", "TRADE_NUM", "OPERATION", "CLASS_CODE", "TRADE_DATE", "SEC_CODE", "ACCRUEDINT", "ACCRUEDINT2",
"LOWER_DISCOUNT", "ORDER_NUM", "PRICE", "PRICE2", "REPO_RATE", "REPO_VALUE", "REPO2_VALUE",
"START_DISCOUNT", "TS_COMMISSION", "UPPER_DISCOUNT", "VALUE", "YIELD", "QTY", "QTY_PCS",
"TRADE_DATE_TIME", "REPO_TERM", "CLEARING_COMMISSION", "EXCHANGE_COMMISSION", "TECH_CENTER_COMMISSION",
"ACCOUNT", "BROKER_REF", "CLIENT_CODE", "SETTLE_CODE", "USER_ID", "EXCHANGE_CODE",
"FIRM_ID", "FIRM_NAME", "CP_FIRM_ID", "CP_FIRM_NAME", "CLASS_NAME", "SEC_NAME",
"SETTLE_DATE", "SETTLE_CURRENCY", "TRADE_CURRENCY", "TRADE_TIME_MS", "BANK_ACC_ID", "SECTION"
};
}
@Override
public STrades objectReader(ResultSet resultSet) throws SQLException {
STrades object = new STrades();
object.setId(resultSet.getObject("ID", Long.class));
object.setTradeNum(resultSet.getObject("TRADE_NUM", Long.class));
object.setOperation(resultSet.getObject("OPERATION", String.class));
object.setClassCode(resultSet.getObject("CLASS_CODE", String.class));
object.setTradeDate(getLocalDateFromSqlDate(resultSet, "TRADE_DATE"));
object.setSecCode(resultSet.getObject("SEC_CODE", String.class));
object.setAccruedint(resultSet.getObject("ACCRUEDINT", BigDecimal.class));
object.setAccruedint2(resultSet.getObject("ACCRUEDINT2", BigDecimal.class));
object.setLowerDiscount(resultSet.getObject("LOWER_DISCOUNT", BigDecimal.class));
object.setOrderNum(resultSet.getObject("ORDER_NUM", Long.class));
object.setPrice(resultSet.getObject("PRICE", BigDecimal.class));
object.setPrice2(resultSet.getObject("PRICE2", BigDecimal.class));
object.setRepoRate(resultSet.getObject("REPO_RATE", BigDecimal.class));
object.setRepoValue(resultSet.getObject("REPO_VALUE", BigDecimal.class));
object.setRepo2Value(resultSet.getObject("REPO2_VALUE", BigDecimal.class));
object.setStartDiscount(resultSet.getObject("START_DISCOUNT", BigDecimal.class));
object.setTsCommission(resultSet.getObject("TS_COMMISSION", BigDecimal.class));
object.setUpperDiscount(resultSet.getObject("UPPER_DISCOUNT", BigDecimal.class));
object.setValue(resultSet.getObject("VALUE", BigDecimal.class));
object.setYield(resultSet.getObject("YIELD", BigDecimal.class));
object.setQty(resultSet.getObject("QTY", BigDecimal.class));
object.setQtyPcs(resultSet.getObject("QTY_PCS", BigDecimal.class));
object.setTradeDateTime(getInstantFromTimestamp(resultSet, "TRADE_DATE_TIME"));
object.setRepoTerm(resultSet.getObject("REPO_TERM", Long.class));
object.setClearingCommission(resultSet.getObject("CLEARING_COMMISSION", BigDecimal.class));
object.setExchangeCommission(resultSet.getObject("EXCHANGE_COMMISSION", BigDecimal.class));
object.setTechCenterCommission(resultSet.getObject("TECH_CENTER_COMMISSION", BigDecimal.class));
object.setAccount(resultSet.getObject("ACCOUNT", String.class));
object.setBrokerRef(resultSet.getObject("BROKER_REF", String.class));
object.setClientCode(resultSet.getObject("CLIENT_CODE", String.class));
object.setSettleCode(resultSet.getObject("SETTLE_CODE", String.class));
object.setUserId(resultSet.getObject("USER_ID", String.class));
object.setExchangeCode(resultSet.getObject("EXCHANGE_CODE", String.class));
object.setFirmId(resultSet.getObject("FIRM_ID", String.class));
object.setFirmName(resultSet.getObject("FIRM_NAME", String.class));
object.setCpFirmId(resultSet.getObject("CP_FIRM_ID", String.class));
object.setCpFirmName(resultSet.getObject("CP_FIRM_NAME", String.class));
object.setClassName(resultSet.getObject("CLASS_NAME", String.class));
object.setSecName(resultSet.getObject("SEC_NAME", String.class));
object.setSettleDate(getLocalDateFromSqlDate(resultSet, "SETTLE_DATE"));
object.setSettleCurrency(resultSet.getObject("SETTLE_CURRENCY", String.class));
object.setTradeCurrency(resultSet.getObject("TRADE_CURRENCY", String.class));
object.setTradeTimeMs(resultSet.getObject("TRADE_TIME_MS", Long.class));
object.setBankAccId(resultSet.getObject("BANK_ACC_ID", String.class));
object.setSection(resultSet.getObject("SECTION", String.class));
return object;
}
@Override
public Object[] objectToField(STrades object) {
Object[] args = new Object[]{
object.getId(),
object.getTradeNum(),
object.getOperation(),
object.getClassCode(),
TimeUtil.toDateFromLocalDate(object.getTradeDate()),
object.getSecCode(),
object.getAccruedint(),
object.getAccruedint2(),
object.getLowerDiscount(),
object.getOrderNum(),
object.getPrice(),
object.getPrice2(),
object.getRepoRate(),
object.getRepoValue(),
object.getRepo2Value(),
object.getStartDiscount(),
object.getTsCommission(),
object.getUpperDiscount(),
object.getValue(),
object.getYield(),
object.getQty(),
object.getQtyPcs(),
TimeUtil.toDateFromInstant(object.getTradeDateTime()),
object.getRepoTerm(),
object.getClearingCommission(),
object.getExchangeCommission(),
object.getTechCenterCommission(),
object.getAccount(),
object.getBrokerRef(),
object.getClientCode(),
object.getSettleCode(),
object.getUserId(),
object.getExchangeCode(),
object.getFirmId(),
object.getFirmName(),
object.getCpFirmId(),
object.getCpFirmName(),
object.getClassName(),
object.getSecName(),
TimeUtil.toDateFromLocalDate(object.getSettleDate()),
object.getSettleCurrency(),
object.getTradeCurrency(),
object.getTradeTimeMs(),
object.getBankAccId(),
object.getSection()
};
return args;
}
}

View file

@ -29,17 +29,24 @@ public class SessionMapStore extends TemplateMapStore<Session> {
@Override
public String[] getFields() {
return new String[]{"id", "created_at", "updated_at", "clearing_date", "session_status"};
return new String[]{
"id", "created_at", "updated_at", "clearing_date", "session_status", "company_id", "security_id", "user_id", "section", "session_type"
};
}
@Override
protected Session objectReader(ResultSet resultSet) throws SQLException {
Session session = new Session();
session.setId(resultSet.getLong("id"));
session.setCreated(getInstantFromTimestamp(resultSet, "created_at"));
session.setUpdated(getInstantFromTimestamp(resultSet, "updated_at"));
session.setClearingDate(getLocalDateFromSqlDate(resultSet, "clearing_date"));
session.setSessionStatus(resultSet.getString("session_status"));
session.setId(resultSet.getObject("ID", Long.class));
session.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT"));
session.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT"));
session.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE"));
session.setSessionStatus(resultSet.getObject("SESSION_STATUS", String.class));
session.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class));
session.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class));
session.setUserId(resultSet.getObject("USER_ID", Long.class));
session.setSection(resultSet.getObject("SECTION", String.class));
session.setSessionType(resultSet.getObject("SESSION_TYPE", String.class));
return session;
}
@ -50,7 +57,12 @@ public class SessionMapStore extends TemplateMapStore<Session> {
TimeUtil.toDateFromInstant(session.getCreated()),
TimeUtil.toDateFromInstant(session.getUpdated()),
TimeUtil.toDateFromLocalDate(session.getClearingDate()),
session.getSessionStatus()
session.getSessionStatus(),
session.getCompanyId(),
session.getSecurityId(),
session.getUserId(),
session.getSection(),
session.getSessionType()
};
return args;
}

View file

@ -149,7 +149,7 @@ public class UpdateMapService extends AbstractUpdateMapService {
FixedIncomeCashFlowHistory fixedIncomeCashFlowHistory = new FixedIncomeCashFlowHistory();
createBusinessEvent(fixedIncomeCashFlowHistory, eventType);
fixedIncomeCashFlowHistory.setObject((FixedIncomeCashFlow) value);
hazelcastServerInstance.getMap(IMDGDistributedNames.Map_MarketHistory).put(fixedIncomeCashFlowHistory.getId(), fixedIncomeCashFlowHistory);
hazelcastServerInstance.getMap(IMDGDistributedNames.Map_FixedIncomeCashFlowHistory).put(fixedIncomeCashFlowHistory.getId(), fixedIncomeCashFlowHistory);
} else if (value instanceof CouponPeriod) {
CouponPeriodHistory couponPeriodHistory = new CouponPeriodHistory();
createBusinessEvent(couponPeriodHistory, eventType);

View file

@ -84,6 +84,17 @@ public class BusinessObjectAndBusinessEventForCheckMapStore<T> {
this.params = params;
}
public SettingOperation(String methodName, Object[] params) {
this.methodName = methodName;
this.parameterTypes = new Class[params.length];
for (int i = 0; i < params.length; i++) {
if (params[i] instanceof Class)
throw new IllegalArgumentException("Required not a Class argument, i=" + i);
parameterTypes[i] = params[i].getClass();
}
this.params = params;
}
public String getMethodName() {
return methodName;
}

View file

@ -6,6 +6,9 @@ import ru.clearing.classes.statics.data.company.*;
import ru.clearing.classes.statics.data.company.relation.Relation;
import ru.clearing.classes.statics.data.company.relation.RelationHistory;
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
import ru.clearing.classes.statics.data.execution.ExecutionDepositHistory;
import ru.clearing.classes.statics.data.execution.ExecutionFond;
import ru.clearing.classes.statics.data.execution.ExecutionFondHistory;
import ru.clearing.classes.statics.data.instrument.issue.*;
import ru.clearing.classes.statics.data.journal.InDocumentJournal;
import ru.clearing.classes.statics.data.journal.ManagementJournal;
@ -21,8 +24,6 @@ import ru.clearing.classes.statics.data.profile.ProfileDocumentHistory;
import ru.clearing.classes.statics.data.register.*;
import ru.clearing.classes.statics.data.scheduler.*;
import ru.clearing.classes.statics.data.sdf.*;
import ru.clearing.classes.statics.data.security.Security;
import ru.clearing.classes.statics.data.security.SecurityHistory;
import ru.clearing.classes.statics.data.statement.Statement;
import ru.clearing.classes.statics.data.user.*;
import ru.clearing.platform.dictionary.*;
@ -56,22 +57,83 @@ public class RunnableMapNamesForTesting {
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_BankAccountHistory, BankAccountHistory.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_CompanyHistory, CompanyHistory.class,
usingIgnoringFieldsComparator("object.profile.clearingCode", "object.profile.fullName", "object.profile.registrationCode", "object.profile.shortName", "object.profile.tradingCode")));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ExecutionDepositHistory, ExecutionDepositHistory.class,
usingIgnoringFieldsComparator(
"object.firstLegAmount",
"object.interestAmount",
"object.lots",
"object.quantity",
"object.secondLegAmount")
/*new SettingOperation("object.firstLegAmount", new Object[]{new BigDecimal("850.640000000000000000")}),
new SettingOperation("object.interestAmount", new Object[]{new BigDecimal("851.640000000000000000")}),
new SettingOperation("object.lots", new Object[]{new BigDecimal("852.640000000000000000")}),
new SettingOperation("object.quantity", new Object[]{new BigDecimal("853.640000000000000000")}),
new SettingOperation("object.secondLegAmount", new Object[]{new BigDecimal("854.640000000000000000")})*/
));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ExecutionFondHistory, ExecutionFondHistory.class,
usingIgnoringFieldsComparator(
"object.interestAmount",
"object.lots",
"object.quantity",
"object.settlementAmount")
/*new SettingOperation("object.interestAmount", new Object[]{new BigDecimal("850.640000000000000000")}),
new SettingOperation("object.lots", new Object[]{new BigDecimal("851.640000000000000000")}),
new SettingOperation("object.quantity", new Object[]{new BigDecimal("852.640000000000000000")}),
new SettingOperation("object.settlementAmount", new Object[]{new BigDecimal("853.640000000000000000")})*/));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_InformationAccountHistory, InformationAccountHistory.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_RelationHistory, RelationHistory.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SecurityHistory, SecurityHistory.class)); // parent table
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SessionHistory, SessionHistory.class));
// businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SecurityHistory, SecurityHistory.class)); // parent table
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UserConnectHistory, UserConnectHistory.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UserHistory, UserHistory.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_CurrencyHistory, CurrencyHistory.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ListingHistory, ListingHistory.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ListingHistory, ListingHistory.class,
usingIgnoringFieldsComparator(
"object.lotSize")
/*new SettingOperation("object.lotSize", new Object[]{new BigDecimal("850.640000000000000000")}),*/));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_MarketHistory, MarketHistory.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_CompanySymbolsHistory, CompanySymbolsHistory.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ProfileDocumentHistory, ProfileDocumentHistory.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ClearingMemberCategoryHistory, ClearingMemberCategoryHistory.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_MoneyMarketSecurityHistory, MoneyMarketSecurityHistory.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_EquitySecurityHistory, EquitySecurityHistory.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_FixedIncomeSecurityHistory, FixedIncomeSecurityHistory.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_FixedIncomeCashFlowHistory, FixedIncomeCashFlowHistory.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_CouponPeriodHistory, CouponPeriodHistory.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_MoneyMarketSecurityHistory, MoneyMarketSecurityHistory.class,
usingIgnoringFieldsComparator( // todo поправить тест для ASecurityHistoryMapStore
"object.created", "object.updated",
"object.fullName", "object.fullNameEng",
"object.instrumentType",
"object.isin", "object.issuerId",
"object.lotSize",
"object.securitySymbol",
"object.shortName", "object.shortNameEng",
"object.uuid", "object.workflowStatus"
)));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_EquitySecurityHistory, EquitySecurityHistory.class,
usingIgnoringFieldsComparator( // todo поправить тест для ASecurityHistoryMapStore
"object.created", "object.updated",
"object.fullName", "object.fullNameEng",
"object.instrumentType",
"object.isin", "object.issuerId",
"object.lotSize",
"object.securitySymbol",
"object.shortName", "object.shortNameEng",
"object.uuid", "object.workflowStatus"
)));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_FixedIncomeSecurityHistory, FixedIncomeSecurityHistory.class,
usingIgnoringFieldsComparator( // todo поправить тест для ASecurityHistoryMapStore
"object.created", "object.updated",
"object.fullName", "object.fullNameEng",
"object.instrumentType",
"object.isin", "object.issuerId",
"object.lotSize",
"object.securitySymbol",
"object.shortName", "object.shortNameEng",
"object.uuid", "object.workflowStatus"
)));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_FixedIncomeCashFlowHistory, FixedIncomeCashFlowHistory.class,
usingIgnoringFieldsComparator("object.accruedCoupon")
/* new SettingOperation("getObject.setAccruedCoupon", new Object[]{new BigDecimal("870.680000000000000000")})*/));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_CouponPeriodHistory, CouponPeriodHistory.class,
usingIgnoringFieldsComparator("object.couponRate")
/* new SettingOperation("getObject.setCouponRate", new Object[]{new BigDecimal("870.680000000000000000")})*/));
//business object
// businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class));
@ -80,6 +142,11 @@ public class RunnableMapNamesForTesting {
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Company, Company.class,
usingIgnoringFieldsComparator("profile.clearingCode", "profile.fullName", "profile.registrationCode", "profile.shortName", "profile.tradingCode")));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ErrorText, ErrorText.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class,
new SettingOperation("setInterestAmount", new Object[]{new BigDecimal("850.64")}),
new SettingOperation("setLots", new Object[]{new BigDecimal("851.64")}),
new SettingOperation("setQuantity", new Object[]{new BigDecimal("852.64")}),
new SettingOperation("setSettlementAmount", new Object[]{new BigDecimal("853.64")})));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Launcher, Launcher.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_LiabilitiesClaimsAssets, LiabilitiesClaimsAssets.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_LiabilitiesClaimsMoney, LiabilitiesClaimsMoney.class,
@ -92,13 +159,34 @@ public class RunnableMapNamesForTesting {
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Planner, Planner.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_PlannerTemplate, PlannerTemplate.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Relation, Relation.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Security, Security.class));
// businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Security, Security.class)); // класс наследуется
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Statement, Statement.class,
new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("23.22")})));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UserConnect, UserConnect.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_User, User.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class
, usingIgnoringFieldsComparator( // todo поправить тест для ASecurityMapStore - проблема в заполнении securityId
"created", "updated",
"fullName", "fullNameEng",
"instrumentType",
"isin", "issuerId",
"lotSize",
"securitySymbol",
"shortName", "shortNameEng",
"uuid", "workflowStatus"
)
));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class,
usingIgnoringFieldsComparator( // todo поправить тест для ASecurityMapStore
"created", "updated",
"fullName", "fullNameEng",
"instrumentType",
"isin", "issuerId",
"lotSize",
"securitySymbol",
"shortName", "shortNameEng",
"uuid", "workflowStatus"
)));
//dictionary
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_AccountTypeDictionary, AccountTypeDictionary.class));
@ -130,6 +218,8 @@ public class RunnableMapNamesForTesting {
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_OrganizationTypeDictionary, OrganizationTypeDictionary.class));
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ParentDictionary, ParentDictionary.class));
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ResultStatusDictionary, ResultStatusDictionary.class));
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_SessionStatusDictionary, SessionStatusDictionary.class));
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_SessionTypeDictionary, SessionTypeDictionary.class));
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ServiceDictionary, ServiceDictionary.class));
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ServiceProductDictionary, ServiceProductDictionary.class));
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ServiceStatusDictionary, ServiceStatusDictionary.class));
@ -191,7 +281,20 @@ public class RunnableMapNamesForTesting {
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_InformationAccount, InformationAccount.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_KeyRate, KeyRate.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class,
new SettingOperation("setNominalValue", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("25.25")})));
usingIgnoringFieldsComparator( // todo поправить тест для ASecurityHistoryMapStore
"created", "updated",
"fullName", "fullNameEng",
"instrumentType",
"isin", "issuerId",
"lotSize",
"securitySymbol",
"shortName", "shortNameEng",
"uuid", "workflowStatus",
"nominalValue" // только по точности не совпадает поле, но читается
)//,
//new SettingOperation("setNominalValue", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("25.25")})
));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Notification, Notification.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_OrderRegister, OrderRegister.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_OutDocumentJournal, OutDocumentJournal.class,
@ -217,10 +320,13 @@ public class RunnableMapNamesForTesting {
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf17, SDf17.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf18, SDf18.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Session, Session.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_STrade, STrade.class,
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_STrades, STrades.class,
new SettingOperation("setQty", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}),
new SettingOperation("setValue", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}),
new SettingOperation("setExchangeCommission", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)})));
new SettingOperation("setExchangeCommission", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(18)}),
new SettingOperation("setQty", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(18)}),
new SettingOperation("setValue", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(18)})
));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UncoveredDealRegister, UncoveredDealRegister.class,
new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}),
new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}),
@ -232,8 +338,12 @@ public class RunnableMapNamesForTesting {
new SettingOperation("setInSum", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}),
new SettingOperation("setOutExtSum", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}),
new SettingOperation("setOutIntSum", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)})));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_FixedIncomeCashFlow, FixedIncomeCashFlow.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_CouponPeriod, CouponPeriod.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_FixedIncomeCashFlow, FixedIncomeCashFlow.class,
new SettingOperation("setAccruedCoupon", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)})
));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_CouponPeriod, CouponPeriod.class,
new SettingOperation("setCouponRate", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)})
));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf51, SDf51.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf52, SDf52.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf53, SDf53.class));

View file

@ -105,6 +105,7 @@ public final class IMDGDistributedNames {
public static final String Map_RequestInfo = "Map_RequestInfo";
public static final String Map_PaymentInstruction = "Map_PaymentInstruction";
public static final String Map_Session = "Map_Session";
public static final String Map_SessionHistory = "Map_SessionHistory";
public static final String Map_Notification = "Map_Notification";
public static final String Map_LiabilitiesClaimsAssets = "Map_LiabilitiesClaimsAssets";
public static final String Map_LiabilitiesClaimsMoney = "Map_LiabilitiesClaimsMoney";
@ -112,6 +113,7 @@ public final class IMDGDistributedNames {
public static final String Map_ClearMemberRegisterChange = "Map_ClearMemberRegisterChange";
public static final String Map_BalanceRegister = "Map_BalanceRegister";
public static final String Map_ExecutionDeposit = "Map_ExecutionDeposit";
public static final String Map_ExecutionDepositHistory = "Map_ExecutionDepositHistory";
public static final String Map_DealRegister = "Map_DealRegister";
public static final String Map_AdmittedDealRegister = "Map_AdmittedDealRegister";
public static final String Map_CoveredDealRegister = "Map_CoveredDealRegister";
@ -120,7 +122,7 @@ public final class IMDGDistributedNames {
public static final String Map_ContractRegister = "Map_ContractRegister";
public static final String Map_OrderRegister = "Map_OrderRegister";
public static final String Map_VerificationResult = "Map_VerificationResult";
public static final String Map_STrade = "Map_STrade";
public static final String Map_STrades = "Map_STrades";
public static final String Map_SectionDictionary = "Map_SectionDictionary";
public static final String Map_ShareTypeDictionary = "Map_ShareTypeDictionary";
public static final String Map_BondTypeDictionary = "Map_BondTypeDictionary";
@ -159,6 +161,10 @@ public final class IMDGDistributedNames {
public static final String Map_RegistryHistory = "Map_RegistryHistory";
public static final String Map_DepoAccount = "Map_DepoAccount";
public static final String Map_DepoAccountHistory = "Map_DepoAccountHistory";
public static final String Map_SessionStatusDictionary = "Map_SessionStatusDictionary";
public static final String Map_SessionTypeDictionary = "Map_SessionTypeDictionary";
public static final String Map_ExecutionFond = "Map_ExecutionFond";
public static final String Map_ExecutionFondHistory = "Map_ExecutionFondHistory";
public static final String MAP_SEQUENCE_NAME = "MAP_SEQUENCE_NAME";

View file

@ -54,6 +54,9 @@ public interface Consts {
String DESTINATION_CLEARING_MEMBER_CATEGORY_UPDATE = "clearing-member-category-update";
String DESTINATION_CLEARING_MEMBER_CATEGORY_DELETE = "clearing-member-category-delete";
String DESTINATION_ACCOUNT_DELETE = "account-delete";
String DESTINATION_ACCOUNT_UPDATE = "account-update";
String DESTINATION_ACCOUNT_NEW = "account-new";
String DESTINATION_BANK_ACCOUNT_DELETE = "bank-account-delete";
String DESTINATION_BANK_ACCOUNT_UPDATE = "bank-account-update";
String DESTINATION_BANK_ACCOUNT_NEW = "bank-account-new";

View file

@ -0,0 +1,46 @@
package ru.spcex.clearing.platform.messaging.domain.cud.account;
import com.fasterxml.jackson.annotation.JsonProperty;
public class AccountNewRequest {
@JsonProperty
public Long companyId;
@JsonProperty
public String account;
@JsonProperty
public String status;
@JsonProperty
public String accountType;
public Long getCompanyId() {
return companyId;
}
public void setCompanyId(Long companyId) {
this.companyId = companyId;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getAccountType() {
return accountType;
}
public void setAccountType(String accountType) {
this.accountType = accountType;
}
}

View file

@ -0,0 +1,56 @@
package ru.spcex.clearing.platform.messaging.domain.cud.account;
import com.fasterxml.jackson.annotation.JsonProperty;
public class AccountUpdateRequest {
@JsonProperty
public Long id;
@JsonProperty
public Long companyId;
@JsonProperty
public String account;
@JsonProperty
public String status;
@JsonProperty
public String accountType;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getCompanyId() {
return companyId;
}
public void setCompanyId(Long companyId) {
this.companyId = companyId;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getAccountType() {
return accountType;
}
public void setAccountType(String accountType) {
this.accountType = accountType;
}
}

View file

@ -29,9 +29,7 @@ public class CompanyInfoUpdateRequest {
@JsonProperty
private String fullName;
@JsonProperty
private String tradingCode;
@JsonProperty
private String clearingCode;
private String workflowStatus;
public Long getId() {
return id;
@ -129,19 +127,11 @@ public class CompanyInfoUpdateRequest {
this.fullName = fullName;
}
public String getTradingCode() {
return tradingCode;
public String getWorkflowStatus() {
return workflowStatus;
}
public void setTradingCode(String tradingCode) {
this.tradingCode = tradingCode;
}
public String getClearingCode() {
return clearingCode;
}
public void setClearingCode(String clearingCode) {
this.clearingCode = clearingCode;
public void setWorkflowStatus(String workflowStatus) {
this.workflowStatus = workflowStatus;
}
}

View file

@ -1,5 +1,6 @@
package ru.spcex.platform.utils.enumeration;
import java.util.Arrays;
import java.util.Collections;
public class EnumMessage {
@ -32,4 +33,9 @@ public class EnumMessage {
public void setArgs(Object[] args) {
this.args = args;
}
@Override
public String toString() {
return "EnumMessage{subject=" + subject + ", args: " + Arrays.toString(args) + "}";
}
}