Browse Source

refactor(alert): 优化 EXA 服务 IP 并调整报警模型设置默认值

- 修改 EXA 服务 IP 地址为47.98.32.148
- 修正报警模型设置的默认条件为 "1==1"
- 优化 EXAUtils 类中的方法,提高代码可读性和维护性
- 更新 ModelController 中的请求参数注解
- 调整 ModelServiceImpl 中的模型训练逻辑
-为 ModelTestParam 类添加 JSON别名注解
- 修正 TrainParam 类中的字段名称和类型
cjl-dev
Jiale 2 weeks ago
parent
commit
0b15979632
  1. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/ModelController.java
  2. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/ModelInfo.java
  3. 7
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/param/ModelTestParam.java
  4. 7
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/param/TrainParam.java
  5. 12
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java
  6. 37
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/utils/EXAUtils.java
  7. 2
      yudao-server/src/main/resources/application-local.yaml

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

@ -63,7 +63,7 @@ public class ModelController {
}
@PostMapping("/test")
public CommonResult<ModelTestData> getTestData(ModelTestParam param) {
public CommonResult<ModelTestData> getTestData(@RequestBody ModelTestParam param) {
ModelTestData modelTestData = modelService.getModelTestData(param);
return CommonResult.success(modelTestData);
}

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

@ -115,7 +115,7 @@ public class ModelInfo {
private String alarmCondition;
public static AlarmModelSet defaultInit() {
return new AlarmModelSet("全工况运行", "1=1");
return new AlarmModelSet("全工况运行", "1==1");
}
}

7
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/param/ModelTestParam.java

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.alert.param;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
@ -12,7 +13,11 @@ import java.util.List;
@NoArgsConstructor
public class ModelTestParam {
@JsonProperty("Test_Data")
@JsonAlias("Test_Data")
private TestData testData;
@JsonProperty("Model_id")
@JsonAlias("Model_id")
private Integer modelId;
private String version;
@ -24,8 +29,10 @@ public class ModelTestParam {
private String points;
private Integer interval;
@JsonProperty("AddBias")
@JsonAlias("AddBias")
private List<Double> addBias;
@JsonProperty("AddBias_Time")
@JsonAlias("AddBias_Time")
private String addBiasTime;
}
}

7
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/param/TrainParam.java

@ -1,6 +1,5 @@
package cn.iocoder.yudao.module.alert.param;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
@ -21,16 +20,17 @@ public class TrainParam {
@JsonProperty("Hyper_para")
private HyperPara hyperPara;
private String type;
private String condition;
private String conditon;
@JsonAlias("smote_config")
@JsonProperty("smote_config")
private String smoteConfig;
private List<Object> smoteConfig;
private Boolean smote;
private String targetPoint;
@Data
public static class Smote {
private String pointId;
@ -55,5 +55,6 @@ public class TrainParam {
private String dead;
private String limit;
private String uplow;
private Integer interval;
}
}

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

@ -28,10 +28,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -119,6 +116,7 @@ public class ModelServiceImpl implements ModelService {
info.setName(model.getModelName());
info.setDescription(model.getDescription());
info.setRate(model.getRate());
info.setTrainTime(new ArrayList<>());
modelCfg.setModelInfo(JsonUtils.toJsonString(info));
modelCfgService.updateById(modelCfg);
return modelId;
@ -143,14 +141,14 @@ public class ModelServiceImpl implements ModelService {
@Override
public TrainInfo trainModel(TrainParam param) {
String trainBody = HttpUtils.post(algorithmHost + "/api/get_smote_data", null, JsonUtils.toJsonString(param));
String trainBody = HttpUtils.post(algorithmHost + "/api/test/ClearTrain", null, JsonUtils.toJsonString(param));
if (trainBody.contains("error_msg")) {
throw new RuntimeException("模型训练异常:" + JsonUtils.parseObject(trainBody,
new TypeReference<Map<String, String>>() {
}).get("error_msg"));
}
return JsonUtils.parseObject(trainBody, new TypeReference<List<TrainInfo>>() {
}).get(0);
return JsonUtils.parseObject(trainBody, new TypeReference<TrainInfo>() {
});
}

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

@ -1,6 +1,9 @@
package cn.iocoder.yudao.module.alert.utils;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.*;
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.google.gson.Gson;
@ -11,14 +14,11 @@ 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;
@ -31,19 +31,18 @@ import java.util.List;
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 +103,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,12 +153,12 @@ public class EXAUtils {
* @param exaHistoryReqVo 传入对象点号开始时间结束时间
* @return exa列表
*/
public List<List<Double>> getHistory(String EXA_IP,EXAHistoryReqVO exaHistoryReqVo) {
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";
String url = "http://"+EXA_IP+":9000/exawebapi/exatime/GetSamplingValueArrayFloat";
String url = "http://" + EXA_IP + ":9000/exawebapi/exatime/GetSamplingValueArrayFloat";
//创建HttpClient对象
@ -173,7 +172,7 @@ public class EXAUtils {
uriBuilder.addParameter("ItemName", exaHistoryReqVo.getItemName());
uriBuilder.addParameter("StartingTime", exaHistoryReqVo.getStartTime());
uriBuilder.addParameter("TerminalTime", exaHistoryReqVo.getEndTime());
uriBuilder.addParameter("SamplingPeriod", String.valueOf(1000*exaHistoryReqVo.getInterval()));
uriBuilder.addParameter("SamplingPeriod", String.valueOf(1000 * exaHistoryReqVo.getInterval()));
//创建请求对象
@ -208,7 +207,7 @@ public class EXAUtils {
return result;
}
public List<List<List<Double>>> getHistorys(String EXA_IP,EXAHistoryReqVO exaHistoryReqVo) {
public List<List<List<Double>>> getHistorys(String EXA_IP, EXAHistoryReqVO exaHistoryReqVo) {
List<List<List<Double>>> results = new ArrayList<>();
try {
@ -217,7 +216,7 @@ public class EXAUtils {
pointName.forEach(entity -> {
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) {
@ -227,8 +226,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")
@ -245,7 +244,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();
/*
@ -288,8 +287,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请求

2
yudao-server/src/main/resources/application-local.yaml

@ -271,7 +271,7 @@ pf4j:
# pluginsDir: /tmp/
pluginsDir: ../plugins
EXA:
ip: 120.26.116.243
ip: 47.98.32.148
point:
head: XN.
algorithm:

Loading…
Cancel
Save