fixed 'section' field for strades uploading into clearing
This commit is contained in:
parent
ec55bd90cb
commit
fe18b289a3
1 changed files with 25 additions and 1 deletions
|
|
@ -8,6 +8,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
import ru.clearing.classes.statics.data.misc.Market;
|
||||||
import ru.clearing.classes.statics.data.misc.STrades;
|
import ru.clearing.classes.statics.data.misc.STrades;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.utilities.STradesImportedRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.utilities.STradesImportedRequest;
|
||||||
|
|
@ -16,6 +17,7 @@ import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
|
import ru.spcex.platform.utils.log.ExceptionUtils;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.sql.Date;
|
import java.sql.Date;
|
||||||
|
|
@ -26,6 +28,7 @@ import java.time.Instant;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import static ru.spcex.clearing.platform.messaging.domain.Consts.S_TRADES_IMPORTED;
|
import static ru.spcex.clearing.platform.messaging.domain.Consts.S_TRADES_IMPORTED;
|
||||||
|
|
@ -36,6 +39,7 @@ import static ru.spcex.clearing.trade.importer.error.TradeImporterError.sTradesN
|
||||||
public class TradeImporterService {
|
public class TradeImporterService {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
private final Imdg<STrades> sTradesImdg;
|
private final Imdg<STrades> sTradesImdg;
|
||||||
|
private final Imdg<Market> marketImdg;
|
||||||
private final JdbcTemplate jdbcTemplate;
|
private final JdbcTemplate jdbcTemplate;
|
||||||
private final Supplier<KafkaSender> kafka;
|
private final Supplier<KafkaSender> kafka;
|
||||||
private final IMessageResolver messageResolver;
|
private final IMessageResolver messageResolver;
|
||||||
|
|
@ -47,6 +51,7 @@ public class TradeImporterService {
|
||||||
public TradeImporterService(ImdgProvider imdgProvider, JdbcTemplate jdbcTemplate, Supplier<KafkaSender> kafka, IMessageResolver messageResolver) {
|
public TradeImporterService(ImdgProvider imdgProvider, JdbcTemplate jdbcTemplate, Supplier<KafkaSender> kafka, IMessageResolver messageResolver) {
|
||||||
imdgProvider.waitAvailable();
|
imdgProvider.waitAvailable();
|
||||||
this.sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class);
|
this.sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class);
|
||||||
|
this.marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, Market.class);
|
||||||
this.jdbcTemplate = jdbcTemplate;
|
this.jdbcTemplate = jdbcTemplate;
|
||||||
this.kafka = kafka;
|
this.kafka = kafka;
|
||||||
this.messageResolver = messageResolver;
|
this.messageResolver = messageResolver;
|
||||||
|
|
@ -66,7 +71,7 @@ public class TradeImporterService {
|
||||||
int created = 0;
|
int created = 0;
|
||||||
int updated = 0;
|
int updated = 0;
|
||||||
for (STrades tradesDb : tradesFromDB) {
|
for (STrades tradesDb : tradesFromDB) {
|
||||||
if (isValidTrades(tradesDb)) {
|
if (isValidTrades(tradesDb) && fillNessessaryFields(tradesDb)) {
|
||||||
STrades sTrades = getSTradesFromImdg(tradesDb, sTradesImdg);
|
STrades sTrades = getSTradesFromImdg(tradesDb, sTradesImdg);
|
||||||
if (sTrades != null) {
|
if (sTrades != null) {
|
||||||
// Обновление всех полей объекта из БД
|
// Обновление всех полей объекта из БД
|
||||||
|
|
@ -97,6 +102,25 @@ public class TradeImporterService {
|
||||||
kafka.get().sendRequestToQueue(S_TRADES_IMPORTED, sTradesImportedRequest);
|
kafka.get().sendRequestToQueue(S_TRADES_IMPORTED, sTradesImportedRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns OK - everything is kk
|
||||||
|
*/
|
||||||
|
private boolean fillNessessaryFields(STrades tradesDb) {
|
||||||
|
Consumer<String> logErr = (st) -> log.error("strades {} {} {}", tradesDb.getTradeDate(), tradesDb.getTradeNum(), st);
|
||||||
|
try {
|
||||||
|
Market market = marketImdg.getSingleObjectBySQL("code = '%s'".formatted(tradesDb.getClassCode()));
|
||||||
|
if (market == null) {
|
||||||
|
logErr.accept("couldn't find market.section for classCode " + tradesDb.getClassCode());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
tradesDb.setSection(market.getSection());
|
||||||
|
return true;
|
||||||
|
} catch (Exception e) {
|
||||||
|
logErr.accept(ExceptionUtils.getStackTrace(e));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public STrades getSTradesFromImdg(STrades tradesDb, Imdg<STrades> sTradesImdg) {
|
public STrades getSTradesFromImdg(STrades tradesDb, Imdg<STrades> sTradesImdg) {
|
||||||
return sTradesImdg.getSingleObjectByFieldValues(Map.of("tradeDate", tradesDb.getTradeDate(),
|
return sTradesImdg.getSingleObjectByFieldValues(Map.of("tradeDate", tradesDb.getTradeDate(),
|
||||||
"tradeNum", tradesDb.getTradeNum(),
|
"tradeNum", tradesDb.getTradeNum(),
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue