1
0

Compare commits

...

3 Commits

3 changed files with 36 additions and 31 deletions

View File

@@ -58,8 +58,10 @@ public class TaskController extends SimpleControllerSupport<Task, Void, TaskCont
}
private TaskCost calculateCost(LocalDateTime start, LocalDateTime finish) {
if (ObjectUtil.isNull(start) || ObjectUtil.isNull(finish)) {
if (ObjectUtil.isNull(start)) {
return new TaskCost(null, null);
} else if (ObjectUtil.isNull(finish)) {
finish = LocalDateTime.now();
}
var duration = Duration.between(start, finish).toMillis();
return new TaskCost(

View File

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

View File

@@ -28,7 +28,7 @@
</appender>
<logger name="com.zaxxer.hikari" level="ERROR"/>
<logger name="org.hibernate.SQL" level="DEBUG"/>
<!--<logger name="org.hibernate.SQL" level="DEBUG"/>-->
<root level="INFO">
<appender-ref ref="Console"/>