From 4b52b3cc83def6e53bb168594dd500f77c88a68b Mon Sep 17 00:00:00 2001 From: xiaoliuhu Date: Wed, 20 Dec 2023 21:54:35 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/basic/service/StockService.java | 62 ++++++++++++++++++- .../market/infrastructure/db/po/StockPO.java | 1 + .../java/cn/stock/market/utils/Utils.java | 2 +- .../stock/market/web/StockApiController.java | 3 +- 4 files changed, 63 insertions(+), 5 deletions(-) diff --git a/src/main/java/cn/stock/market/domain/basic/service/StockService.java b/src/main/java/cn/stock/market/domain/basic/service/StockService.java index a482f47..b0ffe99 100644 --- a/src/main/java/cn/stock/market/domain/basic/service/StockService.java +++ b/src/main/java/cn/stock/market/domain/basic/service/StockService.java @@ -786,7 +786,8 @@ public class StockService { builder.header(key, value); } } - public void syncIndiaData(){ + + public ServerResponse syncIndiaData(){ log.info("同步股票数据开始。。。。"); Map stockMap = StockRepository.of().cacheCodeMap(); Stopwatch stopwatch = Stopwatch.createStarted(); @@ -835,7 +836,7 @@ public class StockService { if((total - currentTotal) < pageSize ){ pageSize = total - currentTotal; } - if(total == currentTotal){ + if(total <= currentTotal){ break; } pageNum ++; @@ -846,6 +847,63 @@ public class StockService { int count = list.size(); log.info("syncAFutureStockList执行, 受影响数{}, 耗时:{}毫秒", count, stopwatch.elapsed(TimeUnit.MILLISECONDS)); log.info("同步股票数据结束。。。。"); + return ServerResponse.createBySuccess(); + } catch (Exception e) { + log.info("同步股票数据异常,异常信息{}。。。。",e.getMessage()); + return ServerResponse.createByErrorMsg(e.getMessage()); + } + } + public void syncIndiaData2(){ + log.info("同步股票数据开始。。。。"); + Map stockMap = StockRepository.of().cacheCodeMap(); + Stopwatch stopwatch = Stopwatch.createStarted(); + List list = Lists.newArrayList(); + int currentTotal = 0; + int pageNum =1; + int pageSize = 300; + try { + + String str = Utils.readTxt(); + JSONObject jsonObject = JSON.parseObject(str); + JSONArray dataObjArray = JSON.parseArray(jsonObject.get("data").toString()); + for (Object obj : dataObjArray) { + JSONObject jsonObject2 = JSON.parseObject(obj.toString()); + String code = jsonObject2.get("Id").toString(); + String name = jsonObject2.get("Name").toString(); + String stockSymbol = jsonObject2.get("Symbol").toString(); + String exchangeId = jsonObject2.get("ExchangeId").toString(); + String fundamentalMarketCap = null; + if(jsonObject2.containsKey("FundamentalMarketCap") && jsonObject2.get("FundamentalMarketCap") != null){ + fundamentalMarketCap = jsonObject2.get("FundamentalMarketCap").toString(); + } + if (stockMap.containsKey(code)) { + log.info("已经存在 {} 信息, 跳过", code); + continue; + } + + if(! Utils.isShOrSzOrBJ(code)) { + log.info("{} 非 sh 或者 sz 或者 bj , 跳过", code); + continue; + } + Stock stock = new Stock(); + stock.setStockSymbol(stockSymbol); + stock.setStockExchangeId(exchangeId); + stock.setStockName(name); + stock.setStockCode(code); + stock.setIsLock(0); + stock.setIsShow(0); + stock.setAddTime(new Date()); + stock.setStockState(0); + stock.setFundamentalMarketCap(fundamentalMarketCap); + list.add(stock); + } + + if(CollectionUtils.isNotEmpty(list)) { + StockRepository.of().saveAll(list); + } + int count = list.size(); + log.info("syncAFutureStockList执行, 受影响数{}, 耗时:{}毫秒", count, stopwatch.elapsed(TimeUnit.MILLISECONDS)); + log.info("同步股票数据结束。。。。"); } catch (Exception e) { log.info("同步股票数据异常,异常信息{}。。。。",e.getMessage()); } diff --git a/src/main/java/cn/stock/market/infrastructure/db/po/StockPO.java b/src/main/java/cn/stock/market/infrastructure/db/po/StockPO.java index 398dba2..a0a0285 100644 --- a/src/main/java/cn/stock/market/infrastructure/db/po/StockPO.java +++ b/src/main/java/cn/stock/market/infrastructure/db/po/StockPO.java @@ -69,4 +69,5 @@ public class StockPO { String stockExchangeId; String stockSymbol; + String fundamentalMarketCap; } diff --git a/src/main/java/cn/stock/market/utils/Utils.java b/src/main/java/cn/stock/market/utils/Utils.java index 1a0017d..cdd958f 100644 --- a/src/main/java/cn/stock/market/utils/Utils.java +++ b/src/main/java/cn/stock/market/utils/Utils.java @@ -402,7 +402,7 @@ public final class Utils { BufferedReader br = null; StringBuilder buffer = new StringBuilder(); try { - String file = Objects.requireNonNull(Utils.class.getResource("/india.txt")).getPath(); + String file = Objects.requireNonNull(Utils.class.getResource("/2036.txt")).getPath(); fr = new FileReader(file); br = new BufferedReader(fr); diff --git a/src/main/java/cn/stock/market/web/StockApiController.java b/src/main/java/cn/stock/market/web/StockApiController.java index 79b1523..36e9d2b 100644 --- a/src/main/java/cn/stock/market/web/StockApiController.java +++ b/src/main/java/cn/stock/market/web/StockApiController.java @@ -694,7 +694,6 @@ public class StockApiController { @ResponseBody public ServerResponse syncIndiaData() { - stockService.syncIndiaData(); - return ServerResponse.createBySuccess(); + return stockService.syncIndiaData(); } } \ No newline at end of file