| src/main/java/com/nq/pojo/StockRealTimeBean.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/com/nq/service/impl/PriceServicesImpl.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/com/nq/service/impl/StockServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/com/nq/service/impl/TradingHourServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/com/nq/utils/ApplicationContextRegisterUtil.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/com/nq/utils/stock/sina/StockApi.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/com/nq/ws/WebsocketRunClient.java | ●●●●● patch | view | raw | blame | history |
src/main/java/com/nq/pojo/StockRealTimeBean.java
@@ -21,6 +21,7 @@ private String pc; private String pcp; private String pc_col; private String PrevClose; private String turnover_numeric; private String time; private String timestamp; src/main/java/com/nq/service/impl/PriceServicesImpl.java
@@ -9,6 +9,7 @@ import com.nq.dao.StockDzMapper; import com.nq.dao.StockMapper; import com.nq.dao.StockSettingMapper; import com.nq.dao.StockTimeSettingMapper; import com.nq.enums.EConfigKey; import com.nq.enums.EStockType; import com.nq.pojo.*; @@ -29,6 +30,7 @@ import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.time.LocalDate; import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -51,6 +53,9 @@ @Resource StockDzMapper stockDZMapper; @Resource StockTimeSettingMapper stockTimeSettingMapper; @Override public BigDecimal getNowPrice(String stockCode) { @@ -80,11 +85,29 @@ String s = doPost(stock.getStockCode()); if(null != s) { Map<String, Object> stringObjectMap = jsonToMap(s); return new BigDecimal(stringObjectMap.get("Last").toString()); Boolean b = timeCheck(); if(b){ return new BigDecimal(stringObjectMap.get("Last").toString()); }else{ return new BigDecimal(stringObjectMap.get("PrevClose").toString()); } } return BigDecimal.ZERO; } public Boolean timeCheck() { StockTimeSetting stockTimeSetting = stockTimeSettingMapper.selectOne(new QueryWrapper<StockTimeSetting>().eq("accets_type","US")); if(stockTimeSetting == null){ return false; } if(!stockTimeSetting.getWeekDay().contains(String.valueOf(LocalDate.now().getDayOfWeek().getValue()))){ return false; } return TimeUtil.isTradingHour(stockTimeSetting.getAmStartTime(),stockTimeSetting.getAmEndTime(),stockTimeSetting.getPmStartTime(),stockTimeSetting.getPmEndTime()); } @Override public Map<String, Object> getNewStock(String stockCode) { Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code",stockCode)); src/main/java/com/nq/service/impl/StockServiceImpl.java
@@ -26,6 +26,7 @@ import com.nq.utils.stock.pinyin.GetPyByChinese; import com.nq.utils.stock.qq.QqStockApi; import com.nq.utils.stock.sina.StockApi; import com.nq.utils.timeutil.TimeUtil; import com.nq.utils.translate.GoogleTranslateUtil; import com.nq.vo.stock.*; import com.nq.vo.stock.k.MinDataVO; @@ -38,6 +39,7 @@ import java.net.HttpURLConnection; import java.net.URL; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; @@ -99,6 +101,7 @@ IPriceServices iPriceServices; @Autowired ITradingHourService tradingHourService; public ServerResponse getMarket() { @@ -188,6 +191,9 @@ // return ServerResponse.createBySuccess(pageInfo); // } @Override public ServerResponse getStockByType(int pageNum, int pageSize, String orderBy, String keyWords, String stockType, HttpServletRequest request) { // 启动分页 src/main/java/com/nq/service/impl/TradingHourServiceImpl.java
@@ -84,21 +84,17 @@ @Override public Boolean isPreMarket(String stockCode) { // 查询该股票的特定时间设置 StockSetting stockSetting = stockSettingMapper.selectOne(new QueryWrapper<StockSetting>().eq("stock_code",stockCode)); boolean res = timeCheckNoPreMarket(); if(!res){ if(stockSetting!= null){ // 说明进入盘前交易或者盘后交易时间 Date newDate = new Date(); DateTime startTime = DateUtil.parseDateTime(stockSetting.getStartTime()); DateTime endTime = DateUtil.parseDateTime(stockSetting.getEndTime()); if(newDate.after(startTime) && newDate.before(endTime)){ return true; } if(stockSetting!= null){ // 说明进入盘前交易或者盘后交易时间 Date newDate = new Date(); DateTime startTime = DateUtil.parseDateTime(stockSetting.getStartTime()); DateTime endTime = DateUtil.parseDateTime(stockSetting.getEndTime()); if(newDate.after(startTime) && newDate.before(endTime)){ return true; } } return false; return false; } public Boolean timeCheckNoPreMarket() { src/main/java/com/nq/utils/ApplicationContextRegisterUtil.java
@@ -3,20 +3,22 @@ import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @Component @Lazy(false) public class ApplicationContextRegisterUtil implements ApplicationContextAware { private static ApplicationContext APPLICATION_CONTEXT; public class ApplicationContextRegisterUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { APPLICATION_CONTEXT = applicationContext; ApplicationContextRegisterUtil.applicationContext = applicationContext; } public static ApplicationContext getApplicationContext() { return APPLICATION_CONTEXT; public static <T> T getBean(Class<T> clazz) { return applicationContext.getBean(clazz); } public static Object getBean(String name) { return applicationContext.getBean(name); } } src/main/java/com/nq/utils/stock/sina/StockApi.java
@@ -1,14 +1,20 @@ package com.nq.utils.stock.sina; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.nq.common.ServerResponse; import com.nq.dao.StockTimeSettingMapper; import com.nq.pojo.*; import com.nq.utils.ApplicationContextRegisterUtil; import com.nq.utils.http.HttpClientRequest; import com.nq.utils.PropertiesUtil; import com.nq.utils.redis.JsonUtil; import com.nq.utils.redis.RedisKeyUtil; import com.nq.utils.stock.sina.vo.SinaStockMinData; import com.nq.utils.timeutil.TimeUtil; import com.nq.vo.stock.StockListVO; import com.nq.vo.stock.StockUsVO; import com.nq.vo.stock.StockVO; @@ -16,17 +22,25 @@ import com.nq.vo.stock.k.echarts.EchartsDataVO; import java.math.BigDecimal; import java.time.LocalDate; import java.util.*; import org.apache.commons.lang3.StringUtils; import org.codehaus.jackson.type.TypeReference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; import javax.annotation.Resource; public class StockApi { public static final String sina_url = PropertiesUtil.getProperty("sina.single.stock.url"); private static final Logger log = LoggerFactory.getLogger(StockApi.class); private static StockTimeSettingMapper getStockTimeSettingMapper() { return ApplicationContextRegisterUtil.getBean(StockTimeSettingMapper.class); } public static List<StockListVO> getStockReailTimes(List<Stock> stocks) { if (stocks.size() == 0) { @@ -46,7 +60,13 @@ stockListVO.setColor(1); stockListVO.setHcrateP(realTimeStock.getPcp()+"%"); } stockListVO.setNowPrice(realTimeStock.getLast()); Boolean b = timeCheck(stock.getStockCode()); if(b){ stockListVO.setNowPrice(realTimeStock.getLast()); }else{ stockListVO.setNowPrice(realTimeStock.getPrevClose()); } stockListVO.setToday_max(realTimeStock.getHigh()); stockListVO.setToday_min(realTimeStock.getLow()); stockListVO.setOpen_px(realTimeStock.getBid()); @@ -71,6 +91,18 @@ return stockListVOs; } public static Boolean timeCheck(String stockCode) { StockTimeSettingMapper stockTimeSettingMapper = getStockTimeSettingMapper(); StockTimeSetting stockTimeSetting = stockTimeSettingMapper.selectOne(new QueryWrapper<StockTimeSetting>().eq("accets_type","US")); if(stockTimeSetting == null){ return false; } if(!stockTimeSetting.getWeekDay().contains(String.valueOf(LocalDate.now().getDayOfWeek().getValue()))){ return false; } return TimeUtil.isTradingHour(stockTimeSetting.getAmStartTime(),stockTimeSetting.getAmEndTime(),stockTimeSetting.getPmStartTime(),stockTimeSetting.getPmEndTime()); } /** * 对接印度股票 src/main/java/com/nq/ws/WebsocketRunClient.java
@@ -8,7 +8,6 @@ import com.nq.pojo.StockRealTimeBean; import com.nq.service.IMandatoryLiquidationService; import com.nq.service.impl.MandatoryLiquidationService; import com.nq.utils.ApplicationContextRegisterUtil; import com.nq.utils.redis.RedisKeyUtil; import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpResponse;