Compare commits

...

1 Commits

Author SHA1 Message Date
Jiale 0b15979632 refactor(alert): 优化 EXA 服务 IP 并调整报警模型设置默认值 2 weeks ago
  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") @PostMapping("/test")
public CommonResult<ModelTestData> getTestData(ModelTestParam param) { public CommonResult<ModelTestData> getTestData(@RequestBody ModelTestParam param) {
ModelTestData modelTestData = modelService.getModelTestData(param); ModelTestData modelTestData = modelService.getModelTestData(param);
return CommonResult.success(modelTestData); 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; private String alarmCondition;
public static AlarmModelSet defaultInit() { 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; package cn.iocoder.yudao.module.alert.param;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -12,7 +13,11 @@ import java.util.List;
@NoArgsConstructor @NoArgsConstructor
public class ModelTestParam { public class ModelTestParam {
@JsonProperty("Test_Data") @JsonProperty("Test_Data")
@JsonAlias("Test_Data")
private TestData testData; private TestData testData;
@JsonProperty("Model_id")
@JsonAlias("Model_id")
private Integer modelId; private Integer modelId;
private String version; private String version;
@ -24,8 +29,10 @@ public class ModelTestParam {
private String points; private String points;
private Integer interval; private Integer interval;
@JsonProperty("AddBias") @JsonProperty("AddBias")
@JsonAlias("AddBias")
private List<Double> addBias; private List<Double> addBias;
@JsonProperty("AddBias_Time") @JsonProperty("AddBias_Time")
@JsonAlias("AddBias_Time")
private String addBiasTime; 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; package cn.iocoder.yudao.module.alert.param;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -21,16 +20,17 @@ public class TrainParam {
@JsonProperty("Hyper_para") @JsonProperty("Hyper_para")
private HyperPara hyperPara; private HyperPara hyperPara;
private String type; private String type;
private String condition; private String conditon;
@JsonAlias("smote_config") @JsonAlias("smote_config")
@JsonProperty("smote_config") @JsonProperty("smote_config")
private String smoteConfig; private List<Object> smoteConfig;
private Boolean smote; private Boolean smote;
private String targetPoint; private String targetPoint;
@Data @Data
public static class Smote { public static class Smote {
private String pointId; private String pointId;
@ -55,5 +55,6 @@ public class TrainParam {
private String dead; private String dead;
private String limit; private String limit;
private String uplow; 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.util.StringUtils;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import java.util.Date; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -119,6 +116,7 @@ public class ModelServiceImpl implements ModelService {
info.setName(model.getModelName()); info.setName(model.getModelName());
info.setDescription(model.getDescription()); info.setDescription(model.getDescription());
info.setRate(model.getRate()); info.setRate(model.getRate());
info.setTrainTime(new ArrayList<>());
modelCfg.setModelInfo(JsonUtils.toJsonString(info)); modelCfg.setModelInfo(JsonUtils.toJsonString(info));
modelCfgService.updateById(modelCfg); modelCfgService.updateById(modelCfg);
return modelId; return modelId;
@ -143,14 +141,14 @@ public class ModelServiceImpl implements ModelService {
@Override @Override
public TrainInfo trainModel(TrainParam param) { 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")) { if (trainBody.contains("error_msg")) {
throw new RuntimeException("模型训练异常:" + JsonUtils.parseObject(trainBody, throw new RuntimeException("模型训练异常:" + JsonUtils.parseObject(trainBody,
new TypeReference<Map<String, String>>() { new TypeReference<Map<String, String>>() {
}).get("error_msg")); }).get("error_msg"));
} }
return JsonUtils.parseObject(trainBody, new TypeReference<List<TrainInfo>>() { return JsonUtils.parseObject(trainBody, new TypeReference<TrainInfo>() {
}).get(0); });
} }

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; 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.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.google.gson.Gson; 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.CloseableHttpResponse;
import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet; 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.client.utils.URIBuilder;
import org.apache.http.entity.ContentType; 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.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Value;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Type; import java.lang.reflect.Type;
@ -31,19 +31,18 @@ import java.util.List;
public class EXAUtils { public class EXAUtils {
/** /**
* 根据分页条件和测点名称测点描述模糊查询 * 根据分页条件和测点名称测点描述模糊查询
* *
* @param reqVO 传入对象页数页数量查询条件 * @param reqVO 传入对象页数页数量查询条件
* @return exa列表 * @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<>(); // PageResult<EXAHttp> result = new PageResult<>();
List<EXAHttp> exaListAll = new ArrayList<EXAHttp>(); List<EXAHttp> exaListAll = new ArrayList<EXAHttp>();
try { try {
// 目标 RPC 服务的 URL // 目标 RPC 服务的 URL
String url = "http://"+EXA_IP+":9000/exawebapi/exaitem/getitems"; String url = "http://" + EXA_IP + ":9000/exawebapi/exaitem/getitems";
//创建HttpClient对象 //创建HttpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpClient httpClient = HttpClients.createDefault();
/* /*
@ -104,11 +103,11 @@ public class EXAUtils {
* @return exa列表 * @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<>(); List<String> result = new ArrayList<>();
try { try {
// 目标 RPC 服务的 URL // 目标 RPC 服务的 URL
String url = "http://"+EXA_IP+":9000/exawebapi/exanow/getfloatvaluebatch"; String url = "http://" + EXA_IP + ":9000/exawebapi/exanow/getfloatvaluebatch";
//创建HttpClient对象 //创建HttpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpClient httpClient = HttpClients.createDefault();
/* /*
@ -154,12 +153,12 @@ public class EXAUtils {
* @param exaHistoryReqVo 传入对象点号开始时间结束时间 * @param exaHistoryReqVo 传入对象点号开始时间结束时间
* @return exa列表 * @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<>(); List<List<Double>> result = new ArrayList<>();
try { try {
// 目标 RPC 服务的 URL // 目标 RPC 服务的 URL
// String url = "http://"+EXA_IP+":9000/exawebapi/exatime/GetRawValueArrayFloat"; // 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对象 //创建HttpClient对象
@ -173,7 +172,7 @@ public class EXAUtils {
uriBuilder.addParameter("ItemName", exaHistoryReqVo.getItemName()); uriBuilder.addParameter("ItemName", exaHistoryReqVo.getItemName());
uriBuilder.addParameter("StartingTime", exaHistoryReqVo.getStartTime()); uriBuilder.addParameter("StartingTime", exaHistoryReqVo.getStartTime());
uriBuilder.addParameter("TerminalTime", exaHistoryReqVo.getEndTime()); 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; 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<>(); List<List<List<Double>>> results = new ArrayList<>();
try { try {
@ -217,7 +216,7 @@ public class EXAUtils {
pointName.forEach(entity -> { pointName.forEach(entity -> {
List<List<Double>> result = new ArrayList<>(); List<List<Double>> result = new ArrayList<>();
exaHistoryReqVo.setItemName(entity); exaHistoryReqVo.setItemName(entity);
result = getHistory(EXA_IP,exaHistoryReqVo); result = getHistory(EXA_IP, exaHistoryReqVo);
results.add(result); results.add(result);
}); });
} catch (Exception e) { } catch (Exception e) {
@ -227,8 +226,8 @@ public class EXAUtils {
} }
//写入点号 //写入点号
public String setPoint(String EXA_IP,Point point) throws IOException { public String setPoint(String EXA_IP, Point point) throws IOException {
String requestPathAddItem = "http://"+EXA_IP+":9000/exawebapi/exaitem/AddItem"; String requestPathAddItem = "http://" + EXA_IP + ":9000/exawebapi/exaitem/AddItem";
String param = JSON.toJSONString(point); String param = JSON.toJSONString(point);
String result = Request.Post(requestPathAddItem) String result = Request.Post(requestPathAddItem)
.addHeader("Content-type", "application/json") .addHeader("Content-type", "application/json")
@ -245,7 +244,7 @@ public class EXAUtils {
List<Object> result = new ArrayList<>(); List<Object> result = new ArrayList<>();
try { try {
// 目标 RPC 服务的 URL // 目标 RPC 服务的 URL
String url = "http://"+EXA_IP+":9000/exawebapi/exagroup/getgroups"; String url = "http://" + EXA_IP + ":9000/exawebapi/exagroup/getgroups";
//创建HttpClient对象 //创建HttpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpClient httpClient = HttpClients.createDefault();
/* /*
@ -288,8 +287,8 @@ public class EXAUtils {
return result; return result;
} }
public String deletePoint(String EXA_IP,String ItemName){ public String deletePoint(String EXA_IP, String ItemName) {
String requestPathDeleteItem ="http://"+EXA_IP+":9000/exawebapi/exaitem/DeleteItem?ItemName="+ItemName; String requestPathDeleteItem = "http://" + EXA_IP + ":9000/exawebapi/exaitem/DeleteItem?ItemName=" + ItemName;
// 创建HttpClient // 创建HttpClient
try (CloseableHttpClient httpClient = HttpClients.createDefault()) { try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
// 创建HttpDelete请求 // 创建HttpDelete请求

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

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

Loading…
Cancel
Save