Browse Source

feat(module-alert): 重构模型相关代码并添加新功能

- 新增 Algorithm、ModelStatus、ModelTrash 和 ModelVisible 枚举类- 重构了模型相关的数据结构和接口
- 新增模型列表查询和创建模型的功能
-优化了代码结构,提高了可维护性和可扩展性
pull/16/head
Jiale 1 month ago
parent
commit
2b38459508
  1. 32
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/common/enums/Algorithm.java
  2. 22
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/common/enums/ModelStatus.java
  3. 21
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/common/enums/ModelTrash.java
  4. 19
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/common/enums/ModelVisible.java
  5. 8
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/vo/EXAPageReqVO.java
  6. 67
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/vo/ExaPoint.java
  7. 14
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/ModelController.java
  8. 10
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/ModelDataController.java
  9. 35
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/ModelInfo.java
  10. 59
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java
  11. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/CreateModelInfo.java
  12. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelDataQuery.java
  13. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelDataVO.java
  14. 21
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelInfoVO.java
  15. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSelectQuery.java
  16. 6
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSimpleVO.java
  17. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/PointVO.java
  18. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/TimeRange.java
  19. 56
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/system/SelectController.java
  20. 26
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/system/vo/OptionItemVO.java
  21. 21
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/system/vo/PointOptionItemVO.java
  22. 32
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/system/vo/SelectAllOptionVO.java
  23. 18
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/system/vo/SelectQuery.java
  24. 42
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelCfg.java
  25. 34
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/SystemCfg.java
  26. 23
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/SystemTypeCfg.java
  27. 41
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/UnitCfg.java
  28. 4
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/ModelCfgMapper.java
  29. 18
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/SystemCfgMapper.java
  30. 18
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/SystemTypeCfgMapper.java
  31. 18
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/UnitCfgMapper.java
  32. 4
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/ModelCfgService.java
  33. 13
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/SystemCfgService.java
  34. 13
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/SystemTypeCfgService.java
  35. 13
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/UnitCfgService.java
  36. 4
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/ModelCfgServiceImpl.java
  37. 22
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/SystemCfgServiceImpl.java
  38. 22
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/SystemTypeCfgServiceImpl.java
  39. 22
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/UnitCfgServiceImpl.java
  40. 14
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/exa/EXAService.java
  41. 41
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/exa/EXAServiceImpl.java
  42. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/ModelDataService.java
  43. 10
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/ModelService.java
  44. 6
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelDataServiceImpl.java
  45. 74
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java
  46. 30
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/system/SelectService.java
  47. 88
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/system/impl/SelectServiceImpl.java
  48. 49
      yudao-module-alert/yudao-module-alert-biz/src/main/resources/cn/iocoder/yudao/module/alert/dao/mapper/ModelCfgMapper.xml
  49. 54
      yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/ModelCfgMapper.xml
  50. 23
      yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/SystemCfgMapper.xml
  51. 16
      yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/SystemTypeCfgMapper.xml
  52. 28
      yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/UnitCfgMapper.xml
  53. 4
      yudao-server/src/main/java/cn/iocoder/yudao/server/YudaoServerApplication.java

32
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/common/enums/Algorithm.java

@ -0,0 +1,32 @@
package cn.iocoder.yudao.module.alert.common.enums;
import lombok.AllArgsConstructor;
import java.util.Objects;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-19 14:07
*/
@AllArgsConstructor
public enum Algorithm {
/**
* 模型算法枚举
*/
ERROR(-1),
PCA(0),
ANN(1);
public final Integer code;
public static Algorithm of(Integer code) {
for (Algorithm algorithm : values()) {
if (Objects.equals(algorithm.code, code)) {
return algorithm;
}
}
return ERROR;
}
}

22
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/common/enums/ModelStatus.java

@ -0,0 +1,22 @@
package cn.iocoder.yudao.module.alert.common.enums;
import lombok.AllArgsConstructor;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-19 13:48
*/
@AllArgsConstructor
public enum ModelStatus {
/**
* 模型状态
*/
TRAINING(0, "训练中"),
FINISH(1, "已下装");
public final Integer code;
public final String desc;
}

21
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/common/enums/ModelTrash.java

@ -0,0 +1,21 @@
package cn.iocoder.yudao.module.alert.common.enums;
import lombok.AllArgsConstructor;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-19 13:53
*/
@AllArgsConstructor
public enum ModelTrash {
/**
* 删除状态
*/
NORMAL(0, "正常"),
TRASH(1, "已删除"),
;
public final Integer code;
public final String desc;
}

19
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/common/enums/ModelVisible.java

@ -0,0 +1,19 @@
package cn.iocoder.yudao.module.alert.common.enums;
import lombok.AllArgsConstructor;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-19 14:00
*/
@AllArgsConstructor
public enum ModelVisible {
/**
* 模型可见状态
*/
VISIBLE(1),
INVISIBLE(0),
;
public final Integer code;
}

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

@ -4,11 +4,19 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@Schema(description = "预警诊断系统 - EXA测点分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class EXAPageReqVO extends PageParam {
@Schema(description = "测点名称或描述,模糊匹配", example = "芋道")
private String condition;
public EXAPageReqVO(String condition) {
this.condition = condition;
}
}

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

