| | |
| | | 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.HttpClientRequest; |
| | | import com.nq.utils.http.HttpClientRequest; |
| | | import com.nq.utils.redis.RedisKeyUtil; |
| | | import com.nq.utils.stock.BuyAndSellUtils; |
| | | import org.slf4j.Logger; |
| | |
| | | StockMapper stockMapper; |
| | | |
| | | |
| | | @Autowired |
| | | IMandatoryLiquidationService mandatoryLiquidationService; |
| | | |
| | | |
| | | |
| | | private static final Logger log = LoggerFactory.getLogger(StockTask.class); |
| | |
| | | } |
| | | |
| | | |
| | | //每隔一个小时请求一次 同步印度股票 |
| | | @Scheduled(cron = "0 0 0/1 * * ?") |
| | | /** |
| | | * 同步系统所需要的股票 |
| | | * */ |
| | | @Scheduled(cron = "0 0/3 * * * ?") |
| | | public void syncINStockData() { |
| | | loadAllStock(EStockType.IN); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 同步美国股票 |
| | | * */ |
| | | @Scheduled(cron = "0 0 0/1 * * ?") |
| | | public void synsUSStockData(){ |
| | | loadAllStock(EStockType.US); |
| | | loadAllStock(EStockType.MAS); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 同步美国股票 |
| | | * */ |
| | | @Scheduled(cron = "0 0/5 * * * ?") |
| | | @Scheduled(cron = "0 0/30 * * * ?") |
| | | public void loadStockCompanies(){ |
| | | loadAllCompanies(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | |
| | | for (int i = 0; i <list.size() ; i++) { |
| | | Stock stock = list.get(i); |
| | | EStockType eStockType = EStockType.getEStockTypeByCode(stock.getStockType()); |
| | | String result = HttpClientRequest.doGet(eStockType.stockUrl+"companies?pid=+"+stock.getStockCode()+"+country_id="+eStockType.getContryId()+"&size=1000&page=1&key="+eStockType.stockKey); |
| | | log.info(" 公司信息返回{}",result); |
| | | String result = HttpClientRequest.doGet(eStockType.stockUrl+"companies?pid=+"+stock.getStockCode()+"+country_id="+eStockType.getContryId()+"&size=1&page=1&key="+eStockType.stockKey); |
| | | try { |
| | | JSONObject jsonObject = JSONObject.parseObject(result); |
| | | JSONObject companiesInfo = jsonObject.getJSONArray("data").getJSONObject(0); |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 加载所有股票数据 |
| | |
| | | }else{ |
| | | stock.setStockSpell(o.getTicker()); |
| | | } |
| | | |
| | | stock.setIsLock(0); |
| | | stock.setIsShow(0); |
| | | stock.setDataBase(0); |
| | |
| | | * 每3分钟同步一次数据源到数据库 |
| | | * |
| | | */ |
| | | @Scheduled(cron = "0 0/1 * * * ?") |
| | | @Scheduled(cron = "0/3 * * * * ?") |
| | | public void sysnInstockData(){ |
| | | List<Stock> list = stockMapper.findStockList(); |
| | | if(list.size()>0){ |
| | | for (int i = 0; i < list.size(); i++) { |
| | | try { |
| | | Stock stock = list.get(i); |
| | | StockRealTimeBean stockDetailBean = RedisKeyUtil.getCacheRealTimeStock(stock); |
| | | stock.setIncreaseRatio(new BigDecimal(stockDetailBean.getPcp().replace("%",""))); |
| | | stockMapper.updateById(stock); |
| | | }catch (Exception e){ |
| | | QueryWrapper<Stock> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("stock_type",EStockType.SZHB.getCode()); |
| | | List<Stock> stockList = stockMapper.selectList(queryWrapper); |
| | | for (int i = 0; i < stockList.size(); i++) { |
| | | try { |
| | | String hdataString = HttpClientRequest.doGet(EStockType.SZHB.stockUrl+"market/detail?symbol="+stockList.get(i).getStockCode()); |
| | | HBData hbData = new Gson().fromJson(hdataString,HBData.class); |
| | | StockRealTimeBean stockRealTimeBean = new StockRealTimeBean(); |
| | | stockRealTimeBean.setLast(hbData.getTick().getClose()+""); |
| | | stockRealTimeBean.setHigh(hbData.getTick().getHigh()+""); |
| | | stockRealTimeBean.setPid(stockList.get(i).getStockCode()); |
| | | stockRealTimeBean.setLow(hbData.getTick().getLow()+""); |
| | | stockRealTimeBean.setBid(hbData.getTick().getOpen()+""); |
| | | stockRealTimeBean.setLast_close("0.00"); |
| | | BigDecimal sss = (new BigDecimal(hbData.getTick().getClose()).subtract(new BigDecimal(hbData.getTick().getOpen()))); |
| | | sss = sss.divide(new BigDecimal(hbData.getTick().getOpen()),BigDecimal.ROUND_CEILING); |
| | | stockRealTimeBean.setPcp(sss.setScale(2,BigDecimal.ROUND_UP).toString()); |
| | | mandatoryLiquidationService.RealTimeDataProcess(EStockType.SZHB,stockRealTimeBean); |
| | | }catch (Exception e){ |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | } |