diff --git a/src/main/java/cn/stock/market/infrastructure/job/RefinitivTask.java b/src/main/java/cn/stock/market/infrastructure/job/RefinitivTask.java index e008005..43f0016 100644 --- a/src/main/java/cn/stock/market/infrastructure/job/RefinitivTask.java +++ b/src/main/java/cn/stock/market/infrastructure/job/RefinitivTask.java @@ -25,6 +25,7 @@ import java.util.stream.Collectors; @RestController public class RefinitivTask { + private static final String SYMBOL_LINK_PREFIX = "#EQ.BO"; @Autowired private RefinitivConsumer refinitivConsumer; @Autowired @@ -58,26 +59,29 @@ public class RefinitivTask { private List getSymbolList() { List symbols = new ArrayList<>(); - List itemNameList = generateItemNames(); - for (String itemName : itemNameList) { - try { - // 等待消息 - InstrumentData[] dataBySymbol = refinitivConsumer.getDataBySymbol(itemName); - String nextLink = decode(dataBySymbol[0].getDataMap(), symbols); - while (StringUtils.isNotBlank(nextLink) && !nextLink.contains("blank data")) { - dataBySymbol = refinitivConsumer.getDataBySymbol(nextLink); - nextLink = decode(dataBySymbol[0].getDataMap(), symbols); - } - } catch (Exception e) { - log.error("每天18点定时同步Refinitiv股票数据出错,数据未查出,symbol = {}", itemName, e); + int seq = 0; + String symbolLink = seq + SYMBOL_LINK_PREFIX; + String nextLink = null; + try { + InstrumentData[] dataBySymbol = refinitivConsumer.getDataBySymbol(symbolLink); + nextLink = decode(dataBySymbol[0].getDataMap(), symbols); + while (StringUtils.isNotBlank(nextLink) && !nextLink.contains("blank data")) { + dataBySymbol = refinitivConsumer.getDataBySymbol(nextLink); + nextLink = decode(dataBySymbol[0].getDataMap(), symbols); } + } catch (Exception e) { + log.error("每天18点定时同步Refinitiv股票数据出错,数据未查出,nextLink = {}", nextLink, e); } - return symbols; + return symbols.stream().distinct().collect(Collectors.toList()); } private String decode(Map dataMap, List symbols) { String nextLink = null; + if (dataMap.get("NEXT_LR") == null) { + return nextLink; + } + for (Map.Entry entry : dataMap.entrySet()) { if (entry.getKey().startsWith("LINK_") && !entry.getValue().contains("blank data")) { symbols.add(entry.getValue()); @@ -85,24 +89,9 @@ public class RefinitivTask { if (entry.getKey().startsWith("NEXT_LR")) { nextLink = entry.getValue(); - if (nextLink.contains("blank data")) { - break; - } } } return nextLink; } - - private static List generateItemNames() { - List itemNames = new ArrayList<>(); - - // 从字母 'A' 到 'Z' - for (char letter = 'A'; letter <= 'Z'; letter++) { - String itemName = "0#" + letter + ".BO"; - itemNames.add(itemName); - } - - return itemNames; - } }