Browse Source

Merge pull request 'dev-xjf' (#31) from dev-xjf into master

Reviewed-on: http://120.26.116.243:3000/root/alert-backend/pulls/31
pull/34/head
xiaojinfei 1 month ago
parent
commit
a779991131
  1. 26
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/vo/Point.java
  2. 10
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/InstantController.java
  3. 3
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantRespVO.java
  4. 4
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantSaveReqVO.java
  5. 8
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/RunModelController.java
  6. 3
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelVersionPageReqVO.java
  7. 16
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelVersionRespVO.java
  8. 55
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/report/ReportController.java
  9. 27
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/report/vo/ReportPageReqVO.java
  10. 28
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/report/vo/ReportRespVO.java
  11. 38
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/vo/WarnSaveReqVO.java
  12. 3
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/instant/InstantDO.java
  13. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/instant/InstantTableDO.java
  14. 28
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/model/ModelVersionDO.java
  15. 20
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/report/Report.java
  16. 41
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/report/ReportDO.java
  17. 6
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/warn/WarnTableDO.java
  18. 3
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/model/ModelMapper.java
  19. 33
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/model/VersionMapper.java
  20. 56
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/report/ReportMapper.java
  21. 6
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/instant/InstantService.java
  22. 117
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/instant/InstantServiceImpl.java
  23. 40
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/RunModelServiceImpl.java
  24. 8
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/warn/WarnService.java
  25. 35
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/warn/WarnServiceImpl.java
  26. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/utils/EXAUtils.java

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

@ -27,29 +27,29 @@ public class Point {
public String GroupName;
@ExcelProperty("数据类型")
public Integer ItemType;
public Integer ItemType=5;
@ExcelProperty("描述")
@Schema(description = "描述", example = "芋道")
public String Descriptor;
public String Descriptor="";
@ExcelProperty("单位")
@Schema(description = "单位", example = "芋道")
public String EngUnits;
public String EngUnits="";
@ExcelProperty("数据来源")
public String Source;
public String Source="EXA";
@ExcelProperty("自动保存")
public Boolean AutoSave;
public Double UpperBound;
public Double LowerBound;
public Double UpperLimit;
public Double LowerLimit;
public Double UpperUpperLimit;
public Double LowerLowerLimit;
public String Comment;
public String Note;
public Boolean AutoSave=true;
public Double UpperBound=9999999.0;
public Double LowerBound=-9999999.0;
public Double UpperLimit=9999999.0;
public Double LowerLimit=-9999999.0;
public Double UpperUpperLimit=9999999.0;
public Double LowerLowerLimit=-9999999.0;
public String Comment="";
public String Note="";
}

10
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/InstantController.java

@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.alert.controller.admin.instant.vo.*;
import cn.iocoder.yudao.module.alert.dal.dataobject.instant.InstantDO;
import cn.iocoder.yudao.module.alert.service.instant.InstantService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
@ -101,6 +102,13 @@ public class InstantController {
return success(instantService.createInstant(createReqVO, null));
}
@DeleteMapping("/delete")
@Operation(summary = "删除模型实例")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('run:instant:delete')")
public CommonResult<Boolean> deleteInstant(@RequestParam("id") Long id) {
instantService.deleteInstant(id);
return success(true);
}
}

3
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantRespVO.java

