package com.nq.utils.task.stock; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.gson.Gson; import com.nq.dao.*; import com.nq.enums.EStockType; import com.nq.pojo.*; import com.nq.service.IMandatoryLiquidationService; import com.nq.service.IStockService; import com.nq.utils.http.HttpClientRequest; import com.nq.utils.redis.RedisKeyUtil; import com.nq.utils.stock.BuyAndSellUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; @Component public class StockTask { @Autowired IStockService stockService; @Autowired StockMapper stockMapper; @Autowired IMandatoryLiquidationService mandatoryLiquidationService; private static final Logger log = LoggerFactory.getLogger(StockTask.class); /** * 同步系统所需要的股票 * */ // @Scheduled(cron = "0/30 * * * * ?") public void syncINStockData() { loadAllStock(EStockType.IN); // loadAllStock(EStockType.HK); } /** * 同步美国股票 * */ // @Scheduled(cron = "0 0/30 * * * ?") public void loadStockCompanies(){ loadAllCompanies(); } /** * 加载公司信息 * */ public void loadAllCompanies(){ List list = stockMapper.findStockList(); for (int i = 0; i list = new ArrayList<>(); int totleStock = 1; int page =0; try { while (totleStock>list.size()){ try{ String result = HttpClientRequest.doGet(eStockType.stockUrl+"list?country_id="+eStockType.getContryId()+"&size=1000&page="+page+"&key="+eStockType.stockKey); ReponseBase reponseBase = new Gson().fromJson(result,ReponseBase.class); list.addAll(reponseBase.getData()); page++; totleStock = reponseBase.getTotal(); }catch (Exception e){ e.printStackTrace(); break; } } for (DataStockBean o : list) { Stock stock = stockMapper.findStockByCode(o.getId()); if (stock == null) { stock = new Stock(); stock.setStockCode(o.getId()); stock.setStockName(o.getName()); stock.setStockType(eStockType.getCode()); if(o.getType() == null){ stock.setStockGid(eStockType.getCode()); }else{ stock.setStockGid(o.getType()); } stock.setStockSpell(o.getSymbol()); stock.setIsLock(0); stock.setIsShow(0); stock.setDataBase(0); stock.setAddTime(new Date()); stockMapper.insert1(stock); }else{ stock.setStockCode(o.getId()); stock.setStockName(o.getName()); stock.setStockType(eStockType.getCode()); if(o.getType() == null){ stock.setStockGid(eStockType.getCode()); }else{ stock.setStockGid(o.getType()); } stock.setStockSpell(o.getSymbol()); stock.setIsLock(0); stock.setIsShow(0); stock.setDataBase(0); stock.setAddTime(new Date()); stockMapper.updateById(stock); } RedisKeyUtil.setCaCheKeyBaseStock(eStockType,o); } log.info("同步股票 数据 成功 {} 总共同步数据 {}",eStockType.getCode(),list.size()); } catch ( Exception e) { log.error("同步出错", e); } } }