diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantPageReqVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantPageReqVO.java
index 7098d13..d0f0ba9 100644
--- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantPageReqVO.java
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantPageReqVO.java
@@ -24,6 +24,9 @@ public class InstantPageReqVO extends PageParam {
@Schema(description = "模型名称", example = "yudao")
private String mpName;
+ @Schema(description = "算法", example = "yudao")
+ private String algorithmId;
+
@Schema(description = "运行状态", example = "yudao")
private String running;
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/pointInfo.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/pointInfo.java
index 4632675..66450e1 100644
--- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/pointInfo.java
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/pointInfo.java
@@ -20,5 +20,5 @@ public class pointInfo {
@JsonProperty(value="type")
@Schema(description = "ANN才有的字段---类型(输入-false;输出-true)", example = "yudao")
- private Object type;
+ private Boolean type;
}
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/RunModelInfoVO.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/RunModelInfoVO.java
index 92536d2..cb4a3bc 100644
--- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/RunModelInfoVO.java
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/RunModelInfoVO.java
@@ -31,12 +31,15 @@ public class RunModelInfoVO {
///
///
///
- @JsonProperty(value="Model_info")
+// @JsonProperty(value="Model_info")
- public Model_info_ch_instant Model_info;
+// public Model_info_ch_instant Model_info;
@JsonProperty(value="limit")
public double limit;
+ @JsonProperty(value="pre_s")
+ public List pre_s;
+
}
@Data
@NoArgsConstructor
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/instant/InstantMapper.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/instant/InstantMapper.java
index 5d2ac6a..ac819e3 100644
--- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/instant/InstantMapper.java
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/instant/InstantMapper.java
@@ -20,6 +20,7 @@ public interface InstantMapper extends BaseMapperX {
.eqIfPresent(InstantDO::getUnitId,reqVO.getUnit())
.eqIfPresent(InstantDO::getSystemTypeId,reqVO.getType())
.eqIfPresent(InstantDO::getSystemId,reqVO.getSystem())
+ .eqIfPresent(InstantDO::getAlgorithmId,reqVO.getAlgorithmId())
.orderByAsc(InstantDO::getMpId));
}
diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/instant/InstantServiceImpl.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/instant/InstantServiceImpl.java
index 87fd040..4195df4 100644
--- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/instant/InstantServiceImpl.java
+++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/instant/InstantServiceImpl.java
@@ -37,6 +37,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.*;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
@@ -72,6 +73,7 @@ public class InstantServiceImpl implements InstantService {
//PCA回算的http请求地址
@Value("${PCA.calcurl}")
private String PCA_CALC_URL;
+
@Override
@Transactional(rollbackFor = Exception.class)
@LogRecord(type = SYSTEM_INSTANT_TYPE, subType = SYSTEM_INSTANT_CREATE_SUB_TYPE, bizNo = "{{#role.id}}",
@@ -85,6 +87,7 @@ public class InstantServiceImpl implements InstantService {
String modelVersion = versionMapper.selectById(createReqVO.getModelVersionId()).getVersion();
createReqVO.setModelVersion(modelVersion);
+
//插入除instantInfo外的所有数据,获取到id
// 2. 插入到数据库-status、visible默认值
InstantTableDO instant = BeanUtils.toBean(createReqVO, InstantTableDO.class)
@@ -120,7 +123,7 @@ public class InstantServiceImpl implements InstantService {
unitList.add(pointInfoList.get(i).getUnit());
// 如果pointInfoList.get(i)有type字段,或者createReqVO对象中的算法是PCA就加一些重构值、时间值、偏差值
if (pointInfoList.get(i).getType() != null || Objects.equals(createReqVO.getAlgorithmId(), "1")
- || createReqVO.getAlgorithmId().equals(1L)) {
+ || createReqVO.getAlgorithmId().equals(1L)) {
//构建重构值对象
outpoint = HEAD + "M" + String.format("%04d", insertId) + String.format("%04d", i + 1) + "R";
point = new Point();
@@ -236,43 +239,77 @@ public class InstantServiceImpl implements InstantService {
public void createWarn1(InstantTableDO instant, InstantSaveReqVO createReqVO) {
try {
- //调用预警表和评估报告表的mapper
- // 从instant对象获取modelid和version字段
- Long modelId = instant.getModelId();
- String version = instant.getModelVersion();
-
- // 调用reportMapper获取对应记录(假设存在selectByModelIdAndVersion方法)
- ReportDO report = reportMapper.selectByModelIdAndVersion(modelId, version);
-
- // 如果report不为空且report字段不为空,则解析为Report类
- if (report != null && StrUtil.isNotBlank(report.getReport())) {
- Report reportObj = JsonUtils.parseObject(report.getReport(), Report.class);
- // 此处可根据业务需求处理解析后的Report对象(如后续预警逻辑)
- // 循环getInputInfo构建并插入预警记录
- for (int j = 0; j < reportObj.getAssess().size(); j++) {
-
-
+ //如果createReqVO中算法是pca,则读取评估报告从而获取上下限;如果是ANN,则直接读取modelInfo中的上下限
+ if (createReqVO.getAlgorithmId() == 2) {
+ String modelInfoStr = versionMapper.selectById(createReqVO.getModelVersionId()).getModelInfo();
+ // 解析modelInfo为RunModelInfoVO类
+ RunModelInfoVO modelInfo = JsonUtils.parseObject(modelInfoStr, RunModelInfoVO.class);
+ // 从modelInfo中获取上下限列表(ANN的上下限是存在模型中的,PCA是存在评估报告中的)
+ List pre_s = modelInfo.getPara().getPre_s();
+
+ //createReqVO.getOutPointInfo()已经是上一步筛选好的数据,筛选条件---type=true,如果是ANN就表示是输出,PCA是全部点
+ // 遍历筛选后的输出点信息
+ for (Integer i = 0; i < createReqVO.getOutPointInfo().size(); i++) {
WarnSaveReqVO warnSaveReqVO = new WarnSaveReqVO();
// 设置预警ID(假设insertId为当前预警主记录ID)
// warn.setId(insertId);
//设置实例id
warnSaveReqVO.setMpId(instant.getMpId());
warnSaveReqVO.setPointOrModel("point");
-
- warnSaveReqVO.setPointId(createReqVO.getInputInfo().get(reportObj.getAssess().get(j).getIndex()));
- warnSaveReqVO.setPointName(createReqVO.getInputName().get(reportObj.getAssess().get(j).getIndex()));
- warnSaveReqVO.setGzpName(createReqVO.getInputName().get(reportObj.getAssess().get(j).getIndex()));
- warnSaveReqVO.setEquation("[" + createReqVO.getBiasPointInfo().get(reportObj.getAssess().get(j).getIndex()) + "]>UPLIMIT or [" + createReqVO.getBiasPointInfo().get(reportObj.getAssess().get(j).getIndex()) + "]UPLIMIT or [" + createReqVO.getBiasPointInfo().get(i) + "]UPLIMIT or [" + createReqVO.getBiasPointInfo().get(reportObj.getAssess().get(j).getIndex()) + "]