@ -57,6 +57,9 @@ public class InstantRespVO {
@Schema(description = "版本号", example = "1024")
private Long modelVersionId;
@Schema(description = "版本名称", example = "1024")
private String modelVersion;
private Integer isUpdate;
//视图额外增加的字段

4
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/InstantSaveReqVO.java

@ -69,6 +69,8 @@ public class InstantSaveReqVO extends InstantInfoVO {
@DiffLogField(name = "版本编号")
private Long modelVersionId;
@Schema(description = "版本编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@DiffLogField(name = "版本编号")
private String modelVersion;
}

8
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/RunModelController.java

@ -42,6 +42,14 @@ public class RunModelController {
return success(BeanUtils.toBean(pageResult, ModelRespVO.class));
}
@GetMapping("/version/page")
@Operation(summary = "获得模型版本分页列表")
@PreAuthorize("@ss.hasPermission('run:model:query')")
public CommonResult<PageResult<ModelVersionRespVO>> getModelVersionPage(@Valid ModelVersionPageReqVO pageReqVO) {
PageResult<ModelVersionDO> pageResult = runModelService.getModelVersionPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ModelVersionRespVO.class));
}
@GetMapping("/version/list")
@Operation(summary = "获取模型版本列表", description = "用于前端的下拉选项")
public CommonResult<List<ModelVersionRespVO>> getModelVersionList(ModelVersionPageReqVO versionReqVO) {

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

@ -11,6 +11,7 @@ import lombok.EqualsAndHashCode;
public class ModelVersionPageReqVO extends PageParam {
@Schema(description = "模型id", example = "modelId")
private String modelId;
@Schema(description = "模型名称", example = "modelName")
private String modelName;
}

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

@ -4,6 +4,8 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "运行中心 - 模型分页 Request VO")
@Data
@ExcelIgnoreUnannotated
@ -17,6 +19,20 @@ public class ModelVersionRespVO {
@Schema(description = "模型版本名称", example = "yudao")
private String version;
@Schema(description = "版本名称", example = "yudao")
private String conditionName;
/**
* 模型名称
*/
private String modelName;
/**
* 模型信息
*/
private String modelInfo;
private String algorithmName;
private String unitName;
private LocalDateTime updateTime;
}

55
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/report/ReportController.java

@ -0,0 +1,55 @@
package cn.iocoder.yudao.module.alert.controller.admin.report;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.alert.controller.admin.instant.vo.InstantPageReqVO;
import cn.iocoder.yudao.module.alert.controller.admin.instant.vo.InstantRespVO;
import cn.iocoder.yudao.module.alert.controller.admin.report.vo.ReportPageReqVO;
import cn.iocoder.yudao.module.alert.controller.admin.report.vo.ReportRespVO;
import cn.iocoder.yudao.module.alert.dal.dataobject.instant.InstantDO;
import cn.iocoder.yudao.module.alert.dal.dataobject.report.ReportDO;
import cn.iocoder.yudao.module.alert.service.instant.InstantService;
import cn.iocoder.yudao.module.alert.service.report.ReportService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "运行中心 - 模型评估报告")
@RestController
@RequestMapping("/alert/assess")
@Validated
public class ReportController {
@Resource
private ReportService reportService;
@GetMapping("/page")
@Operation(summary = "获得评估报告列表")
@PreAuthorize("@ss.hasPermission('run:instant:query')")
public CommonResult<PageResult<ReportRespVO>> getReportPage(@Valid ReportPageReqVO pageReqVO) {
PageResult<ReportDO> pageResult = reportService.getReportPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ReportRespVO.class));
}
@GetMapping("/list")
@Operation(summary = "获得评估报告列表--不分页")
@PreAuthorize("@ss.hasPermission('run:instant:query')")
public CommonResult<List<ReportRespVO>> getReportList(@Valid ReportPageReqVO pageReqVO) {
List<ReportDO> listResult = reportService.getReportList(pageReqVO);
return success(BeanUtils.toBean(listResult, ReportRespVO.class));
}
}

27
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/report/vo/ReportPageReqVO.java

@ -0,0 +1,27 @@
package cn.iocoder.yudao.module.alert.controller.admin.report.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Schema(description = "运行中心 - 评估报告 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
public class ReportPageReqVO extends PageParam {
private String id;
/**
* 模型id
*/
private String modelId;
private String version;
/**
* 分数
*/
private String score;
}

28
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/report/vo/ReportRespVO.java

@ -0,0 +1,28 @@
package cn.iocoder.yudao.module.alert.controller.admin.report.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "运行中心 - 评估报告 Response VO")
@Data
public class ReportRespVO {
private String id;
/**
* 模型id
*/
private String modelId;
private String version;
/**
* 报告长字符串
*/
private String report;
/**
* 分数
*/
private String score;
}

38
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/vo/WarnSaveReqVO.java

