Browse Source

refactor(alert): 重构 EXA 相关接口和数据结构- 更新 EXAController、EXAService 和 EXAUtils 中的方法签名和返回类型

- 在 EXAHistoryReqVO 中添加 interval 字段
- 修改 ModelInfo 和相关 VO 类的字段名称和类型
- 优化 ModelServiceImpl 中的模型信息处理逻辑
pull/16/head
Jiale 1 month ago
parent
commit
4602c84790
  1. 4
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/EXAController.java
  2. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/vo/EXAHistoryReqVO.java
  3. 10
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/ModelInfo.java
  4. 13
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java
  5. 7
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelInfoVO.java
  6. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSimpleVO.java
  7. 4
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/exa/EXAService.java
  8. 4
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/exa/EXAServiceImpl.java
  9. 8
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java
  10. 88
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/utils/EXAUtils.java

4
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/EXAController.java

@ -64,8 +64,8 @@ public class EXAController {
@GetMapping("/historys")
@Operation(summary = "获取点号历史-支持多点(点号之间用逗号分割)")
@PreAuthorize("@ss.hasPermission('alert:exa:query')")
public CommonResult<List<List<String>>> getEXAHistorys(EXAHistoryReqVO exaHistoryReqVo) {
List<List<String>> historyLists=exaService.getEXAHistorys(exaHistoryReqVo);
public CommonResult<List<List<List<Double>>>> getEXAHistorys(EXAHistoryReqVO exaHistoryReqVo) {
List<List<List<Double>>> historyLists=exaService.getEXAHistorys(exaHistoryReqVo);
return success(historyLists);
}

2
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/vo/EXAHistoryReqVO.java

@ -12,4 +12,6 @@ public class EXAHistoryReqVO {
private String startTime;
@Schema(description = "结束时间")
private String endTime;
@Schema(description = "间隔")
private Integer interval=300;
}

10
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/ModelInfo.java

@ -1,8 +1,10 @@
package cn.iocoder.yudao.module.alert.controller.admin.model.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;
import java.util.Date;
import java.util.List;
/**
@ -23,7 +25,9 @@ public class ModelInfo {
/**
* 创建人
*/
private String createName;
private String creator;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* 名称
*/
@ -32,4 +36,8 @@ public class ModelInfo {
private List<Point> pointInfo;
private String condition;
private Integer sampling;
}

13
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java

@ -24,8 +24,7 @@ public class Point {
/**
* 目标点号
*/
@JsonProperty("target_point")
private String targetPoint;
private String point;
/**
* 描述
@ -37,11 +36,6 @@ public class Point {
*/
private String unit;
/**
* 类型
*/
private String marktype;
/**
* 上限
*/
@ -51,9 +45,4 @@ public class Point {
* 下限
*/
private BigDecimal lowerlimit;
/**
* 网格数
*/
private Integer gridNumber;
}

7
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelInfoVO.java

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
import cn.iocoder.yudao.module.alert.controller.admin.model.model.Point;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
@ -24,7 +25,7 @@ public class ModelInfoVO {
/**
* 创建人
*/
private String createName;
private String creator;
/**
* 创建时间
@ -43,11 +44,13 @@ public class ModelInfoVO {
private String modelName;
private List<PointVO> pointInfo;
private List<Point> pointInfo;
private Integer algorithmId;
private Integer systemId;
private Integer sampling;
}

2
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSimpleVO.java

@ -33,7 +33,7 @@ public class ModelSimpleVO {
/**
* 创建人
*/
private String createName;
private String creator;
/**
* 模型状态

4
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/exa/EXAService.java

@ -24,9 +24,9 @@ public interface EXAService {
String getEXANow(String itemName) throws URISyntaxException, IOException;
List<String> getEXAHistory(EXAHistoryReqVO exaHistoryReqVo);
List<List<Double>> getEXAHistory(EXAHistoryReqVO exaHistoryReqVo);
List<List<String>> getEXAHistorys(EXAHistoryReqVO exaHistoryReqVo);
List<List<List<Double>>> getEXAHistorys(EXAHistoryReqVO exaHistoryReqVo);
String createPoint(Point pointVo) throws IOException;

4
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/exa/EXAServiceImpl.java

@ -69,12 +69,12 @@ public class EXAServiceImpl implements EXAService {
}
@Override
public List<String> getEXAHistory(EXAHistoryReqVO exaHistoryReqVo) {
public List<List<Double>> getEXAHistory(EXAHistoryReqVO exaHistoryReqVo) {
return exaUtils.getHistory(EXA_IP,exaHistoryReqVo);
}
@Override
public List<List<String>> getEXAHistorys(EXAHistoryReqVO exaHistoryReqVo) {
public List<List<List<Double>>> getEXAHistorys(EXAHistoryReqVO exaHistoryReqVo) {
return exaUtils.getHistorys(EXA_IP,exaHistoryReqVo);
}

8
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java

@ -66,7 +66,7 @@ public class ModelServiceImpl implements ModelService {
return list.stream().map(modelCfg -> ModelSimpleVO.builder()
.id(modelCfg.getId())
.name(modelCfg.getModelName().trim())
.createName(modelCfg.getCreator())
.creator(modelCfg.getCreator())
.createTime(modelCfg.getCreateTime())
.status(modelCfg.getStatus())
.algorithm(Algorithm.of(modelCfg.getAlgorithmId()).toString())
@ -76,6 +76,10 @@ public class ModelServiceImpl implements ModelService {
@Override
public ModelInfoVO getModelInfo(Integer id) {
ModelCfg modelCfg = modelCfgService.getById(id);
if (Objects.nonNull(modelCfg)) {
return JsonUtils.parseObject(modelCfg.getModelInfo(), ModelInfoVO.class);
}
return null;
}
@ -97,6 +101,8 @@ public class ModelServiceImpl implements ModelService {
modelCfgService.save(modelCfg);
Integer modelId = modelCfg.getId();
info.setId(modelId);
info.setCreator(modelCfg.getCreator());
info.setCreateTime(modelCfg.getCreateTime());
modelCfg.setModelInfo(JsonUtils.toJsonString(info));
modelCfgService.updateById(modelCfg);
return modelId;

88
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/utils/EXAUtils.java

@ -1,8 +1,14 @@
package cn.iocoder.yudao.module.alert.utils;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.*;
import cn.hutool.http.HttpUtil;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.EXAHistoryReqVO;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.EXAHttp;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.EXAPageReqVO;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.Point;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.fasterxml.jackson.core.type.TypeReference;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
@ -11,39 +17,33 @@ import org.apache.http.client.fluent.Request;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Value;
import java.io.IOException;
import java.lang.reflect.Type;
import java.net.URISyntaxException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.*;
public class EXAUtils {
/**
* 根据分页条件和测点名称测点描述模糊查询
*
* @param reqVO 传入对象页数页数量查询条件
* @return exa列表
*/
public List<EXAHttp> getPointInfo(String EXA_IP,EXAPageReqVO reqVO) throws URISyntaxException, IOException {
public List<EXAHttp> getPointInfo(String EXA_IP, EXAPageReqVO reqVO) throws URISyntaxException, IOException {
// PageResult<EXAHttp> result = new PageResult<>();
List<EXAHttp> exaListAll = new ArrayList<EXAHttp>();
try {
// 目标 RPC 服务的 URL
String url = "http://"+EXA_IP+":9000/exawebapi/exaitem/getitems";
String url = "http://" + EXA_IP + ":9000/exawebapi/exaitem/getitems";
//创建HttpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
/*
@ -104,11 +104,11 @@ public class EXAUtils {
* @return exa列表
*/
public List<String> getNowData(String EXA_IP,String itemNames) throws URISyntaxException, IOException {
public List<String> getNowData(String EXA_IP, String itemNames) throws URISyntaxException, IOException {
List<String> result = new ArrayList<>();
try {
// 目标 RPC 服务的 URL
String url = "http://"+EXA_IP+":9000/exawebapi/exanow/getfloatvaluebatch";
String url = "http://" + EXA_IP + ":9000/exawebapi/exanow/getfloatvaluebatch";
//创建HttpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
/*
@ -154,65 +154,43 @@ public class EXAUtils {
* @param exaHistoryReqVo 传入对象点号开始时间结束时间
* @return exa列表
*/
public List<String> getHistory(String EXA_IP,EXAHistoryReqVO exaHistoryReqVo) {
List<String> result = new ArrayList<>();
public List<List<Double>> getHistory(String EXA_IP, EXAHistoryReqVO exaHistoryReqVo) {
List<List<Double>> result = new ArrayList<>();
try {
// 目标 RPC 服务的 URL
String url = "http://"+EXA_IP+":9000/exawebapi/exatime/GetRawValueArrayFloat";
//创建HttpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
/*
* 由于GET请求的参数都是拼装在URL地址后方所以我们要构建一个URL带参数
*/
URIBuilder uriBuilder = new URIBuilder(url);
String url = "http://" + EXA_IP + ":9000/exawebapi/exatime/GetSamplingValueArrayFloat";
/** 添加参数 */
uriBuilder.addParameter("ItemName", exaHistoryReqVo.getItemName());
uriBuilder.addParameter("StartingTime", exaHistoryReqVo.getStartTime());
uriBuilder.addParameter("TerminalTime", exaHistoryReqVo.getEndTime());
Map<String,Object> params=new HashMap<>();
params.put("ItemName", exaHistoryReqVo.getItemName());
params.put("StartingTime", exaHistoryReqVo.getStartTime());
params.put("TerminalTime", exaHistoryReqVo.getEndTime());
params.put("SamplingPeriod", exaHistoryReqVo.getInterval() * 1000);
String body = HttpUtil.createGet(url).form(params)
.header("Content-Type", "application/json")
.execute().body();
//创建请求对象
HttpGet httpGet = new HttpGet(uriBuilder.build());
// 传输的类型
httpGet.addHeader("Content-Type", "application/json");
//发送请求,请求响应结果
CloseableHttpResponse response = httpClient.execute(httpGet);
//获取服务器返回的状态码
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("服务端返回成功的状态码为:" + statusCode);
HttpEntity entity = response.getEntity();
String body = EntityUtils.toString(entity).replaceAll("\\\\", "");
System.out.println("服务端返回的数据为:" + body);
if (body.startsWith("\"") && body.endsWith("\"")) {
// 步骤3:去掉双引号
body = body.substring(1, body.length() - 1); // 去掉首尾的双引号
}
Gson gson = new GsonBuilder().serializeNulls().setPrettyPrinting().create();
Type listType = new TypeToken<List<List<Double>>>() {
}.getType();
result = gson.fromJson(body, listType);
//关闭资源
response.close();
httpClient.close();
result = JsonUtils.parseObject(body, new TypeReference<List<List<Double>>>(){});
} catch (Exception e) {
}
return result;
}
public List<List<String>> getHistorys(String EXA_IP,EXAHistoryReqVO exaHistoryReqVo) {
List<List<String>> results = new ArrayList<>();
public List<List<List<Double>>> getHistorys(String EXA_IP, EXAHistoryReqVO exaHistoryReqVo) {
List<List<List<Double>>> results = new ArrayList<>();
try {
String itemNames = exaHistoryReqVo.getItemName();
List<String> pointName = Arrays.asList(itemNames.split(","));
pointName.forEach(entity -> {
List<String> result = new ArrayList<>();
List<List<Double>> result = new ArrayList<>();
exaHistoryReqVo.setItemName(entity);
result = getHistory(EXA_IP,exaHistoryReqVo);
result = getHistory(EXA_IP, exaHistoryReqVo);
results.add(result);
});
} catch (Exception e) {
@ -222,8 +200,8 @@ public class EXAUtils {
}
//写入点号
public String setPoint(String EXA_IP,Point point) throws IOException {
String requestPathAddItem = "http://"+EXA_IP+":9000/exawebapi/exaitem/AddItem";
public String setPoint(String EXA_IP, Point point) throws IOException {
String requestPathAddItem = "http://" + EXA_IP + ":9000/exawebapi/exaitem/AddItem";
String param = JSON.toJSONString(point);
String result = Request.Post(requestPathAddItem)
.addHeader("Content-type", "application/json")
@ -240,7 +218,7 @@ public class EXAUtils {
List<Object> result = new ArrayList<>();
try {
// 目标 RPC 服务的 URL
String url = "http://"+EXA_IP+":9000/exawebapi/exagroup/getgroups";
String url = "http://" + EXA_IP + ":9000/exawebapi/exagroup/getgroups";
//创建HttpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
/*
@ -283,8 +261,8 @@ public class EXAUtils {
return result;
}
public String deletePoint(String EXA_IP,String ItemName){
String requestPathDeleteItem ="http://"+EXA_IP+":9000/exawebapi/exaitem/DeleteItem?ItemName="+ItemName;
public String deletePoint(String EXA_IP, String ItemName) {
String requestPathDeleteItem = "http://" + EXA_IP + ":9000/exawebapi/exaitem/DeleteItem?ItemName=" + ItemName;
// 创建HttpClient
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
// 创建HttpDelete请求

Loading…
Cancel
Save