From fcc5791b5d0d03e346896800fbbc51994a93a32a Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期三, 12 三月 2025 17:37:32 +0800
Subject: [PATCH] SDK 业务功能

---
 iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/pojo/CommonResult.java                        |   55 +++++
 iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/exception/package-info.java                   |    1 
 iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/pojo/PageParam.java                           |   39 +++
 iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/dto/ApiPointsValueQueryDTO.java                      |   48 ++++
 iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/dto/StAlarmAndSuggestRespDTO.java                    |   81 ++++++++
 iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/exception/enums/GlobalErrorCodeConstants.java |   44 ++++
 iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/IailabAuthClient.java                                |  132 +++++++++---
 iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/dto/StAlarmAndSuggestPageReqDTO.java                 |   83 ++++++++
 iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/package-info.java                             |    1 
 iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/pojo/PageResult.java                          |   49 ++++
 iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/exception/ErrorCode.java                      |   28 ++
 iailab-plat-sdk/src/test/java/com/iailab/sdk/IailabClientTest.java                                            |   18 -
 12 files changed, 526 insertions(+), 53 deletions(-)

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 0a25789..e0a76ef 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
@@ -3,7 +3,12 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.iailab.sdk.auth.client.dto.ApiDataQueryDTO;
+import com.iailab.sdk.auth.client.common.exception.enums.GlobalErrorCodeConstants;
+import com.iailab.sdk.auth.client.common.pojo.CommonResult;
+import com.iailab.sdk.auth.client.common.pojo.PageResult;
+import com.iailab.sdk.auth.client.dto.ApiPointsValueQueryDTO;
+import com.iailab.sdk.auth.client.dto.StAlarmAndSuggestPageReqDTO;
+import com.iailab.sdk.auth.client.dto.StAlarmAndSuggestRespDTO;
 import com.iailab.sdk.auth.client.dto.TokenDTO;
 import com.iailab.sdk.auth.config.SdkAutoConfiguration;
 import com.iailab.sdk.auth.constants.SdkErrorCodeConstants;
@@ -20,6 +25,7 @@
 import java.util.*;
 
 import static com.iailab.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.iailab.framework.common.pojo.CommonResult.success;
 
 /**
  * @author Houzhongjian
@@ -70,6 +76,7 @@
     public static Long expireTime;
 
     private static final String RESP_CODE = "code";
+    private static final String RESP_MSG = "msg";
     private static final String RESP_DATA = "data";
 
     /**
@@ -98,17 +105,17 @@
         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)) {
+        if (SdkErrorCodeConstants.AUTH_BAD_CREDENTIALS.getCode().equals(code)) {
             throw exception(SdkErrorCodeConstants.AUTH_BAD_CREDENTIALS);
-        } else if(SdkErrorCodeConstants.AUTH_LOGIN_BAD_CREDENTIALS.getCode().equals(code)) {
+        } 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)) {
+        } 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)) {
+        } 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)) {
+        } 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)) {
+        } else if (SdkErrorCodeConstants.OAUTH2_CLIENT_DISABLE.getCode().equals(code)) {
             throw exception(SdkErrorCodeConstants.OAUTH2_CLIENT_DISABLE);
         }
         accessToken = authMap.get("access_token").toString();
@@ -150,6 +157,7 @@
 
     /**
      * 平台http请求封装
+     *
      * @param method
      * @param url
      * @param params
@@ -159,9 +167,9 @@
     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)) {
+        if ("GET".equals(upperMethod)) {
             response = IailabHttpUtils.doGet(url, params, CHARSET);
-        } else if("POST".equals(upperMethod)) {
+        } else if ("POST".equals(upperMethod)) {
             ObjectMapper objectMapper = new ObjectMapper();
             response = IailabHttpUtils.doPost(url, objectMapper.writeValueAsString(params), CHARSET);
         }
@@ -177,35 +185,22 @@
         headers.set("tenant-id", TENANT_ID.toString());
     }
 
-    // 统一处理响应
+    /**
+     * 统一处理响应
+     *
+     * @param response
+     * @param <T>
+     * @return
+     */
     private static <T> TokenDTO handleResponse(ResponseEntity<T> response) {
         Assert.isTrue(response.getStatusCode().is2xxSuccessful(), "响应必须是 200 成功");
         System.out.println(response);
         TokenDTO authTokenDTO = new TokenDTO();
-        Map<String, Object> authMap = (Map<String, Object>)response.getBody();
+        Map<String, Object> authMap = (Map<String, Object>) response.getBody();
         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;
-    }
-
-    /**
-     * 查询计划chart (测试用)
-     * @param apiDataQueryDTO
-     * @return
-     * @throws Exception
-     */
-    public Map<String, Object> queryPlanChart(ApiDataQueryDTO apiDataQueryDTO) throws Exception {
-        Map<String, Object> data = new HashMap<>();
-        ObjectMapper objectMapper = new ObjectMapper();
-        String jsonString = objectMapper.writeValueAsString(apiDataQueryDTO);
-        String resp = IailabHttpUtils.doPost(BASE_URL + "/data/api/query-plans/chart", jsonString, "utf-8");
-        if (StringUtils.isEmpty(resp)) {
-            return data;
-        }
-        JSONObject jsonObject = JSON.parseObject(resp);
-        data = jsonObject.getJSONObject(RESP_DATA).toJavaObject(Map.class);
-        return data;
     }
 
     /**
@@ -214,16 +209,77 @@
      * @param pointNos
      * @return
      */
