This commit is contained in:
parent
d759e54f6d
commit
385992cdb1
7 changed files with 25 additions and 15 deletions
|
|
@ -89,6 +89,7 @@ public enum STradesValidationRule implements IValidationRule<ImdgValidationConte
|
|||
context.storeObject(ValidationStored.STradesCounterCompany, company);
|
||||
return empty();
|
||||
}
|
||||
|
||||
},
|
||||
// 2.3. Найти в tradingClearingRegistry запись, у которой tradingClearingRegistry.code=sTrades.account
|
||||
// и tradingClearingRegistry.companyId=companyId, найденому в предыдущем пункте.
|
||||
|
|
@ -98,18 +99,18 @@ public enum STradesValidationRule implements IValidationRule<ImdgValidationConte
|
|||
public Optional<EnumMessage> validate(ImdgValidationContext<STrades> context) {
|
||||
STrades validatedObject = context.getValidatedObject();
|
||||
if (TextUtil.isEmpty(validatedObject.getAccount())) {
|
||||
return of(ClearingError.TradingClearingRegistryNotFound, validatedObject.getAccount());
|
||||
return of(ClearingError.TradingClearingRegistryNotFound, "", validatedObject.getAccount());
|
||||
}
|
||||
if (context.getStoredObject(ValidationStored.STradesCompany) == null) { //maybe unnecessary
|
||||
return of(ClearingError.CompanyNotFound, validatedObject.getSecCode());
|
||||
}
|
||||
Imdg<TradingClearingRegistry> registryImdg = context.obtainMap(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||
TradingClearingRegistry tcRegister = registryImdg.getSingleObjectByFieldValues(
|
||||
Map.of("code", validatedObject.getAccount(),
|
||||
Map.of("code", validatedObject.getAccount().trim(),
|
||||
"companyId", ((Company) context.getStoredObject(ValidationStored.STradesCompany)).getId()
|
||||
));
|
||||
));
|
||||
if (tcRegister == null) {
|
||||
return of(ClearingError.TradingClearingRegistryNotFound, validatedObject.getAccount());
|
||||
return of(ClearingError.TradingClearingRegistryNotFound, "", validatedObject.getAccount());
|
||||
}
|
||||
// 2.4. Проверить, что найденный торгово-клиринговый регистр в активном состоянии:
|
||||
// tradingClearingRegistry.status≠BLKD/SSPD/CLOS (см. справочник serviceStatus).
|
||||
|
|
|
|||
|
|
@ -51,12 +51,15 @@ public class SecurityService {
|
|||
if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) {
|
||||
FixedIncomeSecurityNewRequest fixedIncomeSecurityNewRequest = securityRequestAdapter.toFixedIncomeSecurityRequest(security);
|
||||
securityGatewayRequest = new FixedIncomeGatewayRequest(fixedIncomeSecurityNewRequest);
|
||||
fillRequest(securityGatewayRequest, security, listingRequests, couponPeriodRequests, cashFlowRequests);
|
||||
kafkaSender.sendRequestToQueue(Consts.DESTINATION_SECURITY_BOND_GATEWAY, securityGatewayRequest);
|
||||
} else {
|
||||
EquitySecurityNewRequest equitySecurityNewRequest = securityRequestAdapter.toEquitySecurityNewRequest(security);
|
||||
securityGatewayRequest = new EquitySecurityGatewayRequest(equitySecurityNewRequest);
|
||||
fillRequest(securityGatewayRequest, security, listingRequests, couponPeriodRequests, cashFlowRequests);
|
||||
kafkaSender.sendRequestToQueue(Consts.DESTINATION_SECURITY_EQTY_GATEWAY, securityGatewayRequest);
|
||||
}
|
||||
fillRequest(securityGatewayRequest, security, listingRequests, couponPeriodRequests, cashFlowRequests);
|
||||
kafkaSender.sendRequestToQueue(Consts.DESTINATION_SECURITY_GATEWAY, securityGatewayRequest);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ import ru.clearing.classes.statics.data.misc.Listing;
|
|||
import ru.clearing.classes.statics.data.security.MoneyMarketSecurity;
|
||||
import ru.clearing.classes.statics.data.security.Security;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.EquitySecurityGatewayRequest;
|
||||
|
|
@ -109,9 +108,12 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin
|
|||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
callback(SecurityFondGatewayRequest.class)
|
||||
callback(FixedIncomeGatewayRequest.class)
|
||||
.setFunction(this::newSecurities)
|
||||
.forDestination(Consts.DESTINATION_SECURITY_GATEWAY, callbacks::put);
|
||||
.forDestination(Consts.DESTINATION_SECURITY_BOND_GATEWAY, callbacks::put);
|
||||
callback(EquitySecurityGatewayRequest.class)
|
||||
.setFunction(this::newSecurities)
|
||||
.forDestination(Consts.DESTINATION_SECURITY_EQTY_GATEWAY, callbacks::put);
|
||||
callback(MoneyMarketSecurityNewRequest.class)
|
||||
.setFunction(this::newMoneyMarketSecurity)
|
||||
.forDestination(Consts.DESTINATION_GATEWAY_MONEY_MARKET_SECURITY, callbacks::put);
|
||||
|
|
@ -163,10 +165,9 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin
|
|||
}
|
||||
}
|
||||
|
||||
private RequestInfoUpdate newSecurities(BaseRequest<SecurityFondGatewayRequest> baseRequest) {
|
||||
private RequestInfoUpdate newSecurities(BaseRequest<?> baseRequest) {
|
||||
log.debug("SecurityFondGatewayRequest id={} received", baseRequest.getId());
|
||||
SecurityFondGatewayRequest req = baseRequest.getRequestPayload();
|
||||
|
||||
SecurityFondGatewayRequest req = (SecurityFondGatewayRequest) baseRequest.getRequestPayload();
|
||||
Long companyId = findCompany(req);//issuerId findCompany
|
||||
if (companyId == null) {
|
||||
log.debug("CompanyId (issuer) not found.");
|
||||
|
|
|
|||
|
|
@ -14,7 +14,8 @@ public interface Consts {
|
|||
String DESTINATION_FIXED_INCOME_SECURITY_UPDATE = "fixed-income-security-update";
|
||||
String DESTINATION_FIXED_INCOME_SECURITY_DELETE = "fixed-income-security-delete";
|
||||
|
||||
String DESTINATION_SECURITY_GATEWAY = "security-gateway-request-new";
|
||||
String DESTINATION_SECURITY_BOND_GATEWAY = "security-bond-gateway-request-new";
|
||||
String DESTINATION_SECURITY_EQTY_GATEWAY = "security-eqty-gateway-request-new";
|
||||
|
||||
String DESTINATION_FIXED_INCOME_CASH_FLOW_NEW = "fixed-income-cash-flow-new";
|
||||
String DESTINATION_FIXED_INCOME_CASH_FLOW_UPDATE = "fixed-income-cash-flow-update";
|
||||
|
|
|
|||
|
|
@ -7,6 +7,9 @@ public class EquitySecurityGatewayRequest extends SecurityFondGatewayRequest {
|
|||
@JsonProperty
|
||||
private EquitySecurityNewRequest security;
|
||||
|
||||
public EquitySecurityGatewayRequest() {
|
||||
}
|
||||
|
||||
public EquitySecurityGatewayRequest(EquitySecurityNewRequest security) {
|
||||
this.security = security;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,9 @@ public class FixedIncomeGatewayRequest extends SecurityFondGatewayRequest {
|
|||
@JsonProperty
|
||||
private FixedIncomeSecurityNewRequest security;
|
||||
|
||||
public FixedIncomeGatewayRequest() {
|
||||
}
|
||||
|
||||
public FixedIncomeGatewayRequest(FixedIncomeSecurityNewRequest security) {
|
||||
this.security = security;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package ru.spcex.clearing.platform.messaging.domain.cud.company;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.CouponPeriodNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeCashFlowNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.ListingNewRequest;
|
||||
|
|
@ -9,7 +8,6 @@ import ru.spcex.clearing.platform.messaging.domain.cud.securitites.ListingNewReq
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS)
|
||||
public abstract class SecurityFondGatewayRequest {
|
||||
@JsonProperty
|
||||
private String uuid;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue