| src/main/java/com/nq/pojo/StockRealTimeDto.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/com/nq/utils/redis/RedisKeyUtil.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/pojo/StockRealTimeDto.java
New file @@ -0,0 +1,191 @@ package com.nq.pojo; import lombok.Data; import java.math.BigDecimal; import java.util.Map; /** * @program: dabaogp * @description: * @create: 2026-01-15 19:49 **/ @Data public class StockRealTimeDto { private String Id; private String Name; private String Symbol; private String Last; private String High; private String Low; private String PrevClose; private String Time; private String Volume; private String Chg; private String ChgPct; private String country_id; private String type; private String Bid; private String Ask; private String Open; private String PrevLast; private String PrevChg; private String PrevChgPct; private String PrevPrevClose; /** * 从Map转换的静态方法 */ public static StockRealTimeDto fromMap(Map<String, Object> map) { if (map == null) { return null; } StockRealTimeDto stock = new StockRealTimeDto(); // 逐个字段设置 if (map.containsKey("Id")) { Object idObj = map.get("Id"); if (idObj != null) { stock.setId(idObj.toString()); } } if (map.containsKey("Name")) { Object nameObj = map.get("Name"); if (nameObj != null) { stock.setName(nameObj.toString()); } } if (map.containsKey("Symbol")) { Object symbolObj = map.get("Symbol"); if (symbolObj != null) { stock.setSymbol(symbolObj.toString()); } } if (map.containsKey("Last")) { Object lastObj = map.get("Last"); if (lastObj != null) { stock.setLast(lastObj.toString()); } } if (map.containsKey("High")) { Object highObj = map.get("High"); if (highObj != null) { stock.setHigh(highObj.toString()); } } if (map.containsKey("Low")) { Object lowObj = map.get("Low"); if (lowObj != null) { stock.setLow(lowObj.toString()); } } if (map.containsKey("PrevClose")) { Object prevCloseObj = map.get("PrevClose"); if (prevCloseObj != null) { stock.setPrevClose(prevCloseObj.toString()); } } if (map.containsKey("Time")) { Object timeObj = map.get("Time"); if (timeObj != null) { stock.setTime(timeObj.toString()); } } if (map.containsKey("Volume")) { Object volumeObj = map.get("Volume"); if (volumeObj != null) { stock.setVolume(volumeObj.toString()); } } if (map.containsKey("Chg")) { Object chgObj = map.get("Chg"); if (chgObj != null) { stock.setChg(chgObj.toString()); } } if (map.containsKey("ChgPct")) { Object chgPctObj = map.get("ChgPct"); if (chgPctObj != null) { stock.setChgPct(chgPctObj.toString()); } } if (map.containsKey("country_id")) { Object countryIdObj = map.get("country_id"); if (countryIdObj != null) { stock.setCountry_id(countryIdObj.toString()); } } if (map.containsKey("type")) { Object typeObj = map.get("type"); if (typeObj != null) { stock.setType(typeObj.toString()); } } if (map.containsKey("Bid")) { Object bidObj = map.get("Bid"); if (bidObj != null) { stock.setBid(bidObj.toString()); } } if (map.containsKey("Ask")) { Object askObj = map.get("Ask"); if (askObj != null) { stock.setAsk(askObj.toString()); } } if (map.containsKey("Open")) { Object openObj = map.get("Open"); if (openObj != null) { stock.setOpen(openObj.toString()); } } if (map.containsKey("PrevLast")) { Object prevLastObj = map.get("PrevLast"); if (prevLastObj != null) { stock.setPrevLast(prevLastObj.toString()); } } if (map.containsKey("PrevChg")) { Object prevChgObj = map.get("PrevChg"); if (prevChgObj != null) { stock.setPrevChg(prevChgObj.toString()); } } if (map.containsKey("PrevChgPct")) { Object prevChgPctObj = map.get("PrevChgPct"); if (prevChgPctObj != null) { stock.setPrevChgPct(prevChgPctObj.toString()); } } if (map.containsKey("PrevPrevClose")) { Object prevPrevCloseObj = map.get("PrevPrevClose"); if (prevPrevCloseObj != null) { stock.setPrevPrevClose(prevPrevCloseObj.toString()); } } return stock; } } src/main/java/com/nq/utils/redis/RedisKeyUtil.java
@@ -20,6 +20,7 @@ import java.math.BigDecimal; import java.net.HttpURLConnection; import java.net.URL; import java.util.Collections; import java.util.Map; src/main/java/com/nq/utils/stock/sina/StockApi.java
@@ -1,9 +1,12 @@ package com.nq.utils.stock.sina; import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson2.JSONObject; import com.fasterxml.jackson.databind.ObjectMapper; import com.nq.common.ServerResponse; import com.nq.pojo.*; import com.nq.utils.ConverterUtil; import com.nq.utils.http.HttpClientRequest; import com.nq.utils.PropertiesUtil; import com.nq.utils.redis.JsonUtil; @@ -18,6 +21,7 @@ import java.math.BigDecimal; import java.util.*; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.lang3.StringUtils; import org.codehaus.jackson.type.TypeReference; import org.slf4j.Logger; @@ -27,6 +31,7 @@ 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 final ObjectMapper objectMapper = new ObjectMapper(); public static List<StockListVO> getStockReailTimes(List<Stock> stocks) { if (stocks.size() == 0) { @@ -38,31 +43,36 @@ for (int i = 0; i < stocks.size(); i++) { Stock stock = stocks.get(i); StockRealTimeBean realTimeStock = RedisKeyUtil.getCacheRealTimeStock(stock); StockListVO stockListVO = new StockListVO(); stockListVO.setHcrate(new BigDecimal(realTimeStock.getPcp())); stockListVO.setHcrateP(realTimeStock.getPcp()+"%"); if(realTimeStock.getPcp().contains("-")){ stockListVO.setColor(0); }else{ stockListVO.setColor(1); stockListVO.setHcrateP(realTimeStock.getPcp()+"%"); } stockListVO.setNowPrice(realTimeStock.getLast()); stockListVO.setToday_max(realTimeStock.getHigh()); stockListVO.setToday_min(realTimeStock.getLow()); stockListVO.setOpen_px(realTimeStock.getBid()); stockListVO.setPreclose_px(realTimeStock.getPc()); stockListVO.setBusiness_amount(realTimeStock.getAsk()); stockListVO.setBusiness_balance(""); // StockRealTimeBean realTimeStock = RedisKeyUtil.getCacheRealTimeStock(stock); String s = RedisKeyUtil.doPost(stock.getStockCode(), stock.getStockType()); if(StringUtils.isNotEmpty(s) && !"[]".equals(s)){ Map<String, Object> map = RedisKeyUtil.jsonToMap(s); StockRealTimeDto realTimeStock = StockRealTimeDto.fromMap(map); StockListVO stockListVO = new StockListVO(); stockListVO.setHcrate(new BigDecimal(realTimeStock.getChg())); stockListVO.setHcrateP(realTimeStock.getChgPct()+"%"); if(realTimeStock.getChgPct().contains("-")){ stockListVO.setColor(0); }else{ stockListVO.setColor(1); stockListVO.setHcrateP(realTimeStock.getChgPct()+"%"); } stockListVO.setNowPrice(realTimeStock.getLast()); stockListVO.setToday_max(realTimeStock.getHigh()); stockListVO.setToday_min(realTimeStock.getLow()); stockListVO.setOpen_px(realTimeStock.getBid()); stockListVO.setPreclose_px(realTimeStock.getPrevClose()); stockListVO.setBusiness_amount(realTimeStock.getAsk()); stockListVO.setBusiness_balance(""); stockListVO.setName(stock.getStockName()); stockListVO.setCode(stock.getStockCode()); stockListVO.setSpell(stock.getStockSpell()); stockListVO.setGid(stock.getStockGid()); stockListVO.setStock_plate(stock.getStockPlate()); stockListVO.setStock_type(stock.getStockType()); stockListVOs.add(stockListVO); stockListVO.setName(stock.getStockName()); stockListVO.setCode(stock.getStockCode()); stockListVO.setSpell(stock.getStockSpell()); stockListVO.setGid(stock.getStockGid()); stockListVO.setStock_plate(stock.getStockPlate()); stockListVO.setStock_type(stock.getStockType()); stockListVOs.add(stockListVO); } }