循環分頁獲取全部數據


 1 /**
 2  * 循環分頁獲取北森出差數據,當最后一次調用獲取的數據量不足pageSize則表明是最后一頁
 3  * @param travelDataRequest 出差數據Http請求Request
 4  */
 5 private List<BusinessData> getAllPageDate(TravelDataRequest travelDataRequest)  {
 6     List<BusinessData> businessDataList = Lists.newArrayList();
 7     try {
 8         int i = ONE;
 9         while (true) {
10             travelDataRequest.setPageIndex(i);
11             travelDataRequest.setPageSize(PAGE_SIZE);
12             Config config = ConfigService.getConfig(ConstantsUtil.NAME_SPACE_KEY);
13             String url = config.getProperty(URL,"");
14             logger.info("從阿波羅獲取到出差數據接口URL為:[{}]", url);
15             String result = HttpClientUtil.httpPostJson(url, JSON.toJSONString(travelDataRequest) , null).getResult();
16             TravelDataResponse travelDataResponse = JSON.parseObject(result, TravelDataResponse.class);
17             TravelDataResponse.Data data = Optional.ofNullable(travelDataResponse).map(TravelDataResponse::getData)
18                     .orElseThrow(() -> new IllegalStateException("獲取數據為空"));
19             List<BusinessData> businessList = data.getBusinessList();
20             Integer total = data.getTotal();
21             businessDataList.addAll(businessList);
22 
23             //如果獲取當前頁的數據總量小於每頁大小,則表明是最后一頁跳出循環
24             if (CollectionUtil.size(businessList) < PAGE_SIZE) {
25                 logger.info("從北森獲取出差數據總共[{}]頁", i);
26                 break;
27             }
28 
29             //如果獲取到的數據總量大於等於total則跳出循環
30             if (businessDataList.size() >= total) {
31                 break;
32             }
33 
34             i++;
35         }
36         return businessDataList;
37     } catch (Exception e) {
38         logger.error("調用北森接口獲取出差數據出現異常", e);
39         return Lists.newArrayList();
40     }
41 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM