fix: 修复日线数据检查没有考虑真正停牌日
This commit is contained in:
@@ -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)");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user