1
zj
2024-04-27 a47f9e486847396e5adbdec7a6476a854a38d352
src/main/java/com/nq/service/impl/StockServiceImpl.java
@@ -15,6 +15,7 @@
import com.nq.service.*;
import com.nq.utils.http.HttpClientRequest;
import com.nq.utils.PropertiesUtil;
import com.nq.utils.redis.RedisKeyUtil;
import com.nq.utils.redis.RedisShardedPoolUtils;
import com.nq.utils.stock.pinyin.GetPyByChinese;
import com.nq.utils.stock.qq.QqStockApi;
@@ -160,14 +161,22 @@
    @Override
    public ServerResponse getStockByType(int pageNum, int pageSize, String orderBy, String keyWords, String stockType, HttpServletRequest request) {
        List<Stock> stockList = new ArrayList<>();
        PageHelper.startPage(pageNum, pageSize);
        stockList.addAll(stockMapper.findStockByType(orderBy,stockType,keyWords));
        if(stockType.equals(EStockType.IN.getCode())){
            PageHelper.startPage(pageNum, pageSize);
            stockList.addAll(stockMapper.findStockByType(orderBy,stockType,keyWords));
        }else{
            PageHelper.startPage(pageNum, pageSize);
            stockList.addAll(stockMapper.findStockTypeDz(orderBy,EStockType.IN.getCode(), keyWords));
        }
        List<StockListVO> stockListVOS = Lists.newArrayList();
        if (stockList.size() > 0){
            stockListVOS.addAll(Objects.requireNonNull(StockApi.getStockReailTimes(stockList)));
        }
        for (int i = 0; i <stockListVOS.size() ; i++) {
            stockListVOS.get(i).setNowPrice(iPriceServices.getNowPrice(stockListVOS.get(i).getCode()).toString());
            stockListVOS.get(i).setNowPrice(iPriceServices.getNowPrice(stockListVOS.get(i).getCode(),stockType).toString());
        }
        RPageInfo pageInfo = new RPageInfo();
        pageInfo.setList(stockListVOS);
@@ -175,82 +184,17 @@
        return ServerResponse.createBySuccess(pageInfo);
    }
    public ServerResponse getDateline(HttpServletResponse response, String code) {
        if (StringUtils.isBlank(code))
            return ServerResponse.createByErrorMsg("");
        Stock stock = this.stockMapper.findStockByCode(code);
        if (stock == null)
            return ServerResponse.createByErrorMsg("");
        response.setHeader("Access-Control-Allow-Origin", "*");
        Date time = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String end = sdf.format(time);
        Calendar c = Calendar.getInstance();
        c.setTime(new Date());
        c.add(2, -3);
        Date m = c.getTime();
        String mon = sdf.format(m);
        String methodUrl = "http://q.stock.sohu.com/hisHq?code=cn_" + code + "+&start=" + mon + "&end=" + end + "&stat=1&order=D";
        HttpURLConnection connection = null;
        BufferedReader reader = null;
        String line = null;
        EchartsDataVO echartsDataVO = new EchartsDataVO();
        try {
            URL url = new URL(methodUrl);
            connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.connect();
            if (connection.getResponseCode() == 200) {
                reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "gbk"));
                StringBuilder result = new StringBuilder();
                while ((line = reader.readLine()) != null)
                    result.append(line).append(System.getProperty("line.separator"));
                JSONArray jsonArray = JSONArray.fromObject(result.toString());
                JSONObject json = jsonArray.getJSONObject(0);
                JSONArray jsonArray1 = JSONArray.fromObject(json.get("hq"));
                Collections.reverse((List<?>) jsonArray1);
                double[][] values = (double[][]) null;
                Object[][] volumes = (Object[][]) null;
                String[] date = null;
                values = new double[jsonArray1.size()][5];
                volumes = new Object[jsonArray1.size()][3];
                date = new String[jsonArray1.size()];
                for (int i = 0; i < jsonArray1.size(); i++) {
                    JSONArray js = JSONArray.fromObject(jsonArray1.get(i));
                    date[i] = js.get(0).toString();
                    values[i][0] = Double.valueOf(js.get(1).toString()).doubleValue();
                    values[i][1] = Double.valueOf(js.get(2).toString()).doubleValue();
                    values[i][2] = Double.valueOf(js.get(5).toString()).doubleValue();
                    values[i][3] = Double.valueOf(js.get(6).toString()).doubleValue();
                    values[i][4] = Double.valueOf(js.get(7).toString()).doubleValue();
                    volumes[i][0] = Integer.valueOf(i);
                    volumes[i][1] = Double.valueOf(js.get(7).toString());
                    volumes[i][2] = Integer.valueOf((Double.valueOf(js.get(3).toString()).doubleValue() > 0.0D) ? 1 : -1);
                }
                echartsDataVO.setDate(date);
                echartsDataVO.setValues(values);
                echartsDataVO.setVolumes(volumes);
                echartsDataVO.setStockCode(stock.getStockCode());
                echartsDataVO.setStockName(stock.getStockName());
                ServerResponse.createBySuccess(echartsDataVO);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            connection.disconnect();
        }
        return ServerResponse.createBySuccess(echartsDataVO);
    @Override
    public ServerResponse getDateline(HttpServletResponse paramHttpServletResponse, String paramString) {
        return null;
    }
    public ServerResponse getSingleStock(String code, HttpServletRequest request) {
        if (StringUtils.isBlank(code))
            return ServerResponse.createByErrorMsg("");
        Stock stock = stockMapper.findStockByCode(code);
        DataStockBean cacheBaseStock = RedisKeyUtil.getCacheBaseStock(stock);
        Integer depositAmt = 0;
        String introduction = null;
        StockVO   stockVO = StockApi.assembleInStockVO(stock);
@@ -262,6 +206,10 @@
        stockVO.setName(stock.getStockName());
        stockVO.setSpell(stock.getStockSpell());
        stockVO.setGid(stock.getStockGid().toUpperCase());
        if(null != cacheBaseStock){
            stockVO.setOpen_px(cacheBaseStock.getOpen());
            stockVO.setPreclose_px(cacheBaseStock.getPrevClose());
        }
        Map map = Maps.newHashMap();
        map.put("introduction", introduction);
        map.put("stock", stockVO);
@@ -448,6 +396,9 @@
    @Override
    public Object getKData(String pid, String interval, String stockType) {
        EStockType eStockType = EStockType.getEStockTypeByCode(stockType);
        if(eStockType == EStockType.IN){
            return HttpUtil.get(eStockType.stockUrl+"api/all/getKData.do?pid="+pid+"&interval="+interval+"&stockType=in");
        }
        return  HttpUtil.get(eStockType.stockUrl + "kline?pid=" + pid + "&interval=" + interval + "&key=" + eStockType.stockKey);
    }