http://jira.mfd.msk:8088/browse/CLS-275 DDL (3) часть 2 переименование STrade -> STrades
This commit is contained in:
parent
762ddeacc5
commit
a1a68d50b2
8 changed files with 65 additions and 49 deletions
|
|
@ -12,7 +12,7 @@ import java.time.LocalDate;
|
|||
* <p>
|
||||
* DB table: S_TRADE
|
||||
**/
|
||||
public class STrade extends SpcexObjectBase {
|
||||
public class STrades extends SpcexObjectBase {
|
||||
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
||||
|
||||
private Long tradeNum;
|
||||
|
|
@ -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 = 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());
|
||||
}
|
||||
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());
|
||||
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());
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ 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.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;
|
||||
|
|
@ -10,23 +10,22 @@ 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 class STradesMapStore extends TemplateMapStore<STrades> {
|
||||
|
||||
public STradeMapStore(JdbcTemplate jdbcTemplate) {
|
||||
public STradesMapStore(JdbcTemplate jdbcTemplate) {
|
||||
super(jdbcTemplate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMapName() {
|
||||
return IMDGDistributedNames.Map_STrade;
|
||||
return IMDGDistributedNames.Map_STrades;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTableName() {
|
||||
return "S_TRADE";
|
||||
return "S_TRADES";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -43,8 +42,8 @@ public class STradeMapStore extends TemplateMapStore<STrade> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public STrade objectReader(ResultSet resultSet) throws SQLException {
|
||||
STrade object = new STrade();
|
||||
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));
|
||||
|
|
@ -94,7 +93,7 @@ public class STradeMapStore extends TemplateMapStore<STrade> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Object[] objectToField(STrade object) {
|
||||
public Object[] objectToField(STrades object) {
|
||||
Object[] args = new Object[]{
|
||||
object.getId(),
|
||||
object.getTradeNum(),
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,7 +59,15 @@ 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));
|
||||
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ExecutionDepositHistory, ExecutionDepositHistory.class,
|
||||
|
||||
new SettingOperation("firstLegAmount", new Object[]{new BigDecimal("850.640000000000000000")}),
|
||||
new SettingOperation("interestAmount", new Object[]{new BigDecimal("851.640000000000000000")}),
|
||||
new SettingOperation("lots", new Object[]{new BigDecimal("852.640000000000000000")}),
|
||||
new SettingOperation("quantity", new Object[]{new BigDecimal("853.640000000000000000")}),
|
||||
new SettingOperation("secondLegAmount", new Object[]{new BigDecimal("854.640000000000000000")})
|
||||
|
||||
));
|
||||
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ExecutionFondHistory, ExecutionFondHistory.class));
|
||||
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_InformationAccountHistory, InformationAccountHistory.class));
|
||||
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_RelationHistory, RelationHistory.class));
|
||||
|
|
@ -226,7 +234,7 @@ 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)})));
|
||||
|
|
|
|||
|
|
@ -122,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";
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue