1
zj
2026-01-15 9e8557ce8e7ab694f21a9386cb61973c4ed31569
1
2 files modified
1 files added
250 ■■■■■ changed files
src/main/java/com/nq/pojo/StockRealTimeDto.java 191 ●●●●● patch | view | raw | blame | history
src/main/java/com/nq/utils/redis/RedisKeyUtil.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/utils/stock/sina/StockApi.java 58 ●●●●● patch | view | raw | blame | history
src/main/java/com/nq/pojo/StockRealTimeDto.java
New file
@@ -0,0 +1,191 @@
package com.nq.pojo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Map;
/**
 * @program: dabaogp
 * @description:
 * @create: 2026-01-15 19:49
 **/
@Data
public class StockRealTimeDto {
    private String Id;
    private String Name;
    private String Symbol;
    private String Last;
    private String High;
    private String Low;
    private String PrevClose;
    private String Time;
    private String Volume;
    private String Chg;
    private String ChgPct;
    private String country_id;
    private String type;
    private String Bid;
    private String Ask;
    private String Open;
    private String PrevLast;
    private String PrevChg;
    private String PrevChgPct;
    private String PrevPrevClose;
    /**
     * 从Map转换的静态方法
     */
    public static StockRealTimeDto fromMap(Map<String, Object> map) {
        if (map == null) {
            return null;
        }
        StockRealTimeDto stock = new StockRealTimeDto();
        // 逐个字段设置
        if (map.containsKey("Id")) {
            Object idObj = map.get("Id");
            if (idObj != null) {
                stock.setId(idObj.toString());
            }
        }
        if (map.containsKey("Name")) {
            Object nameObj = map.get("Name");
            if (nameObj != null) {
                stock.setName(nameObj.toString());
            }
        }
        if (map.containsKey("Symbol")) {
            Object symbolObj = map.get("Symbol");
            if (symbolObj != null) {
                stock.setSymbol(symbolObj.toString());
            }
        }
        if (map.containsKey("Last")) {
            Object lastObj = map.get("Last");
            if (lastObj != null) {
                stock.setLast(lastObj.toString());
            }
        }
        if (map.containsKey("High")) {
            Object highObj = map.get("High");
            if (highObj != null) {
                stock.setHigh(highObj.toString());
            }
        }
        if (map.containsKey("Low")) {
            Object lowObj = map.get("Low");
            if (lowObj != null) {
                stock.setLow(lowObj.toString());
            }
        }
        if (map.containsKey("PrevClose")) {
            Object prevCloseObj = map.get("PrevClose");
            if (prevCloseObj != null) {
                stock.setPrevClose(prevCloseObj.toString());
            }
        }
        if (map.containsKey("Time")) {
            Object timeObj = map.get("Time");
            if (timeObj != null) {
                stock.setTime(timeObj.toString());
            }
        }
        if (map.containsKey("Volume")) {
            Object volumeObj = map.get("Volume");
            if (volumeObj != null) {
                stock.setVolume(volumeObj.toString());
            }
        }
        if (map.containsKey("Chg")) {
            Object chgObj = map.get("Chg");
            if (chgObj != null) {
                stock.setChg(chgObj.toString());
            }
        }
        if (map.containsKey("ChgPct")) {
            Object chgPctObj = map.get("ChgPct");
            if (chgPctObj != null) {
                stock.setChgPct(chgPctObj.toString());
            }
        }
        if (map.containsKey("country_id")) {
            Object countryIdObj = map.get("country_id");
            if (countryIdObj != null) {
                stock.setCountry_id(countryIdObj.toString());
            }
        }
        if (map.containsKey("type")) {
            Object typeObj = map.get("type");
            if (typeObj != null) {
                stock.setType(typeObj.toString());
            }
        }
        if (map.containsKey("Bid")) {
            Object bidObj = map.get("Bid");
            if (bidObj != null) {
                stock.setBid(bidObj.toString());
            }
        }
        if (map.containsKey("Ask")) {
            Object askObj = map.get("Ask");
            if (askObj != null) {
                stock.setAsk(askObj.toString());
            }
        }
        if (map.containsKey("Open")) {
            Object openObj = map.get("Open");
            if (openObj != null) {
                stock.setOpen(openObj.toString());
            }
        }
        if (map.containsKey("PrevLast")) {
            Object prevLastObj = map.get("PrevLast");
            if (prevLastObj != null) {
                stock.setPrevLast(prevLastObj.toString());
            }
        }
        if (map.containsKey("PrevChg")) {
            Object prevChgObj = map.get("PrevChg");
            if (prevChgObj != null) {
                stock.setPrevChg(prevChgObj.toString());
            }
        }
        if (map.containsKey("PrevChgPct")) {
            Object prevChgPctObj = map.get("PrevChgPct");
            if (prevChgPctObj != null) {
                stock.setPrevChgPct(prevChgPctObj.toString());
            }
        }
        if (map.containsKey("PrevPrevClose")) {
            Object prevPrevCloseObj = map.get("PrevPrevClose");
            if (prevPrevCloseObj != null) {
                stock.setPrevPrevClose(prevPrevCloseObj.toString());
            }
        }
        return stock;
    }
}
src/main/java/com/nq/utils/redis/RedisKeyUtil.java
@@ -20,6 +20,7 @@
import java.math.BigDecimal;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Collections;
import java.util.Map;
src/main/java/com/nq/utils/stock/sina/StockApi.java
@@ -1,9 +1,12 @@
package com.nq.utils.stock.sina;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.nq.common.ServerResponse;
import com.nq.pojo.*;
import com.nq.utils.ConverterUtil;
import com.nq.utils.http.HttpClientRequest;
import com.nq.utils.PropertiesUtil;
import com.nq.utils.redis.JsonUtil;
@@ -18,6 +21,7 @@
import java.math.BigDecimal;
import java.util.*;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.codehaus.jackson.type.TypeReference;
import org.slf4j.Logger;
@@ -27,6 +31,7 @@
public class StockApi {
    public static final String sina_url = PropertiesUtil.getProperty("sina.single.stock.url");
    private static final Logger log = LoggerFactory.getLogger(StockApi.class);
    private static final ObjectMapper objectMapper = new ObjectMapper();
    public static List<StockListVO> getStockReailTimes(List<Stock> stocks) {
        if (stocks.size() == 0) {
@@ -38,31 +43,36 @@
            for (int i = 0; i < stocks.size(); i++) {
                Stock stock = stocks.get(i);
                StockRealTimeBean realTimeStock = RedisKeyUtil.getCacheRealTimeStock(stock);
                StockListVO stockListVO = new StockListVO();
                stockListVO.setHcrate(new BigDecimal(realTimeStock.getPcp()));
                stockListVO.setHcrateP(realTimeStock.getPcp()+"%");
                if(realTimeStock.getPcp().contains("-")){
                    stockListVO.setColor(0);
                }else{
                    stockListVO.setColor(1);
                    stockListVO.setHcrateP(realTimeStock.getPcp()+"%");
                }
                stockListVO.setNowPrice(realTimeStock.getLast());
                stockListVO.setToday_max(realTimeStock.getHigh());
                stockListVO.setToday_min(realTimeStock.getLow());
                stockListVO.setOpen_px(realTimeStock.getBid());
                stockListVO.setPreclose_px(realTimeStock.getPc());
                stockListVO.setBusiness_amount(realTimeStock.getAsk());
                stockListVO.setBusiness_balance("");
//                StockRealTimeBean realTimeStock = RedisKeyUtil.getCacheRealTimeStock(stock);
                String s = RedisKeyUtil.doPost(stock.getStockCode(), stock.getStockType());
                if(StringUtils.isNotEmpty(s) && !"[]".equals(s)){
                    Map<String, Object> map = RedisKeyUtil.jsonToMap(s);
                    StockRealTimeDto realTimeStock = StockRealTimeDto.fromMap(map);
                    StockListVO stockListVO = new StockListVO();
                    stockListVO.setHcrate(new BigDecimal(realTimeStock.getChg()));
                    stockListVO.setHcrateP(realTimeStock.getChgPct()+"%");
                    if(realTimeStock.getChgPct().contains("-")){
                        stockListVO.setColor(0);
                    }else{
                        stockListVO.setColor(1);
                        stockListVO.setHcrateP(realTimeStock.getChgPct()+"%");
                    }
                    stockListVO.setNowPrice(realTimeStock.getLast());
                    stockListVO.setToday_max(realTimeStock.getHigh());
                    stockListVO.setToday_min(realTimeStock.getLow());
                    stockListVO.setOpen_px(realTimeStock.getBid());
                    stockListVO.setPreclose_px(realTimeStock.getPrevClose());
                    stockListVO.setBusiness_amount(realTimeStock.getAsk());
                    stockListVO.setBusiness_balance("");
                stockListVO.setName(stock.getStockName());
                stockListVO.setCode(stock.getStockCode());
                stockListVO.setSpell(stock.getStockSpell());
                stockListVO.setGid(stock.getStockGid());
                stockListVO.setStock_plate(stock.getStockPlate());
                stockListVO.setStock_type(stock.getStockType());
                stockListVOs.add(stockListVO);
                    stockListVO.setName(stock.getStockName());
                    stockListVO.setCode(stock.getStockCode());
                    stockListVO.setSpell(stock.getStockSpell());
                    stockListVO.setGid(stock.getStockGid());
                    stockListVO.setStock_plate(stock.getStockPlate());
                    stockListVO.setStock_type(stock.getStockType());
                    stockListVOs.add(stockListVO);
                }
            }