backend-api account-service http://jira.mfd.msk:8088/browse/CLS-631 изменение API для TradingClearingRegistryList

This commit is contained in:
AKurakin 2024-04-23 19:59:28 +03:00
parent 8305137de5
commit 97bdf20975
10 changed files with 172 additions and 123 deletions

View file

@ -14,12 +14,14 @@ import ru.spcex.clearing.validation.common.rules.DictionaryPresentRule;
import ru.spcex.clearing.validation.common.rules.IdPresentRule; import ru.spcex.clearing.validation.common.rules.IdPresentRule;
import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.spcex.platform.enumeration.AccountType; import ru.spcex.platform.enumeration.AccountType;
import ru.spcex.platform.enumeration.ServiceStatus;
import ru.spcex.platform.enumeration.WorkflowStatus; import ru.spcex.platform.enumeration.WorkflowStatus;
import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.imdg.validation.ImdgValidationContext;
import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.enumeration.IEnumKey;
import ru.spcex.platform.utils.validation.IValidationRule; import ru.spcex.platform.utils.validation.IValidationRule;
import ru.spcex.platform.utils.validation.IValidator; import ru.spcex.platform.utils.validation.IValidator;
import ru.spcex.platform.utils.validation.ValidatorImpl; import ru.spcex.platform.utils.validation.ValidatorImpl;
@ -43,15 +45,15 @@ public class TradingClearingRegistryListValidationConfig {
addImdg.accept(IMDGDistributedNames.Map_TradingClearingRegistry); addImdg.accept(IMDGDistributedNames.Map_TradingClearingRegistry);
addImdg.accept(IMDGDistributedNames.Map_ServiceStatusDictionary); addImdg.accept(IMDGDistributedNames.Map_ServiceStatusDictionary);
return new ValidatorImpl<>(context, return new ValidatorImpl<>(context,
IdPresentRule.instance("id", IdPresentRule.instance("tradingClearingRegistryId",
TradingClearingRegistryListNewRequest::getTradingClearingRegistryId, TradingClearingRegistryListNewRequest::getTradingClearingRegistryId,
IMDGDistributedNames.Map_TradingClearingRegistry, IMDGDistributedNames.Map_TradingClearingRegistry,
TradingClearingRegistry.class, TradingClearingRegistry.class,
AccountError.RequiredFieldEmpty, AccountError.RequiredFieldEmpty,
AccountError.TradingClearingRegistryNotFound, AccountError.TradingClearingRegistryNotFound,
false), false),
new ExistAllCurrencyAccountId<>("currencyAccountList", new ExistAllCurrencyAccountId<>("accountId",
TradingClearingRegistryListNewRequest::getCurrencyAccountList, TradingClearingRegistryListNewRequest::getAccountId,
false, false,
null), null),
DictionaryPresentRule.instance("stauts", DictionaryPresentRule.instance("stauts",
@ -60,7 +62,7 @@ public class TradingClearingRegistryListValidationConfig {
ServiceStatusDictionary.class, ServiceStatusDictionary.class,
AccountError.RequiredFieldEmpty, AccountError.RequiredFieldEmpty,
AccountError.DictionaryNotFound, AccountError.DictionaryNotFound,
true) false)
); );
}; };
} }
@ -76,19 +78,36 @@ public class TradingClearingRegistryListValidationConfig {
addImdg.accept(IMDGDistributedNames.Map_TradingClearingRegistry); addImdg.accept(IMDGDistributedNames.Map_TradingClearingRegistry);
addImdg.accept(IMDGDistributedNames.Map_ServiceStatusDictionary); addImdg.accept(IMDGDistributedNames.Map_ServiceStatusDictionary);
return new ValidatorImpl<ImdgValidationContext<TradingClearingRegistryListUpdateRequest>>(context, return new ValidatorImpl<ImdgValidationContext<TradingClearingRegistryListUpdateRequest>>(context,
IdPresentRule.instance("id", IdPresentRule.instance2("id",
TradingClearingRegistryListUpdateRequest::getTradingClearingRegistryId, TradingClearingRegistryListUpdateRequest::getTradingClearingRegistryId,
IMDGDistributedNames.Map_TradingClearingRegistry, IMDGDistributedNames.Map_TradingClearingRegistryList,
TradingClearingRegistry.class, TradingClearingRegistryList.class,
AccountError.RequiredFieldEmpty, AccountError.RequiredFieldEmpty,
AccountError.TradingClearingRegistryNotFound, AccountError.TradingClearingRegistryNotFound,
false), true,
new ExistAllCurrencyAccountId<>("currencyAccountList", (tcrList)-> {
TradingClearingRegistryListUpdateRequest::getCurrencyAccountList, Long accountId = tcrList.getAccountId();
false, if (accountId==null)
TradingClearingRegistryListUpdateRequest::getId return null;
), if (!IEnumKey.contains(context.getValidatedObject().getStatus(), ServiceStatus.Active, ServiceStatus.Reopened))
DictionaryPresentRule.instance("stauts", return null;
Imdg<TradingClearingRegistryList> tradingClearingRegistryListImdg = context.obtainMap(IMDGDistributedNames.Map_TradingClearingRegistryList, TradingClearingRegistryList.class);
ImdgPredicateBuilder pb = tradingClearingRegistryListImdg.predicateBuilder();
ImdgPredicate query = pb.and(pb.equals("status", WorkflowStatus.Active.getKey()),
pb.equals("accountId", accountId));
query = pb.and(query, pb.not(pb.equals("id", tcrList.getId())));
Collection<TradingClearingRegistryList> inOtherLists = tradingClearingRegistryListImdg.getCollectionObjectsByPredicate(query);
if (!inOtherLists.isEmpty()) {
Collection<Long> duplicateAccounts = inOtherLists.stream()
.map(TradingClearingRegistryList::getAccountId)
.filter(accountId::equals)
.collect(Collectors.toSet());
return new EnumMessage(AccountError.AccountForTradingClearingRegistryAlreadyUsed, duplicateAccounts, "accountId"); // (5023) «Счет %s уже используется»
}
return null;
}),
DictionaryPresentRule.instance("status",
TradingClearingRegistryListUpdateRequest::getStatus, TradingClearingRegistryListUpdateRequest::getStatus,
IMDGDistributedNames.Map_ServiceStatusDictionary, IMDGDistributedNames.Map_ServiceStatusDictionary,
ServiceStatusDictionary.class, ServiceStatusDictionary.class,
@ -102,13 +121,13 @@ public class TradingClearingRegistryListValidationConfig {
public static class ExistAllCurrencyAccountId<R> implements IValidationRule<ImdgValidationContext<R>> { public static class ExistAllCurrencyAccountId<R> implements IValidationRule<ImdgValidationContext<R>> {
String fieldName; String fieldName;
Function<R, List<Long>> idListGetter; Function<R, Long> accountIdGetter;
boolean required; boolean required;
Function<R, Long> idGetter; Function<R, Long> idGetter;
public ExistAllCurrencyAccountId(String fieldName, Function<R, List<Long>> idListGetter, boolean required, Function<R, Long> idGetter) { public ExistAllCurrencyAccountId(String fieldName, Function<R, Long> accountIdGetter, boolean required, Function<R, Long> idGetter) {
this.fieldName = fieldName; this.fieldName = fieldName;
this.idListGetter = idListGetter; this.accountIdGetter = accountIdGetter;
this.required = required; this.required = required;
this.idGetter = idGetter; this.idGetter = idGetter;
} }
@ -116,8 +135,8 @@ public class TradingClearingRegistryListValidationConfig {
@Override @Override
public Optional<EnumMessage> validate(ImdgValidationContext<R> context) { public Optional<EnumMessage> validate(ImdgValidationContext<R> context) {
R validatedObject = context.getValidatedObject(); R validatedObject = context.getValidatedObject();
List<Long> ids = idListGetter.apply(validatedObject); Long accountId = accountIdGetter.apply(validatedObject);
if (ids == null || ids.isEmpty()) { if (accountId == null) {
if (required) if (required)
return of(AccountError.RequiredFieldEmpty, fieldName); // обязательное поле return of(AccountError.RequiredFieldEmpty, fieldName); // обязательное поле
else else
@ -125,15 +144,12 @@ public class TradingClearingRegistryListValidationConfig {
} }
Imdg<Account> accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class); Imdg<Account> accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class);
// Проверить существование счетов // Проверить существование счетов
for (Long id : ids) { {
if (id == null) { // null значения в массиве не ожидаются Account byIdObject = accountImdg.getSingleObjectByID(accountId);
return of(AccountError.RequiredFieldEmpty, fieldName);
}
Account byIdObject = accountImdg.getSingleObjectByID(id);
if (byIdObject == null) if (byIdObject == null)
return of(AccountError.AccountNotFound, id, fieldName); return of(AccountError.AccountNotFound, accountId, fieldName);
if (!AccountType.Curr.equalsByKey(byIdObject.getAccountType())) { if (!AccountType.Curr.equalsByKey(byIdObject.getAccountType())) {
return of(AccountError.AccountIsNotACurrency, id, fieldName); // Счет %S не валютный return of(AccountError.AccountIsNotACurrency, accountId, fieldName); // Счет %S не валютный
} }
} }
@ -141,7 +157,7 @@ public class TradingClearingRegistryListValidationConfig {
Imdg<TradingClearingRegistryList> tradingClearingRegistryListImdg = context.obtainMap(IMDGDistributedNames.Map_TradingClearingRegistryList, TradingClearingRegistryList.class); Imdg<TradingClearingRegistryList> tradingClearingRegistryListImdg = context.obtainMap(IMDGDistributedNames.Map_TradingClearingRegistryList, TradingClearingRegistryList.class);
ImdgPredicateBuilder pb = tradingClearingRegistryListImdg.predicateBuilder(); ImdgPredicateBuilder pb = tradingClearingRegistryListImdg.predicateBuilder();
ImdgPredicate query = pb.and(pb.equals("status", WorkflowStatus.Active.getKey()), ImdgPredicate query = pb.and(pb.equals("status", WorkflowStatus.Active.getKey()),
pb.in("accountId", ids.toArray(new Comparable[0]))); pb.equals("accountId", accountId));
if (idGetter != null) { if (idGetter != null) {
Long id = idGetter.apply(validatedObject); Long id = idGetter.apply(validatedObject);
if (id == null) // never if (id == null) // never
@ -152,7 +168,7 @@ public class TradingClearingRegistryListValidationConfig {
if (!inOtherLists.isEmpty()) { if (!inOtherLists.isEmpty()) {
Collection<Long> duplicateAccounts = inOtherLists.stream() Collection<Long> duplicateAccounts = inOtherLists.stream()
.map(TradingClearingRegistryList::getAccountId) .map(TradingClearingRegistryList::getAccountId)
.filter(ids::contains) .filter(accountId::equals)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
return of(AccountError.AccountForTradingClearingRegistryAlreadyUsed, duplicateAccounts, fieldName); // (5023) «Счет %s уже используется» return of(AccountError.AccountForTradingClearingRegistryAlreadyUsed, duplicateAccounts, fieldName); // (5023) «Счет %s уже используется»
} }

View file

@ -124,10 +124,12 @@ public class TradingClearingRegistryListService extends QueueConsumer implements
} }
public RequestInfoUpdate tradingClearingRegistryListNew(BaseRequest<TradingClearingRegistryListNewRequest> userRequest) { public RequestInfoUpdate tradingClearingRegistryListNew(BaseRequest<TradingClearingRegistryListNewRequest> userRequest) {
return tradingClearingRegistryListNew0(userRequest, false); return tradingClearingRegistryListNew1(userRequest, false);
} }
@Deprecated
protected RequestInfoUpdate tradingClearingRegistryListNew0(BaseRequest<TradingClearingRegistryListNewRequest> userRequest, boolean innerCall) { protected RequestInfoUpdate tradingClearingRegistryListNew0(BaseRequest<TradingClearingRegistryListNewRequest> userRequest, boolean innerCall) {
// fixme объединить с путом а то лист может быть пустой. и чистить...
log.debug("TradingClearingRegistryListNewRequest received"); log.debug("TradingClearingRegistryListNewRequest received");
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest); RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
if (requestInfoUpdate != null) { if (requestInfoUpdate != null) {
@ -194,6 +196,70 @@ public class TradingClearingRegistryListService extends QueueConsumer implements
return null; return null;
} }
protected RequestInfoUpdate tradingClearingRegistryListNew1(BaseRequest<TradingClearingRegistryListNewRequest> userRequest, boolean innerCall) {
log.debug("TradingClearingRegistryListNewRequest received");
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
if (requestInfoUpdate != null) {
return requestInfoUpdate;
}
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, tradingClearingRegistryListNewRequestValidator);
if (requestInfoUpdate != null) {
return requestInfoUpdate;
}
TradingClearingRegistryListNewRequest req = userRequest.getRequestPayload();
Instant now = Instant.now();
Long id = tradingClearingRegistryListImdg.nextIDSequenceFor();
TradingClearingRegistryList tradingClearingRegistryList = new TradingClearingRegistryList();
tradingClearingRegistryList.setId(id);
tradingClearingRegistryList.setCreated(now);
tradingClearingRegistryList.setUpdated(now);
tradingClearingRegistryList.setTradingClearingRegistryId(req.getTradingClearingRegistryId());
tradingClearingRegistryList.setAccountId(req.getAccountId());
if (req.getStatus() == null) {
tradingClearingRegistryList.setStatus(ServiceStatus.Active.getKey());
log.trace("TCRList status in request not set. Use default: {}", tradingClearingRegistryList.getStatus());
} else {
tradingClearingRegistryList.setStatus(req.getStatus());
}
tradingClearingRegistryListImdg.insert(tradingClearingRegistryList);
log.info("New TCRList.id={} has created.", id);
if (!innerCall) {
// Для каждого счета из списка (currencyAccountList) должна быть создана отдельная запись объекте clientCode с данным счетом для данного клиента, т.е. у одного клиента может быть несколько валютных счетов.
try {
TradingClearingRegistry tcr = tradingClearingRegistryImdg.getSingleObjectByID(req.getTradingClearingRegistryId());
ClientCodeNewRequest cCodeReq = new ClientCodeNewRequest();
cCodeReq.setTradingClearingRegistryId(req.getTradingClearingRegistryId());
cCodeReq.setDepoAccountId(tcr.getDepoAccountId());
cCodeReq.setMoneyAccountId(tcr.getMoneyAccountId());
cCodeReq.setCompanyId(tcr.getCompanyId());
cCodeReq.setCurrencyAccountList(Arrays.asList(req.getAccountId())); // todo rewrite API
cCodeReq.setStatus(tradingClearingRegistryList.getStatus());
//todo cCodeReq.setCode();
BaseRequest<ClientCodeNewRequest> request2 = new BaseRequest<>();
request2.setRequestPayload(cCodeReq);
requestInfoUpdate = clientCodeService.clientCodeNew0(request2, true);
if (requestInfoUpdate != null) return requestInfoUpdate;
} catch (Exception e) {
log.error("Can not wait creation of tradingClearingRegistryList. request id={}; {}",
userRequest.getId(),
ExceptionUtils.getStackTrace(e));
return requestHelper.makeErrorResponse(userRequest, AccountError.GeneralError, "Can not create TCR: " + e.getMessage());
}
}
sendNotificationToClearingSvc(id);
log.debug("successfully processed, id {}", id);
return null;
}
public RequestInfoUpdate tradingClearingRegistryListUpdate(BaseRequest<TradingClearingRegistryListUpdateRequest> userRequest) { public RequestInfoUpdate tradingClearingRegistryListUpdate(BaseRequest<TradingClearingRegistryListUpdateRequest> userRequest) {
return tradingClearingRegistryListUpdate0(userRequest, false); return tradingClearingRegistryListUpdate0(userRequest, false);
} }
@ -209,7 +275,6 @@ public class TradingClearingRegistryListService extends QueueConsumer implements
TradingClearingRegistryListUpdateRequest req = userRequest.getRequestPayload(); TradingClearingRegistryListUpdateRequest req = userRequest.getRequestPayload();
TradingClearingRegistryList tradingClearingRegistryList = tradingClearingRegistryListImdg.getSingleObjectByID(req.getId()); TradingClearingRegistryList tradingClearingRegistryList = tradingClearingRegistryListImdg.getSingleObjectByID(req.getId());
//todo какие поля нужно обновлять?
if (req.getStatus() != null && !Objects.equals(req.getStatus(), tradingClearingRegistryList.getStatus())) { if (req.getStatus() != null && !Objects.equals(req.getStatus(), tradingClearingRegistryList.getStatus())) {
Instant now = Instant.now(); Instant now = Instant.now();
tradingClearingRegistryList.setUpdated(now); tradingClearingRegistryList.setUpdated(now);
@ -220,18 +285,24 @@ public class TradingClearingRegistryListService extends QueueConsumer implements
log.debug("Nothing to update TCRList.id={}.", tradingClearingRegistryList.getId()); log.debug("Nothing to update TCRList.id={}.", tradingClearingRegistryList.getId());
} }
//todo нужно ли слать уведомления sendNotificationToClearingSvc?
log.debug("successfully processed, id {}", tradingClearingRegistryList.getId()); log.debug("successfully processed, id {}", tradingClearingRegistryList.getId());
return null; return null;
} }
@Deprecated
protected void sendNotificationToClearingSvc(List<Long> tradingClearingRegistries) {
for (Long tradingClearingRegistryId:tradingClearingRegistries)
sendNotificationToClearingSvc(tradingClearingRegistryId);
}
/** /**
* clearing-service сообщение на открытие клиринговых регистров; * clearing-service сообщение на открытие клиринговых регистров;
*/ */
protected void sendNotificationToClearingSvc(List<Long> tradingClearingRegistries) { protected void sendNotificationToClearingSvc(Long tradingClearingRegistryId) {
CreateRegistryByTCRListRequest request = new CreateRegistryByTCRListRequest(); CreateRegistryByTCRListRequest request = new CreateRegistryByTCRListRequest();
request.setTradingClearingRegistryListIds(tradingClearingRegistries); request.setTradingClearingRegistryListId(tradingClearingRegistryId);
log.debug("Send message to kafka \"{}\": {}", Consts.DESTINATION_TRADING_CLEARING_REGISTRY_ON_TCRLIST_NEW, LogFormatter.toStringWrapper(request)); log.debug("Send message to kafka \"{}\": {}", Consts.DESTINATION_TRADING_CLEARING_REGISTRY_ON_TCRLIST_NEW, LogFormatter.toStringWrapper(request));
kafkaSender.sendRequestToQueue(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_ON_TCRLIST_NEW, request); kafkaSender.sendRequestToQueue(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_ON_TCRLIST_NEW, request);
} }

View file

@ -12,19 +12,19 @@ public class TradingClearingRegistryListNewAction implements IAction<TradingClea
@ApiModelProperty(value = "Торгово-клиринговый регистр", example = "1200") @ApiModelProperty(value = "Торгово-клиринговый регистр", example = "1200")
@JsonProperty @JsonProperty
private Long tradingClearingRegistryId; private Long tradingClearingRegistryId;
@ApiModelProperty(value = "Список валютных счетов", example = "[123,456]") @ApiModelProperty(value = "Идентификатор валютного счёта", example = "123")
@JsonProperty @JsonProperty
private List<Long> currencyAccountList; private Long accountId;
@ApiModelProperty(value = "Наименование статуса", example = "ACTV") // @ApiModelProperty(value = "Наименование статуса", example = "ACTV", required = false)
@JsonProperty // @JsonProperty
private String status; // private String status;
@Override @Override
public TradingClearingRegistryListNewRequest toRequest() { public TradingClearingRegistryListNewRequest toRequest() {
var req = new TradingClearingRegistryListNewRequest(); var req = new TradingClearingRegistryListNewRequest();
req.setTradingClearingRegistryId(this.tradingClearingRegistryId); req.setTradingClearingRegistryId(this.tradingClearingRegistryId);
req.setCurrencyAccountList(this.currencyAccountList); req.setAccountId(this.accountId);
req.setStatus(this.status); // req.setStatus(this.status);
return req; return req;
} }
@ -42,19 +42,11 @@ public class TradingClearingRegistryListNewAction implements IAction<TradingClea
this.tradingClearingRegistryId = tradingClearingRegistryId; this.tradingClearingRegistryId = tradingClearingRegistryId;
} }
public List<Long> getCurrencyAccountList() { public Long getAccountId() {
return currencyAccountList; return accountId;
} }
public void setCurrencyAccountList(List<Long> currencyAccountList) { public void setAccountId(Long accountId) {
this.currencyAccountList = currencyAccountList; this.accountId = accountId;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
} }
} }

View file

@ -13,12 +13,6 @@ public class TradingClearingRegistryListUpdateAction implements IAction<TradingC
@ApiModelProperty(hidden = true) @ApiModelProperty(hidden = true)
@JsonProperty @JsonProperty
public Long id; public Long id;
@ApiModelProperty(value = "Торгово-клиринговый регистр", example = "1200")
@JsonProperty
private Long tradingClearingRegistryId;
@ApiModelProperty(value = "Список валютных счетов", example = "[123,456]")
@JsonProperty
private List<Long> currencyAccountList;
@ApiModelProperty(value = "Наименование статуса", example = "ACTV") @ApiModelProperty(value = "Наименование статуса", example = "ACTV")
@JsonProperty @JsonProperty
private String status; private String status;
@ -28,8 +22,6 @@ public class TradingClearingRegistryListUpdateAction implements IAction<TradingC
public TradingClearingRegistryListUpdateRequest toRequest() { public TradingClearingRegistryListUpdateRequest toRequest() {
var req = new TradingClearingRegistryListUpdateRequest(); var req = new TradingClearingRegistryListUpdateRequest();
req.setId(this.id); req.setId(this.id);
req.setTradingClearingRegistryId(this.tradingClearingRegistryId);
req.setCurrencyAccountList(this.currencyAccountList);
req.setStatus(this.status); req.setStatus(this.status);
return req; return req;
} }
@ -48,22 +40,6 @@ public class TradingClearingRegistryListUpdateAction implements IAction<TradingC
this.id = id; this.id = id;
} }
public Long getTradingClearingRegistryId() {
return tradingClearingRegistryId;
}
public void setTradingClearingRegistryId(Long tradingClearingRegistryId) {
this.tradingClearingRegistryId = tradingClearingRegistryId;
}
public List<Long> getCurrencyAccountList() {
return currencyAccountList;
}
public void setCurrencyAccountList(List<Long> currencyAccountList) {
this.currencyAccountList = currencyAccountList;
}
public String getStatus() { public String getStatus() {
return status; return status;
} }

View file

@ -1,6 +1,6 @@
{ {
"version": "3.11.0.81", "version": "3.11.0.82",
"enums": { "enums": {
@ -4340,12 +4340,8 @@
"type": 1,"name": "Торгово-клиринговый регистр","shortname": "ТКР","link": "tradingClearingRegistry","linkCode": "code" "type": 1,"name": "Торгово-клиринговый регистр","shortname": "ТКР","link": "tradingClearingRegistry","linkCode": "code"
} }
, ,
{"code": "currencyAccountList", {"code": "accountId",
"type": 7,"name": "Список валютных счетов","shortname": "Список валютных счетов","link": "account","linkCode": "account" "type": 1,"name": "Идентификатор счёта","shortname": "Счёт","link": "account","linkCode": "account"
}
,
{"code": "status",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "serviceStatus","required": true
} }
] ]
} }
@ -4362,14 +4358,6 @@
{"code": "id", {"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "clientCode","linkCode": "id","required": true "type": 1,"name": "Идентификатор записи","shortname": "ID","link": "clientCode","linkCode": "id","required": true
} }
,
{"code": "tradingClearingRegistryId",
"type": 1,"name": "Торгово-клиринговый регистр","shortname": "ТКР","link": "tradingClearingRegistry","linkCode": "code"
}
,
{"code": "currencyAccountList",
"type": 7,"name": "Список валютных счетов","shortname": "Список валютных счетов","link": "account","linkCode": "account"
}
, ,
{"code": "status", {"code": "status",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "serviceStatus","required": true "type": 12,"name": "Наименование статуса","shortname": "Статус","link": "serviceStatus","required": true

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!--?xml-stylesheet type="text/xsl" href="\..\corp-reports\src\data\meta\meta.server.xslt"?--> <!--?xml-stylesheet type="text/xsl" href="\..\corp-reports\src\data\meta\meta.server.xslt"?-->
<meta version="3.11.0.81"> <meta version="3.11.0.82">
<!-- _xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" _xsi:noNamespaceSchemaLocation="file:///E:/d/projects/meta/from/meta.xsd" --> <!-- _xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" _xsi:noNamespaceSchemaLocation="file:///E:/d/projects/meta/from/meta.xsd" -->
<!--Здесь словари--> <!--Здесь словари-->
<enums> <enums>
@ -1006,13 +1006,10 @@
<actions> <actions>
<post name="Добавление списка счетов ТКР" confirmation="tradingClearingRegistryId,accountId,status" class="ru.spcex.clearing.backendapi.controller.request.cud.registry.TradingClearingRegistryListNewAction"> <post name="Добавление списка счетов ТКР" confirmation="tradingClearingRegistryId,accountId,status" class="ru.spcex.clearing.backendapi.controller.request.cud.registry.TradingClearingRegistryListNewAction">
<tradingClearingRegistryId type="1" name="Торгово-клиринговый регистр" shortname="ТКР" link="tradingClearingRegistry" linkCode="code"/> <tradingClearingRegistryId type="1" name="Торгово-клиринговый регистр" shortname="ТКР" link="tradingClearingRegistry" linkCode="code"/>
<currencyAccountList type="7" name="Список валютных счетов" shortname="Список валютных счетов" link="account" linkCode="account"/> <accountId type="1" name="Идентификатор счёта" shortname="Счёт" link="account" linkCode="account"/>
<status type="12" name="Наименование статуса" shortname="Статус" link="serviceStatus" required="true"/>
</post> </post>
<put name="Изменение списка счетов ТКР" confirmation="tradingClearingRegistryId,accountId,status" class="ru.spcex.clearing.backendapi.controller.request.cud.registry.TradingClearingRegistryListUpdateAction"> <put name="Изменение списка счетов ТКР" confirmation="tradingClearingRegistryId,accountId,status" class="ru.spcex.clearing.backendapi.controller.request.cud.registry.TradingClearingRegistryListUpdateAction">
<id type="1" name="Идентификатор записи" shortname="ID" link="clientCode" linkCode="id" required="true"/> <id type="1" name="Идентификатор записи" shortname="ID" link="clientCode" linkCode="id" required="true"/>
<tradingClearingRegistryId type="1" name="Торгово-клиринговый регистр" shortname="ТКР" link="tradingClearingRegistry" linkCode="code"/>
<currencyAccountList type="7" name="Список валютных счетов" shortname="Список валютных счетов" link="account" linkCode="account"/>
<status type="12" name="Наименование статуса" shortname="Статус" link="serviceStatus" required="true"/> <status type="12" name="Наименование статуса" shortname="Статус" link="serviceStatus" required="true"/>
</put> </put>
</actions> </actions>

View file

@ -1,6 +1,6 @@
{ {
"version": "3.11.0.81", "version": "3.11.0.82",
"enums": { "enums": {
@ -4340,12 +4340,8 @@
"type": 1,"name": "Торгово-клиринговый регистр","shortname": "ТКР","link": "tradingClearingRegistry","linkCode": "code" "type": 1,"name": "Торгово-клиринговый регистр","shortname": "ТКР","link": "tradingClearingRegistry","linkCode": "code"
} }
, ,
{"code": "currencyAccountList", {"code": "accountId",
"type": 7,"name": "Список валютных счетов","shortname": "Список валютных счетов","link": "account","linkCode": "account" "type": 1,"name": "Идентификатор счёта","shortname": "Счёт","link": "account","linkCode": "account"
}
,
{"code": "status",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "serviceStatus","required": true
} }
] ]
} }
@ -4362,14 +4358,6 @@
{"code": "id", {"code": "id",
"type": 1,"name": "Идентификатор записи","shortname": "ID","link": "clientCode","linkCode": "id","required": true "type": 1,"name": "Идентификатор записи","shortname": "ID","link": "clientCode","linkCode": "id","required": true
} }
,
{"code": "tradingClearingRegistryId",
"type": 1,"name": "Торгово-клиринговый регистр","shortname": "ТКР","link": "tradingClearingRegistry","linkCode": "code"
}
,
{"code": "currencyAccountList",
"type": 7,"name": "Список валютных счетов","shortname": "Список валютных счетов","link": "account","linkCode": "account"
}
, ,
{"code": "status", {"code": "status",
"type": 12,"name": "Наименование статуса","shortname": "Статус","link": "serviceStatus","required": true "type": 12,"name": "Наименование статуса","shortname": "Статус","link": "serviceStatus","required": true

View file

@ -2,17 +2,15 @@ package ru.spcex.clearing.platform.messaging.domain.cud.clearing;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
public class CreateRegistryByTCRListRequest { public class CreateRegistryByTCRListRequest {
@JsonProperty @JsonProperty
private List<Long> tradingClearingRegistryListIds; private Long tradingClearingRegistryListId;
public List<Long> getTradingClearingRegistryListIds() { public Long getTradingClearingRegistryListId() {
return tradingClearingRegistryListIds; return tradingClearingRegistryListId;
} }
public void setTradingClearingRegistryListIds(List<Long> tradingClearingRegistryListIds) { public void setTradingClearingRegistryListId(Long tradingClearingRegistryListId) {
this.tradingClearingRegistryListIds = tradingClearingRegistryListIds; this.tradingClearingRegistryListId = tradingClearingRegistryListId;
} }
} }

View file

@ -13,8 +13,15 @@ import java.util.List;
public class TradingClearingRegistryListNewRequest { public class TradingClearingRegistryListNewRequest {
@JsonProperty @JsonProperty
private Long tradingClearingRegistryId; private Long tradingClearingRegistryId;
@JsonProperty
private Long accountId;
@Deprecated
@JsonProperty @JsonProperty
private List<Long> currencyAccountList; private List<Long> currencyAccountList;
@Deprecated
@JsonProperty @JsonProperty
private String status; private String status;
@ -26,18 +33,29 @@ public class TradingClearingRegistryListNewRequest {
this.tradingClearingRegistryId = tradingClearingRegistryId; this.tradingClearingRegistryId = tradingClearingRegistryId;
} }
public Long getAccountId() {
return accountId;
}
public void setAccountId(Long accountId) {
this.accountId = accountId;
}
// todo возможно перепишут API, уберут:
@Deprecated
public List<Long> getCurrencyAccountList() { public List<Long> getCurrencyAccountList() {
return currencyAccountList; return currencyAccountList;
} }
@Deprecated
public void setCurrencyAccountList(List<Long> currencyAccountList) { public void setCurrencyAccountList(List<Long> currencyAccountList) {
this.currencyAccountList = currencyAccountList; this.currencyAccountList = currencyAccountList;
} }
@Deprecated
public String getStatus() { public String getStatus() {
return status; return status;
} }
@Deprecated
public void setStatus(String status) { public void setStatus(String status) {
this.status = status; this.status = status;
} }

View file

@ -7,10 +7,14 @@ import java.util.List;
public class TradingClearingRegistryListUpdateRequest { public class TradingClearingRegistryListUpdateRequest {
@JsonProperty @JsonProperty
private Long id; private Long id;
@Deprecated
@JsonProperty @JsonProperty
private Long tradingClearingRegistryId; private Long tradingClearingRegistryId;
@Deprecated
@JsonProperty @JsonProperty
private List<Long> currencyAccountList; private List<Long> currencyAccountList;
@JsonProperty @JsonProperty
private String status; private String status;
@ -22,18 +26,19 @@ public class TradingClearingRegistryListUpdateRequest {
this.id = id; this.id = id;
} }
@Deprecated
public Long getTradingClearingRegistryId() { public Long getTradingClearingRegistryId() {
return tradingClearingRegistryId; return tradingClearingRegistryId;
} }
@Deprecated
public void setTradingClearingRegistryId(Long tradingClearingRegistryId) { public void setTradingClearingRegistryId(Long tradingClearingRegistryId) {
this.tradingClearingRegistryId = tradingClearingRegistryId; this.tradingClearingRegistryId = tradingClearingRegistryId;
} }
@Deprecated
public List<Long> getCurrencyAccountList() { public List<Long> getCurrencyAccountList() {
return currencyAccountList; return currencyAccountList;
} }
@Deprecated
public void setCurrencyAccountList(List<Long> currencyAccountList) { public void setCurrencyAccountList(List<Long> currencyAccountList) {
this.currencyAccountList = currencyAccountList; this.currencyAccountList = currencyAccountList;
} }