@ -15,13 +15,37 @@ import java.util.List;
public class WarnSaveReqVO {
@Schema(description = "预警编号", example = "1")
@NotNull(message = "预警编号不能为空")
private Long id;
@Schema(description = "实例编号", example = "1")
@NotNull(message = "实例编号不能为空")
private Long mpId;
@Schema(description = "点号", example = "1")
@NotNull(message = "点号不能为空")
private String pointId;
@Schema(description = "点号", example = "1")
@NotNull(message = "点号不能为空")
private String pointName;
@Schema(description = "光子牌", example = "1")
@NotNull(message = "光子牌不能为空")
private String gzpName;
@Schema(description = "报警表达式", example = "1")
@NotNull(message = "报警表达式不能为空")
private String equation;
@Schema(description = "输出点号", example = "1")
@NotNull(message = "输出点号不能为空")
private String outputPoint;
@Schema(description = "单位", example = "1")
@NotNull(message = "单位不能为空")
private String unit;
@Schema(description = "参与报警", requiredMode = Schema.RequiredMode.REQUIRED,example = "1")
@Schema(description = "参与报警", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@DiffLogField(name = "参与报警")
private Long warnStatus;
@ -33,17 +57,23 @@ public class WarnSaveReqVO {
//短信开关
private Long shortMessageOnOff;
//光字牌
private Long gzpOnOff;
private Long gzpOnOff=1L;
private Long warnKey=1L;
private Long warnId=1L;
private String gzpName;
//推送诊断
private Long copyToDiagOnOff;
//已有实例数量
private Long number;
@Schema(description = "上限", example = "1")
@NotNull(message = "上限不能为空")
private Double uplimit;
@Schema(description = "下限", example = "1")
@NotNull(message = "下限不能为空")
private Double lowlimit;

3
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/instant/InstantDO.java

@ -80,4 +80,7 @@ public class InstantDO extends BaseDO {
private String conditionName;
private String createName;
private String updateName;
private String modelVersion;
}

2
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/instant/InstantTableDO.java

@ -48,6 +48,8 @@ public class InstantTableDO extends BaseDO {
private String modelVersionId;
private String modelVersion;
private Long isUpdate;
//所用模型的信息-json字符串

28
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/model/ModelVersionDO.java

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.alert.dal.dataobject.model;
import cn.hutool.core.date.DateTime;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableName;
@ -7,7 +8,9 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@TableName(value = "model_version", autoResultMap = true)
import java.time.LocalDateTime;
@TableName(value = "model_version_view", autoResultMap = true)
@KeySequence("system_role_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ -16,6 +19,29 @@ public class ModelVersionDO extends BaseDO {
private String modelId;
/**
* 版本号
*/
private String version;
/**
* 版本名称
*/
private String conditionName;
/**
* 模型名称
*/
private String modelName;
/**
* 模型信息
*/
private String modelInfo;
private String algorithmName;
private String unitName;
private LocalDateTime updateTime;
}

20
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/report/Report.java

@ -0,0 +1,20 @@
package cn.iocoder.yudao.module.alert.dal.dataobject.report;
import lombok.Data;
import java.util.List;
@Data
public class Report {
public List<point> assess;
@Data
public static class point
{
public String PointId;
public double amplitude;
public int index;
}
}

41
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/report/ReportDO.java

@ -0,0 +1,41 @@
package cn.iocoder.yudao.module.alert.dal.dataobject.report;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 评估报告 DO
*
* @author 芋道源码
*/
@TableName(value = "assess_report_cfg", autoResultMap = true)
@KeySequence("system_role_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@EqualsAndHashCode(callSuper = true)
@Data
public class ReportDO extends BaseDO {
private String id;
/**
* 模型id
*/
private String modelId;
private String version;
/**
* 报告长字符串
*/
private String report;
/**
* 分数
*/
private String score;
}

6
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/warn/WarnTableDO.java

@ -24,11 +24,12 @@ public class WarnTableDO extends BaseDO {
private String pointName;
private String mpName;
private String outputPoint;
private String formula;
private String unit;
private String equation;
//报警类型
private String modelOrRule;
@ -52,6 +53,9 @@ public class WarnTableDO extends BaseDO {
private Long warnStatus;
private Long warnKey;
private Long warnId;
private Double uplimit;
private Double lowlimit;

3
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/model/ModelMapper.java

@ -17,4 +17,7 @@ public interface ModelMapper extends BaseMapperX<ModelDO> {
.orderByAsc(ModelDO::getId));
}
}

33
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/model/VersionMapper.java

@ -0,0 +1,33 @@
package cn.iocoder.yudao.module.alert.dal.mysql.model;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelVersionPageReqVO;
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelVersionDO;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface VersionMapper extends BaseMapperX<ModelVersionDO> {
/**
* 获取模型版本列表
*
* @param reqVO 请求参数
* @return 模型版本列表
*/
default PageResult<ModelVersionDO> selectPage(ModelVersionPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ModelVersionDO>()
.eqIfPresent(ModelVersionDO::getModelId, reqVO.getModelId())
.likeIfPresent(ModelVersionDO::getModelName, reqVO.getModelName())
.orderByAsc(ModelVersionDO::getUpdateTime)
.orderByAsc(ModelVersionDO::getId));
}
default ModelVersionDO selectByModelId(ModelVersionPageReqVO reqVO) {
//根据modelid查询modelversion
ModelVersionDO modelVersionDO = selectOne(new LambdaQueryWrapperX<ModelVersionDO>()
.eq(ModelVersionDO::getModelId, reqVO.getModelId()));
return modelVersionDO;
}
}

56
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/mysql/report/ReportMapper.java

@ -0,0 +1,56 @@
package cn.iocoder.yudao.module.alert.dal.mysql.report;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelVersionPageReqVO;
import cn.iocoder.yudao.module.alert.controller.admin.report.vo.ReportPageReqVO;
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelDO;
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelVersionDO;
import cn.iocoder.yudao.module.alert.dal.dataobject.report.ReportDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface ReportMapper extends BaseMapperX<ReportDO> {
/**
* 获取评估报告列表
*
* @param reqVO 请求参数
* @return 评估报告列表
*/
default PageResult<ReportDO> selectPage(ReportPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ReportDO>()
.eqIfPresent(ReportDO::getModelId, reqVO.getModelId())
.eqIfPresent(ReportDO::getVersion, reqVO.getVersion())
.orderByAsc(ReportDO::getId));
}
/**
* 获取评估报告列表
*
* @param reqVO 请求参数
* @return 评估报告列表
*/
default List<ReportDO> selectList(ReportPageReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<ReportDO>()
.eqIfPresent(ReportDO::getModelId, reqVO.getModelId())
.eqIfPresent(ReportDO::getVersion, reqVO.getVersion())
.orderByAsc(ReportDO::getId));
}
/**
* 根据模型ID和版本获取评估报告
*
* @param modelId 模型ID
* @param version 版本号
* @return 评估报告
*/
default ReportDO selectByModelIdAndVersion(Long modelId, String version) {
return selectOne(new LambdaQueryWrapperX<ReportDO>()
.eq(ReportDO::getModelId, modelId)
.eq(ReportDO::getVersion, version));
}
}

6
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/instant/InstantService.java

@ -53,5 +53,11 @@ public interface InstantService {
* @return 实例编号
*/
List<String> createInstant(@Valid InstantSaveReqVO createReqVO, Integer type) throws IOException;
/**
* 删除实例
*
* @param id 实例编号
*/
void deleteInstant(Long id);
}

117
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/instant/InstantServiceImpl.java

@ -1,17 +1,28 @@
package cn.iocoder.yudao.module.alert.service.instant;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.Point;
import cn.iocoder.yudao.module.alert.controller.admin.instant.vo.*;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.RunModelInfoVO;
import cn.iocoder.yudao.module.alert.controller.admin.warn.vo.WarnSaveReqVO;
import cn.iocoder.yudao.module.alert.dal.dataobject.instant.InstantDO;
import cn.iocoder.yudao.module.alert.dal.dataobject.instant.InstantTableDO;
import cn.iocoder.yudao.module.alert.dal.dataobject.report.Report;
import cn.iocoder.yudao.module.alert.dal.dataobject.report.ReportDO;
import cn.iocoder.yudao.module.alert.dal.dataobject.warn.WarnTableDO;
import cn.iocoder.yudao.module.alert.dal.mysql.instant.InstantMapper;
import cn.iocoder.yudao.module.alert.dal.mysql.instant.InstantTableMapper;
import cn.iocoder.yudao.module.alert.dal.mysql.model.VersionMapper;
import cn.iocoder.yudao.module.alert.dal.mysql.report.ReportMapper;
import cn.iocoder.yudao.module.alert.dal.mysql.warn.WarnTableMapper;
import cn.iocoder.yudao.module.alert.service.warn.WarnService;
import cn.iocoder.yudao.module.alert.utils.EXAUtils;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.google.common.annotations.VisibleForTesting;
import com.mzt.logapi.context.LogRecordContext;
import com.mzt.logapi.service.impl.DiffParseFunction;
@ -25,6 +36,7 @@ import cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@ -41,6 +53,15 @@ public class InstantServiceImpl implements InstantService {
private InstantMapper instantMapper;
@Resource
private InstantTableMapper instantTableMapper;
@Resource
private ReportMapper reportMapper;
@Resource
private VersionMapper versionMapper;
@Resource
private WarnService warnService;
EXAUtils exaUtils = new EXAUtils();
@Value("${point.head}")
private String HEAD;
@ -55,6 +76,12 @@ public class InstantServiceImpl implements InstantService {
// 1. 校验角色
// validateRoleDuplicate(createReqVO.getName(), createReqVO.getCode(), null);
//根据modelversionid查询modelversion,录入instantcfg表的modelversion字段
String modelVersion = versionMapper.selectById(createReqVO.getModelVersionId()).getVersion();
createReqVO.setModelVersion(modelVersion);
//插入除instantInfo外的所有数据,获取到id
// 2. 插入到数据库-status、visible默认值
InstantTableDO instant = BeanUtils.toBean(createReqVO, InstantTableDO.class)
@ -92,7 +119,7 @@ public class InstantServiceImpl implements InstantService {
//构建重构值对象
outpoint = HEAD + "M" + String.format("%04d", insertId) + String.format("%04d", i + 1) + "R";
point = new Point();
point.setGroupName("warn");
point.setGroupName("WARN");
outPointInfoList.add(outpoint);
point.setItemName(outpoint);
point.setDescriptor(pointInfoList.get(i).getDescription() + "_重构值");
@ -103,7 +130,7 @@ public class InstantServiceImpl implements InstantService {
//构建时间值对象
outpoint = HEAD + "M" + String.format("%04d", insertId) + String.format("%04d", i + 1) + "T";
point = new Point();
point.setGroupName("warn");
point.setGroupName("WARN");
timePointInfoList.add(outpoint);
point.setItemName(outpoint);
point.setDescriptor(pointInfoList.get(i).getDescription() + "_时间值");
@ -114,7 +141,7 @@ public class InstantServiceImpl implements InstantService {
//构建偏差值对象
outpoint = HEAD + "M" + String.format("%04d", insertId) + String.format("%04d", i + 1) + "B";
point = new Point();
point.setGroupName("warn");
point.setGroupName("WARN");
biasPointInfoList.add(outpoint);
point.setItemName(outpoint);
point.setDescriptor(pointInfoList.get(i).getDescription() + "_偏差值");
@ -125,7 +152,7 @@ public class InstantServiceImpl implements InstantService {
//构建状态值对象
outpoint = HEAD + "M" + String.format("%04d", insertId) + String.format("%04d", i + 1) + "F";
point = new Point();
point.setGroupName("warn");
point.setGroupName("WARN");
faultVariablePointList.add(outpoint);
point.setItemName(outpoint);
point.setDescriptor(pointInfoList.get(i).getDescription() + "_状态值");
@ -159,7 +186,7 @@ public class InstantServiceImpl implements InstantService {
//赋值-createReqVO
createReqVO.setModel_state(outpoint);
point = new Point();
point.setGroupName("warn");
point.setGroupName("WARN");
point.setItemName(outpoint);
point.setDescriptor(instant.getMpName() + "_残差值");
point.setItemType(5);
@ -170,7 +197,7 @@ public class InstantServiceImpl implements InstantService {
//赋值-createReqVO
createReqVO.setModel_status(outpoint);
point = new Point();
point.setGroupName("warn");
point.setGroupName("WARN");
point.setItemName(outpoint);
point.setDescriptor(instant.getMpName() + "_状态值");
point.setItemType(5);
@ -195,10 +222,55 @@ public class InstantServiceImpl implements InstantService {
String ss = exaUtils.setPoint(EXA_IP, item);
resultList.add(ss);
}
createWarn1(instant, createReqVO);
return resultList;
}
public void createWarn1(InstantTableDO instant, InstantSaveReqVO createReqVO) {
//调用预警表和评估报告表的mapper
// 从instant对象获取modelid和version字段
Long modelId = instant.getModelId();
String version = instant.getModelVersion();
// modelId=11L;
// version="v-test";
// 调用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++) {
WarnSaveReqVO warnSaveReqVO = new WarnSaveReqVO();
// 设置预警ID(假设insertId为当前预警主记录ID)
// warn.setId(insertId);
//设置实例id
warnSaveReqVO.setMpId(instant.getId());
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()) + "]<LOWLIMIT");
warnSaveReqVO.setUplimit(reportObj.getAssess().get(j).getAmplitude());
warnSaveReqVO.setLowlimit(-reportObj.getAssess().get(j).getAmplitude());
warnSaveReqVO.setOutputPoint(createReqVO.getOutPointInfo().get(reportObj.getAssess().get(j).getIndex()));
warnSaveReqVO.setUnit(createReqVO.getUnit().get(reportObj.getAssess().get(j).getIndex()));
// 设置其他必要字段(根据实际业务补充)
warnSaveReqVO.setWarnStatus(1L); // 示例:设置初始状态
// 插入数据库
warnService.createWarn(warnSaveReqVO);
}
}
}
@Override
public List<InstantPointRespVO> getInstantPoint(Long id) {
List<InstantPointRespVO> instantPointList = new ArrayList<>();
@ -369,4 +441,37 @@ public class InstantServiceImpl implements InstantService {
// }
// }
@Override
@Transactional(rollbackFor = Exception.class)
@LogRecord(type = SYSTEM_INSTANT_TYPE, subType = SYSTEM_INSTANT_DELETE_SUB_TYPE, bizNo = "{{#id}}",
success = SYSTEM_INSTANT_DELETE_SUCCESS)
public void deleteInstant(Long id) {
// 1. 校验用户存在
InstantDO instant = validateInstantExists(id);
// 2.1 删除用户
instantTableMapper.deleteById(id);
// // 2.2 删除用户关联数据
// permissionService.processUserDeleted(id);
// // 2.2 删除用户岗位
// userPostMapper.deleteByUserId(id);
// 3. 记录操作日志上下文
LogRecordContext.putVariable("instant", instant);
}
@VisibleForTesting
InstantDO validateInstantExists(Long id) {
if (id == null) {
return null;
}
InstantDO instant = instantMapper.selectById(id);
if (instant == null) {
throw exception(INSTANT_NOT_EXISTS);
}
return instant;
}
}

40
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/RunModelServiceImpl.java

@ -1,16 +1,13 @@
package cn.iocoder.yudao.module.alert.service.model;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelPageReqVO;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelVersionPageReqVO;
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelDO;
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelVersionDO;
import cn.iocoder.yudao.module.alert.dal.mysql.model.ModelMapper;
import cn.iocoder.yudao.module.alert.dao.domain.ModelVersion;
import cn.iocoder.yudao.module.alert.dal.mysql.model.VersionMapper;
import cn.iocoder.yudao.module.alert.dao.service.ModelVersionService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -22,24 +19,33 @@ import org.springframework.stereotype.Service;
public class RunModelServiceImpl implements RunModelService {
private final ModelVersionService modelVersionService;
@Resource
private ModelMapper modelMapper;
@Resource
private VersionMapper versionMapper;
@Override
public PageResult<ModelDO> getModelPage(ModelPageReqVO reqVO) {
Page<ModelVersion> page = modelVersionService.page(new Page<>(reqVO.getPageNo(), reqVO.getPageSize()),
new LambdaQueryWrapperX<ModelVersion>()
.likeIfPresent(ModelVersion::getModelName, reqVO.getModelName())
.orderByAsc(ModelVersion::getId));
return new PageResult<>(BeanUtils.toBean(page.getRecords(), ModelDO.class),
page.getTotal());
// Page<ModelVersion> page = modelVersionService.page(new Page<>(reqVO.getPageNo(), reqVO.getPageSize()),
// new LambdaQueryWrapperX<ModelVersion>()
// .likeIfPresent(ModelVersion::getModelName, reqVO.getModelName())
// .orderByAsc(ModelVersion::getId));
// return new PageResult<>(BeanUtils.toBean(page.getRecords(), ModelDO.class),
// page.getTotal());
return modelMapper.selectPage(reqVO);
}
@Override
public PageResult<ModelVersionDO> getModelVersionPage (ModelVersionPageReqVO reqVO) {
Page<ModelVersion> page = modelVersionService.page(new Page<>(reqVO.getPageNo(), reqVO.getPageSize()),
new LambdaQueryWrapperX<ModelVersion>()
.eqIfPresent(ModelVersion::getModelId, reqVO.getModelId())
.orderByAsc(ModelVersion::getId));
return new PageResult<>(BeanUtils.toBean(page.getRecords(), ModelVersionDO.class),
page.getTotal());
public PageResult<ModelVersionDO> getModelVersionPage(ModelVersionPageReqVO reqVO) {
// Page<ModelVersion> page = modelVersionService.page(new Page<>(reqVO.getPageNo(), reqVO.getPageSize()),
// new LambdaQueryWrapperX<ModelVersion>()
// .eqIfPresent(ModelVersion::getModelId, reqVO.getModelId())
// .orderByAsc(ModelVersion::getId));
// return new PageResult<>(BeanUtils.toBean(page.getRecords(), ModelVersionDO.class),
// page.getTotal());
return versionMapper.selectPage(reqVO);
}

8
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/warn/WarnService.java

@ -20,6 +20,14 @@ public interface WarnService {
WarnDO getWarn(Long id);
/**
* 创建预警
*
* @param createReqVO 创建预警
* @return 预警编号
*/
Long createWarn(@Valid WarnSaveReqVO createReqVO);
/**
* 更新预警
*

35
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/warn/WarnServiceImpl.java

@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.alert.service.warn;
import cn.hutool.core.collection.CollectionUtil;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.alert.controller.admin.instant.vo.InstantSaveReqVO;
@ -10,6 +12,9 @@ import cn.iocoder.yudao.module.alert.dal.dataobject.warn.WarnDO;
import cn.iocoder.yudao.module.alert.dal.dataobject.warn.WarnTableDO;
import cn.iocoder.yudao.module.alert.dal.mysql.warn.WarnMapper;
import cn.iocoder.yudao.module.alert.dal.mysql.warn.WarnTableMapper;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants;
import com.google.common.annotations.VisibleForTesting;
import com.mzt.logapi.context.LogRecordContext;
@ -19,8 +24,10 @@ import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.WARN_NOT_EXISTS;
import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.*;
@ -39,6 +46,34 @@ public class WarnServiceImpl implements WarnService {
}
@Override
@Transactional(rollbackFor = Exception.class)
@LogRecord(type = SYSTEM_WARN_TYPE, subType = SYSTEM_WARN_CREATE_SUB_TYPE, bizNo = "{{#warn.id}}",
success = SYSTEM_WARN_CREATE_SUCCESS)
public Long createWarn(WarnSaveReqVO createReqVO) {
// 1.1 校验账户配合
// tenantService.handleTenantInfo(tenant -> {
// long count = userMapper.selectCount();
// if (count >= tenant.getAccountCount()) {
// throw exception(USER_COUNT_MAX, tenant.getAccountCount());
// }
// });
// 1.2 校验正确性
// validateUserForCreateOrUpdate(null, createReqVO.getUsername(),
// createReqVO.getMobile(), createReqVO.getEmail(), createReqVO.getDeptId(), createReqVO.getPostIds());
// 2.1 插入用户
WarnTableDO warn = BeanUtils.toBean(createReqVO, WarnTableDO.class);
warnTableMapper.insert(warn);
// 3. 记录操作日志上下文
LogRecordContext.putVariable("warn", warn);
return warn.getId();
}
@Override
public WarnDO getWarn(Long id) {
return warnMapper.selectById(id);

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

@ -241,7 +241,7 @@ public class EXAUtils {
//写入点号
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/AddItemStd";
String param = JSON.toJSONString(point);
String result = Request.Post(requestPathAddItem)
.addHeader("Content-type", "application/json")

Loading…
Cancel
Save