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 }