1
dd
2026-06-01 64bc81d5f7bd99b470422b329aaca2182b79531c
src/main/java/com/nq/utils/stock/sina/SinaStockApi.java
@@ -37,16 +37,25 @@
    public static String getSinaStock(String stockGid) {
        String sina_result = "";
        try {
//            System.out.println(sina_url + stockGid);
//            sina_result = HttpClientRequest.doGet(sina_url + stockGid);
//            System.out.println("请求返回:"+sina_result);
            System.out.println("http://36.138.182.213:7001/crypto/getSinaStock?stockGid=" + stockGid);
            sina_result = HttpClientRequest.doGet("http://36.138.182.213:7001/crypto/getSinaStock?stockGid=" + stockGid);
            System.out.println("请求返回:"+sina_result);
            System.out.println(PropertiesUtil.getProperty("sina.single.stock.proxy.url") + stockGid);
            sina_result = HttpClientRequest.doGet(PropertiesUtil.getProperty("sina.single.stock.proxy.url") + stockGid);
            System.out.println("请求返回:" + sina_result);
        } catch (Exception e) {
            log.error("获取股票行情出错,错误信息 = {}", e);
            log.error("获取股票行情出错,gid={},错误信息 = {}", stockGid, e);
        }
        return sina_result.substring(sina_result.indexOf("=") + 2);
        if (StringUtils.isBlank(sina_result) || !sina_result.contains("=")) {
            log.warn("新浪行情返回为空或格式异常, gid={}, raw={}", stockGid, StringUtils.abbreviate(sina_result, 200));
            return "";
        }
        String body = sina_result.substring(sina_result.indexOf("=") + 2);
        return body.replace("\"", "").replace(";", "").trim();
    }
    private static String hqField(String[] hqarr, int index) {
        if (hqarr == null || index < 0 || index >= hqarr.length) {
            return "0";
        }
        return StringUtils.defaultIfBlank(hqarr[index], "0");
    }
@@ -197,57 +206,57 @@
    public static StockVO assembleStockVO(String sinaResult) {
        StockVO stockVO = new StockVO();
        if (StringUtils.isBlank(sinaResult)) {
            return stockVO;
        }
        String[] hqarr = sinaResult.split(",");
        if (hqarr.length < 4) {
            log.warn("新浪行情字段不足,无法解析,length={}, raw={}", hqarr.length, StringUtils.abbreviate(sinaResult, 200));
            return stockVO;
        }
        stockVO.setName(hqarr[0]);
        stockVO.setNowPrice(hqarr[3]);
        stockVO.setName(hqField(hqarr, 0));
        stockVO.setNowPrice(hqField(hqarr, 3));
        BigDecimal chang_rate = new BigDecimal("0");
        if ((new BigDecimal(hqarr[2])).compareTo(new BigDecimal("0")) != 0 && new BigDecimal(hqarr[3]).compareTo(new BigDecimal("0")) != 0) {
            chang_rate = (new BigDecimal(hqarr[3])).subtract(new BigDecimal(hqarr[2]));
            chang_rate = chang_rate.multiply(new BigDecimal("100")).divide(new BigDecimal(hqarr[2]), 2, RoundingMode.HALF_UP);
        BigDecimal preclose = new BigDecimal(hqField(hqarr, 2));
        BigDecimal now = new BigDecimal(hqField(hqarr, 3));
        if (preclose.compareTo(BigDecimal.ZERO) != 0 && now.compareTo(BigDecimal.ZERO) != 0) {
            chang_rate = now.subtract(preclose);
            chang_rate = chang_rate.multiply(new BigDecimal("100")).divide(preclose, 2, RoundingMode.HALF_UP);
        }
        stockVO.setHcrate(chang_rate);
        stockVO.setToday_max(hqarr[4]);
        stockVO.setToday_max(hqField(hqarr, 4));
        stockVO.setToday_min(hqField(hqarr, 5));
        stockVO.setBusiness_amount(hqField(hqarr, 8));
        stockVO.setBusiness_balance(hqField(hqarr, 9));
        stockVO.setPreclose_px(hqField(hqarr, 2));
        stockVO.setOpen_px(hqField(hqarr, 1));
        stockVO.setToday_min(hqarr[5]);
        stockVO.setBuy1(hqField(hqarr, 6));
        stockVO.setBuy2(hqField(hqarr, 13));
        stockVO.setBuy3(hqField(hqarr, 15));
        stockVO.setBuy4(hqField(hqarr, 17));
        stockVO.setBuy5(hqField(hqarr, 19));
        stockVO.setBusiness_amount(hqarr[8]);
        stockVO.setSell1(hqField(hqarr, 7));
        stockVO.setSell2(hqField(hqarr, 23));
        stockVO.setSell3(hqField(hqarr, 25));
        stockVO.setSell4(hqField(hqarr, 27));
        stockVO.setSell5(hqField(hqarr, 29));
        stockVO.setBusiness_balance(hqarr[9]);
        stockVO.setBuy1_num(hqField(hqarr, 10));
        stockVO.setBuy2_num(hqField(hqarr, 12));
        stockVO.setBuy3_num(hqField(hqarr, 14));
        stockVO.setBuy4_num(hqField(hqarr, 16));
        stockVO.setBuy5_num(hqField(hqarr, 18));
        stockVO.setPreclose_px(hqarr[2]);
        stockVO.setOpen_px(hqarr[1]);
        stockVO.setBuy1(hqarr[6]);
        stockVO.setBuy2(hqarr[13]);
        stockVO.setBuy3(hqarr[15]);
        stockVO.setBuy4(hqarr[17]);
        stockVO.setBuy5(hqarr[19]);
        stockVO.setSell1(hqarr[7]);
        stockVO.setSell2(hqarr[23]);
        stockVO.setSell3(hqarr[25]);
        stockVO.setSell4(hqarr[27]);
        stockVO.setSell5(hqarr[29]);
        stockVO.setBuy1_num(hqarr[10]);
        stockVO.setBuy2_num(hqarr[12]);
        stockVO.setBuy3_num(hqarr[14]);
        stockVO.setBuy4_num(hqarr[16]);
        stockVO.setBuy5_num(hqarr[18]);
        stockVO.setSell1_num(hqarr[20]);
        stockVO.setSell2_num(hqarr[22]);
        stockVO.setSell3_num(hqarr[24]);
        stockVO.setSell4_num(hqarr[26]);
        stockVO.setSell5_num(hqarr[28]);
        stockVO.setSell1_num(hqField(hqarr, 20));
        stockVO.setSell2_num(hqField(hqarr, 22));
        stockVO.setSell3_num(hqField(hqarr, 24));
        stockVO.setSell4_num(hqField(hqarr, 26));
        stockVO.setSell5_num(hqField(hqarr, 28));
        return stockVO;
    }