-    public Map<String, Object> queryPointsRealValue(List<String> pointNos) throws Exception {
+    public CommonResult<Map<String, Object>> queryPointsRealValue(List<String> pointNos) {
         Map<String, Object> data = new HashMap<>();
-        String url = BASE_URL + "/data/api/query-points/real-value";
-        String resp = IailabHttpUtils.doPost(url, JSON.toJSONString(pointNos), "UTF-8");
-        if (StringUtils.isEmpty(resp)) {
-            return data;
+        try {
+            String url = BASE_URL + "/data/api/query-points/real-value";
+            String resp = IailabHttpUtils.doPost(url, JSON.toJSONString(pointNos), "UTF-8");
+            if (StringUtils.isEmpty(resp)) {
+                return CommonResult.error(GlobalErrorCodeConstants.EMPTY_RESP);
+            }
+            JSONObject jsonObject = JSON.parseObject(resp);
+            Integer respCode = jsonObject.getInteger(RESP_CODE);
+            if (!GlobalErrorCodeConstants.SUCCESS.getCode().equals(respCode)) {
+                CommonResult.error(respCode, jsonObject.getString(RESP_MSG));
+            }
+            data = jsonObject.getJSONObject(RESP_DATA).toJavaObject(Map.class);
+        } catch (Exception ex) {
+            return CommonResult.error(GlobalErrorCodeConstants.UNKNOWN.getCode(), ex.getMessage());
         }
-        JSONObject jsonObject = JSON.parseObject(resp);
-        data = jsonObject.getJSONObject(RESP_DATA).toJavaObject(Map.class);
-        return data;
+        return CommonResult.success(data);
     }
 
+    /**
+     * 查询多个测点历史值
+     *
+     * @param queryDto
+     * @return
+     */
+    public CommonResult<Map<String, List<Map<String, Object>>>> queryPointsHistoryValue(ApiPointsValueQueryDTO queryDto) {
+        Map<String, List<Map<String, Object>>> data = new HashMap<>();
+        try {
+            String url = BASE_URL + "/data/api/query-points/history-value";
+            String resp = IailabHttpUtils.doPost(url, JSON.toJSONString(queryDto), "UTF-8");
+            if (StringUtils.isEmpty(resp)) {
+                return CommonResult.error(GlobalErrorCodeConstants.EMPTY_RESP);
+            }
+            JSONObject jsonObject = JSON.parseObject(resp);
+            Integer respCode = jsonObject.getInteger(RESP_CODE);
+            if (!GlobalErrorCodeConstants.SUCCESS.getCode().equals(respCode)) {
+                CommonResult.error(respCode, jsonObject.getString(RESP_MSG));
+            }
+            data = jsonObject.getJSONObject(RESP_DATA).toJavaObject(Map.class);
+        } catch (Exception ex) {
+            return CommonResult.error(GlobalErrorCodeConstants.UNKNOWN.getCode(), ex.getMessage());
+        }
+        return CommonResult.success(data);
+    }
+
+    /**
+     * 获取预警信息和调度建议分页列表
+     *
+     * @param reqVO
+     * @return
+     */
+    public CommonResult<PageResult<StAlarmAndSuggestRespDTO>> getAlarmAndSuggestPage(StAlarmAndSuggestPageReqDTO reqVO) {
+        PageResult<StAlarmAndSuggestRespDTO> data = new PageResult<>();
+        try {
+            String url = BASE_URL + "/model/api/mcs/alarm-suggest/page";
+            String resp = IailabHttpUtils.doPost(url, JSON.toJSONString(reqVO), "UTF-8");
+            if (StringUtils.isEmpty(resp)) {
+                return CommonResult.error(GlobalErrorCodeConstants.EMPTY_RESP);
+            }
+            JSONObject jsonObject = JSON.parseObject(resp);
+            Integer respCode = jsonObject.getInteger(RESP_CODE);
+            if (!GlobalErrorCodeConstants.SUCCESS.getCode().equals(respCode)) {
+                CommonResult.error(respCode, jsonObject.getString(RESP_MSG));
+            }
+            Long total = Long.parseLong(jsonObject.getJSONObject(RESP_DATA).get("total").toString());
+            List<StAlarmAndSuggestRespDTO> list = jsonObject.getJSONObject(RESP_DATA).getJSONArray("list").toJavaList(StAlarmAndSuggestRespDTO.class);
+            data = new PageResult<>(list, total);
+        } catch (Exception ex) {
+            return CommonResult.error(GlobalErrorCodeConstants.UNKNOWN.getCode(), ex.getMessage());
+        }
+        return CommonResult.success(data);
+    }
 }
\ No newline at end of file
diff --git a/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/exception/ErrorCode.java b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/exception/ErrorCode.java
new file mode 100644
index 0000000..9be36ab
--- /dev/null
+++ b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/exception/ErrorCode.java
@@ -0,0 +1,28 @@
+package com.iailab.sdk.auth.client.common.exception;
+
+import lombok.Data;
+
+/**
+ * 错误码对象
+ *
+ *
+ * TODO 错误码设计成对象的原因,为未来的 i18 国际化做准备
+ */
+@Data
+public class ErrorCode {
+
+    /**
+     * 错误码
+     */
+    private final Integer code;
+    /**
+     * 错误提示
+     */
+    private final String msg;
+
+    public ErrorCode(Integer code, String message) {
+        this.code = code;
+        this.msg = message;
+    }
+
+}
diff --git a/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/exception/enums/GlobalErrorCodeConstants.java b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/exception/enums/GlobalErrorCodeConstants.java
new file mode 100644
index 0000000..53faadc
--- /dev/null
+++ b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/exception/enums/GlobalErrorCodeConstants.java
@@ -0,0 +1,44 @@
+package com.iailab.sdk.auth.client.common.exception.enums;
+
+import com.iailab.sdk.auth.client.common.exception.ErrorCode;
+
+/**
+ * 全局错误码枚举
+ * 0-999 系统异常编码保留
+ *
+ * 一般情况下,使用 HTTP 响应状态码 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status
+ * 虽然说,HTTP 响应状态码作为业务使用表达能力偏弱,但是使用在系统层面还是非常不错的
+ * 比较特殊的是,因为之前一直使用 0 作为成功,就不使用 200 啦。
+ *
+ * @author iailab
+ */
+public interface GlobalErrorCodeConstants {
+
+    ErrorCode SUCCESS = new ErrorCode(0, "成功");
+
+    // ========== 客户端错误段 ==========
+
+    ErrorCode BAD_REQUEST = new ErrorCode(400, "请求参数不正确");
+    ErrorCode UNAUTHORIZED = new ErrorCode(401, "账号未登录");
+    ErrorCode FORBIDDEN = new ErrorCode(403, "没有该操作权限");
+    ErrorCode NOT_FOUND = new ErrorCode(404, "请求未找到");
+    ErrorCode METHOD_NOT_ALLOWED = new ErrorCode(405, "请求方法不正确");
+    ErrorCode DATA_REPETITION = new ErrorCode(406, "数据库存在重复数据");
+    ErrorCode LOCKED = new ErrorCode(423, "请求失败,请稍后重试"); // 并发请求,不允许
+    ErrorCode TOO_MANY_REQUESTS = new ErrorCode(429, "请求过于频繁,请稍后重试");
+
+    // ========== 服务端错误段 ==========
+
+    ErrorCode INTERNAL_SERVER_ERROR = new ErrorCode(500, "系统异常");
+    ErrorCode NOT_IMPLEMENTED = new ErrorCode(501, "功能未实现/未开启");
+    ErrorCode ERROR_CONFIGURATION = new ErrorCode(502, "错误的配置项");
+
+    // ========== 自定义错误段 ==========
+    ErrorCode REPEATED_REQUESTS = new ErrorCode(900, "重复请求,请稍后重试"); // 重复请求
+    ErrorCode DEMO_DENY = new ErrorCode(901, "演示模式,禁止写操作");
+
+    ErrorCode EMPTY_RESP = new ErrorCode(992, "结果为空");
+
+    ErrorCode UNKNOWN = new ErrorCode(999, "未知错误");
+
+}
diff --git a/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/exception/package-info.java b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/exception/package-info.java
new file mode 100644
index 0000000..c3d18d3
--- /dev/null
+++ b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/exception/package-info.java
@@ -0,0 +1 @@
+package com.iailab.sdk.auth.client.common.exception;
\ No newline at end of file
diff --git a/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/package-info.java b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/package-info.java
new file mode 100644
index 0000000..1285d56
--- /dev/null
+++ b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/package-info.java
@@ -0,0 +1 @@
+package com.iailab.sdk.auth.client.common;
\ No newline at end of file
diff --git a/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/pojo/CommonResult.java b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/pojo/CommonResult.java
new file mode 100644
index 0000000..f36b397
--- /dev/null
+++ b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/pojo/CommonResult.java
@@ -0,0 +1,55 @@
+package com.iailab.sdk.auth.client.common.pojo;
+
+import com.iailab.sdk.auth.client.common.exception.ErrorCode;
+import com.iailab.sdk.auth.client.common.exception.enums.GlobalErrorCodeConstants;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 通用返回
+ *
+ * @param <T> 数据泛型
+ */
+@Data
+public class CommonResult<T> implements Serializable {
+
+    /**
+     * 错误码
+     *
+     * @see ErrorCode#getCode()
+     */
+    private Integer code;
+    /**
+     * 返回数据
+     */
+    private T data;
+    /**
+     * 错误提示,用户可阅读
+     *
+     * @see ErrorCode#getMsg() ()
+     */
+    private String msg;
+
+    public static <T> CommonResult<T> error(Integer code, String message) {
+        CommonResult<T> result = new CommonResult<>();
+        result.code = code;
+        result.msg = message;
+        return result;
+    }
+
+    public static <T> CommonResult<T> error(ErrorCode errorCode) {
+        return error(errorCode.getCode(), errorCode.getMsg());
+    }
+
+    public static <T> CommonResult<T> success(T data) {
+        CommonResult<T> result = new CommonResult<>();
+        result.code = GlobalErrorCodeConstants.SUCCESS.getCode();
+        result.data = data;
+        result.msg = "";
+        return result;
+    }
+
+
+
+}
diff --git a/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/pojo/PageParam.java b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/pojo/PageParam.java
new file mode 100644
index 0000000..d60806a
--- /dev/null
+++ b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/pojo/PageParam.java
@@ -0,0 +1,39 @@
+package com.iailab.sdk.auth.client.common.pojo;
+
+import java.io.Serializable;
+
+/**
+ * 分页参数
+ */
+public class PageParam implements Serializable {
+
+    private static final Integer PAGE_NO = 1;
+    private static final Integer PAGE_SIZE = 10;
+
+    /**
+     * 每页条数 - 不分页
+     *
+     * 例如说,导出接口,可以设置 {@link #pageSize} 为 -1 不分页,查询所有数据。
+     */
+    public static final Integer PAGE_SIZE_NONE = -1;
+
+    private Integer pageNo = PAGE_NO;
+
+    private Integer pageSize = PAGE_SIZE;
+
+    public Integer getPageNo() {
+        return pageNo;
+    }
+
+    public void setPageNo(Integer pageNo) {
+        this.pageNo = pageNo;
+    }
+
+    public Integer getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(Integer pageSize) {
+        this.pageSize = pageSize;
+    }
+}
diff --git a/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/pojo/PageResult.java b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/pojo/PageResult.java
new file mode 100644
index 0000000..4b4c2ec
--- /dev/null
+++ b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/common/pojo/PageResult.java
@@ -0,0 +1,49 @@
+package com.iailab.sdk.auth.client.common.pojo;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+public final class PageResult<T> implements Serializable {
+
+    private List<T> list;
+
+    private Long total;
+
+    public PageResult() {
+    }
+
+    public PageResult(List<T> list, Long total) {
+        this.list = list;
+        this.total = total;
+    }
+
+    public PageResult(Long total) {
+        this.list = new ArrayList<>();
+        this.total = total;
+    }
+
+    public static <T> PageResult<T> empty() {
+        return new PageResult<>(0L);
+    }
+
+    public static <T> PageResult<T> empty(Long total) {
+        return new PageResult<>(total);
+    }
+
+    public List<T> getList() {
+        return list;
+    }
+
+    public void setList(List<T> list) {
+        this.list = list;
+    }
+
+    public Long getTotal() {
+        return total;
+    }
+
+    public void setTotal(Long total) {
+        this.total = total;
+    }
+}
diff --git a/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/dto/ApiPointsValueQueryDTO.java b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/dto/ApiPointsValueQueryDTO.java
new file mode 100644
index 0000000..d237ee6
--- /dev/null
+++ b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/dto/ApiPointsValueQueryDTO.java
@@ -0,0 +1,48 @@
+package com.iailab.sdk.auth.client.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年11月24日
+ */
+public class ApiPointsValueQueryDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private List<String> pointNos;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date start;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date end;
+
+    public List<String> getPointNos() {
+        return pointNos;
+    }
+
+    public void setPointNos(List<String> pointNos) {
+        this.pointNos = pointNos;
+    }
+
+    public Date getStart() {
+        return start;
+    }
+
+    public void setStart(Date start) {
+        this.start = start;
+    }
+
+    public Date getEnd() {
+        return end;
+    }
+
+    public void setEnd(Date end) {
+        this.end = end;
+    }
+}
\ No newline at end of file
diff --git a/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/dto/StAlarmAndSuggestPageReqDTO.java b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/dto/StAlarmAndSuggestPageReqDTO.java
new file mode 100644
index 0000000..b7b5954
--- /dev/null
+++ b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/dto/StAlarmAndSuggestPageReqDTO.java
@@ -0,0 +1,83 @@
+package com.iailab.sdk.auth.client.dto;
+
+
+import com.iailab.sdk.auth.client.common.pojo.PageParam;
+
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2025年01月07日
+ */
+public class StAlarmAndSuggestPageReqDTO extends PageParam {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 查询对象
+     */
+    private String obj;
+
+    /**
+     * 查询对象列表
+     */
+    private List<String> objList;
+
+    /**
+     * 类型(alarm:预警,suggest:建议)
+     */
+    private String type;
+
+    /**
+     * 开始时间
+     * yyyy-MM-dd HH:mm:ss
+     */
+    private String startTime;
+
+    /**
+     * 结束时间
+     * yyyy-MM-dd HH:mm:ss
+     */
+    private String endTime;
+
+    public String getObj() {
+        return obj;
+    }
+
+    public void setObj(String obj) {
+        this.obj = obj;
+    }
+
+    public List<String> getObjList() {
+        return objList;
+    }
+
+    public void setObjList(List<String> objList) {
+        this.objList = objList;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/dto/StAlarmAndSuggestRespDTO.java b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/dto/StAlarmAndSuggestRespDTO.java
new file mode 100644
index 0000000..1b7c434
--- /dev/null
+++ b/iailab-plat-sdk/src/main/java/com/iailab/sdk/auth/client/dto/StAlarmAndSuggestRespDTO.java
@@ -0,0 +1,81 @@
+package com.iailab.sdk.auth.client.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2025年01月07日
+ */
+public class StAlarmAndSuggestRespDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 类型(预警:alarm,建议:suggest)
+     */
+    private String type;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 对象
+     */
+    private String obj;
+
+    /**
+     * 时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date time;
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getObj() {
+        return obj;
+    }
+
+    public void setObj(String obj) {
+        this.obj = obj;
+    }
+
+    public Date getTime() {
+        return time;
+    }
+
+    public void setTime(Date time) {
+        this.time = time;
+    }
+}
\ No newline at end of file
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 82fb308..00021aa 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
@@ -1,6 +1,7 @@
 package com.iailab.sdk;
 
 import com.iailab.sdk.auth.client.IailabAuthClient;
+import com.iailab.sdk.auth.client.common.pojo.CommonResult;
 import com.iailab.sdk.auth.client.dto.ApiDataQueryDTO;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -48,23 +49,10 @@
     }
 
     @Test
-    public void testQueryPlanChart() throws Exception {
-        ApiDataQueryDTO apiDataQueryDTO = new ApiDataQueryDTO();
-        List<String> itemNos = new ArrayList<>();
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        apiDataQueryDTO.setStart(sdf.parse("2024-06-11 07:24:00"));
-        apiDataQueryDTO.setEnd(sdf.parse("2024-06-13 00:00:00"));
-        itemNos.add("P0000100010");
-        apiDataQueryDTO.setItemNos(itemNos);
-        Map<String, Object> stringObjectMap = IailabAuthClient.getInstance().queryPlanChart(apiDataQueryDTO);
-        System.out.println(stringObjectMap);
-    }
-
-    @Test
-    public void testQueryPointsRealValue() throws Exception {
+    public void testQueryPointsRealValue() {
         List<String> pointNos = new ArrayList<>();
         pointNos.add("111");
-        Map<String, Object> stringObjectMap = IailabAuthClient.getInstance().queryPointsRealValue(pointNos);
+        CommonResult<Map<String, Object>> stringObjectMap = IailabAuthClient.getInstance().queryPointsRealValue(pointNos);
         System.out.println(stringObjectMap);
     }
 

--
Gitblit v1.9.3