diff --git a/src/main/java/cn/stock/market/utils/RefinitivUtil.java b/src/main/java/cn/stock/market/utils/RefinitivUtil.java index b44b2d2..a7d20c7 100644 --- a/src/main/java/cn/stock/market/utils/RefinitivUtil.java +++ b/src/main/java/cn/stock/market/utils/RefinitivUtil.java @@ -6,7 +6,10 @@ import com.thomsonreuters.ema.access.DataType; import com.thomsonreuters.ema.access.FieldEntry; import com.thomsonreuters.ema.access.FieldList; import org.apache.commons.lang3.StringUtils; +import org.springframework.util.ReflectionUtils; +import java.lang.reflect.Field; +import java.util.Arrays; import java.util.Iterator; import java.util.List; @@ -125,13 +128,14 @@ public class RefinitivUtil { } } } - return RetifiveStockInfo.builder() + RetifiveStockInfo retifiveStockInfo = RetifiveStockInfo.builder() .stockCode(stockCode).stockName(stockName).symbol(name).status(status) .openPrice(openPrice).lastPrice(price).highPrice(high).lowPrice(low) .previousPrice(previousPrice).perchg(percentChange).volume(volume) .week52HighPrice(week52High).week52LowPrice(week52Low).stockType(stockType) .change(changeValue) .build(); + return handleBlandData(retifiveStockInfo); } @@ -261,6 +265,24 @@ public class RefinitivUtil { .volume(volume).week52HighPrice(week52High).week52LowPrice(week52Low).stockType(stockType).change(changeValue) .build(); + return handleBlandData(retifiveStockInfo); + } + + private static RetifiveStockInfo handleBlandData(RetifiveStockInfo retifiveStockInfo) { + Field[] fields = retifiveStockInfo.getClass().getDeclaredFields(); + Arrays.stream(fields).forEach(field -> { + ReflectionUtils.makeAccessible(field); + try { + Object obj = field.get(retifiveStockInfo); + if (obj instanceof String) { + String objStr = (String) obj; + field.set(retifiveStockInfo, objStr.replace("(blank data)", "")); + } + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + }); + return retifiveStockInfo; } } diff --git a/src/main/java/cn/stock/market/web/RefinitivApiController.java b/src/main/java/cn/stock/market/web/RefinitivApiController.java index 5a2a868..4d7f99e 100644 --- a/src/main/java/cn/stock/market/web/RefinitivApiController.java +++ b/src/main/java/cn/stock/market/web/RefinitivApiController.java @@ -1,5 +1,6 @@ package cn.stock.market.web; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.stock.market.domain.basic.entity.RetifiveStock; import cn.stock.market.domain.basic.service.RetifiveStockService; @@ -108,6 +109,10 @@ public class RefinitivApiController { RefreshMsg refreshMsg = appClient.getMessageFuture().get(10, TimeUnit.SECONDS);// 设置超时时间,例如10秒 if (DataType.DataTypes.FIELD_LIST == refreshMsg.payload().dataType()) { List strings = RefinitivUtil.decode(refreshMsg.payload().fieldList()); + if (CollUtil.isEmpty(strings)) { + return ServerResponse.createBySuccess("操作成功", list); + } + appClient.subscribeList(strings); // 根据itemName订阅 // 等待消息 List refreshMsgs = appClient.getMessagesFuture().get(10, TimeUnit.SECONDS); @@ -137,6 +142,10 @@ public class RefinitivApiController { RefreshMsg refreshMsg = appClient.getMessageFuture().get(10, TimeUnit.SECONDS);// 设置超时时间,例如10秒 if (DataType.DataTypes.FIELD_LIST == refreshMsg.payload().dataType()) { List strings = RefinitivUtil.decode(refreshMsg.payload().fieldList()); + if (CollUtil.isEmpty(strings)) { + return ServerResponse.createBySuccess("操作成功", list); + } + appClient.subscribeList(strings); // 根据itemName订阅 // 等待消息 List refreshMsgs = appClient.getMessagesFuture().get(10, TimeUnit.SECONDS); @@ -167,6 +176,10 @@ public class RefinitivApiController { RefreshMsg refreshMsg = appClient.getMessageFuture().get(10, TimeUnit.SECONDS);// 设置超时时间,例如10秒 if (DataType.DataTypes.FIELD_LIST == refreshMsg.payload().dataType()){ List strings = RefinitivUtil.decode(refreshMsg.payload().fieldList()); + if (CollUtil.isEmpty(strings)) { + return ServerResponse.createBySuccess("操作成功", list); + } + appClient.subscribeList(strings); // 根据itemName订阅 // 等待消息 List refreshMsgs = appClient.getMessagesFuture().get(10, TimeUnit.SECONDS);