1
0

fix: 修复日线数据检查没有考虑真正停牌日

This commit is contained in:
2025-09-08 20:50:04 +08:00
parent 7a70c037f9
commit f1ab38f871
4 changed files with 39 additions and 14 deletions

View File

@@ -31,5 +31,6 @@ public class LeopardServerApplication implements ApplicationRunner {
public void run(ApplicationArguments args) { public void run(ApplicationArguments args) {
// executor.execute2RespWithEL("THEN(update_daily)"); // executor.execute2RespWithEL("THEN(update_daily)");
// executor.execute2RespWithEL("THEN(update_stock)"); // executor.execute2RespWithEL("THEN(update_stock)");
// executor.execute2RespWithEL("THEN(check_daily)");
} }
} }

View File

@@ -1,10 +1,12 @@
package com.lanyuanxiaoyao.leopard.server.service; package com.lanyuanxiaoyao.leopard.server.service;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import lombok.SneakyThrows; import lombok.SneakyThrows;
@@ -55,11 +57,20 @@ public class TuShareService {
return tuShareResponse; return tuShareResponse;
} }
@SneakyThrows
public TuShareResponse dailyList(LocalDate tradeDate) { 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( var response = HttpUtil.post(API_URL, buildRequest(
"daily", "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") List.of("ts_code", "trade_date", "open", "high", "low", "close", "pre_close", "change", "pct_chg", "vol", "amount")
)); ));
var tuShareResponse = mapper.readValue(response, TuShareResponse.class); var tuShareResponse = mapper.readValue(response, TuShareResponse.class);

View File

@@ -46,8 +46,12 @@ public class CheckDailyNode extends NodeComponent {
if (exchange.equals(stock.getMarket())) { if (exchange.equals(stock.getMarket())) {
var existsTradeDates = dailyService.findDistinctTradeDateByStockId(stock.getId()); var existsTradeDates = dailyService.findDistinctTradeDateByStockId(stock.getId());
var missedTradeDates = allTradeDates.stream() 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 -> !existsTradeDates.contains(date))
.filter(date -> {
var response = tuShareService.dailyList(date, stock.getCode());
return !response.data().items().isEmpty();
})
.toList(); .toList();
if (ObjectUtil.isNotEmpty(missedTradeDates)) { if (ObjectUtil.isNotEmpty(missedTradeDates)) {
reports.add(new MissedTradeReport( reports.add(new MissedTradeReport(

View File

@@ -58,20 +58,12 @@ Content-Type: application/json
"api_name": "daily", "api_name": "daily",
"token": "{{api_key}}", "token": "{{api_key}}",
"params": { "params": {
"trade_date": "19931213" "ts_code": "000001.SZ",
"trade_date": "20140715"
}, },
"fields": [ "fields": [
"ts_code",
"trade_date",
"open",
"high",
"low",
"close", "close",
"pre_close", "pre_close"
"change",
"pct_chg",
"vol",
"amount"
] ]
} }
@@ -203,3 +195,20 @@ Content-Type: application/json
"currentdebt_to_debt" "currentdebt_to_debt"
] ]
} }
### Get suspend
POST {{api_url}}
Content-Type: application/json
{
"api_name": "suspend",
"token": "{{api_key}}",
"params": {
"ts_code": "000001.SZ",
"suspend_type": "S"
},
"fields": [
"suspend_date",
"resume_date"
]
}