http://jira.mfd.msk:8088/browse/CLS-275 DDL (3) часть 2 переименование STrade -> STrades

This commit is contained in:
AKurakin 2023-04-19 13:06:51 +03:00
parent 762ddeacc5
commit a1a68d50b2
8 changed files with 65 additions and 49 deletions

View file

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

View file

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

View file

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

View file

@ -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(),

View file

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

View file

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

View file

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

View file

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