From c00bbb2f219514005033348b931a140d49579bb8 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Wed, 27 Aug 2025 18:37:01 +0800
Subject: [PATCH] K线实时刷新
---
src/main/java/com/nq/service/impl/StockServiceImpl.java | 54 ++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 40 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/nq/service/impl/StockServiceImpl.java b/src/main/java/com/nq/service/impl/StockServiceImpl.java
index ffc26df..e5ad771 100644
--- a/src/main/java/com/nq/service/impl/StockServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/StockServiceImpl.java
@@ -17,6 +17,7 @@
import com.nq.service.*;
import com.nq.utils.http.HttpClientRequest;
import com.nq.utils.PropertiesUtil;
+import com.nq.utils.http.HttpRequest;
import com.nq.utils.redis.RedisKeyUtil;
import com.nq.utils.redis.RedisShardedPoolUtils;
import com.nq.utils.stock.pinyin.GetPyByChinese;
@@ -26,6 +27,7 @@
import com.nq.vo.stock.k.MinDataVO;
import com.nq.vo.stock.k.echarts.EchartsDataVO;
+import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.util.*;
import javax.annotation.Resource;
@@ -707,11 +709,6 @@
String inCodeList = PropertiesUtil.getProperty("in_home_indices_code");
String twCodeList = PropertiesUtil.getProperty("tw_home_indices_code");
- List<String> usStockCodeList = Arrays.asList(usCodeList.split(","));
- List<String> hkStockCodeList = Arrays.asList(hkCodeList.split(","));
- List<String> inStockCodeList = Arrays.asList(inCodeList.split(","));
- List<String> twStockCodeList = Arrays.asList(twCodeList.split(","));
-
List<DataStockBean> usDataStockBeans = Lists.newArrayList();
List<DataStockBean> hkDataStockBeans = Lists.newArrayList();
List<DataStockBean> inDataStockBeans = Lists.newArrayList();
@@ -720,10 +717,10 @@
Gson gson = new Gson();
// 统一处理各地区股票数据
- processStockData(usStockCodeList, EStockType.US.getCode(), usDataStockBeans, gson);
- processStockData(hkStockCodeList, EStockType.HK.getCode(), hkDataStockBeans, gson);
- processStockData(inStockCodeList, EStockType.IN.getCode(), inDataStockBeans, gson);
- processStockData(twStockCodeList, EStockType.TW.getCode(), twDataStockBeans, gson);
+ processStockData(usCodeList, EStockType.US.getCode(), usDataStockBeans, gson);
+ processStockData(hkCodeList, EStockType.HK.getCode(), hkDataStockBeans, gson);
+ processStockData(inCodeList, EStockType.IN.getCode(), inDataStockBeans, gson);
+ processStockData(twCodeList, EStockType.TW.getCode(), twDataStockBeans, gson);
// 组装返回结果
Map<String, Object> resultMap = new HashMap<>();
@@ -740,11 +737,23 @@
}
// 提取的通用处理方法
- private void processStockData(List<String> stockCodeList, String stockType,
- List<DataStockBean> targetList, Gson gson) {
+ private void processStockData(String stockCodes, String stockType,
+ List<DataStockBean> targetList, Gson gson) throws Exception {
+ String[] stockCodeList = stockCodes.split(",");
+ //实时获取数据
+ //String result = RedisKeyUtil.doPost(stockCodes, stockType);
+ EStockType eStockType = EStockType.getEStockTypeByCode(stockType);
+ String result = HttpRequest.doGrabGet(eStockType.stockUrl + "indices?key=" + eStockType.getStockKey() + "&country_id=" + eStockType.getContryId());
+ // 把JSON数据解析为List<DataStockBean>
+ Type listType = new TypeToken<List<DataStockBean>>(){}.getType();
+ List<DataStockBean> list = new Gson().fromJson(result, listType);
+
for (String stockCode : stockCodeList) { // 增强for循环简化代码
// 获取基础股票数据
- DataStockBean cacheBaseStock = RedisKeyUtil.getCacheBaseStock(stockType, stockCode);
+ //DataStockBean cacheBaseStock = RedisKeyUtil.getCacheBaseStock(stockType, stockCode);
+ DataStockBean cacheBaseStock = list.stream()
+ .filter(x -> stockCode.equals(x.getId()))
+ .findFirst().orElse(null);
if (cacheBaseStock == null) { // 增加空指针防护(可选,根据实际业务)
continue;
}
@@ -810,7 +819,24 @@
}
stockType = stock.getStockType();
Map<String, Object> resultMap = new HashMap<>();
- DataStockBean cacheBaseStock = RedisKeyUtil.getCacheBaseStock(stockType, pid);
+
+ //实时获取数据
+ String s = RedisKeyUtil.doPost(pid, stockType);
+ Map<String, Object> stringObjectMap = RedisKeyUtil.jsonToMap(s);
+ resultMap.put("id", pid);
+ resultMap.put("stockType", stockType);
+ resultMap.put("name", stock.getStockName());
+ resultMap.put("last", stringObjectMap.get("Last").toString());
+ resultMap.put("chg", stringObjectMap.get("Chg").toString());
+ resultMap.put("chgPct", stringObjectMap.get("ChgPct").toString());
+ // 获取K线数据
+ Object kData = getKData(pid, "D", stockType);
+ Gson gson = new Gson();
+ List<kData> dataList = gson.fromJson(kData.toString(), new TypeToken<List<kData>>(){}.getType());
+ resultMap.put("kData", dataList);
+ return ServerResponse.createBySuccess(resultMap);
+
+ /*DataStockBean cacheBaseStock = RedisKeyUtil.getCacheBaseStock(stockType, pid);
if (cacheBaseStock != null) {
resultMap.put("id", cacheBaseStock.getId());
resultMap.put("stockType", stockType);
@@ -830,7 +856,7 @@
List<kData> dataList = gson.fromJson(kData.toString(), new TypeToken<List<kData>>(){}.getType());
resultMap.put("kData", dataList);
return ServerResponse.createBySuccess(resultMap);
- }
+ }*/
} catch (Exception e){
e.printStackTrace();
}
--
Gitblit v1.9.3