From 9e8557ce8e7ab694f21a9386cb61973c4ed31569 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Thu, 15 Jan 2026 20:46:43 +0800
Subject: [PATCH] 1
---
src/main/java/com/nq/utils/stock/sina/StockApi.java | 58 ++++++----
src/main/java/com/nq/utils/redis/RedisKeyUtil.java | 1
src/main/java/com/nq/pojo/StockRealTimeDto.java | 191 ++++++++++++++++++++++++++++++++++++++
3 files changed, 226 insertions(+), 24 deletions(-)
diff --git a/src/main/java/com/nq/pojo/StockRealTimeDto.java b/src/main/java/com/nq/pojo/StockRealTimeDto.java
new file mode 100644
index 0000000..9ab3240
--- /dev/null
+++ b/src/main/java/com/nq/pojo/StockRealTimeDto.java
@@ -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;
+ }
+}
diff --git a/src/main/java/com/nq/utils/redis/RedisKeyUtil.java b/src/main/java/com/nq/utils/redis/RedisKeyUtil.java
index 788075d..bd469f1 100644
--- a/src/main/java/com/nq/utils/redis/RedisKeyUtil.java
+++ b/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;
diff --git a/src/main/java/com/nq/utils/stock/sina/StockApi.java b/src/main/java/com/nq/utils/stock/sina/StockApi.java
index 50574ab..dd31700 100644
--- a/src/main/java/com/nq/utils/stock/sina/StockApi.java
+++ b/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);
+ }
}
--
Gitblit v1.9.3