etreschenkov 2023-06-22 18:50:23 +03:00
parent d759e54f6d
commit 385992cdb1
7 changed files with 25 additions and 15 deletions

View file

@ -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.statusBLKD/SSPD/CLOS (см. справочник serviceStatus).

View file

@ -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);
}
}

View file

@ -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.");

View file

@ -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";

View file

@ -7,6 +7,9 @@ public class EquitySecurityGatewayRequest extends SecurityFondGatewayRequest {
@JsonProperty
private EquitySecurityNewRequest security;
public EquitySecurityGatewayRequest() {
}
public EquitySecurityGatewayRequest(EquitySecurityNewRequest security) {
this.security = security;
}

View file

@ -7,6 +7,9 @@ public class FixedIncomeGatewayRequest extends SecurityFondGatewayRequest {
@JsonProperty
private FixedIncomeSecurityNewRequest security;
public FixedIncomeGatewayRequest() {
}
public FixedIncomeGatewayRequest(FixedIncomeSecurityNewRequest security) {
this.security = security;
}

View file

@ -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;