1
0

feat: 更新日线数据增加进度

This commit is contained in:
2025-09-25 00:08:43 +08:00
parent 5cd4875cf9
commit d6aab42892

View File

@@ -56,39 +56,42 @@ public class UpdateDailyTask extends TaskRunner {
var existsTradeDates = dailyRepository.findDistinctTradeDate(); var existsTradeDates = dailyRepository.findDistinctTradeDate();
var nowDate = LocalDate.now(); var nowDate = LocalDate.now();
var stocksMap = stockRepository.findAll().stream().collect(Collectors.toMap(Stock::getCode, stock -> stock)); var stocksMap = stockRepository.findAll().stream().collect(Collectors.toMap(Stock::getCode, stock -> stock));
tradeDates.parallelStream() var targetTradeDates = tradeDates.stream()
.filter(date -> date.isBefore(nowDate) || date.isEqual(nowDate)) .filter(date -> date.isBefore(nowDate) || date.isEqual(nowDate))
.filter(date -> !existsTradeDates.contains(date)) .filter(date -> !existsTradeDates.contains(date))
.forEach(tradeDate -> { .toList();
var factorResponse = tuShareService.factorList(tradeDate); for (int index = 0, total = targetTradeDates.size(); index < total; index++) {
var factorMap = new HashMap<String, Double>(); var tradeDate = targetTradeDates.get(index);
for (List<String> item : factorResponse.data().items()) { var factorResponse = tuShareService.factorList(tradeDate);
factorMap.put(item.get(0), Double.valueOf(item.get(2))); var factorMap = new HashMap<String, Double>();
} for (List<String> item : factorResponse.data().items()) {
factorMap.put(item.get(0), Double.valueOf(item.get(2)));
}
var response = tuShareService.dailyList(tradeDate); var response = tuShareService.dailyList(tradeDate);
for (List<String> item : response.data().items()) { for (List<String> item : response.data().items()) {
var code = item.get(0); var code = item.get(0);
if (stocksMap.containsKey(code)) { if (stocksMap.containsKey(code)) {
var stock = stocksMap.get(code); var stock = stocksMap.get(code);
var factor = factorMap.get(code); var factor = factorMap.get(code);
var daily = new Daily(); var daily = new Daily();
daily.setTradeDate(tradeDate); daily.setTradeDate(tradeDate);
daily.setOpen(NumberHelper.parseDouble(item.get(2))); daily.setOpen(NumberHelper.parseDouble(item.get(2)));
daily.setHigh(NumberUtil.parseDouble(item.get(3))); daily.setHigh(NumberUtil.parseDouble(item.get(3)));
daily.setLow(NumberUtil.parseDouble(item.get(4))); daily.setLow(NumberUtil.parseDouble(item.get(4)));
daily.setClose(NumberUtil.parseDouble(item.get(5))); daily.setClose(NumberUtil.parseDouble(item.get(5)));
daily.setPreviousClose(NumberUtil.parseDouble(item.get(6))); daily.setPreviousClose(NumberUtil.parseDouble(item.get(6)));
daily.setPriceChangeAmount(NumberUtil.parseDouble(item.get(7))); daily.setPriceChangeAmount(NumberUtil.parseDouble(item.get(7)));
daily.setPriceFluctuationRange(NumberUtil.parseDouble(item.get(8))); daily.setPriceFluctuationRange(NumberUtil.parseDouble(item.get(8)));
daily.setVolume(NumberUtil.parseDouble(item.get(9))); daily.setVolume(NumberUtil.parseDouble(item.get(9)));
daily.setTurnover(NumberUtil.parseDouble(item.get(10))); daily.setTurnover(NumberUtil.parseDouble(item.get(10)));
daily.setFactor(factor); daily.setFactor(factor);
daily.setStock(stock); daily.setStock(stock);
dailyRepository.save(daily); dailyRepository.save(daily);
}
} }
}); }
updater.update(index * 1.0 / total);
}
return null; return null;
} }