package com.nq.utils.task.stock; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.nq.dao.StockMapper; import com.nq.pojo.Stock; import com.nq.utils.HttpClientRequest; import com.nq.utils.stock.pinyin.GetPyByChinese; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.xml.ws.Action; import java.io.UnsupportedEncodingException; import java.lang.reflect.Array; import java.util.Date; /** * @ClassName : StockListTask //类名 启动后执行run * @Description : //描述 * @Author : tf //作者 * @Date: 2022/10/27 16:14 */ @Component @Slf4j public class StockListTask implements ApplicationRunner { @Autowired StockMapper stockMapper; @Autowired StockOthersTask stockOthersTask; // @Override public void run3(ApplicationArguments args) throws Exception { String[] keys = {"hs", "sz", "us", "hk", "bj"}; // for (String key : keys) { try { int num = 0; // Thread.sleep(1000L); for (int y = 1; y < 50; y++) { Thread.sleep(1000L); //总数量 String hs = HttpClientRequest.doGet("http://192.168.10.5/sz_list/?page=" + y); log.info("hs" + hs + "第" + y + "页,长度" + hs.length()); if (hs.length() == 2) { log.info("數據為空"); break; } //Sting 转josnarry JSONArray hsArray = JSONObject.parseArray(hs); num = num + hsArray.size(); log.info("当前页数量" + hsArray.size()); for (int i = 0; i < hsArray.size(); i++) { JSONObject hsjson = JSONObject.parseObject(hsArray.get(i).toString()); Stock stock = stockMapper.selectOne(new QueryWrapper().eq("stock_code", hsjson.getString("stock_code"))); if (stock == null) { stock = new Stock(); stock.setStockCode(hsjson.getString("stock_code")); stock.setStockName(hsjson.getString("stock_name")); stock.setStockType(hsjson.getString("stock_type")); stock.setStockGid(hsjson.getString("stock_gid")); stock.setStockSpell(hsjson.getString("stock_spell")); stock.setIsLock(0); stock.setIsShow(0); stock.setAddTime(new Date()); stockMapper.insert(stock); }else { stock.setStockCode(hsjson.getString("stock_code")); stock.setStockName(hsjson.getString("stock_name")); stock.setStockType(hsjson.getString("stock_type")); stock.setStockGid(hsjson.getString("stock_gid")); stock.setStockSpell(hsjson.getString("stock_spell")); stock.setIsLock(0); stock.setIsShow(0); stock.setAddTime(new Date()); stockMapper.updateById(stock); } } } log.info("数据量" + num); }catch (Exception e) { throw new RuntimeException(e); } } /** * @Description: 股票数据 * @Param: * @return: * @Author: tf * @Date: 2022/11/2 */ // @Override public void run2(ApplicationArguments args) throws Exception { int num = 0; // String[] keys = {"cyb", "kcb"}; // for (String key : keys) { for (int j = 1; j < 34; j++) { // String bj = HttpClientRequest.doGet("https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData?page="+j+"&num=80&sort=symbol&asc=1&node=hs_bjs&symbol=&_s_r_a=page"); String sz = null; try { sz = HttpClientRequest.doGet("https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHKStockData?page=" + j + "&num=80&sort=symbol&asc=1&node=qbgg_hk&_s_r_a=init"); } catch (Exception e) { log.error("请求失败" + e); Thread.sleep(30000L); sz = HttpClientRequest.doGet("https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData?page=" + j + "&num=80&sort=symbol&asc=1&node=qbgg_hk&_s_r_a=init"); } if (sz == null) { log.info("获取完毕,总条数" + num); return; } JSONArray bjArray = JSONObject.parseArray(sz); num = num + bjArray.size(); // log.info("当前页数量" + bjArray.size()); for (Object o : bjArray) { JSONObject hsjson = JSONObject.parseObject(o.toString()); // log.info("第" + i+"条数据:"+hsjson); if (hsjson == null) { continue; } Stock stock = stockMapper.selectOne(new QueryWrapper().eq("stock_code", hsjson.getString("code"))); if (stock == null) { stock = new Stock(); String type = hsjson.getString("symbol").substring(0, 2); String spell = GetPyByChinese.converterToFirstSpell(hsjson.getString("name")); stock.setStockCode(hsjson.getString("symbol")); stock.setStockName(hsjson.getString("name")); stock.setStockType("hk"); stock.setStockGid("hk"+hsjson.getString("symbol")); stock.setStockSpell(spell); stock.setIsLock(0); stock.setIsShow(0); stock.setAddTime(new Date()); stockMapper.insert1(stock); } // else { // if (key.equals("cyb")) { // stock.setStockPlate("创业"); // stockMapper.updateById(stock); // }else { // stock.setStockPlate("科创"); // stockMapper.updateById(stock); // } } } log.info("数据量" + num); } public void run(ApplicationArguments args) throws Exception { // stockOthersTask.HkStockTask(); // stockOthersTask.UsStockTask(); // stockOthersTask.HkIndexTask(); // // log.info("=======================数据加载完毕============================"); } }