From 2a284fd673dffa8bfbd0cc15dcb9721b82a7ce97 Mon Sep 17 00:00:00 2001 From: Angular2guy Date: Fri, 30 Aug 2024 05:09:36 +0200 Subject: [PATCH] fix: update --- .../usecase/service/QuoteImportService.java | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/backend/src/main/java/ch/xxx/manager/usecase/service/QuoteImportService.java b/backend/src/main/java/ch/xxx/manager/usecase/service/QuoteImportService.java index d43f1de9..b39d6f6a 100644 --- a/backend/src/main/java/ch/xxx/manager/usecase/service/QuoteImportService.java +++ b/backend/src/main/java/ch/xxx/manager/usecase/service/QuoteImportService.java @@ -73,7 +73,7 @@ public Long importDailyQuoteHistory(String symbol, UserKeys userKeys) { .save(this.overviewImport(symbol, mySymbolEntity, Duration.ofMillis(200)))) .flatMap(symbolEntity -> Stream.of( this.customImport(symbol, this.currencyService.getCurrencyMap(), symbolEntity, null, userKeys)) - .flatMap(value -> Stream.of(this.saveAllDailyQuotes(value)))) + .flatMap(value -> Stream.of(this.saveAllDailyQuotes(value, true)))) .count(); } @@ -84,7 +84,8 @@ private List customImport(String symbol, Map this.yahooImport(symbol, currencyMap, symbolEntity, delay); default -> List.of(); }; - LOGGER.info("{} Dailyquotes for Symbol {} imported from {}", result.size(), symbol, symbolEntity.getQuoteSource()); + LOGGER.info("{} Dailyquotes for Symbol {} imported from {}", result.size(), symbol, + symbolEntity.getQuoteSource()); return result; } @@ -107,7 +108,7 @@ public Long importUpdateDailyQuotes(Set symbols, Duration delay, UserKey .flatMap(symbol -> Stream.of(this.findSymbolsFor(symbol.toLowerCase()).stream() .flatMap(mySymbol -> Stream.of(this.customImport(mySymbol.getSymbol().toLowerCase(), this.currencyService.getCurrencyMap(), mySymbol, delay, userKeys))) - .map(values -> this.saveAllDailyQuotes(values)).count())) + .map(values -> this.saveAllDailyQuotes(values, false)).count())) .reduce(0L, (a, b) -> a + b); } @@ -116,7 +117,7 @@ private List findSymbolsFor(String symbol) { var result = withQuotes.isEmpty() ? this.symbolRepository.findBySymbolSingle(symbol.toLowerCase()) : withQuotes; return result; } - + public void storeDailyQuoteData( List dailyQuoteImportDtos) { Map symbolMap = dailyQuoteImportDtos.stream().map(myDto -> myDto.getSymbol()).distinct() @@ -169,23 +170,23 @@ private Symbol updateSymbol(RapidOverviewImportDto dto, Symbol symbol) { } private List yahooImport(String symbol, Map> currencyMap, - Symbol symbolEntity, Duration delay) { + Symbol symbolEntity, Duration delay) { return symbolEntity.getDailyQuotes() == null || symbolEntity.getDailyQuotes().isEmpty() ? this.yahooClient.getTimeseriesDailyHistory(symbol, delay).stream() .filter(QuoteImportService::filterEmptyValuesDto) .map(importDtos -> this.convert(symbolEntity, importDtos, currencyMap)).toList() : this.yahooClient.getTimeseriesDailyHistory(symbol, delay).stream() .filter(QuoteImportService::filterEmptyValuesDto) - .map(importDtos -> this.convert(symbolEntity, importDtos, currencyMap)) - .filter(entity -> this.filterEntities(symbolEntity, entity)) + .filter(dto -> this.filterEntities(symbolEntity, dto)) + .map(importDto -> this.convert(symbolEntity, importDto, currencyMap)) .collect(Collectors.toList()); } - private boolean filterEntities(Symbol symbolEntity, DailyQuote dailyQuoteEntity) { - return symbolEntity.getDailyQuotes().stream() - .noneMatch(myEntity -> myEntity.getLocalDay().isEqual(dailyQuoteEntity.getLocalDay())); + private boolean filterEntities(Symbol symbolEntity, YahooDailyQuoteImportDto importDto) { + return symbolEntity.getDailyQuotes().stream() + .noneMatch(myEntity -> myEntity.getLocalDay().isEqual(importDto.getDate())); } - + private static boolean filterEmptyValuesDto(YahooDailyQuoteImportDto dto) { return dto.getAdjClose() != null && dto.getVolume() != null; } @@ -200,9 +201,9 @@ private DailyQuote convert(Symbol symbolEntity, YahooDailyQuoteImportDto importD return entity; } - private List saveAllDailyQuotes(List entities) { + private List saveAllDailyQuotes(List entities, boolean clearOldQuotes) { LOGGER.info("importDailyQuotes() {} to import", entities.size()); - if (entities != null && !entities.isEmpty()) { + if (clearOldQuotes && entities != null && !entities.isEmpty()) { this.dailyQuoteRepository.deleteAll(this.dailyQuoteRepository.findBySymbol(entities.get(0).getSymbolKey())); } return this.dailyQuoteRepository.saveAll(entities);