| | |
| | | import com.nq.service.*; |
| | | import com.nq.utils.http.HttpClientRequest; |
| | | import com.nq.utils.PropertiesUtil; |
| | | import com.nq.utils.http.HttpRequest; |
| | | import com.nq.utils.redis.RedisKeyUtil; |
| | | import com.nq.utils.redis.RedisShardedPoolUtils; |
| | | import com.nq.utils.stock.pinyin.GetPyByChinese; |
| | |
| | | import com.nq.vo.stock.k.MinDataVO; |
| | | import com.nq.vo.stock.k.echarts.EchartsDataVO; |
| | | |
| | | import java.lang.reflect.Type; |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | import javax.annotation.Resource; |
| | |
| | | String inCodeList = PropertiesUtil.getProperty("in_home_indices_code"); |
| | | String twCodeList = PropertiesUtil.getProperty("tw_home_indices_code"); |
| | | |
| | | List<String> usStockCodeList = Arrays.asList(usCodeList.split(",")); |
| | | List<String> hkStockCodeList = Arrays.asList(hkCodeList.split(",")); |
| | | List<String> inStockCodeList = Arrays.asList(inCodeList.split(",")); |
| | | List<String> twStockCodeList = Arrays.asList(twCodeList.split(",")); |
| | | |
| | | List<DataStockBean> usDataStockBeans = Lists.newArrayList(); |
| | | List<DataStockBean> hkDataStockBeans = Lists.newArrayList(); |
| | | List<DataStockBean> inDataStockBeans = Lists.newArrayList(); |
| | |
| | | Gson gson = new Gson(); |
| | | |
| | | // 统一处理各地区股票数据 |
| | | processStockData(usStockCodeList, EStockType.US.getCode(), usDataStockBeans, gson); |
| | | processStockData(hkStockCodeList, EStockType.HK.getCode(), hkDataStockBeans, gson); |
| | | processStockData(inStockCodeList, EStockType.IN.getCode(), inDataStockBeans, gson); |
| | | processStockData(twStockCodeList, EStockType.TW.getCode(), twDataStockBeans, gson); |
| | | processStockData(usCodeList, EStockType.US.getCode(), usDataStockBeans, gson); |
| | | processStockData(hkCodeList, EStockType.HK.getCode(), hkDataStockBeans, gson); |
| | | processStockData(inCodeList, EStockType.IN.getCode(), inDataStockBeans, gson); |
| | | processStockData(twCodeList, EStockType.TW.getCode(), twDataStockBeans, gson); |
| | | |
| | | // 组装返回结果 |
| | | Map<String, Object> resultMap = new HashMap<>(); |
| | |
| | | } |
| | | |
| | | // 提取的通用处理方法 |
| | | private void processStockData(List<String> stockCodeList, String stockType, |
| | | List<DataStockBean> targetList, Gson gson) { |
| | | private void processStockData(String stockCodes, String stockType, |
| | | List<DataStockBean> targetList, Gson gson) throws Exception { |
| | | String[] stockCodeList = stockCodes.split(","); |
| | | //实时获取数据 |
| | | //String result = RedisKeyUtil.doPost(stockCodes, stockType); |
| | | EStockType eStockType = EStockType.getEStockTypeByCode(stockType); |
| | | String result = HttpRequest.doGrabGet(eStockType.stockUrl + "indices?key=" + eStockType.getStockKey() + "&country_id=" + eStockType.getContryId()); |
| | | // 把JSON数据解析为List<DataStockBean> |
| | | Type listType = new TypeToken<List<DataStockBean>>(){}.getType(); |
| | | List<DataStockBean> list = new Gson().fromJson(result, listType); |
| | | |
| | | for (String stockCode : stockCodeList) { // 增强for循环简化代码 |
| | | // 获取基础股票数据 |
| | | DataStockBean cacheBaseStock = RedisKeyUtil.getCacheBaseStock(stockType, stockCode); |
| | | //DataStockBean cacheBaseStock = RedisKeyUtil.getCacheBaseStock(stockType, stockCode); |
| | | DataStockBean cacheBaseStock = list.stream() |
| | | .filter(x -> stockCode.equals(x.getId())) |
| | | .findFirst().orElse(null); |
| | | if (cacheBaseStock == null) { // 增加空指针防护(可选,根据实际业务) |
| | | continue; |
| | | } |
| | |
| | | stockType = stock.getStockType(); |
| | | Map<String, Object> resultMap = new HashMap<>(); |
| | | |
| | | //实时获取数据 |
| | | String s = RedisKeyUtil.doPost(pid, stockType); |
| | | Map<String, Object> stringObjectMap = RedisKeyUtil.jsonToMap(s); |
| | | resultMap.put("id", pid); |