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