diff --git a/script/src/main/java/com/xiang/xservice/fwd/schedule/PullDataFromFWDJob.java b/script/src/main/java/com/xiang/xservice/fwd/schedule/PullDataFromFWDJob.java index 20d59b4..69ebbea 100644 --- a/script/src/main/java/com/xiang/xservice/fwd/schedule/PullDataFromFWDJob.java +++ b/script/src/main/java/com/xiang/xservice/fwd/schedule/PullDataFromFWDJob.java @@ -87,196 +87,204 @@ public class PullDataFromFWDJob { i++; BaseRequest request = new BaseRequest(); request.setCurrent(i); - request.setPageSize(10 * i); - ProjectsResp showProjectsFromHttp = performServiceHttp.getShowProjectsFromHttp(request); - if (Objects.isNull(showProjectsFromHttp)) { - return; - } - if (CollectionUtils.isEmpty(showProjectsFromHttp.getList())) { - break; - } - List projectList = showProjectsFromHttp.getList(); + request.setPageSize(50); + try { + ProjectsResp showProjectsFromHttp = performServiceHttp.getShowProjectsFromHttp(request); + if (Objects.isNull(showProjectsFromHttp)) { + return; + } + if (CollectionUtils.isEmpty(showProjectsFromHttp.getList())) { + break; + } + List projectList = showProjectsFromHttp.getList(); - List futureList = Lists.newArrayList(); - for (ProjectList project : projectList) { - CompletableFuture future = CompletableFuture.runAsync(() -> { - ProjectInfoResp projectInfoFromHttp = performServiceHttp.getProjectInfoFromHttp(project.getProjectId()); - Perform performsByProjectIdFromHttp = performServiceHttp.getPerformsByProjectIdFromHttp(project.getProjectId()); - if (Objects.nonNull(projectInfoFromHttp) && Objects.nonNull(performsByProjectIdFromHttp)) { - FPerformProjectInfo projectInfo = performProjectInfoMapper.getProjectByProjectId(project.getProjectId()); - if (Objects.nonNull(projectInfo)) { - // 更新projectInfo的信息 - projectInfo.setNameDisplay(projectInfoFromHttp.getNameDisplay()); - projectInfo.setStatus(projectInfoFromHttp.getStatus()); - projectInfo.setProjectSource(projectInfoFromHttp.getProjectSource()); - projectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat()); - projectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat()); - projectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice()); - if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectStartDate())) { - projectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate())); - } - if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectEndDate())) { - projectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate())); - } - projectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName()); - projectInfo.setProjectName(project.getName()); - projectInfo.setBizId(project.getBizId()); - projectInfo.setTagName(project.getTagName()); - projectInfo.setTagRemark(project.getTagRemark()); - projectInfo.setProjectCity(project.getCity()); - projectInfo.setShortCity(project.getShortCity()); - projectInfo.setVenueName(project.getVenueName()); - projectInfo.setLowestPrice(project.getLowestPrice()); - if (StringUtils.isNotBlank(projectInfoFromHttp.getPreSaleTime())) { - projectInfo.setPreSaleTime(DateUtils.getDateTimeFromStr(projectInfoFromHttp.getPreSaleTime())); - } - performProjectInfoMapper.update(projectInfo); - List fPerformSeatInfoInsertList = Lists.newArrayList(); - if (CollectionUtils.isNotEmpty(performsByProjectIdFromHttp.getPerformInfos())) { - for (PerformInfo performInfo : performsByProjectIdFromHttp.getPerformInfos()) { - if (CollectionUtils.isNotEmpty(performInfo.getPerformInfo())) { - for (PerformDetail performDetail : performInfo.getPerformInfo()) { - if (CollectionUtils.isNotEmpty(performDetail.getSeatPlans())) { + List futureList = Lists.newArrayList(); + for (ProjectList project : projectList) { + CompletableFuture future = CompletableFuture.runAsync(() -> { + ProjectInfoResp projectInfoFromHttp = performServiceHttp.getProjectInfoFromHttp(project.getProjectId()); + Perform performsByProjectIdFromHttp = performServiceHttp.getPerformsByProjectIdFromHttp(project.getProjectId()); + if (Objects.nonNull(projectInfoFromHttp) && Objects.nonNull(performsByProjectIdFromHttp)) { + FPerformProjectInfo projectInfo = performProjectInfoMapper.getProjectByProjectId(project.getProjectId()); + if (Objects.nonNull(projectInfo)) { + // 更新projectInfo的信息 + projectInfo.setNameDisplay(projectInfoFromHttp.getNameDisplay()); + projectInfo.setStatus(projectInfoFromHttp.getStatus()); + projectInfo.setProjectSource(projectInfoFromHttp.getProjectSource()); + projectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat()); + projectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat()); + projectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice()); + if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectStartDate())) { + projectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate())); + } + if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectEndDate())) { + projectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate())); + } + projectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName()); + projectInfo.setProjectName(project.getName()); + projectInfo.setBizId(project.getBizId()); + projectInfo.setTagName(project.getTagName()); + projectInfo.setTagRemark(project.getTagRemark()); + projectInfo.setProjectCity(project.getCity()); + projectInfo.setShortCity(project.getShortCity()); + projectInfo.setVenueName(project.getVenueName()); + projectInfo.setLowestPrice(project.getLowestPrice()); + if (StringUtils.isNotBlank(projectInfoFromHttp.getPreSaleTime())) { + projectInfo.setPreSaleTime(DateUtils.getDateTimeFromStr(projectInfoFromHttp.getPreSaleTime())); + } + performProjectInfoMapper.update(projectInfo); + List fPerformSeatInfoInsertList = Lists.newArrayList(); + if (CollectionUtils.isNotEmpty(performsByProjectIdFromHttp.getPerformInfos())) { + for (PerformInfo performInfo : performsByProjectIdFromHttp.getPerformInfos()) { + if (CollectionUtils.isNotEmpty(performInfo.getPerformInfo())) { + for (PerformDetail performDetail : performInfo.getPerformInfo()) { + if (CollectionUtils.isNotEmpty(performDetail.getSeatPlans())) { - List seatPlanIds = performDetail.getSeatPlans().stream().map(SeatPlan::getSeatPlanId).toList(); - Map seatMap = getSeatMap(seatPlanIds); - if (MapUtils.isEmpty(seatMap)) continue; - for (SeatPlan seatPlan : performDetail.getSeatPlans()) { - if (!seatMap.containsKey(seatPlan.getSeatPlanId())) { - continue; - } - FPerformSeatInfo fPerformSeatInfo = new FPerformSeatInfo(); - fPerformSeatInfo.setSeatPlanId(seatPlan.getSeatPlanId()); - fPerformSeatInfo.setSeatPlanName(seatPlan.getSeatPlanName()); - fPerformSeatInfo.setPerformId(seatPlan.getPerformId()); - fPerformSeatInfo.setPerformName(seatPlan.getPerformName()); - fPerformSeatInfo.setStopSale(seatPlan.getStopSale()); - fPerformSeatInfo.setShelfStatus(seatPlan.getShelfStatus()); - fPerformSeatInfo.setPrice(seatPlan.getPrice()); - fPerformSeatInfo.setDiscountPrice(seatPlan.getDiscountPrice()); - fPerformSeatInfo.setSubStatus(seatPlan.getSubStatus()); - fPerformSeatInfo.setQuantity(seatPlan.getQuantity()); - fPerformSeatInfo.setStatus(seatPlan.getStatus()); - fPerformSeatInfo.setMaxSellStock(seatPlan.getMaxSellStock()); - fPerformSeatInfo.setSoldStock(seatPlan.getSoldStock()); - fPerformSeatInfo.setLeftStock(seatPlan.getLeftStock()); - fPerformSeatInfo.setAbleSaleQuantity(seatPlan.getAbleSaleQuantity()); - fPerformSeatInfo.setAshShow(seatPlan.getAshShow()); - fPerformSeatInfo.setAshShowDesc(seatPlan.getAshShow()); - fPerformSeatInfo.setSelectable(seatPlan.getSelectable()); - fPerformSeatInfo.setDisplay(seatPlan.getDisplay()); - fPerformSeatInfo.setAvailableTicketQuantity(seatPlan.getAvailableTicketQuantity()); - fPerformSeatInfo.setAvailableAllTicketQuantity(seatPlan.getAvailableAllTicketQuantity()); - if (StringUtils.isNotBlank(seatPlan.getSaleTime())) { - fPerformSeatInfo.setSaleTime(DateUtils.getTimeFromStr(seatPlan.getSaleTime())); - } - fPerformSeatInfo.setProjectId(project.getProjectId()); - fPerformSeatInfo.setSoldOut(seatMap.get(seatPlan.getSeatPlanId()) ? 1 : 0); - FPerformSeatInfo seatInfo = performSeatInfoMapper.getPerformSeatInfoBySeatIdAndPerformIdAndProjectId(fPerformSeatInfo.getSeatPlanId(), fPerformSeatInfo.getPerformId(), project.getProjectId()); - if (Objects.nonNull(seatInfo)) { - fPerformSeatInfo.setId(seatInfo.getId()); - performSeatInfoMapper.update(fPerformSeatInfo); - } else { - fPerformSeatInfoInsertList.add(fPerformSeatInfo); + List seatPlanIds = performDetail.getSeatPlans().stream().map(SeatPlan::getSeatPlanId).toList(); + Map seatMap = getSeatMap(seatPlanIds); + if (MapUtils.isEmpty(seatMap)) continue; + for (SeatPlan seatPlan : performDetail.getSeatPlans()) { + if (!seatMap.containsKey(seatPlan.getSeatPlanId())) { + continue; + } + FPerformSeatInfo fPerformSeatInfo = new FPerformSeatInfo(); + fPerformSeatInfo.setSeatPlanId(seatPlan.getSeatPlanId()); + fPerformSeatInfo.setSeatPlanName(seatPlan.getSeatPlanName()); + fPerformSeatInfo.setPerformId(seatPlan.getPerformId()); + fPerformSeatInfo.setPerformName(seatPlan.getPerformName()); + fPerformSeatInfo.setStopSale(seatPlan.getStopSale()); + fPerformSeatInfo.setShelfStatus(seatPlan.getShelfStatus()); + fPerformSeatInfo.setPrice(seatPlan.getPrice()); + fPerformSeatInfo.setDiscountPrice(seatPlan.getDiscountPrice()); + fPerformSeatInfo.setSubStatus(seatPlan.getSubStatus()); + fPerformSeatInfo.setQuantity(seatPlan.getQuantity()); + fPerformSeatInfo.setStatus(seatPlan.getStatus()); + fPerformSeatInfo.setMaxSellStock(seatPlan.getMaxSellStock()); + fPerformSeatInfo.setSoldStock(seatPlan.getSoldStock()); + fPerformSeatInfo.setLeftStock(seatPlan.getLeftStock()); + fPerformSeatInfo.setAbleSaleQuantity(seatPlan.getAbleSaleQuantity()); + fPerformSeatInfo.setAshShow(seatPlan.getAshShow()); + fPerformSeatInfo.setAshShowDesc(seatPlan.getAshShow()); + fPerformSeatInfo.setSelectable(seatPlan.getSelectable()); + fPerformSeatInfo.setDisplay(seatPlan.getDisplay()); + fPerformSeatInfo.setAvailableTicketQuantity(seatPlan.getAvailableTicketQuantity()); + fPerformSeatInfo.setAvailableAllTicketQuantity(seatPlan.getAvailableAllTicketQuantity()); + if (StringUtils.isNotBlank(seatPlan.getSaleTime())) { + fPerformSeatInfo.setSaleTime(DateUtils.getTimeFromStr(seatPlan.getSaleTime())); + } + fPerformSeatInfo.setProjectId(project.getProjectId()); + fPerformSeatInfo.setSoldOut(seatMap.get(seatPlan.getSeatPlanId()) ? 1 : 0); + FPerformSeatInfo seatInfo = performSeatInfoMapper.getPerformSeatInfoBySeatIdAndPerformIdAndProjectId(fPerformSeatInfo.getSeatPlanId(), fPerformSeatInfo.getPerformId(), project.getProjectId()); + if (Objects.nonNull(seatInfo)) { + fPerformSeatInfo.setId(seatInfo.getId()); + performSeatInfoMapper.update(fPerformSeatInfo); + } else { + fPerformSeatInfoInsertList.add(fPerformSeatInfo); + } } } } } } } - } - if (CollectionUtils.isNotEmpty(fPerformSeatInfoInsertList)) { - performSeatInfoMapper.batchSave(fPerformSeatInfoInsertList); - } - } else { - // 新增projectInfo的信息 - FPerformProjectInfo fPerformProjectInfo = new FPerformProjectInfo(); - fPerformProjectInfo.setNameDisplay(projectInfoFromHttp.getNameDisplay()); - fPerformProjectInfo.setStatus(projectInfoFromHttp.getStatus()); - fPerformProjectInfo.setProjectSource(projectInfoFromHttp.getProjectSource()); - fPerformProjectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat()); - fPerformProjectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat()); - fPerformProjectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice()); - if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectStartDate())) { - fPerformProjectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate())); - } - if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectEndDate())) { - fPerformProjectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate())); - } - fPerformProjectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName()); + if (CollectionUtils.isNotEmpty(fPerformSeatInfoInsertList)) { + performSeatInfoMapper.batchSave(fPerformSeatInfoInsertList); + } + } else { + // 新增projectInfo的信息 + FPerformProjectInfo fPerformProjectInfo = new FPerformProjectInfo(); + fPerformProjectInfo.setNameDisplay(projectInfoFromHttp.getNameDisplay()); + fPerformProjectInfo.setStatus(projectInfoFromHttp.getStatus()); + fPerformProjectInfo.setProjectSource(projectInfoFromHttp.getProjectSource()); + fPerformProjectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat()); + fPerformProjectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat()); + fPerformProjectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice()); + if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectStartDate())) { + fPerformProjectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate())); + } + if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectEndDate())) { + fPerformProjectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate())); + } + fPerformProjectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName()); - fPerformProjectInfo.setProjectName(project.getName()); - fPerformProjectInfo.setBizId(project.getBizId()); - fPerformProjectInfo.setProjectId(project.getProjectId()); - fPerformProjectInfo.setTagName(project.getTagName()); - fPerformProjectInfo.setTagRemark(project.getTagRemark()); - fPerformProjectInfo.setProjectCity(project.getCity()); - fPerformProjectInfo.setShortCity(project.getShortCity()); - fPerformProjectInfo.setVenueName(project.getVenueName()); - fPerformProjectInfo.setLowestPrice(project.getLowestPrice()); - if (StringUtils.isNotBlank(projectInfoFromHttp.getPreSaleTime())) { - fPerformProjectInfo.setPreSaleTime(DateUtils.getDateTimeFromStr(projectInfoFromHttp.getPreSaleTime())); - } - performProjectInfoMapper.insert(fPerformProjectInfo); + fPerformProjectInfo.setProjectName(project.getName()); + fPerformProjectInfo.setBizId(project.getBizId()); + fPerformProjectInfo.setProjectId(project.getProjectId()); + fPerformProjectInfo.setTagName(project.getTagName()); + fPerformProjectInfo.setTagRemark(project.getTagRemark()); + fPerformProjectInfo.setProjectCity(project.getCity()); + fPerformProjectInfo.setShortCity(project.getShortCity()); + fPerformProjectInfo.setVenueName(project.getVenueName()); + fPerformProjectInfo.setLowestPrice(project.getLowestPrice()); + if (StringUtils.isNotBlank(projectInfoFromHttp.getPreSaleTime())) { + fPerformProjectInfo.setPreSaleTime(DateUtils.getDateTimeFromStr(projectInfoFromHttp.getPreSaleTime())); + } + performProjectInfoMapper.insert(fPerformProjectInfo); - List fPerformSeatInfos = Lists.newArrayList(); - if (CollectionUtils.isNotEmpty(performsByProjectIdFromHttp.getPerformInfos())) { - for (PerformInfo performInfo : performsByProjectIdFromHttp.getPerformInfos()) { - if (CollectionUtils.isNotEmpty(performInfo.getPerformInfo())) { - for (PerformDetail performDetail : performInfo.getPerformInfo()) { - if (CollectionUtils.isNotEmpty(performDetail.getSeatPlans())) { - List seatPlanIds = performDetail.getSeatPlans().stream().map(SeatPlan::getSeatPlanId).toList(); - Map seatMap = getSeatMap(seatPlanIds); - if (MapUtils.isEmpty(seatMap)) continue; - for (SeatPlan seatPlan : performDetail.getSeatPlans()) { - if (!seatMap.containsKey(seatPlan.getSeatPlanId())) { - continue; + List fPerformSeatInfos = Lists.newArrayList(); + if (CollectionUtils.isNotEmpty(performsByProjectIdFromHttp.getPerformInfos())) { + for (PerformInfo performInfo : performsByProjectIdFromHttp.getPerformInfos()) { + if (CollectionUtils.isNotEmpty(performInfo.getPerformInfo())) { + for (PerformDetail performDetail : performInfo.getPerformInfo()) { + if (CollectionUtils.isNotEmpty(performDetail.getSeatPlans())) { + List seatPlanIds = performDetail.getSeatPlans().stream().map(SeatPlan::getSeatPlanId).toList(); + Map seatMap = getSeatMap(seatPlanIds); + if (MapUtils.isEmpty(seatMap)) continue; + for (SeatPlan seatPlan : performDetail.getSeatPlans()) { + if (!seatMap.containsKey(seatPlan.getSeatPlanId())) { + continue; + } + FPerformSeatInfo fPerformSeatInfo = new FPerformSeatInfo(); + fPerformSeatInfo.setSeatPlanId(seatPlan.getSeatPlanId()); + fPerformSeatInfo.setSeatPlanName(seatPlan.getSeatPlanName()); + fPerformSeatInfo.setPerformId(seatPlan.getPerformId()); + fPerformSeatInfo.setPerformName(seatPlan.getPerformName()); + fPerformSeatInfo.setStopSale(seatPlan.getStopSale()); + fPerformSeatInfo.setShelfStatus(seatPlan.getShelfStatus()); + fPerformSeatInfo.setPrice(seatPlan.getPrice()); + fPerformSeatInfo.setDiscountPrice(seatPlan.getDiscountPrice()); + fPerformSeatInfo.setSubStatus(seatPlan.getSubStatus()); + fPerformSeatInfo.setQuantity(seatPlan.getQuantity()); + fPerformSeatInfo.setStatus(seatPlan.getStatus()); + fPerformSeatInfo.setMaxSellStock(seatPlan.getMaxSellStock()); + fPerformSeatInfo.setSoldStock(seatPlan.getSoldStock()); + fPerformSeatInfo.setLeftStock(seatPlan.getLeftStock()); + fPerformSeatInfo.setAbleSaleQuantity(seatPlan.getAbleSaleQuantity()); + fPerformSeatInfo.setAshShow(seatPlan.getAshShow()); + fPerformSeatInfo.setAshShowDesc(seatPlan.getAshShow()); + fPerformSeatInfo.setSelectable(seatPlan.getSelectable()); + fPerformSeatInfo.setDisplay(seatPlan.getDisplay()); + fPerformSeatInfo.setAvailableTicketQuantity(seatPlan.getAvailableTicketQuantity()); + fPerformSeatInfo.setAvailableAllTicketQuantity(seatPlan.getAvailableAllTicketQuantity()); + if (StringUtils.isNotBlank(seatPlan.getSaleTime())) { + fPerformSeatInfo.setSaleTime(DateUtils.getTimeFromStr(seatPlan.getSaleTime())); + } + fPerformSeatInfo.setProjectId(project.getProjectId()); + fPerformSeatInfo.setSoldOut(seatMap.get(seatPlan.getSeatPlanId()) ? 1 : 0); } - FPerformSeatInfo fPerformSeatInfo = new FPerformSeatInfo(); - fPerformSeatInfo.setSeatPlanId(seatPlan.getSeatPlanId()); - fPerformSeatInfo.setSeatPlanName(seatPlan.getSeatPlanName()); - fPerformSeatInfo.setPerformId(seatPlan.getPerformId()); - fPerformSeatInfo.setPerformName(seatPlan.getPerformName()); - fPerformSeatInfo.setStopSale(seatPlan.getStopSale()); - fPerformSeatInfo.setShelfStatus(seatPlan.getShelfStatus()); - fPerformSeatInfo.setPrice(seatPlan.getPrice()); - fPerformSeatInfo.setDiscountPrice(seatPlan.getDiscountPrice()); - fPerformSeatInfo.setSubStatus(seatPlan.getSubStatus()); - fPerformSeatInfo.setQuantity(seatPlan.getQuantity()); - fPerformSeatInfo.setStatus(seatPlan.getStatus()); - fPerformSeatInfo.setMaxSellStock(seatPlan.getMaxSellStock()); - fPerformSeatInfo.setSoldStock(seatPlan.getSoldStock()); - fPerformSeatInfo.setLeftStock(seatPlan.getLeftStock()); - fPerformSeatInfo.setAbleSaleQuantity(seatPlan.getAbleSaleQuantity()); - fPerformSeatInfo.setAshShow(seatPlan.getAshShow()); - fPerformSeatInfo.setAshShowDesc(seatPlan.getAshShow()); - fPerformSeatInfo.setSelectable(seatPlan.getSelectable()); - fPerformSeatInfo.setDisplay(seatPlan.getDisplay()); - fPerformSeatInfo.setAvailableTicketQuantity(seatPlan.getAvailableTicketQuantity()); - fPerformSeatInfo.setAvailableAllTicketQuantity(seatPlan.getAvailableAllTicketQuantity()); - if (StringUtils.isNotBlank(seatPlan.getSaleTime())) { - fPerformSeatInfo.setSaleTime(DateUtils.getTimeFromStr(seatPlan.getSaleTime())); - } - fPerformSeatInfo.setProjectId(project.getProjectId()); - fPerformSeatInfo.setSoldOut(seatMap.get(seatPlan.getSeatPlanId()) ? 1 : 0); } } } } } - } - if (CollectionUtils.isNotEmpty(fPerformSeatInfos)) { - performSeatInfoMapper.batchSave(fPerformSeatInfos); + if (CollectionUtils.isNotEmpty(fPerformSeatInfos)) { + performSeatInfoMapper.batchSave(fPerformSeatInfos); + } } } - } - }, es); - futureList.add(future); + }, es); + futureList.add(future); + } + CompletableFuture[] futureArr = futureList.toArray(futureList.toArray(new CompletableFuture[0])); + CompletableFuture.allOf(futureArr).join(); + Thread.sleep(1000); + } catch (Exception e) { + log.error("拉取数据失败", e); + } finally { + System.gc(); } - CompletableFuture[] futureArr = futureList.toArray(futureList.toArray(new CompletableFuture[0])); - CompletableFuture.allOf(futureArr).join(); + } }