From 651111e80d84333cbaf9907d2ee1f90c3dfc62e4 Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期五, 07 三月 2025 13:48:17 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- /dev/null | 16 ---- iailab-plat-sdk/pom.xml | 50 ++++++++++-- iailab-cloud/iailab-gateway/src/main/resources/application.yaml | 9 ++ iailab-plat-sdk/src/main/java/com/iailab/sdk/util/http/HttpClientFactory.java | 2 iailab-plat-sdk/src/main/java/com/iailab/sdk/util/http/IailabHttpUtils.java | 5 iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/constants/SdkErrorCodeConstants.java | 17 ++++ iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java | 14 +-- iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/IailabAuthClient.java | 58 +++++++++++--- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java | 12 +- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java | 8 + iailab-plat-sdk/src/test/java/com/iailab/sdk/IailabClientTest.java | 19 ++++ 11 files changed, 149 insertions(+), 61 deletions(-) diff --git a/iailab-cloud/iailab-gateway/src/main/resources/application.yaml b/iailab-cloud/iailab-gateway/src/main/resources/application.yaml index 3f5f03f..c0946b9 100644 --- a/iailab-cloud/iailab-gateway/src/main/resources/application.yaml +++ b/iailab-cloud/iailab-gateway/src/main/resources/application.yaml @@ -122,6 +122,13 @@ - Path=/admin-api/shasteel/** filters: - RewritePath=/admin-api/shasteel/v3/api-docs, /v3/api-docs + ## ansteel 服务 + - id: ansteel-admin-api # 路由的编号 + uri: grayLb://ansteel-server + predicates: # 断言,作为路由的匹配条件,对应 RouteDefinition 数组 + - Path=/admin-api/ansteel/** + filters: + - RewritePath=/admin-api/ansteel/v3/api-docs, /v3/api-docs ## xmcpms 服务 - id: xmcpms-admin-api # 路由的编号 uri: grayLb://xmcpms-server @@ -195,4 +202,4 @@ # 日志文件配置 logging: level: - org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 芋艿:先禁用,Spring Boot 3.X 存在部分错误的 WARN 提示 \ No newline at end of file + org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 先禁用,Spring Boot 3.X 存在部分错误的 WARN 提示 \ No newline at end of file diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java index a08edd1..3c80215 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java @@ -722,9 +722,11 @@ } MmItemOutputEntity outPut = mmItemOutputService.getByItemid(predictItem.getId(), itemNo[1], itemNo[2]); String outputId = outPut.getId(); - // 如果第5个参数为1,则取累计值 - if ("1".equals(itemNo[4])){ - outputId = outPut.getId() + CommonDict.CUMULANT_SUFFIX; + // 判断是否有第五个参数,如果有第5个参数为1,则取累计值 + if (itemNo.length >= 5){ + if (StringUtils.isNotBlank(itemNo[4]) && "1".equals(itemNo[4])){ + outputId = outPut.getId() + CommonDict.CUMULANT_SUFFIX; + } } Date predictTime = predictItem.getLastTime(); List<Object[]> curData = mmItemResultJsonService.getData(outputId, predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java index a6cac8e..bea9b0a 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/predict/PredictResultHandler.java @@ -42,12 +42,13 @@ Calendar calendar = Calendar.getInstance(); calendar.setTime(predictResult.getPredictTime()); for (Integer i = 0; i < rows; i++) { + // 从下个时间粒度开始 + calendar.add(Calendar.SECOND, predictResult.getGranularity()); + DataValueVO predictData = new DataValueVO(); predictData.setDataTime(calendar.getTime()); predictData.setDataValue(Double.valueOf(entry.getValue()[i])); predictDataList.add(predictData); - - calendar.add(Calendar.SECOND, predictResult.getGranularity()); } resultMap.put(entry.getKey().getId(), predictDataList); predictLists.put(entry.getKey().getResultstr(), predictDataList); @@ -59,7 +60,7 @@ // 时间 预测时间+预测长度*粒度 Calendar calendar = Calendar.getInstance(); calendar.setTime(predictResult.getPredictTime()); - calendar.add(Calendar.SECOND, predictResult.getGranularity() * (rows - 1)); + calendar.add(Calendar.SECOND, predictResult.getGranularity() * rows); predictData.setDataTime(calendar.getTime()); //值 所有值相加/除数 BigDecimal sum = BigDecimal.valueOf(Arrays.stream(entry.getValue()).sum()); @@ -85,12 +86,13 @@ Calendar calendar = Calendar.getInstance(); calendar.setTime(predictResult.getPredictTime()); for (Integer i = 0; i < rows; i++) { + // 从下个时间粒度开始 + calendar.add(Calendar.SECOND, predictResult.getGranularity()); + DataValueVO predictData = new DataValueVO(); predictData.setDataTime(calendar.getTime()); predictData.setDataValue(Double.valueOf(entry.getValue()[i])); predictDataList.add(predictData); - - calendar.add(Calendar.SECOND, predictResult.getGranularity()); } predictLists.put(entry.getKey().getResultstr(), predictDataList); } diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java index ce08ee6..ba11c8b 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mdk/sample/SampleInfoConstructor.java @@ -78,20 +78,18 @@ */ protected Date getStartTime(ColumnItem columnItem, Date originalTime) { Date dateTime = new Date(); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(originalTime); switch (ModelParamType.getEumByCode(columnItem.getParamType())) { case DATAPOINT: case PLAN: - dateTime = calculateTime(originalTime, true, columnItem.getDataLength(), columnItem.getGranularity()); + dateTime = calculateTime(originalTime, true, columnItem.getDataLength() + 1, columnItem.getGranularity()); break; case IND: case IND_ASCII: - dateTime = calculateTime(originalTime, true, columnItem.getDataLength()-1, columnItem.getGranularity()); + dateTime = calculateTime(originalTime, true, columnItem.getDataLength(), columnItem.getGranularity()); break; case NORMALITEM: case MERGEITEM: - dateTime = calendar.getTime(); + dateTime = calculateTime(originalTime, false, 1, columnItem.getGranularity()); break; default: break; @@ -113,14 +111,14 @@ calendar.setTime(originalTime); switch (ModelParamType.getEumByCode(columnItem.getParamType())) { case DATAPOINT: + case PLAN: case IND: case IND_ASCII: - case PLAN: - dateTime = calendar.getTime(); + dateTime = calculateTime(originalTime, true, 1, columnItem.getGranularity()); break; case NORMALITEM: case MERGEITEM: - dateTime = calculateTime(originalTime, false, columnItem.getDataLength(), columnItem.getGranularity()); + dateTime = calculateTime(originalTime, false, columnItem.getDataLength() + 1, columnItem.getGranularity()); break; default: break; diff --git a/iailab-plat-sdk/pom.xml b/iailab-plat-sdk/pom.xml index af4e3d0..e43ea81 100644 --- a/iailab-plat-sdk/pom.xml +++ b/iailab-plat-sdk/pom.xml @@ -55,17 +55,49 @@ <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <version>3.3.0</version> - <configuration> - <archive> - <manifest> - <addClasspath>true</addClasspath> - </manifest> - </archive> - </configuration> + <artifactId>maven-assembly-plugin</artifactId> + <version>3.6.0</version> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>single</goal> + </goals> + <configuration> + <descriptorRefs> + <!-- 使用预定义的打包方式:将所有内容合并到 JAR 中 --> + <descriptorRef>jar-with-dependencies</descriptorRef> + </descriptorRefs> + <!-- 指定主类 --> + <archive> + <manifest> + <mainClass>com.iailab.sdk.IailabPlatSdkMain</mainClass> + </manifest> + </archive> + </configuration> + </execution> + </executions> </plugin> </plugins> </build> +<!-- <build>--> +<!-- <plugins>--> +<!-- <plugin>--> +<!-- <groupId>org.apache.maven.plugins</groupId>--> +<!-- <artifactId>maven-jar-plugin</artifactId>--> +<!-- <version>3.3.0</version>--> +<!-- <configuration>--> +<!-- <archive>--> +<!-- <manifest>--> +<!-- <addClasspath>true</addClasspath>--> +<!-- <classpathPrefix>lib/</classpathPrefix>--> +<!-- <mainClass>com.iailab.sdk.IailabPlatSdkMain</mainClass>--> +<!-- </manifest>--> +<!-- </archive>--> +<!-- </configuration>--> +<!-- </plugin>--> +<!-- </plugins>--> +<!-- </build>--> + </project> diff --git a/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/IailabAuthClient.java b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/IailabAuthClient.java index 388ff67..17c088b 100644 --- a/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/IailabAuthClient.java +++ b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/IailabAuthClient.java @@ -1,9 +1,11 @@ package com.iailab.sdk.auth.client; +import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.databind.ObjectMapper; import com.iailab.sdk.auth.client.dto.TokenDTO; -import com.iailab.sdk.auth.client.vo.AuthLoginReqVO; import com.iailab.sdk.auth.config.AuthProperties; +import com.iailab.sdk.auth.constants.SdkErrorCodeConstants; +import com.iailab.sdk.util.http.IailabHttpUtils; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.*; import org.springframework.stereotype.Component; @@ -16,9 +18,7 @@ import java.nio.charset.StandardCharsets; import java.util.*; -import static com.iailab.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST; import static com.iailab.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.iailab.sdk.auth.enums.ErrorCodeConstants.*; /** * @author Houzhongjian @@ -40,6 +40,8 @@ private static final String GRAND_TYPE = "password"; private static final String SCOPE = "user.read user.write"; + + private static final String CHARSET = "utf-8"; // 鉴权token public static String accessToken; @@ -72,13 +74,22 @@ new HttpEntity<>(headers), new ParameterizedTypeReference<Map<String, Object>>() { }); - Map<String, Object> authMap = exchange.getBody(); - if(AUTH_BAD_CREDENTIALS.getCode().equals(authMap.get("code"))) { - throw exception(AUTH_BAD_CREDENTIALS); - } else if(AUTH_LOGIN_BAD_CREDENTIALS.getCode().equals(authMap.get("code"))) { - throw exception(AUTH_LOGIN_BAD_CREDENTIALS); - } Assert.isTrue(exchange.getStatusCode().is2xxSuccessful(), "响应必须是 200 成功"); + Map<String, Object> authMap = exchange.getBody(); + Object code = authMap.get("code"); + if(SdkErrorCodeConstants.AUTH_BAD_CREDENTIALS.getCode().equals(code)) { + throw exception(SdkErrorCodeConstants.AUTH_BAD_CREDENTIALS); + } else if(SdkErrorCodeConstants.AUTH_LOGIN_BAD_CREDENTIALS.getCode().equals(code)) { + throw exception(SdkErrorCodeConstants.AUTH_LOGIN_BAD_CREDENTIALS); + } else if(SdkErrorCodeConstants.OAUTH2_CLIENT_REDIRECT_URI_NOT_MATCH.getCode().equals(code)) { + throw exception(SdkErrorCodeConstants.OAUTH2_CLIENT_REDIRECT_URI_NOT_MATCH); + } else if(SdkErrorCodeConstants.OAUTH2_CLIENT_CLIENT_SECRET_ERROR.getCode().equals(code)) { + throw exception(SdkErrorCodeConstants.OAUTH2_CLIENT_CLIENT_SECRET_ERROR); + } else if(SdkErrorCodeConstants.OAUTH2_CLIENT_NOT_EXISTS.getCode().equals(code)) { + throw exception(SdkErrorCodeConstants.OAUTH2_CLIENT_NOT_EXISTS); + } else if(SdkErrorCodeConstants.OAUTH2_CLIENT_DISABLE.getCode().equals(code)) { + throw exception(SdkErrorCodeConstants.OAUTH2_CLIENT_DISABLE); + } accessToken = authMap.get("access_token").toString(); refreshToken = authMap.get("refresh_token").toString(); expireTime = Long.valueOf(authMap.get("expires_time").toString()); @@ -107,13 +118,33 @@ if (code == 401) { authenticate(); } else { - throw exception(AUTH_REFRESH_TOKEN_ERROR); + throw exception(SdkErrorCodeConstants.AUTH_REFRESH_TOKEN_ERROR); } } else { accessToken = authMap.get("access_token").toString(); expireTime = Long.valueOf(authMap.get("expires_time").toString()); } return handleResponse(exchange); + } + + /** + * 平台http请求封装 + * @param method + * @param url + * @param params + * @return + * @throws Exception + */ + public static String doHttp(String method, String url, Map<String, Object> params) throws Exception { + String response = null; + String upperMethod = method.toUpperCase(); + if("GET".equals(upperMethod)) { + response = IailabHttpUtils.doGet(url, params, CHARSET); + } else if("POST".equals(upperMethod)) { + ObjectMapper objectMapper = new ObjectMapper(); + response = IailabHttpUtils.doPost(url, objectMapper.writeValueAsString(params), CHARSET); + } + return response; } private static void addClientHeader(HttpHeaders headers) { @@ -131,10 +162,9 @@ System.out.println(response); TokenDTO authTokenDTO = new TokenDTO(); Map<String, Object> authMap = (Map<String, Object>)response.getBody(); - Map<String, Object> tokenData = (Map<String, Object>)authMap.get("data"); - authTokenDTO.setAccessToken(tokenData.get("accessToken").toString()); - authTokenDTO.setRefreshToken(tokenData.get("refreshToken").toString()); - authTokenDTO.setExpiresTime(Long.valueOf(tokenData.get("expiresTime").toString())); + authTokenDTO.setAccessToken(authMap.get("access_token").toString()); + authTokenDTO.setRefreshToken(authMap.get("refresh_token").toString()); + authTokenDTO.setExpiresTime(Long.valueOf(authMap.get("expires_time").toString())); return authTokenDTO; } diff --git a/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/constants/SdkErrorCodeConstants.java b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/constants/SdkErrorCodeConstants.java new file mode 100644 index 0000000..dbbdfea --- /dev/null +++ b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/constants/SdkErrorCodeConstants.java @@ -0,0 +1,17 @@ +package com.iailab.sdk.auth.constants; + +import com.iailab.framework.common.exception.ErrorCode; + +public class SdkErrorCodeConstants { + + // ========== AUTH 模块 1-002-000-000 ========== + public static final ErrorCode AUTH_LOGIN_BAD_CREDENTIALS = new ErrorCode(1_002_000_000, "登录失败,账号密码不正确"); + public static final ErrorCode AUTH_BAD_CREDENTIALS = new ErrorCode(400, "client_id 或 client_secret 未正确传递"); + public static final ErrorCode AUTH_REFRESH_TOKEN_ERROR = new ErrorCode(1_002_000_001, "刷新token失败"); + public static final ErrorCode OAUTH2_CLIENT_NOT_EXISTS = new ErrorCode(1_002_020_000, "OAuth2 客户端不存在"); + public static final ErrorCode OAUTH2_CLIENT_DISABLE = new ErrorCode(1_002_020_002, "OAuth2 客户端已禁用"); + public static final ErrorCode OAUTH2_CLIENT_REDIRECT_URI_NOT_MATCH = new ErrorCode(1_002_020_005, "无效 redirect_uri: {}"); + public static final ErrorCode OAUTH2_CLIENT_CLIENT_SECRET_ERROR = new ErrorCode(1_002_020_006, "无效 client_secret: {}"); + + private SdkErrorCodeConstants() {} +} diff --git a/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/enums/ErrorCodeConstants.java b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/enums/ErrorCodeConstants.java deleted file mode 100644 index 46af76a..0000000 --- a/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/enums/ErrorCodeConstants.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.iailab.sdk.auth.enums; - -import com.iailab.framework.common.exception.ErrorCode; - -/** - * System 错误码枚举类 - * - * system 系统,使用 1-002-000-000 段 - */ -public interface ErrorCodeConstants { - - // ========== AUTH 模块 1-002-000-000 ========== - ErrorCode AUTH_LOGIN_BAD_CREDENTIALS = new ErrorCode(1_002_000_000, "登录失败,账号密码不正确"); - ErrorCode AUTH_BAD_CREDENTIALS = new ErrorCode(400, "client_id 或 client_secret 未正确传递"); - ErrorCode AUTH_REFRESH_TOKEN_ERROR = new ErrorCode(1_002_000_001, "刷新token失败"); -} diff --git a/iailab-plat-sdk/src/main/java/com/iailab/sdk/util/http/HttpClientFactory.java b/iailab-plat-sdk/src/main/java/com/iailab/sdk/util/http/HttpClientFactory.java index d775d70..8a43f41 100644 --- a/iailab-plat-sdk/src/main/java/com/iailab/sdk/util/http/HttpClientFactory.java +++ b/iailab-plat-sdk/src/main/java/com/iailab/sdk/util/http/HttpClientFactory.java @@ -149,7 +149,7 @@ return null; } - private static void safeClose(Closeable closeable,String errMsg){ + private static void safeClose(Closeable closeable,String errMsg){ try{ if(closeable!=null) closeable.close(); diff --git a/iailab-plat-sdk/src/main/java/com/iailab/sdk/util/http/IailabHttpUtils.java b/iailab-plat-sdk/src/main/java/com/iailab/sdk/util/http/IailabHttpUtils.java index 9c1eda9..f59f119 100644 --- a/iailab-plat-sdk/src/main/java/com/iailab/sdk/util/http/IailabHttpUtils.java +++ b/iailab-plat-sdk/src/main/java/com/iailab/sdk/util/http/IailabHttpUtils.java @@ -31,7 +31,7 @@ * @param charset * @return */ - public static String doGet(String url, Map<String, String> map, String charset) throws Exception { + public static String doGet(String url, Map<String, Object> map, String charset) throws Exception { System.out.println("start doGet url: " + url); checkToken(); org.apache.http.client.HttpClient httpClient = null; @@ -48,7 +48,7 @@ } map.forEach((k, v) -> { try { - sb.append(k + "=" + URLEncoder.encode(v, charset) + "&"); + sb.append(k + "=" + URLEncoder.encode(v.toString(), charset) + "&"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } @@ -62,7 +62,6 @@ httpGet.addHeader("Content-Type", "application/json;charset=UTF-8"); httpGet.addHeader("Authorization", "Bearer " + IailabAuthClient.accessToken); httpGet.addHeader("Tenant-Id", String.valueOf(authProperties.getTenantId())); - HttpResponse response = httpClient.execute(httpGet); if (response != null) { HttpEntity resEntity = response.getEntity(); diff --git a/iailab-plat-sdk/src/test/java/com/iailab/sdk/IailabClientTest.java b/iailab-plat-sdk/src/test/java/com/iailab/sdk/IailabClientTest.java index 6ca996c..9ca7867 100644 --- a/iailab-plat-sdk/src/test/java/com/iailab/sdk/IailabClientTest.java +++ b/iailab-plat-sdk/src/test/java/com/iailab/sdk/IailabClientTest.java @@ -7,6 +7,10 @@ import org.junit.jupiter.api.Test; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** @@ -17,7 +21,7 @@ public class IailabClientTest extends BaseMockitoUnitTest { @Test - public void testLogin() throws Exception { + public void testLogin() { IailabAuthClient.authenticate(); } @@ -27,5 +31,18 @@ IailabAuthClient.refreshToken(); } + @Test + public void testDoHttp() throws Exception { + Map<String, Object> params = new HashMap<String, Object>(); + List<String> itemNos = new ArrayList<String>(); + params.put("start", "2024-06-11 07:24:00"); + params.put("end", "2024-06-13 00:00:00"); + itemNos.add("P0000100010"); + params.put("itemNos", itemNos); + // 准备参数 + String s = IailabAuthClient.doHttp("POST", "http://172.16.8.100/admin-api/data/api/query-plans/chart", params); + System.out.println(s); + } + } -- Gitblit v1.9.3