package com.nq.utils.stock.qq; import com.nq.common.ServerResponse; import com.nq.pojo.Stock; import com.nq.pojo.StockFutures; import com.nq.pojo.StockIndex; import com.nq.utils.HttpClientRequest; import com.nq.utils.PropertiesUtil; import com.nq.utils.redis.JsonUtil; import com.nq.utils.stock.sina.SinaStockApi; import com.nq.utils.stock.sina.vo.SinaStockMinData; import com.nq.vo.stock.k.MinDataVO; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.lang3.StringUtils; import org.codehaus.jackson.type.TypeReference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.BufferedReader; import java.io.InputStreamReader; import java.math.BigDecimal; import java.net.HttpURLConnection; import java.net.URL; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; public class QqStockApi { public static final String qq_url = PropertiesUtil.getProperty("qq.k.min.url"); private static final Logger log = LoggerFactory.getLogger(SinaStockApi.class); public static ServerResponse getGpStockDayK(Stock stock) { String minUrl = PropertiesUtil.getProperty("qq.k.min.url"); minUrl = minUrl.replace("code",stock.getStockGid()); String hqstr = ""; try { hqstr = HttpClientRequest.doGet(minUrl); } catch (Exception e) { log.error("獲取股票K線分時圖出錯,錯誤信息 = {}", e); } log.info(" qq-code = {} ", stock.getStockGid()); if (StringUtils.isBlank(hqstr)) { return ServerResponse.createByErrorMsg("沒有查詢到行情數據","en"); } String qqstr = hqstr.split("=")[1].replace("\";","").replace("\\n\\",",").replace("\n","").replace("\"",""); String[] liststr = qqstr.split(","); List list = new ArrayList<>(); for (int i = 1; isize){ list = list.subList((list.size()-size-1),list.size()); } MinDataVO minDataVO = new MinDataVO(); minDataVO.setStockName(stock.getStockName()); minDataVO.setStockCode(stock.getStockCode()); minDataVO.setGid(stock.getStockGid()); minDataVO.setData(list); return ServerResponse.createBySuccess(minDataVO); } public static ServerResponse getQqStockDayK(StockFutures stock) { String minUrl = PropertiesUtil.getProperty("sina.futures.day.min.url"); minUrl = minUrl.replace("{code}",stock.getFuturesCode()); SimpleDateFormat df = new SimpleDateFormat("yyyy_MM_dd");//設置日期格式 minUrl = minUrl.replace("{date}",df.format(new Date())); String hqstr = ""; try { hqstr = HttpClientRequest.doGet(minUrl); } catch (Exception e) { log.error("獲取股票K線分時圖出錯,錯誤信息 = {}", e); } log.info(" 期貨日線-code = {} ", stock.getFuturesGid()); if (StringUtils.isBlank(hqstr)) { return ServerResponse.createByErrorMsg("沒有查詢到行情數據","en"); } hqstr = hqstr.split("\\(")[1].replace(");",""); hqstr = hqstr.replaceAll("date","day"); hqstr = hqstr.replaceAll("\"\"", "\""); List list = (List) JsonUtil.string2Obj(hqstr, new TypeReference>(){}); int size = Integer.valueOf(PropertiesUtil.getProperty("sina.futures.day.min.max.size")); if(list.size()>size){ list = list.subList((list.size()-size-1),list.size()); } MinDataVO minDataVO = new MinDataVO(); minDataVO.setStockName(stock.getFuturesName()); minDataVO.setStockCode(stock.getFuturesCode()); minDataVO.setGid(stock.getFuturesGid()); minDataVO.setData(list); return ServerResponse.createBySuccess(minDataVO); } /*指數日線*/ public static ServerResponse getQqIndexDayK(StockIndex stock) { String minUrl = PropertiesUtil.getProperty("sina.index.day.min.url"); minUrl = minUrl.replace("{code}",stock.getIndexGid()); SimpleDateFormat df = new SimpleDateFormat("yyyy_MM_dd");//設置日期格式 minUrl = minUrl.replace("{date}",df.format(new Date())); String hqstr = ""; try { hqstr = HttpClientRequest.doGet(minUrl); } catch (Exception e) { log.error("獲取股票K線分時圖出錯,錯誤信息 = {}", e); } log.info(" 指數日線-code = {} ", stock.getIndexGid()); if (StringUtils.isBlank(hqstr)) { return ServerResponse.createByErrorMsg("沒有查詢到行情數據","en"); } hqstr = hqstr.split(":\\[\\[")[1]; hqstr = hqstr.split("]]")[0].replace("],[",";"); String[] liststr = hqstr.split(";"); List list = new ArrayList<>(); for (int i = 1; i getGpStockMonthK1(Stock stock,String type) { String minUrl = PropertiesUtil.getProperty("qq.month.min.url"); minUrl = minUrl.replace("sz300750",stock.getStockGid()); minUrl = minUrl.replace("month",type); String hqstr = ""; try { hqstr = HttpClientRequest.doGet(minUrl); hqstr = hqstr.replace("qfqday","day"); } catch (Exception e) { log.error("獲取股票K線分時圖出錯,錯誤信息 = {}", e); } log.info(" qq-code = {} ", stock.getStockGid()); if (StringUtils.isBlank(hqstr)) { return ServerResponse.createByErrorMsg("沒有查詢到行情數據","en"); } //String qqstr = hqstr.split("=")[1]; JSONObject json = JSONObject.fromObject(hqstr); JSONObject data = json.getJSONObject("data"); JSONObject listjson = data.getJSONObject(stock.getStockGid()); JSONArray jsonArray = listjson.getJSONArray(type); List list = new ArrayList<>(); for (int i = 0; i50){ list = list.subList((list.size()-50),list.size()); } MinDataVO minDataVO = new MinDataVO(); minDataVO.setStockName(stock.getStockName()); minDataVO.setStockCode(stock.getStockCode()); minDataVO.setGid(stock.getStockGid()); minDataVO.setData(list); return ServerResponse.createBySuccess(minDataVO); } public static ServerResponse getGpStockMonthK(Stock stock,String type) { String minUrl = PropertiesUtil.getProperty("qq.month.min.url"); minUrl = minUrl.replace("sz300750",stock.getStockGid()); minUrl = minUrl.replace("month",type); String hqstr = ""; try { hqstr = HttpClientRequest.doGet(minUrl); hqstr = hqstr.replace("qfqday","day"); } catch (Exception e) { log.error("獲取股票K線分時圖出錯,錯誤信息 = {}", e); } log.info(" qq-code = {} ", stock.getStockGid()); if (StringUtils.isBlank(hqstr)) { return ServerResponse.createByErrorMsg("沒有查詢到行情數據","en"); } //String qqstr = hqstr.split("=")[1]; JSONObject json = JSONObject.fromObject(hqstr); JSONObject data = json.getJSONObject("data"); JSONObject listjson = data.getJSONObject(stock.getStockGid()); JSONArray jsonArray = listjson.getJSONArray(type); List list = new ArrayList<>(); for (int i = 0; i50){ list = list.subList((list.size()-50),list.size()); } MinDataVO minDataVO = new MinDataVO(); minDataVO.setStockName(stock.getStockName()); minDataVO.setStockCode(stock.getStockCode()); minDataVO.setGid(stock.getStockGid()); minDataVO.setData(list); return ServerResponse.createBySuccess(minDataVO); } }