fix: 修复日线数据检查没有考虑真正停牌日
This commit is contained in:
@@ -31,5 +31,6 @@ public class LeopardServerApplication implements ApplicationRunner {
|
||||
public void run(ApplicationArguments args) {
|
||||
// executor.execute2RespWithEL("THEN(update_daily)");
|
||||
// executor.execute2RespWithEL("THEN(update_stock)");
|
||||
// executor.execute2RespWithEL("THEN(check_daily)");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package com.lanyuanxiaoyao.leopard.server.service;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import lombok.SneakyThrows;
|
||||
@@ -55,11 +57,20 @@ public class TuShareService {
|
||||
return tuShareResponse;
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
public TuShareResponse dailyList(LocalDate tradeDate) {
|
||||
return dailyList(tradeDate, null);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
public TuShareResponse dailyList(LocalDate tradeDate, String stockCode) {
|
||||
var paramsMap = new HashMap<String, Object>();
|
||||
paramsMap.put("trade_date", tradeDate.format(TRADE_FORMAT));
|
||||
if (StrUtil.isNotBlank(stockCode)) {
|
||||
paramsMap.put("ts_code", stockCode);
|
||||
}
|
||||
var response = HttpUtil.post(API_URL, buildRequest(
|
||||
"daily",
|
||||
Map.of("trade_date", tradeDate.format(TRADE_FORMAT)),
|
||||
paramsMap,
|
||||
List.of("ts_code", "trade_date", "open", "high", "low", "close", "pre_close", "change", "pct_chg", "vol", "amount")
|
||||
));
|
||||
var tuShareResponse = mapper.readValue(response, TuShareResponse.class);
|
||||
|
||||
@@ -46,8 +46,12 @@ public class CheckDailyNode extends NodeComponent {
|
||||
if (exchange.equals(stock.getMarket())) {
|
||||
var existsTradeDates = dailyService.findDistinctTradeDateByStockId(stock.getId());
|
||||
var missedTradeDates = allTradeDates.stream()
|
||||
.filter(date -> date.isBefore(stock.getListedDate()))
|
||||
.filter(date -> date.isAfter(stock.getListedDate()) || date.isEqual(stock.getListedDate()))
|
||||
.filter(date -> !existsTradeDates.contains(date))
|
||||
.filter(date -> {
|
||||
var response = tuShareService.dailyList(date, stock.getCode());
|
||||
return !response.data().items().isEmpty();
|
||||
})
|
||||
.toList();
|
||||
if (ObjectUtil.isNotEmpty(missedTradeDates)) {
|
||||
reports.add(new MissedTradeReport(
|
||||
|
||||
Reference in New Issue
Block a user