diff --git a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/dto/PowerEnvCampusParamsDTO.java b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/dto/PowerEnvCampusParamsDTO.java index 875ca7a..7ea80d8 100644 --- a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/dto/PowerEnvCampusParamsDTO.java +++ b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/dto/PowerEnvCampusParamsDTO.java @@ -18,13 +18,13 @@ public class PowerEnvCampusParamsDTO { * 每页数量 */ @Schema(description = "每页数量") - private String pageSize; + private String pageSize = "1000"; /** * 页码 */ @Schema(description = "页码") - private String page; + private String page = "1"; /** * 关键字 diff --git a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/http/RetryableHttpClient.java b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/http/RetryableHttpClient.java index f57eb29..d41223e 100644 --- a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/http/RetryableHttpClient.java +++ b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/http/RetryableHttpClient.java @@ -8,10 +8,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.core.ParameterizedTypeReference; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; +import org.springframework.http.*; import org.springframework.stereotype.Component; import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.RestTemplate; @@ -86,17 +83,20 @@ public class RetryableHttpClient { } // 构建带access_token参数的URL String url = baseUrl + API_URL + "?access_token=" + accessToken; + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + HttpEntity> requestEntity = new HttpEntity<>(requestParams, headers); try { // 请求数据 ResponseEntity> response = restTemplate - .exchange(url, HttpMethod.POST, new HttpEntity<>(requestParams), + .exchange(url, HttpMethod.POST, requestEntity, new ParameterizedTypeReference>() { }); // 检查响应状态码 if (!Objects.equals(response.getStatusCode(), HttpStatus.OK)) { // 如果不是200,则抛出异常 - throw new HttpClientErrorException(response.getStatusCode(), "API请求失败"); + throw new HttpClientErrorException(response.getStatusCode(), "API request failed"); } // 如果请求返回200,则检查响应内容 @@ -110,7 +110,7 @@ public class RetryableHttpClient { // 获得重试结果 ResponseEntity> retryResponse = - restTemplate.exchange(url, HttpMethod.POST, new HttpEntity<>(requestParams), + restTemplate.exchange(url, HttpMethod.POST, requestEntity, new ParameterizedTypeReference>() { }); if (Objects.equals(retryResponse.getStatusCode(), HttpStatus.OK) && @@ -130,7 +130,7 @@ public class RetryableHttpClient { return response; } catch (Exception e) { // 如果发生异常,则在日志中记录异常,并且抛出 - log.error("请求API时发生异常", e); + log.error("Exception occurred while requesting API", e); throw e; } } @@ -146,10 +146,10 @@ public class RetryableHttpClient { return; } - log.info("开始刷新访问令牌"); + log.info("Starting to refresh access token"); // 构造获取令牌的参数 - String tokenUrl = baseUrl + ACCESS_TOKEN_URL + "?appKey=" + appKey + "&" + appSecret; + String tokenUrl = baseUrl + ACCESS_TOKEN_URL + "?appKey=" + appKey + "&appSecret=" + appSecret; try { // 请求访问令牌 @@ -170,18 +170,18 @@ public class RetryableHttpClient { // 设置过期时间(提前5分钟过期以确保安全) tokenExpireTime = System.currentTimeMillis() + (expiresIn - 300) * 1000L; - log.info("成功刷新访问令牌,新令牌将在 {} 过期", new java.util.Date(tokenExpireTime)); + log.info("Successfully refreshed access token, new token will expire at {}", new java.util.Date(tokenExpireTime)); } else { - log.error("获取访问令牌失败: {}", responseBody); - throw new RuntimeException("无法获取访问令牌: " + responseBody.get("msg")); + log.error("Failed to get access token: {}", responseBody); + throw new RuntimeException("Unable to get access token: " + responseBody.get("msg")); } } else { - log.error("获取访问令牌失败,HTTP状态码: {}", response.getStatusCode()); - throw new RuntimeException("无法获取访问令牌,HTTP状态码: " + response.getStatusCode()); + log.error("Failed to get access token, HTTP status code: {}", response.getStatusCode()); + throw new RuntimeException("Unable to get access token, HTTP status code: " + response.getStatusCode()); } } catch (Exception e) { - log.error("刷新访问令牌时发生异常", e); - throw new RuntimeException("刷新访问令牌失败", e); + log.error("Exception occurred while refreshing access token", e); + throw new RuntimeException("Failed to refresh access token", e); } } finally { tokenLock.unlock(); diff --git a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/job/AlibabaBuildingJob.java b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/job/AlibabaBuildingJob.java index 99f422d..9fdb262 100644 --- a/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/job/AlibabaBuildingJob.java +++ b/jeelowcode-module/jeelowcode-module-biz/src/main/java/com/jeelowcode/module/biz/job/AlibabaBuildingJob.java @@ -1,9 +1,7 @@ package com.jeelowcode.module.biz.job; import com.jeelowcode.module.biz.convert.LcBuildingEntityConvert; -import com.jeelowcode.module.biz.dto.PowerEnvBuildingItemDTO; -import com.jeelowcode.module.biz.dto.PowerEnvBuildingParamsDTO; -import com.jeelowcode.module.biz.dto.PowerEnvPageDataDTO; +import com.jeelowcode.module.biz.dto.*; import com.jeelowcode.module.biz.entity.LcBuildingEntity; import com.jeelowcode.module.biz.service.IBizHttpClientService; import com.jeelowcode.module.biz.service.ILcBuildingService; @@ -41,16 +39,23 @@ public class AlibabaBuildingJob implements JobHandler { @Override @TenantJob public String execute(String param) throws Exception { - // 分页接口,但是pageSize默认设置1000,应该不会超过1000,所以这里就不分页了 - PowerEnvPageDataDTO pageData = - httpClientService.listBuilding(new PowerEnvBuildingParamsDTO()); - // 转化数据 - List list = LcBuildingEntityConvert.INSTANCE.convertList(pageData.getItems()); - // 批量保存数据 - int result = buildingService.saveBatch(list); - log.info("保存楼宇数据结果:{}", result); - log.info("保存楼宇数据结果:{}", result == list.size()); - return "保存楼宇数据结果:" + result + ",楼宇数据大小:" + list.size(); + PowerEnvPageDataDTO campusPageData = + httpClientService.listCampus(new PowerEnvCampusParamsDTO()); + List campusList = campusPageData.getItems(); + if (campusList == null || campusList.isEmpty()) { + log.info("没有查询到任何数据"); + return "没有查询到任何数据"; + } + campusList.parallelStream().forEach(campus -> { + PowerEnvPageDataDTO pageData = + httpClientService.listBuilding(new PowerEnvBuildingParamsDTO().setCampusId(campus.getCampusId())); + // 转化数据 + List list = LcBuildingEntityConvert.INSTANCE.convertList(pageData.getItems()); + // 批量保存数据 + int result = buildingService.saveBatch(list); + log.info("保存数据成功,数量为:{}", result == list.size()); + }); + return "保存数据成功"; } }