This commit is contained in:
Zhujx
2025-07-28 17:24:52 +08:00
parent d20ff8dc05
commit 56987b850a

View File

@@ -87,196 +87,204 @@ public class PullDataFromFWDJob {
i++; i++;
BaseRequest request = new BaseRequest(); BaseRequest request = new BaseRequest();
request.setCurrent(i); request.setCurrent(i);
request.setPageSize(10 * i); request.setPageSize(50);
ProjectsResp showProjectsFromHttp = performServiceHttp.getShowProjectsFromHttp(request); try {
if (Objects.isNull(showProjectsFromHttp)) { ProjectsResp showProjectsFromHttp = performServiceHttp.getShowProjectsFromHttp(request);
return; if (Objects.isNull(showProjectsFromHttp)) {
} return;
if (CollectionUtils.isEmpty(showProjectsFromHttp.getList())) { }
break; if (CollectionUtils.isEmpty(showProjectsFromHttp.getList())) {
} break;
List<ProjectList> projectList = showProjectsFromHttp.getList(); }
List<ProjectList> projectList = showProjectsFromHttp.getList();
List<CompletableFuture> futureList = Lists.newArrayList(); List<CompletableFuture> futureList = Lists.newArrayList();
for (ProjectList project : projectList) { for (ProjectList project : projectList) {
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> { CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
ProjectInfoResp projectInfoFromHttp = performServiceHttp.getProjectInfoFromHttp(project.getProjectId()); ProjectInfoResp projectInfoFromHttp = performServiceHttp.getProjectInfoFromHttp(project.getProjectId());
Perform performsByProjectIdFromHttp = performServiceHttp.getPerformsByProjectIdFromHttp(project.getProjectId()); Perform performsByProjectIdFromHttp = performServiceHttp.getPerformsByProjectIdFromHttp(project.getProjectId());
if (Objects.nonNull(projectInfoFromHttp) && Objects.nonNull(performsByProjectIdFromHttp)) { if (Objects.nonNull(projectInfoFromHttp) && Objects.nonNull(performsByProjectIdFromHttp)) {
FPerformProjectInfo projectInfo = performProjectInfoMapper.getProjectByProjectId(project.getProjectId()); FPerformProjectInfo projectInfo = performProjectInfoMapper.getProjectByProjectId(project.getProjectId());
if (Objects.nonNull(projectInfo)) { if (Objects.nonNull(projectInfo)) {
// 更新projectInfo的信息 // 更新projectInfo的信息
projectInfo.setNameDisplay(projectInfoFromHttp.getNameDisplay()); projectInfo.setNameDisplay(projectInfoFromHttp.getNameDisplay());
projectInfo.setStatus(projectInfoFromHttp.getStatus()); projectInfo.setStatus(projectInfoFromHttp.getStatus());
projectInfo.setProjectSource(projectInfoFromHttp.getProjectSource()); projectInfo.setProjectSource(projectInfoFromHttp.getProjectSource());
projectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat()); projectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat());
projectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat()); projectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat());
projectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice()); projectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice());
if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectStartDate())) { if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectStartDate())) {
projectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate())); projectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate()));
} }
if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectEndDate())) { if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectEndDate())) {
projectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate())); projectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate()));
} }
projectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName()); projectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName());
projectInfo.setProjectName(project.getName()); projectInfo.setProjectName(project.getName());
projectInfo.setBizId(project.getBizId()); projectInfo.setBizId(project.getBizId());
projectInfo.setTagName(project.getTagName()); projectInfo.setTagName(project.getTagName());
projectInfo.setTagRemark(project.getTagRemark()); projectInfo.setTagRemark(project.getTagRemark());
projectInfo.setProjectCity(project.getCity()); projectInfo.setProjectCity(project.getCity());
projectInfo.setShortCity(project.getShortCity()); projectInfo.setShortCity(project.getShortCity());
projectInfo.setVenueName(project.getVenueName()); projectInfo.setVenueName(project.getVenueName());
projectInfo.setLowestPrice(project.getLowestPrice()); projectInfo.setLowestPrice(project.getLowestPrice());
if (StringUtils.isNotBlank(projectInfoFromHttp.getPreSaleTime())) { if (StringUtils.isNotBlank(projectInfoFromHttp.getPreSaleTime())) {
projectInfo.setPreSaleTime(DateUtils.getDateTimeFromStr(projectInfoFromHttp.getPreSaleTime())); projectInfo.setPreSaleTime(DateUtils.getDateTimeFromStr(projectInfoFromHttp.getPreSaleTime()));
} }
performProjectInfoMapper.update(projectInfo); performProjectInfoMapper.update(projectInfo);
List<FPerformSeatInfo> fPerformSeatInfoInsertList = Lists.newArrayList(); List<FPerformSeatInfo> fPerformSeatInfoInsertList = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(performsByProjectIdFromHttp.getPerformInfos())) { if (CollectionUtils.isNotEmpty(performsByProjectIdFromHttp.getPerformInfos())) {
for (PerformInfo performInfo : performsByProjectIdFromHttp.getPerformInfos()) { for (PerformInfo performInfo : performsByProjectIdFromHttp.getPerformInfos()) {
if (CollectionUtils.isNotEmpty(performInfo.getPerformInfo())) { if (CollectionUtils.isNotEmpty(performInfo.getPerformInfo())) {
for (PerformDetail performDetail : performInfo.getPerformInfo()) { for (PerformDetail performDetail : performInfo.getPerformInfo()) {
if (CollectionUtils.isNotEmpty(performDetail.getSeatPlans())) { if (CollectionUtils.isNotEmpty(performDetail.getSeatPlans())) {
List<Long> seatPlanIds = performDetail.getSeatPlans().stream().map(SeatPlan::getSeatPlanId).toList(); List<Long> seatPlanIds = performDetail.getSeatPlans().stream().map(SeatPlan::getSeatPlanId).toList();
Map<Long, Boolean> seatMap = getSeatMap(seatPlanIds); Map<Long, Boolean> seatMap = getSeatMap(seatPlanIds);
if (MapUtils.isEmpty(seatMap)) continue; if (MapUtils.isEmpty(seatMap)) continue;
for (SeatPlan seatPlan : performDetail.getSeatPlans()) { for (SeatPlan seatPlan : performDetail.getSeatPlans()) {
if (!seatMap.containsKey(seatPlan.getSeatPlanId())) { if (!seatMap.containsKey(seatPlan.getSeatPlanId())) {
continue; continue;
} }
FPerformSeatInfo fPerformSeatInfo = new FPerformSeatInfo(); FPerformSeatInfo fPerformSeatInfo = new FPerformSeatInfo();
fPerformSeatInfo.setSeatPlanId(seatPlan.getSeatPlanId()); fPerformSeatInfo.setSeatPlanId(seatPlan.getSeatPlanId());
fPerformSeatInfo.setSeatPlanName(seatPlan.getSeatPlanName()); fPerformSeatInfo.setSeatPlanName(seatPlan.getSeatPlanName());
fPerformSeatInfo.setPerformId(seatPlan.getPerformId()); fPerformSeatInfo.setPerformId(seatPlan.getPerformId());
fPerformSeatInfo.setPerformName(seatPlan.getPerformName()); fPerformSeatInfo.setPerformName(seatPlan.getPerformName());
fPerformSeatInfo.setStopSale(seatPlan.getStopSale()); fPerformSeatInfo.setStopSale(seatPlan.getStopSale());
fPerformSeatInfo.setShelfStatus(seatPlan.getShelfStatus()); fPerformSeatInfo.setShelfStatus(seatPlan.getShelfStatus());
fPerformSeatInfo.setPrice(seatPlan.getPrice()); fPerformSeatInfo.setPrice(seatPlan.getPrice());
fPerformSeatInfo.setDiscountPrice(seatPlan.getDiscountPrice()); fPerformSeatInfo.setDiscountPrice(seatPlan.getDiscountPrice());
fPerformSeatInfo.setSubStatus(seatPlan.getSubStatus()); fPerformSeatInfo.setSubStatus(seatPlan.getSubStatus());
fPerformSeatInfo.setQuantity(seatPlan.getQuantity()); fPerformSeatInfo.setQuantity(seatPlan.getQuantity());
fPerformSeatInfo.setStatus(seatPlan.getStatus()); fPerformSeatInfo.setStatus(seatPlan.getStatus());
fPerformSeatInfo.setMaxSellStock(seatPlan.getMaxSellStock()); fPerformSeatInfo.setMaxSellStock(seatPlan.getMaxSellStock());
fPerformSeatInfo.setSoldStock(seatPlan.getSoldStock()); fPerformSeatInfo.setSoldStock(seatPlan.getSoldStock());
fPerformSeatInfo.setLeftStock(seatPlan.getLeftStock()); fPerformSeatInfo.setLeftStock(seatPlan.getLeftStock());
fPerformSeatInfo.setAbleSaleQuantity(seatPlan.getAbleSaleQuantity()); fPerformSeatInfo.setAbleSaleQuantity(seatPlan.getAbleSaleQuantity());
fPerformSeatInfo.setAshShow(seatPlan.getAshShow()); fPerformSeatInfo.setAshShow(seatPlan.getAshShow());
fPerformSeatInfo.setAshShowDesc(seatPlan.getAshShow()); fPerformSeatInfo.setAshShowDesc(seatPlan.getAshShow());
fPerformSeatInfo.setSelectable(seatPlan.getSelectable()); fPerformSeatInfo.setSelectable(seatPlan.getSelectable());
fPerformSeatInfo.setDisplay(seatPlan.getDisplay()); fPerformSeatInfo.setDisplay(seatPlan.getDisplay());
fPerformSeatInfo.setAvailableTicketQuantity(seatPlan.getAvailableTicketQuantity()); fPerformSeatInfo.setAvailableTicketQuantity(seatPlan.getAvailableTicketQuantity());
fPerformSeatInfo.setAvailableAllTicketQuantity(seatPlan.getAvailableAllTicketQuantity()); fPerformSeatInfo.setAvailableAllTicketQuantity(seatPlan.getAvailableAllTicketQuantity());
if (StringUtils.isNotBlank(seatPlan.getSaleTime())) { if (StringUtils.isNotBlank(seatPlan.getSaleTime())) {
fPerformSeatInfo.setSaleTime(DateUtils.getTimeFromStr(seatPlan.getSaleTime())); fPerformSeatInfo.setSaleTime(DateUtils.getTimeFromStr(seatPlan.getSaleTime()));
} }
fPerformSeatInfo.setProjectId(project.getProjectId()); fPerformSeatInfo.setProjectId(project.getProjectId());
fPerformSeatInfo.setSoldOut(seatMap.get(seatPlan.getSeatPlanId()) ? 1 : 0); fPerformSeatInfo.setSoldOut(seatMap.get(seatPlan.getSeatPlanId()) ? 1 : 0);
FPerformSeatInfo seatInfo = performSeatInfoMapper.getPerformSeatInfoBySeatIdAndPerformIdAndProjectId(fPerformSeatInfo.getSeatPlanId(), fPerformSeatInfo.getPerformId(), project.getProjectId()); FPerformSeatInfo seatInfo = performSeatInfoMapper.getPerformSeatInfoBySeatIdAndPerformIdAndProjectId(fPerformSeatInfo.getSeatPlanId(), fPerformSeatInfo.getPerformId(), project.getProjectId());
if (Objects.nonNull(seatInfo)) { if (Objects.nonNull(seatInfo)) {
fPerformSeatInfo.setId(seatInfo.getId()); fPerformSeatInfo.setId(seatInfo.getId());
performSeatInfoMapper.update(fPerformSeatInfo); performSeatInfoMapper.update(fPerformSeatInfo);
} else { } else {
fPerformSeatInfoInsertList.add(fPerformSeatInfo); fPerformSeatInfoInsertList.add(fPerformSeatInfo);
}
} }
} }
} }
} }
} }
} }
}
if (CollectionUtils.isNotEmpty(fPerformSeatInfoInsertList)) { if (CollectionUtils.isNotEmpty(fPerformSeatInfoInsertList)) {
performSeatInfoMapper.batchSave(fPerformSeatInfoInsertList); performSeatInfoMapper.batchSave(fPerformSeatInfoInsertList);
} }
} else { } else {
// 新增projectInfo的信息 // 新增projectInfo的信息
FPerformProjectInfo fPerformProjectInfo = new FPerformProjectInfo(); FPerformProjectInfo fPerformProjectInfo = new FPerformProjectInfo();
fPerformProjectInfo.setNameDisplay(projectInfoFromHttp.getNameDisplay()); fPerformProjectInfo.setNameDisplay(projectInfoFromHttp.getNameDisplay());
fPerformProjectInfo.setStatus(projectInfoFromHttp.getStatus()); fPerformProjectInfo.setStatus(projectInfoFromHttp.getStatus());
fPerformProjectInfo.setProjectSource(projectInfoFromHttp.getProjectSource()); fPerformProjectInfo.setProjectSource(projectInfoFromHttp.getProjectSource());
fPerformProjectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat()); fPerformProjectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat());
fPerformProjectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat()); fPerformProjectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat());
fPerformProjectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice()); fPerformProjectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice());
if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectStartDate())) { if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectStartDate())) {
fPerformProjectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate())); fPerformProjectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate()));
} }
if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectEndDate())) { if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectEndDate())) {
fPerformProjectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate())); fPerformProjectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate()));
} }
fPerformProjectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName()); fPerformProjectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName());
fPerformProjectInfo.setProjectName(project.getName()); fPerformProjectInfo.setProjectName(project.getName());
fPerformProjectInfo.setBizId(project.getBizId()); fPerformProjectInfo.setBizId(project.getBizId());
fPerformProjectInfo.setProjectId(project.getProjectId()); fPerformProjectInfo.setProjectId(project.getProjectId());
fPerformProjectInfo.setTagName(project.getTagName()); fPerformProjectInfo.setTagName(project.getTagName());
fPerformProjectInfo.setTagRemark(project.getTagRemark()); fPerformProjectInfo.setTagRemark(project.getTagRemark());
fPerformProjectInfo.setProjectCity(project.getCity()); fPerformProjectInfo.setProjectCity(project.getCity());
fPerformProjectInfo.setShortCity(project.getShortCity()); fPerformProjectInfo.setShortCity(project.getShortCity());
fPerformProjectInfo.setVenueName(project.getVenueName()); fPerformProjectInfo.setVenueName(project.getVenueName());
fPerformProjectInfo.setLowestPrice(project.getLowestPrice()); fPerformProjectInfo.setLowestPrice(project.getLowestPrice());
if (StringUtils.isNotBlank(projectInfoFromHttp.getPreSaleTime())) { if (StringUtils.isNotBlank(projectInfoFromHttp.getPreSaleTime())) {
fPerformProjectInfo.setPreSaleTime(DateUtils.getDateTimeFromStr(projectInfoFromHttp.getPreSaleTime())); fPerformProjectInfo.setPreSaleTime(DateUtils.getDateTimeFromStr(projectInfoFromHttp.getPreSaleTime()));
} }
performProjectInfoMapper.insert(fPerformProjectInfo); performProjectInfoMapper.insert(fPerformProjectInfo);
List<FPerformSeatInfo> fPerformSeatInfos = Lists.newArrayList(); List<FPerformSeatInfo> fPerformSeatInfos = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(performsByProjectIdFromHttp.getPerformInfos())) { if (CollectionUtils.isNotEmpty(performsByProjectIdFromHttp.getPerformInfos())) {
for (PerformInfo performInfo : performsByProjectIdFromHttp.getPerformInfos()) { for (PerformInfo performInfo : performsByProjectIdFromHttp.getPerformInfos()) {
if (CollectionUtils.isNotEmpty(performInfo.getPerformInfo())) { if (CollectionUtils.isNotEmpty(performInfo.getPerformInfo())) {
for (PerformDetail performDetail : performInfo.getPerformInfo()) { for (PerformDetail performDetail : performInfo.getPerformInfo()) {
if (CollectionUtils.isNotEmpty(performDetail.getSeatPlans())) { if (CollectionUtils.isNotEmpty(performDetail.getSeatPlans())) {
List<Long> seatPlanIds = performDetail.getSeatPlans().stream().map(SeatPlan::getSeatPlanId).toList(); List<Long> seatPlanIds = performDetail.getSeatPlans().stream().map(SeatPlan::getSeatPlanId).toList();
Map<Long, Boolean> seatMap = getSeatMap(seatPlanIds); Map<Long, Boolean> seatMap = getSeatMap(seatPlanIds);
if (MapUtils.isEmpty(seatMap)) continue; if (MapUtils.isEmpty(seatMap)) continue;
for (SeatPlan seatPlan : performDetail.getSeatPlans()) { for (SeatPlan seatPlan : performDetail.getSeatPlans()) {
if (!seatMap.containsKey(seatPlan.getSeatPlanId())) { if (!seatMap.containsKey(seatPlan.getSeatPlanId())) {
continue; 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)) { if (CollectionUtils.isNotEmpty(fPerformSeatInfos)) {
performSeatInfoMapper.batchSave(fPerformSeatInfos); performSeatInfoMapper.batchSave(fPerformSeatInfos);
}
} }
} }
} }, es);
}, es); futureList.add(future);
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();
} }
} }