@ -0,0 +1,67 @@
package cn.iocoder.yudao.module.alert.controller.admin.exa.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-20 20:45
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ExaPoint {
/**
* 点号
*/
@JsonProperty("ItemName")
private String itemName;
/**
*
*/
@JsonProperty("SerialNumber")
private int serialNumber;
/**
* 组名
*/
@JsonProperty("GroupName")
private String groupName;
/**
* 类型
*/
@JsonProperty("ItemType")
private int itemType;
/**
* 描述
*/
@JsonProperty("Descriptor")
private String descriptor;
/**
* 单位
*/
@JsonProperty("EngUnits")
private String engUnits;
/**
* 上限
*/
@JsonProperty("UpperLimit")
private Double upperLimit;
/**
* 下限
*/
@JsonProperty("LowerLimit")
private Double lowerLimit;
/**
* 上边界
*/
@JsonProperty("LowerBound")
private Double lowerBound;
/**
* 下变价
*/
@JsonProperty("UpperBound")
private Double upperBound;
}

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

@ -1,10 +1,10 @@
package cn.iocoder.yudao.module.alert.controller.model;
package cn.iocoder.yudao.module.alert.controller.admin.model;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.alert.controller.model.vo.CreateModelInfo;
import cn.iocoder.yudao.module.alert.controller.model.vo.ModelInfoVO;
import cn.iocoder.yudao.module.alert.controller.model.vo.ModelSelectQuery;
import cn.iocoder.yudao.module.alert.controller.model.vo.ModelSimpleVO;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.CreateModelInfo;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelInfoVO;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelSelectQuery;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelSimpleVO;
import cn.iocoder.yudao.module.alert.service.model.ModelService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
@ -21,7 +21,7 @@ import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeC
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/model")
@RequestMapping("/alert/model")
public class ModelController {
private final ModelService modelService;
@ -39,7 +39,7 @@ public class ModelController {
}
@PostMapping("/")
public CommonResult<Integer> saveModel(@RequestBody CreateModelInfo model) {
public CommonResult<Integer> saveModel(@RequestBody ModelInfoVO model) {
Integer id = modelService.createModel(model);
if (Objects.nonNull(id) && id > 0) {
return CommonResult.success(id);

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

@ -1,9 +1,9 @@
package cn.iocoder.yudao.module.alert.controller.model;
package cn.iocoder.yudao.module.alert.controller.admin.model;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.alert.controller.model.vo.ModelDataQuery;
import cn.iocoder.yudao.module.alert.controller.model.vo.ModelDataVO;
import cn.iocoder.yudao.module.alert.controller.model.vo.TimeRange;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelDataQuery;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelDataVO;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.TimeRange;
import cn.iocoder.yudao.module.alert.service.model.ModelDataService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.*;
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/model/data")
@RequestMapping("/alert/model/data")
public class ModelDataController {
private final ModelDataService modelDataService;

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

@ -0,0 +1,35 @@
package cn.iocoder.yudao.module.alert.controller.admin.model.model;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;
import java.util.List;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-19 23:02
*/
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class ModelInfo {
/**
* id
*/
private Integer id;
/**
* 创建人
*/
private String createName;
/**
* 名称
*/
private String modelName;
private List<Point> pointInfo;
}

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

@ -0,0 +1,59 @@
package cn.iocoder.yudao.module.alert.controller.admin.model.model;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;
import java.math.BigDecimal;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-19 22:48
*/
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class Point {
/**
* 系统名称
*/
private String systemName;
/**
* 目标点号
*/
@JsonProperty("target_point")
private String targetPoint;
/**
* 描述
*/
private String description;
/**
* 单位
*/
private String unit;
/**
* 类型
*/
private String marktype;
/**
* 上限
*/
private BigDecimal upperlimit;
/**
* 下限
*/
private BigDecimal lowerlimit;
/**
* 网格数
*/
private Integer gridNumber;
}

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

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.alert.controller.model.vo;
package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
import lombok.Data;

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

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.alert.controller.model.vo;
package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;

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

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.alert.controller.model.vo;
package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
import lombok.*;

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

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.alert.controller.model.vo;
package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
@ -42,25 +42,12 @@ public class ModelInfoVO {
*/
private String modelName;
private List<Object> steadyPoint;
/**
* 滑动窗参数
*/
private MovingWindows movingWindows;
private PointVO targetParameter;
private List<PointVO> relationParameter;
private List<PointVO> boundaryParameter;
private List<PointVO> pointInfo;
private Integer algorithmId;
@Data
public static class MovingWindows {
private Integer windowLength;
private Integer systemId;
private Integer samplingInterval;
private Integer movingSpeed;
}
}

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

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.alert.controller.model.vo;
package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
import lombok.Data;

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

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.alert.controller.model.vo;
package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
@ -33,7 +33,7 @@ public class ModelSimpleVO {
/**
* 创建人
*/
private String creatName;
private String createName;
/**
* 模型状态
@ -43,5 +43,5 @@ public class ModelSimpleVO {
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date creatTime;
private Date createTime;
}

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

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.alert.controller.model.vo;
package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;

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

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.alert.controller.model.vo;
package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
import lombok.Data;

56
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/system/SelectController.java

@ -0,0 +1,56 @@
package cn.iocoder.yudao.module.alert.controller.admin.system;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.alert.controller.admin.system.vo.OptionItemVO;
import cn.iocoder.yudao.module.alert.controller.admin.system.vo.SelectQuery;
import cn.iocoder.yudao.module.alert.controller.admin.system.vo.PointOptionItemVO;
import cn.iocoder.yudao.module.alert.controller.admin.system.vo.SelectAllOptionVO;
import cn.iocoder.yudao.module.alert.service.exa.EXAService;
import cn.iocoder.yudao.module.alert.service.system.SelectService;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-16 22:37
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/alert/select")
public class SelectController {
/**
* 查询条件不能含有这个,否则exa会挂掉
*/
private static final String EXA_NOT_SUPPORT_STR = "'";
private final SelectService selectService;
private final EXAService exaService;
@GetMapping("list")
public CommonResult<SelectAllOptionVO> getAllOptions() {
SelectAllOptionVO allOptions = selectService.getAllOptions();
return CommonResult.success(allOptions);
}
@GetMapping("/system/options")
public CommonResult<List<OptionItemVO>> getTypeOptions(@Valid SelectQuery query) {
List<OptionItemVO> systemOptions = selectService.getSystemOptions(query);
return CommonResult.success(systemOptions);
}
@GetMapping("/point/options")
public CommonResult<List<PointOptionItemVO>> getPointOptions(String keyword) {
List<PointOptionItemVO> pointOptionList = new ArrayList<>();
if (StringUtils.hasText(keyword) && !keyword.contains(EXA_NOT_SUPPORT_STR)) {
pointOptionList = exaService.getPointOptionList(keyword);
}
return CommonResult.success(pointOptionList);
}
}

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

@ -0,0 +1,26 @@
package cn.iocoder.yudao.module.alert.controller.admin.system.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-16 22:39
*/
@Data
@Builder
@ToString
@AllArgsConstructor
public class OptionItemVO {
/**
* id
*/
private Integer id;
/**
* 名称
*/
private String name;
}

21
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/system/vo/PointOptionItemVO.java

@ -0,0 +1,21 @@
package cn.iocoder.yudao.module.alert.controller.admin.system.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-20 20:55
*/
@Data
@Builder
@ToString
@AllArgsConstructor
public class PointOptionItemVO {
private String id;
private String name;
}

32
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/system/vo/SelectAllOptionVO.java

@ -0,0 +1,32 @@
package cn.iocoder.yudao.module.alert.controller.admin.system.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;
import java.util.List;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-16 22:38
*/
@Data
@Builder
@ToString
@AllArgsConstructor
public class SelectAllOptionVO {
/**
* 机组选项
*/
private List<OptionItemVO> units;
/**
* 系统选项
*/
private List<OptionItemVO> types;
/**
* 子系统选项
*/
private List<OptionItemVO> systems;
}

18
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/system/vo/SelectQuery.java

@ -0,0 +1,18 @@
package cn.iocoder.yudao.module.alert.controller.admin.system.vo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-17 23:48
*/
@Data
public class SelectQuery {
@NotNull
private Integer unitId;
@NotNull
private Integer typeId;
}

42
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelCfg.java

@ -1,75 +1,53 @@
package cn.iocoder.yudao.module.alert.dao.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* @TableName model_cfg
*/
@TableName(value ="model_cfg")
@TableName(value = "model_cfg")
@Data
public class ModelCfg {
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ModelCfg implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private Integer systemId;
private Integer algorithmId;
private String modelName;
private Date creatTime;
private String creatName;
private String modelInfo;
private Integer status;
private Integer visible;
private String conditionInfo;
private Integer trash;
private String assessRes;
private Integer needToAssess;
private Double score;
private String clearOrNot;
private Integer effNumber;
private Integer needToClean;
private String origAssessRes;
private Double loadCover;
private String coverOutput;
private String curVersion;
private String modelVersion;
private String versionInfo;
private String conditionName;
private Integer isOnline;
private Integer trainStatus;
private String creator;
private Date createTime;
private String updater;
private Date updateTime;
private Boolean deleted;
}

34
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/SystemCfg.java

@ -0,0 +1,34 @@
package cn.iocoder.yudao.module.alert.dao.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* @TableName system_cfg
*/
@TableName(value ="system_cfg")
@Data
public class SystemCfg implements Serializable {
private Integer systemId;
private Integer systemTypeId;
private String systemName;
private String systemShortname;
private Integer unitId;
private String resetpoint;
private Date resettime;
private String resetlist;
private static final long serialVersionUID = 1L;
}

23
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/SystemTypeCfg.java

@ -0,0 +1,23 @@
package cn.iocoder.yudao.module.alert.dao.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
/**
* @TableName system_type_cfg
*/
@TableName(value ="system_type_cfg")
@Data
public class SystemTypeCfg implements Serializable {
private Integer systemTypeId;
private String systemTypeName;
private String systemTypeShortname;
private static final long serialVersionUID = 1L;
}

41
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/UnitCfg.java

@ -0,0 +1,41 @@
package cn.iocoder.yudao.module.alert.dao.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
/**
* @TableName unit_cfg
*/
@TableName(value ="unit_cfg")
@Data
public class UnitCfg implements Serializable {
private Integer unitId;
private Integer plantId;
private String unitName;
private String unitShortname;
private String alertBasicSample;
private String loadpoint;
private String temppoint;
private Integer capacity;
private String zqylqx;
private String zqylMeasured;
private String zqylTarget;
private String datas;
private static final long serialVersionUID = 1L;
}

4
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/ModelCfgMapper.java

@ -4,9 +4,9 @@ import cn.iocoder.yudao.module.alert.dao.domain.ModelCfg;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author cjl60
* @author 陈小黑
* @description 针对表model_cfg的数据库操作Mapper
* @createDate 2025-05-18 10:52:08
* @createDate 2025-05-22 15:45:38
* @Entity cn.iocoder.yudao.module.alert.dao.domain.ModelCfg
*/
public interface ModelCfgMapper extends BaseMapper<ModelCfg> {

18
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/SystemCfgMapper.java

@ -0,0 +1,18 @@
package cn.iocoder.yudao.module.alert.dao.mapper;
import cn.iocoder.yudao.module.alert.dao.domain.SystemCfg;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author 陈小黑
* @description 针对表system_cfg的数据库操作Mapper
* @createDate 2025-05-21 16:10:38
* @Entity cn.iocoder.yudao.module.alert.dao.domain.SystemCfg
*/
public interface SystemCfgMapper extends BaseMapper<SystemCfg> {
}

18
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/SystemTypeCfgMapper.java

@ -0,0 +1,18 @@
package cn.iocoder.yudao.module.alert.dao.mapper;
import cn.iocoder.yudao.module.alert.dao.domain.SystemTypeCfg;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author 陈小黑
* @description 针对表system_type_cfg的数据库操作Mapper
* @createDate 2025-05-21 16:10:57
* @Entity cn.iocoder.yudao.module.alert.dao.domain.SystemTypeCfg
*/
public interface SystemTypeCfgMapper extends BaseMapper<SystemTypeCfg> {
}

18
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/UnitCfgMapper.java

@ -0,0 +1,18 @@
package cn.iocoder.yudao.module.alert.dao.mapper;
import cn.iocoder.yudao.module.alert.dao.domain.UnitCfg;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author 陈小黑
* @description 针对表unit_cfg的数据库操作Mapper
* @createDate 2025-05-21 16:07:43
* @Entity cn.iocoder.yudao.module.alert.dao.domain.UnitCfg
*/
public interface UnitCfgMapper extends BaseMapper<UnitCfg> {
}

4
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/ModelCfgService.java

@ -4,9 +4,9 @@ import cn.iocoder.yudao.module.alert.dao.domain.ModelCfg;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author cjl60
* @author 陈小黑
* @description 针对表model_cfg的数据库操作Service
* @createDate 2025-05-18 10:52:08
* @createDate 2025-05-22 15:45:38
*/
public interface ModelCfgService extends IService<ModelCfg> {

13
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/SystemCfgService.java

@ -0,0 +1,13 @@
package cn.iocoder.yudao.module.alert.dao.service;
import cn.iocoder.yudao.module.alert.dao.domain.SystemCfg;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author 陈小黑
* @description 针对表system_cfg的数据库操作Service
* @createDate 2025-05-21 16:10:38
*/
public interface SystemCfgService extends IService<SystemCfg> {
}

13
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/SystemTypeCfgService.java

@ -0,0 +1,13 @@
package cn.iocoder.yudao.module.alert.dao.service;
import cn.iocoder.yudao.module.alert.dao.domain.SystemTypeCfg;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author 陈小黑
* @description 针对表system_type_cfg的数据库操作Service
* @createDate 2025-05-21 16:10:57
*/
public interface SystemTypeCfgService extends IService<SystemTypeCfg> {
}

13
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/UnitCfgService.java

@ -0,0 +1,13 @@
package cn.iocoder.yudao.module.alert.dao.service;
import cn.iocoder.yudao.module.alert.dao.domain.UnitCfg;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author 陈小黑
* @description 针对表unit_cfg的数据库操作Service
* @createDate 2025-05-21 16:07:43
*/
public interface UnitCfgService extends IService<UnitCfg> {
}

4
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/ModelCfgServiceImpl.java

@ -7,9 +7,9 @@ import cn.iocoder.yudao.module.alert.dao.mapper.ModelCfgMapper;
import org.springframework.stereotype.Service;
/**
* @author cjl60
* @author 陈小黑
* @description 针对表model_cfg的数据库操作Service实现
* @createDate 2025-05-18 10:52:08
* @createDate 2025-05-22 15:45:38
*/
@Service
public class ModelCfgServiceImpl extends ServiceImpl<ModelCfgMapper, ModelCfg>

22
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/SystemCfgServiceImpl.java

@ -0,0 +1,22 @@
package cn.iocoder.yudao.module.alert.dao.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.iocoder.yudao.module.alert.dao.domain.SystemCfg;
import cn.iocoder.yudao.module.alert.dao.service.SystemCfgService;
import cn.iocoder.yudao.module.alert.dao.mapper.SystemCfgMapper;
import org.springframework.stereotype.Service;
/**
* @author 陈小黑
* @description 针对表system_cfg的数据库操作Service实现
* @createDate 2025-05-21 16:10:38
*/
@Service
public class SystemCfgServiceImpl extends ServiceImpl<SystemCfgMapper, SystemCfg>
implements SystemCfgService{
}

22
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/SystemTypeCfgServiceImpl.java

@ -0,0 +1,22 @@
package cn.iocoder.yudao.module.alert.dao.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.iocoder.yudao.module.alert.dao.domain.SystemTypeCfg;
import cn.iocoder.yudao.module.alert.dao.service.SystemTypeCfgService;
import cn.iocoder.yudao.module.alert.dao.mapper.SystemTypeCfgMapper;
import org.springframework.stereotype.Service;
/**
* @author 陈小黑
* @description 针对表system_type_cfg的数据库操作Service实现
* @createDate 2025-05-21 16:10:57
*/
@Service
public class SystemTypeCfgServiceImpl extends ServiceImpl<SystemTypeCfgMapper, SystemTypeCfg>
implements SystemTypeCfgService{
}

22
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/UnitCfgServiceImpl.java

@ -0,0 +1,22 @@
package cn.iocoder.yudao.module.alert.dao.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.iocoder.yudao.module.alert.dao.domain.UnitCfg;
import cn.iocoder.yudao.module.alert.dao.service.UnitCfgService;
import cn.iocoder.yudao.module.alert.dao.mapper.UnitCfgMapper;
import org.springframework.stereotype.Service;
/**
* @author 陈小黑
* @description 针对表unit_cfg的数据库操作Service实现
* @createDate 2025-05-21 16:07:43
*/
@Service
public class UnitCfgServiceImpl extends ServiceImpl<UnitCfgMapper, UnitCfg>
implements UnitCfgService{
}

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

@ -1,12 +1,12 @@
package cn.iocoder.yudao.module.alert.service.exa;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.*;
import cn.iocoder.yudao.module.alert.controller.admin.system.vo.PointOptionItemVO;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.*;
import java.util.List;
public interface EXAService {
/**
@ -21,16 +21,20 @@ public interface EXAService {
List<EXAHttp> getEXAListNow(List<EXAHttp> list) throws URISyntaxException, IOException;
String getEXANow(String itemName) throws URISyntaxException, IOException;
List<String> getEXAHistory(EXAHistoryReqVO exaHistoryReqVo);
List<String> getEXAHistory(EXAHistoryReqVO exaHistoryReqVo);
List<List<String>> getEXAHistorys(EXAHistoryReqVO exaHistoryReqVo);
String createPoint(Point pointVo) throws IOException;
public List<Object> getEXAGroupInfo() throws URISyntaxException, IOException;
List<Object> getEXAGroupInfo() throws URISyntaxException, IOException;
String deletePoint(String ItemName);
public String deletePoint(String ItemName);
EXAPointImportRespVO importPointList(List<Point> importPoints, boolean isUpdateSupport);
List<PointOptionItemVO> getPointOptionList(String search);
}

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

@ -1,36 +1,22 @@
package cn.iocoder.yudao.module.alert.service.exa;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.*;
import cn.iocoder.yudao.module.alert.controller.admin.system.vo.PointOptionItemVO;
import cn.iocoder.yudao.module.alert.utils.EXAUtils;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import jakarta.validation.ConstraintViolationException;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
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 org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.io.IOException;
import java.lang.reflect.Type;
import java.net.URISyntaxException;
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.alert.utils.PageUtils.getPartList;
@ -40,6 +26,11 @@ import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
@Validated
@Slf4j
public class EXAServiceImpl implements EXAService {
private static final String EXA_SEARCH_FORMATTER = "ItemName like'%%%s%%' or Descriptor like '%%%s%%'";
private static final String EXA_SEARCH_KEY = "WhereClause";
private static final String ID_SPLIT = "|";
EXAUtils exaUtils = new EXAUtils();
@ -126,4 +117,22 @@ public class EXAServiceImpl implements EXAService {
return respVO;
}
@Override
public List<PointOptionItemVO> getPointOptionList(String search) {
try {
List<EXAHttp> points = exaUtils.getPointInfo(EXA_IP, new EXAPageReqVO(search));
return points.stream().map(p -> PointOptionItemVO.builder()
.id(p.getDescriptor() + ID_SPLIT +
p.getItemName() + ID_SPLIT +
p.getEngUnits() + ID_SPLIT +
p.getUpperLimit() + ID_SPLIT +
p.getLowerLimit())
.name(p.getDescriptor() + " (" + p.getItemName() + ")")
.build())
.collect(Collectors.toList());
} catch (Exception e) {
log.error("获取exa异常:{}", search, e);
}
return new ArrayList<>();
}
}

2
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/ModelDataService.java

@ -1,7 +1,7 @@
package cn.iocoder.yudao.module.alert.service.model;
import cn.iocoder.yudao.module.alert.controller.model.vo.ModelDataVO;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelDataVO;
import java.util.Date;
import java.util.List;

10
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/ModelService.java

@ -1,10 +1,10 @@
package cn.iocoder.yudao.module.alert.service.model;
import cn.iocoder.yudao.module.alert.controller.model.vo.CreateModelInfo;
import cn.iocoder.yudao.module.alert.controller.model.vo.ModelInfoVO;
import cn.iocoder.yudao.module.alert.controller.model.vo.ModelSelectQuery;
import cn.iocoder.yudao.module.alert.controller.model.vo.ModelSimpleVO;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.CreateModelInfo;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelInfoVO;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelSelectQuery;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelSimpleVO;
import java.util.List;
@ -36,7 +36,7 @@ public interface ModelService {
* @param model 模型参数
* @return 模型id
*/
Integer createModel(CreateModelInfo model);
Integer createModel(ModelInfoVO model);
/**
* 更新model info

6
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelDataServiceImpl.java

@ -1,15 +1,11 @@
package cn.iocoder.yudao.module.alert.service.model.impl;
import cn.iocoder.yudao.module.alert.controller.model.vo.ModelDataVO;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelDataVO;
import cn.iocoder.yudao.module.alert.service.model.ModelDataService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

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

@ -1,21 +1,25 @@
package cn.iocoder.yudao.module.alert.service.model.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.iocoder.yudao.module.alert.controller.model.vo.CreateModelInfo;
import cn.iocoder.yudao.module.alert.controller.model.vo.ModelInfoVO;
import cn.iocoder.yudao.module.alert.controller.model.vo.ModelSelectQuery;
import cn.iocoder.yudao.module.alert.controller.model.vo.ModelSimpleVO;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.alert.common.enums.Algorithm;
import cn.iocoder.yudao.module.alert.common.enums.ModelStatus;
import cn.iocoder.yudao.module.alert.common.enums.ModelTrash;
import cn.iocoder.yudao.module.alert.common.enums.ModelVisible;
import cn.iocoder.yudao.module.alert.controller.admin.model.model.ModelInfo;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelInfoVO;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelSelectQuery;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelSimpleVO;
import cn.iocoder.yudao.module.alert.dao.domain.ModelCfg;
import cn.iocoder.yudao.module.alert.dao.domain.SystemCfg;
import cn.iocoder.yudao.module.alert.dao.service.ModelCfgService;
import cn.iocoder.yudao.module.alert.dao.service.SystemCfgService;
import cn.iocoder.yudao.module.alert.service.model.ModelService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.asm.AsmManager;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
@ -35,9 +39,39 @@ import java.util.stream.Collectors;
public class ModelServiceImpl implements ModelService {
private final ModelCfgService modelCfgService;
private final SystemCfgService systemCfgService;
@Override
public List<ModelSimpleVO> getModelList(ModelSelectQuery query) {
return null;
Integer systemId = query.getSystemId();
String modelName = query.getName();
Integer status = query.getStatus();
Integer trash = query.getTrash();
Integer typeId = query.getTypeId();
List<Integer> systems = null;
if (Objects.nonNull(typeId)) {
LambdaQueryWrapper<SystemCfg> systemQuery = new LambdaQueryWrapper<>();
systemQuery.eq(SystemCfg::getSystemTypeId, typeId);
List<SystemCfg> list = systemCfgService.list(systemQuery);
systems = list.stream().map(SystemCfg::getSystemId).collect(Collectors.toList());
}
LambdaQueryWrapper<ModelCfg> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Objects.nonNull(systemId), ModelCfg::getSystemId, systemId)
.eq(Objects.nonNull(status), ModelCfg::getStatus, status)
.eq(Objects.nonNull(trash), ModelCfg::getTrash, trash)
.eq(ModelCfg::getVisible, ModelVisible.VISIBLE.code)
.in(CollUtil.isNotEmpty(systems), ModelCfg::getSystemId, systems)
.like(StringUtils.hasLength(modelName), ModelCfg::getModelName, modelName);
List<ModelCfg> list = modelCfgService.list(queryWrapper);
return list.stream().map(modelCfg -> ModelSimpleVO.builder()
.id(modelCfg.getId())
.name(modelCfg.getModelName().trim())
.createName(modelCfg.getCreator())
.createTime(modelCfg.getCreateTime())
.status(modelCfg.getStatus())
.algorithm(Algorithm.of(modelCfg.getAlgorithmId()).toString())
.build())
.collect(Collectors.toList());
}
@Override
@ -46,8 +80,26 @@ public class ModelServiceImpl implements ModelService {
}
@Override
public Integer createModel(CreateModelInfo model) {
public Integer createModel(ModelInfoVO model) {
try {
ModelInfo info = new ModelInfo();
BeanUtil.copyProperties(model, info);
ModelCfg modelCfg = ModelCfg.builder()
.systemId(model.getSystemId())
.algorithmId(model.getAlgorithmId())
.modelName(model.getModelName())
.createTime(new Date())
.trash(ModelTrash.NORMAL.code)
.visible(ModelVisible.VISIBLE.code)
.status(ModelStatus.TRAINING.code)
.creator(SecurityFrameworkUtils.getLoginUserNickname())
.build();
modelCfgService.save(modelCfg);
Integer modelId = modelCfg.getId();
info.setId(modelId);
modelCfg.setModelInfo(JsonUtils.toJsonString(info));
modelCfgService.updateById(modelCfg);
return modelId;
} catch (Exception e) {
log.error("新建模型异常,model:{}", model);
}

30
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/system/SelectService.java

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.alert.service.system;
import cn.iocoder.yudao.module.alert.controller.admin.system.vo.OptionItemVO;
import cn.iocoder.yudao.module.alert.controller.admin.system.vo.SelectAllOptionVO;
import cn.iocoder.yudao.module.alert.controller.admin.system.vo.SelectQuery;
import java.util.List;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-16 22:44
*/
public interface SelectService {
/**
* 获取所有的下拉框选项
*
* @return 下拉框选项
*/
SelectAllOptionVO getAllOptions();
/**
* 根据unit id和type id获取系统选项
*
* @param query 查询参数
* @return 系统选项
*/
List<OptionItemVO> getSystemOptions(SelectQuery query);
}

88
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/system/impl/SelectServiceImpl.java

@ -0,0 +1,88 @@
package cn.iocoder.yudao.module.alert.service.system.impl;
import cn.iocoder.yudao.module.alert.controller.admin.system.vo.OptionItemVO;
import cn.iocoder.yudao.module.alert.controller.admin.system.vo.SelectAllOptionVO;
import cn.iocoder.yudao.module.alert.controller.admin.system.vo.SelectQuery;
import cn.iocoder.yudao.module.alert.dao.domain.SystemCfg;
import cn.iocoder.yudao.module.alert.dao.domain.SystemTypeCfg;
import cn.iocoder.yudao.module.alert.dao.domain.UnitCfg;
import cn.iocoder.yudao.module.alert.dao.service.SystemCfgService;
import cn.iocoder.yudao.module.alert.dao.service.SystemTypeCfgService;
import cn.iocoder.yudao.module.alert.dao.service.UnitCfgService;
import cn.iocoder.yudao.module.alert.service.system.SelectService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-16 22:45
*/
@Service
@RequiredArgsConstructor
public class SelectServiceImpl implements SelectService {
private final UnitCfgService unitCfgService;
private final SystemTypeCfgService systemTypeCfgService;
private final SystemCfgService systemCfgService;
@Override
public SelectAllOptionVO getAllOptions() {
List<UnitCfg> unitCfgList = unitCfgService.list();
LambdaQueryWrapper<SystemTypeCfg> typeQuery = new LambdaQueryWrapper<>();
typeQuery.orderByAsc(SystemTypeCfg::getSystemTypeId);
List<SystemTypeCfg> typeCfgList = systemTypeCfgService.list(typeQuery);
LambdaQueryWrapper<SystemCfg> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SystemCfg::getSystemTypeId, typeCfgList.get(0).getSystemTypeId())
.eq(SystemCfg::getUnitId, unitCfgList.get(0).getUnitId())
.orderByAsc(SystemCfg::getSystemId);
List<SystemCfg> systemCfgList = systemCfgService.list(queryWrapper);
List<OptionItemVO> units = unitCfgList.stream().map(o -> OptionItemVO.builder()
.id(o.getUnitId())
.name(o.getUnitName().trim())
.build()).collect(Collectors.toList());
List<OptionItemVO> types = typeCfgList.stream().map(o -> OptionItemVO.builder()
.id(o.getSystemTypeId())
.name(o.getSystemTypeShortname().trim())
.build()).collect(Collectors.toList());
List<OptionItemVO> systems = systemCfgList.stream().map(o -> OptionItemVO.builder()
.id(o.getSystemId())
.name(o.getSystemName().trim())
.build()).collect(Collectors.toList());
systems.add(0, OptionItemVO.builder().id(null).name("全部").build());
return SelectAllOptionVO.builder()
.units(units)
.types(types)
.systems(systems)
.build();
}
@Override
public List<OptionItemVO> getSystemOptions(@Valid SelectQuery query) {
LambdaQueryWrapper<SystemCfg> queryWrapper = new LambdaQueryWrapper<>();
Integer unitId = query.getUnitId();
Integer typeId = query.getTypeId();
queryWrapper.eq(SystemCfg::getSystemTypeId, typeId)
.eq(SystemCfg::getUnitId, unitId)
.orderByAsc(SystemCfg::getSystemId);
List<SystemCfg> systemCfgList = systemCfgService.list(queryWrapper);
List<OptionItemVO> systems = systemCfgList.stream().map(o -> OptionItemVO.builder()
.id(o.getSystemId())
.name(o.getSystemName().trim())
.build())
.collect(Collectors.toList());
systems.add(0, OptionItemVO.builder().id(null).name("全部").build());
return systems;
}
}

49
yudao-module-alert/yudao-module-alert-biz/src/main/resources/cn/iocoder/yudao/module/alert/dao/mapper/ModelCfgMapper.xml

@ -1,49 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.alert.dao.mapper.ModelCfgMapper">
<resultMap id="BaseResultMap" type="cn.iocoder.yudao.module.alert.dao.domain.ModelCfg">
<id property="id" column="id" />
<result property="systemId" column="system_id" />
<result property="algorithmId" column="algorithm_id" />
<result property="modelName" column="model_name" />
<result property="creatTime" column="creat_time" />
<result property="creatName" column="creat_name" />
<result property="modelInfo" column="model_info" />
<result property="status" column="status" />
<result property="visible" column="visible" />
<result property="conditionInfo" column="condition_info" />
<result property="trash" column="trash" />
<result property="assessRes" column="assess_res" />
<result property="needToAssess" column="need_to_assess" />
<result property="score" column="score" />
<result property="clearOrNot" column="clear_or_not" />
<result property="effNumber" column="eff_number" />
<result property="needToClean" column="need_to_clean" />
<result property="origAssessRes" column="orig_assess_res" />
<result property="loadCover" column="load_cover" />
<result property="coverOutput" column="cover_output" />
<result property="curVersion" column="cur_version" />
<result property="modelVersion" column="model_version" />
<result property="versionInfo" column="version_info" />
<result property="conditionName" column="condition_name" />
<result property="isOnline" column="is_online" />
<result property="trainStatus" column="train_status" />
<result property="creator" column="creator" />
<result property="createTime" column="create_time" />
<result property="updater" column="updater" />
<result property="updateTime" column="update_time" />
<result property="deleted" column="deleted" />
</resultMap>
<sql id="Base_Column_List">
id,system_id,algorithm_id,model_name,creat_time,creat_name,
model_info,status,visible,condition_info,trash,
assess_res,need_to_assess,score,clear_or_not,eff_number,
need_to_clean,orig_assess_res,load_cover,cover_output,cur_version,
model_version,version_info,condition_name,is_online,train_status,
creator,create_time,updater,update_time,deleted
</sql>
</mapper>

54
yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/ModelCfgMapper.xml

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.alert.dao.mapper.ModelCfgMapper">
<resultMap id="BaseResultMap" type="cn.iocoder.yudao.module.alert.dao.domain.ModelCfg">
<id property="id" column="id" jdbcType="INTEGER"/>
<result property="systemId" column="system_id" jdbcType="INTEGER"/>
<result property="algorithmId" column="algorithm_id" jdbcType="INTEGER"/>
<result property="modelName" column="model_name" jdbcType="VARCHAR"/>
<result property="creatTime" column="creat_time" jdbcType="TIMESTAMP"/>
<result property="creatName" column="creat_name" jdbcType="VARCHAR"/>
<result property="modelInfo" column="model_info" jdbcType="VARCHAR"/>
<result property="status" column="status" jdbcType="INTEGER"/>
<result property="visible" column="visible" jdbcType="INTEGER"/>
<result property="conditionInfo" column="condition_info" jdbcType="VARCHAR"/>
<result property="trash" column="trash" jdbcType="INTEGER"/>
<result property="assessRes" column="assess_res" jdbcType="VARCHAR"/>
<result property="needToAssess" column="need_to_assess" jdbcType="INTEGER"/>
<result property="score" column="score" jdbcType="FLOAT"/>
<result property="clearOrNot" column="clear_or_not" jdbcType="CHAR"/>
<result property="effNumber" column="eff_number" jdbcType="INTEGER"/>
<result property="needToClean" column="need_to_clean" jdbcType="INTEGER"/>
<result property="origAssessRes" column="orig_assess_res" jdbcType="VARCHAR"/>
<result property="loadCover" column="load_cover" jdbcType="FLOAT"/>
<result property="coverOutput" column="cover_output" jdbcType="VARCHAR"/>
<result property="curVersion" column="cur_version" jdbcType="VARCHAR"/>
<result property="modelVersion" column="model_version" jdbcType="VARCHAR"/>
<result property="versionInfo" column="version_info" jdbcType="VARCHAR"/>
<result property="conditionName" column="condition_name" jdbcType="VARCHAR"/>
<result property="isOnline" column="is_online" jdbcType="INTEGER"/>
<result property="trainStatus" column="train_status" jdbcType="INTEGER"/>
<result property="creator" column="creator" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updater" column="updater" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="deleted" column="deleted" jdbcType="BIT"/>
</resultMap>
<sql id="Base_Column_List">
id,system_id,algorithm_id,
model_name,creat_time,creat_name,
model_info,status,visible,
condition_info,trash,assess_res,
need_to_assess,score,clear_or_not,
eff_number,need_to_clean,orig_assess_res,
load_cover,cover_output,cur_version,
model_version,version_info,condition_name,
is_online,train_status,creator,
create_time,updater,update_time,
deleted
</sql>
</mapper>

23
yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/SystemCfgMapper.xml

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.alert.dao.mapper.SystemCfgMapper">
<resultMap id="BaseResultMap" type="cn.iocoder.yudao.module.alert.dao.domain.SystemCfg">
<result property="systemId" column="system_id" jdbcType="INTEGER"/>
<result property="systemTypeId" column="system_type_id" jdbcType="INTEGER"/>
<result property="systemName" column="system_name" jdbcType="VARCHAR"/>
<result property="systemShortname" column="system_shortname" jdbcType="CHAR"/>
<result property="unitId" column="unit_id" jdbcType="INTEGER"/>
<result property="resetpoint" column="resetpoint" jdbcType="VARCHAR"/>
<result property="resettime" column="resettime" jdbcType="TIMESTAMP"/>
<result property="resetlist" column="resetlist" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
system_id,system_type_id,system_name,
system_shortname,unit_id,resetpoint,
resettime,resetlist
</sql>
</mapper>

16
yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/SystemTypeCfgMapper.xml

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.alert.dao.mapper.SystemTypeCfgMapper">
<resultMap id="BaseResultMap" type="cn.iocoder.yudao.module.alert.dao.domain.SystemTypeCfg">
<id property="systemTypeId" column="system_type_id" jdbcType="INTEGER"/>
<result property="systemTypeName" column="system_type_name" jdbcType="CHAR"/>
<result property="systemTypeShortname" column="system_type_shortname" jdbcType="CHAR"/>
</resultMap>
<sql id="Base_Column_List">
system_type_id,system_type_name,system_type_shortname
</sql>
</mapper>

28
yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/UnitCfgMapper.xml

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.alert.dao.mapper.UnitCfgMapper">
<resultMap id="BaseResultMap" type="cn.iocoder.yudao.module.alert.dao.domain.UnitCfg">
<result property="unitId" column="unit_id" jdbcType="INTEGER"/>
<result property="plantId" column="plant_id" jdbcType="INTEGER"/>
<result property="unitName" column="unit_name" jdbcType="CHAR"/>
<result property="unitShortname" column="unit_shortname" jdbcType="CHAR"/>
<result property="alertBasicSample" column="alert_basic_sample" jdbcType="VARCHAR"/>
<result property="loadpoint" column="loadpoint" jdbcType="VARCHAR"/>
<result property="temppoint" column="temppoint" jdbcType="VARCHAR"/>
<result property="capacity" column="capacity" jdbcType="INTEGER"/>
<result property="zqylqx" column="zqylqx" jdbcType="VARCHAR"/>
<result property="zqylMeasured" column="zqyl_measured" jdbcType="VARCHAR"/>
<result property="zqylTarget" column="zqyl_target" jdbcType="VARCHAR"/>
<result property="datas" column="datas" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
unit_id,plant_id,unit_name,
unit_shortname,alert_basic_sample,loadpoint,
temppoint,capacity,zqylqx,
zqyl_measured,zqyl_target,datas
</sql>
</mapper>

4
yudao-server/src/main/java/cn/iocoder/yudao/server/YudaoServerApplication.java

@ -1,6 +1,7 @@
package cn.iocoder.yudao.server;
import com.github.fppt.jedismock.RedisServer;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@ -8,7 +9,7 @@ import java.io.IOException;
/**
* 项目的启动类
*
* <p>
* 如果你碰到启动的问题请认真阅读 https://doc.iocoder.cn/quick-start/ 文章
* 如果你碰到启动的问题请认真阅读 https://doc.iocoder.cn/quick-start/ 文章
* 如果你碰到启动的问题请认真阅读 https://doc.iocoder.cn/quick-start/ 文章
@ -17,6 +18,7 @@ import java.io.IOException;
*/
@SuppressWarnings("SpringComponentScan") // 忽略 IDEA 无法识别 ${yudao.info.base-package}
@SpringBootApplication(scanBasePackages = {"${yudao.info.base-package}.server", "${yudao.info.base-package}.module"})
@MapperScan("cn.iocoder.yudao.module.alert.dao.mapper")
public class YudaoServerApplication {
public static void main(String[] args) {

Loading…
Cancel
Save