zyy
2025-08-27 c00bbb2f219514005033348b931a140d49579bb8
K线实时刷新
2 files modified
36 ■■■■■ changed files
src/main/java/com/nq/service/impl/StockServiceImpl.java 34 ●●●●● patch | view | raw | blame | history
src/main/resources/application.properties 2 ●●● patch | view | raw | blame | history
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;
            }
@@ -811,6 +820,7 @@
            stockType = stock.getStockType();
            Map<String, Object> resultMap = new HashMap<>();
            //实时获取数据
            String s = RedisKeyUtil.doPost(pid, stockType);
            Map<String, Object> stringObjectMap = RedisKeyUtil.jsonToMap(s);
            resultMap.put("id", pid);
src/main/resources/application.properties
@@ -61,7 +61,7 @@
us_home_indices_code=15882,15881,16571
hk_home_indices_code=535606773,535606776,535606785
in_home_indices_code=535582575,535582576,535582577
tw_home_indices_code=535584911,535584912,535584922
tw_home_indices_code=535584913,535584912,535584922
#?? ?? - ????
admin.auth.email.subject=???? - ??????