Browse Source

Merge pull request 'cjl-dev' (#16) from cjl-dev into master

Reviewed-on: http://120.26.116.243:3000/root/alert-backend/pulls/16
pull/19/head
chenjiale 8 months ago
parent
commit
35fb59e650
  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. 4
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/EXAController.java
  6. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/vo/EXAHistoryReqVO.java
  7. 8
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/vo/EXAPageReqVO.java
  8. 67
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/vo/ExaPoint.java
  9. 54
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/ModelController.java
  10. 32
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/ModelDataController.java
  11. 43
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/ModelInfo.java
  12. 48
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java
  13. 14
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/CreateModelInfo.java
  14. 26
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelDataQuery.java
  15. 35
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelDataVO.java
  16. 90
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelInfoVO.java
  17. 47
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSelectQuery.java
  18. 47
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/ModelSimpleVO.java
  19. 59
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/PointVO.java
  20. 16
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/vo/TimeRange.java
  21. 56
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/system/SelectController.java
  22. 26
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/system/vo/OptionItemVO.java
  23. 21
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/system/vo/PointOptionItemVO.java
  24. 32
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/system/vo/SelectAllOptionVO.java
  25. 18
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/system/vo/SelectQuery.java
  26. 53
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelCfg.java
  27. 34
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/SystemCfg.java
  28. 23
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/SystemTypeCfg.java
  29. 41
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/UnitCfg.java
  30. 18
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/ModelCfgMapper.java
  31. 18
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/SystemCfgMapper.java
  32. 18
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/SystemTypeCfgMapper.java
  33. 18
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/UnitCfgMapper.java
  34. 13
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/ModelCfgService.java
  35. 13
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/SystemCfgService.java
  36. 13
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/SystemTypeCfgService.java
  37. 13
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/UnitCfgService.java
  38. 22
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/ModelCfgServiceImpl.java
  39. 22
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/SystemCfgServiceImpl.java
  40. 22
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/SystemTypeCfgServiceImpl.java
  41. 22
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/UnitCfgServiceImpl.java
  42. 16
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/exa/EXAService.java
  43. 45
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/exa/EXAServiceImpl.java
  44. 26
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/ModelDataService.java
  45. 48
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/ModelService.java
  46. 29
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelDataServiceImpl.java
  47. 125
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java
  48. 30
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/system/SelectService.java
  49. 88
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/system/impl/SelectServiceImpl.java
  50. 88
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/utils/EXAUtils.java
  51. 54
      yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/ModelCfgMapper.xml
  52. 23
      yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/SystemCfgMapper.xml
  53. 16
      yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/SystemTypeCfgMapper.xml
  54. 28
      yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/UnitCfgMapper.xml
  55. 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;
}

4
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/EXAController.java

@ -64,8 +64,8 @@ public class EXAController {
@GetMapping("/historys") @GetMapping("/historys")
@Operation(summary = "获取点号历史-支持多点(点号之间用逗号分割)") @Operation(summary = "获取点号历史-支持多点(点号之间用逗号分割)")
@PreAuthorize("@ss.hasPermission('alert:exa:query')") @PreAuthorize("@ss.hasPermission('alert:exa:query')")
public CommonResult<List<List<String>>> getEXAHistorys(EXAHistoryReqVO exaHistoryReqVo) { public CommonResult<List<List<List<Double>>>> getEXAHistorys(EXAHistoryReqVO exaHistoryReqVo) {
List<List<String>> historyLists=exaService.getEXAHistorys(exaHistoryReqVo); List<List<List<Double>>> historyLists=exaService.getEXAHistorys(exaHistoryReqVo);
return success(historyLists); return success(historyLists);
} }

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

@ -12,4 +12,6 @@ public class EXAHistoryReqVO {
private String startTime; private String startTime;
@Schema(description = "结束时间") @Schema(description = "结束时间")
private String endTime; private String endTime;
@Schema(description = "间隔")
private Integer interval=300;
} }

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 io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@Schema(description = "预警诊断系统 - EXA测点分页 Request VO") @Schema(description = "预警诊断系统 - EXA测点分页 Request VO")
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class EXAPageReqVO extends PageParam { public class EXAPageReqVO extends PageParam {
@Schema(description = "测点名称或描述,模糊匹配", example = "芋道") @Schema(description = "测点名称或描述,模糊匹配", example = "芋道")
private String condition; 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;
}

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

@ -0,0 +1,54 @@
package cn.iocoder.yudao.module.alert.controller.admin.model;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
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.*;
import java.util.List;
import java.util.Objects;
import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-19 13:07
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/alert/model")
public class ModelController {
private final ModelService modelService;
@GetMapping("/card/list")
public CommonResult<List<ModelSimpleVO>> getModelList(ModelSelectQuery query) {
List<ModelSimpleVO> modelList = modelService.getModelList(query);
return CommonResult.success(modelList);
}
@GetMapping("info/{id}")
public CommonResult<ModelInfoVO> getModelInfo(@PathVariable Integer id) {
ModelInfoVO modelInfo = modelService.getModelInfo(id);
return CommonResult.success(modelInfo);
}
@PostMapping("/")
public CommonResult<Integer> saveModel(@RequestBody ModelInfoVO model) {
Integer id = modelService.createModel(model);
if (Objects.nonNull(id) && id > 0) {
return CommonResult.success(id);
}
return CommonResult.error(INTERNAL_SERVER_ERROR.getCode(), "新建模型异常");
}
@PatchMapping("/info")
public CommonResult<Boolean> updateModelInfo(@RequestBody ModelInfoVO vo) {
Boolean b = modelService.updateModelInfo(vo);
return CommonResult.success(b);
}
}

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

@ -0,0 +1,32 @@
package cn.iocoder.yudao.module.alert.controller.admin.model;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
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.*;
/**
* @author chenjiale
* @version 1.0
* @date 2023-09-05 22:08
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/alert/model/data")
public class ModelDataController {
private final ModelDataService modelDataService;
@GetMapping("/{id}")
public CommonResult<ModelDataVO> getModelData(@PathVariable Integer id, ModelDataQuery query) {
return CommonResult.success(null);
}
@PostMapping("/calculate/{id}")
public CommonResult<Boolean> calculate(@PathVariable Integer id, @RequestBody TimeRange timeRange) {
return CommonResult.success(null);
}
}

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

@ -0,0 +1,43 @@
package cn.iocoder.yudao.module.alert.controller.admin.model.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;
import java.util.Date;
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 creator;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* 名称
*/
private String modelName;
private List<Point> pointInfo;
private String condition;
private Integer sampling;
}

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

@ -0,0 +1,48 @@
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;
/**
* 目标点号
*/
private String point;
/**
* 描述
*/
private String description;
/**
* 单位
*/
private String unit;
/**
* 上限
*/
private BigDecimal upperlimit;
/**
* 下限
*/
private BigDecimal lowerlimit;
}

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

@ -0,0 +1,14 @@
package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
import lombok.Data;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-20 22:57
*/
@Data
public class CreateModelInfo {
private Integer systemId;
private ModelInfoVO modelInfo;
}

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

@ -0,0 +1,26 @@
package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @author chenjiale
* @version 1.0
* @date 2023-09-15 22:52
*/
@Data
public class ModelDataQuery {
private String type;
@NotBlank
private String index;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date st;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date et;
}

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

@ -0,0 +1,35 @@
package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
import lombok.*;
import java.util.List;
/**
* @author chenjiale
* @version 1.0
* @date 2023-09-05 22:50
*/
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class ModelDataVO {
/**
* 目标数值
*/
private List<Double> targetValue;
/**
* 参数个数
*/
private int[] sampleValue;
/**
* 边界数据
*/
private List<List<Double>> dataList;
/**
* 热力图数据
*/
private List<int[]> heatData;
}

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

@ -0,0 +1,90 @@
package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
import cn.iocoder.yudao.module.alert.controller.admin.model.model.Point;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
import java.util.Date;
import java.util.List;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-19 22:41
*/
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class ModelInfoVO {
/**
* id
*/
private Integer id;
/**
* 创建人
*/
private String creator;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* 运行条件
*/
private String condition;
/**
* 名称
*/
private String modelName;
private List<Point> pointInfo;
private List<TrainTime> trainTime;
private Integer algorithmId;
private Integer systemId;
private Integer sampling;
@Data
public static class TrainTime {
/**
* 开始时间
*/
private String st;
/**
* 结束时间
*/
private String et;
/**
* 时长
*/
private Integer duration;
/**
* 采样数量
*/
private Integer number;
/**
* 清洗样本数
*/
private Integer filter;
/**
* 有效样本数
*/
private Integer mode;
}
}

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

@ -0,0 +1,47 @@
package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
import lombok.Data;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-19 13:25
*/
@Data
public class ModelSelectQuery {
/**
* 机组id
*/
private Integer unitId;
/**
* 系统id
*/
private Integer typeId;
/**
* 子系统id
*/
private Integer systemId;
/**
* 名称
*/
private String name;
/**
* @see seu.powersis.alert.common.enums.ModelStatus
* 模型状态
*/
private Integer status;
/**
* @see seu.powersis.alert.common.enums.ModelTrash
* 可见状态
*/
private Integer visible;
/**
* @see seu.powersis.alert.common.enums.ModelTrash
* 删除状态
*/
private Integer trash;
}

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

@ -0,0 +1,47 @@
package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;
import java.util.Date;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-19 13:08
*/
@Data
@Builder
@ToString
@AllArgsConstructor
public class ModelSimpleVO {
/**
* 模型id
*/
private Integer id;
/**
* 模型名称
*/
private String name;
/**
* 算法名称
*/
private String algorithm;
/**
* 创建人
*/
private String creator;
/**
* 模型状态
*/
private Integer status;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
}

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

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

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

@ -0,0 +1,16 @@
package cn.iocoder.yudao.module.alert.controller.admin.model.vo;
import lombok.Data;
import java.util.Date;
/**
* @author chenjiale
* @version 1.0
* @date 2023-09-15 22:33
*/
@Data
public class TimeRange {
private Date st;
private Date et;
}

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;
}

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

@ -0,0 +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")
@Data
@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;
}

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

@ -0,0 +1,18 @@
package cn.iocoder.yudao.module.alert.dao.mapper;
import cn.iocoder.yudao.module.alert.dao.domain.ModelCfg;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author 陈小黑
* @description 针对表model_cfg的数据库操作Mapper
* @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> {
}

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

@ -0,0 +1,13 @@
package cn.iocoder.yudao.module.alert.dao.service;
import cn.iocoder.yudao.module.alert.dao.domain.ModelCfg;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author 陈小黑
* @description 针对表model_cfg的数据库操作Service
* @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> {
}

22
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/ModelCfgServiceImpl.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.ModelCfg;
import cn.iocoder.yudao.module.alert.dao.service.ModelCfgService;
import cn.iocoder.yudao.module.alert.dao.mapper.ModelCfgMapper;
import org.springframework.stereotype.Service;
/**
* @author 陈小黑
* @description 针对表model_cfg的数据库操作Service实现
* @createDate 2025-05-22 15:45:38
*/
@Service
public class ModelCfgServiceImpl extends ServiceImpl<ModelCfgMapper, ModelCfg>
implements ModelCfgService{
}

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{
}

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

45
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; package cn.iocoder.yudao.module.alert.service.exa;
import cn.hutool.core.collection.CollUtil; 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.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.exa.vo.*;
import cn.iocoder.yudao.module.alert.controller.admin.system.vo.PointOptionItemVO;
import cn.iocoder.yudao.module.alert.utils.EXAUtils; 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 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.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Type;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.alert.utils.PageUtils.getPartList; import static cn.iocoder.yudao.module.alert.utils.PageUtils.getPartList;
@ -40,6 +26,11 @@ import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
@Validated @Validated
@Slf4j @Slf4j
public class EXAServiceImpl implements EXAService { 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(); EXAUtils exaUtils = new EXAUtils();
@ -78,12 +69,12 @@ public class EXAServiceImpl implements EXAService {
} }
@Override @Override
public List<String> getEXAHistory(EXAHistoryReqVO exaHistoryReqVo) { public List<List<Double>> getEXAHistory(EXAHistoryReqVO exaHistoryReqVo) {
return exaUtils.getHistory(EXA_IP,exaHistoryReqVo); return exaUtils.getHistory(EXA_IP,exaHistoryReqVo);
} }
@Override @Override
public List<List<String>> getEXAHistorys(EXAHistoryReqVO exaHistoryReqVo) { public List<List<List<Double>>> getEXAHistorys(EXAHistoryReqVO exaHistoryReqVo) {
return exaUtils.getHistorys(EXA_IP,exaHistoryReqVo); return exaUtils.getHistorys(EXA_IP,exaHistoryReqVo);
} }
@ -126,4 +117,22 @@ public class EXAServiceImpl implements EXAService {
return respVO; 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<>();
}
} }

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

@ -0,0 +1,26 @@
package cn.iocoder.yudao.module.alert.service.model;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelDataVO;
import java.util.Date;
import java.util.List;
/**
* @author chenjiale
* @version 1.0
* @date 2023-09-05 22:10
*/
public interface ModelDataService {
/**
* 获取模型数据
*
* @param modelId 模型id
* @param type 类型
* @param indexList 边界参数索引
* @param st 开始时间
* @param et 结束时间
* @return 模型数据
*/
ModelDataVO getModelData(Integer modelId, String type, List<Integer> indexList, Date st, Date et);
}

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

@ -0,0 +1,48 @@
package cn.iocoder.yudao.module.alert.service.model;
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;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-19 13:22
*/
public interface ModelService {
/**
* 获取模型列表
*
* @param query 请求参数
* @return model 列表
*/
List<ModelSimpleVO> getModelList(ModelSelectQuery query);
/**
* 获取模型信息
*
* @param id 模型id
* @return 模型信息
*/
ModelInfoVO getModelInfo(Integer id);
/**
* 新建模型
*
* @param model 模型参数
* @return 模型id
*/
Integer createModel(ModelInfoVO model);
/**
* 更新model info
*
* @param info 模型info
* @return 是否成功
*/
Boolean updateModelInfo(ModelInfoVO info);
}

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

@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.alert.service.model.impl;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.ModelDataVO;
import cn.iocoder.yudao.module.alert.service.model.ModelDataService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* @author chenjiale
* @version 1.0
* @date 2023-09-05 22:11
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class ModelDataServiceImpl implements ModelDataService {
@Override
public ModelDataVO getModelData(Integer modelId, String type, List<Integer> indexList, Date st, Date et) {
return null;
}
}

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

@ -0,0 +1,125 @@
package cn.iocoder.yudao.module.alert.service.model.impl;
import cn.hutool.core.bean.BeanUtil;
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 lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @author chenjiale
* @version 1.0
* @date 2023-08-19 13:22
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class ModelServiceImpl implements ModelService {
private final ModelCfgService modelCfgService;
private final SystemCfgService systemCfgService;
@Override
public List<ModelSimpleVO> getModelList(ModelSelectQuery query) {
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())
.creator(modelCfg.getCreator())
.createTime(modelCfg.getCreateTime())
.status(modelCfg.getStatus())
.algorithm(Algorithm.of(modelCfg.getAlgorithmId()).toString())
.build())
.collect(Collectors.toList());
}
@Override
public ModelInfoVO getModelInfo(Integer id) {
ModelCfg modelCfg = modelCfgService.getById(id);
if (Objects.nonNull(modelCfg)) {
return JsonUtils.parseObject(modelCfg.getModelInfo(), ModelInfoVO.class);
}
return null;
}
@Override
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);
info.setCreator(modelCfg.getCreator());
info.setCreateTime(modelCfg.getCreateTime());
modelCfg.setModelInfo(JsonUtils.toJsonString(info));
modelCfgService.updateById(modelCfg);
return modelId;
} catch (Exception e) {
log.error("新建模型异常,model:{}", model);
}
return -1;
}
@Override
public Boolean updateModelInfo(ModelInfoVO modelInfo) {
ModelCfg modelCfg = ModelCfg.builder()
.id(modelInfo.getId())
.modelInfo(JsonUtils.toJsonString(modelInfo))
.updateTime(new Date())
.build();
return modelCfgService.updateById(modelCfg);
}
}

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;
}
}

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

@ -1,8 +1,14 @@
package cn.iocoder.yudao.module.alert.utils; package cn.iocoder.yudao.module.alert.utils;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.*; import cn.hutool.http.HttpUtil;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.EXAHistoryReqVO;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.EXAHttp;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.EXAPageReqVO;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.Point;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.fasterxml.jackson.core.type.TypeReference;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
@ -11,39 +17,33 @@ import org.apache.http.client.fluent.Request;
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder; import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType; import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Value;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.List;
public class EXAUtils { public class EXAUtils {
/** /**
* 根据分页条件和测点名称测点描述模糊查询 * 根据分页条件和测点名称测点描述模糊查询
* *
* @param reqVO 传入对象页数页数量查询条件 * @param reqVO 传入对象页数页数量查询条件
* @return exa列表 * @return exa列表
*/ */
public List<EXAHttp> getPointInfo(String EXA_IP,EXAPageReqVO reqVO) throws URISyntaxException, IOException { public List<EXAHttp> getPointInfo(String EXA_IP, EXAPageReqVO reqVO) throws URISyntaxException, IOException {
// PageResult<EXAHttp> result = new PageResult<>(); // PageResult<EXAHttp> result = new PageResult<>();
List<EXAHttp> exaListAll = new ArrayList<EXAHttp>(); List<EXAHttp> exaListAll = new ArrayList<EXAHttp>();
try { try {
// 目标 RPC 服务的 URL // 目标 RPC 服务的 URL
String url = "http://"+EXA_IP+":9000/exawebapi/exaitem/getitems"; String url = "http://" + EXA_IP + ":9000/exawebapi/exaitem/getitems";
//创建HttpClient对象 //创建HttpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpClient httpClient = HttpClients.createDefault();
/* /*
@ -104,11 +104,11 @@ public class EXAUtils {
* @return exa列表 * @return exa列表
*/ */
public List<String> getNowData(String EXA_IP,String itemNames) throws URISyntaxException, IOException { public List<String> getNowData(String EXA_IP, String itemNames) throws URISyntaxException, IOException {
List<String> result = new ArrayList<>(); List<String> result = new ArrayList<>();
try { try {
// 目标 RPC 服务的 URL // 目标 RPC 服务的 URL
String url = "http://"+EXA_IP+":9000/exawebapi/exanow/getfloatvaluebatch"; String url = "http://" + EXA_IP + ":9000/exawebapi/exanow/getfloatvaluebatch";
//创建HttpClient对象 //创建HttpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpClient httpClient = HttpClients.createDefault();
/* /*
@ -154,65 +154,43 @@ public class EXAUtils {
* @param exaHistoryReqVo 传入对象点号开始时间结束时间 * @param exaHistoryReqVo 传入对象点号开始时间结束时间
* @return exa列表 * @return exa列表
*/ */
public List<String> getHistory(String EXA_IP,EXAHistoryReqVO exaHistoryReqVo) { public List<List<Double>> getHistory(String EXA_IP, EXAHistoryReqVO exaHistoryReqVo) {
List<String> result = new ArrayList<>(); List<List<Double>> result = new ArrayList<>();
try { try {
// 目标 RPC 服务的 URL // 目标 RPC 服务的 URL
String url = "http://"+EXA_IP+":9000/exawebapi/exatime/GetRawValueArrayFloat"; String url = "http://" + EXA_IP + ":9000/exawebapi/exatime/GetSamplingValueArrayFloat";
//创建HttpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
/*
* 由于GET请求的参数都是拼装在URL地址后方所以我们要构建一个URL带参数
*/
URIBuilder uriBuilder = new URIBuilder(url);
/** 添加参数 */ Map<String,Object> params=new HashMap<>();
uriBuilder.addParameter("ItemName", exaHistoryReqVo.getItemName()); params.put("ItemName", exaHistoryReqVo.getItemName());
uriBuilder.addParameter("StartingTime", exaHistoryReqVo.getStartTime()); params.put("StartingTime", exaHistoryReqVo.getStartTime());
uriBuilder.addParameter("TerminalTime", exaHistoryReqVo.getEndTime()); params.put("TerminalTime", exaHistoryReqVo.getEndTime());
params.put("SamplingPeriod", exaHistoryReqVo.getInterval() * 1000);
//创建请求对象 String body = HttpUtil.createGet(url).form(params)
HttpGet httpGet = new HttpGet(uriBuilder.build()); .header("Content-Type", "application/json")
.execute().body();
// 传输的类型
httpGet.addHeader("Content-Type", "application/json");
//发送请求,请求响应结果
CloseableHttpResponse response = httpClient.execute(httpGet);
//获取服务器返回的状态码
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("服务端返回成功的状态码为:" + statusCode);
HttpEntity entity = response.getEntity();
String body = EntityUtils.toString(entity).replaceAll("\\\\", "");
System.out.println("服务端返回的数据为:" + body);
if (body.startsWith("\"") && body.endsWith("\"")) { if (body.startsWith("\"") && body.endsWith("\"")) {
// 步骤3:去掉双引号 // 步骤3:去掉双引号
body = body.substring(1, body.length() - 1); // 去掉首尾的双引号 body = body.substring(1, body.length() - 1); // 去掉首尾的双引号
} }
Gson gson = new GsonBuilder().serializeNulls().setPrettyPrinting().create(); result = JsonUtils.parseObject(body, new TypeReference<List<List<Double>>>(){});
Type listType = new TypeToken<List<List<Double>>>() {
}.getType();
result = gson.fromJson(body, listType);
//关闭资源
response.close();
httpClient.close();
} catch (Exception e) { } catch (Exception e) {
} }
return result; return result;
} }
public List<List<String>> getHistorys(String EXA_IP,EXAHistoryReqVO exaHistoryReqVo) { public List<List<List<Double>>> getHistorys(String EXA_IP, EXAHistoryReqVO exaHistoryReqVo) {
List<List<String>> results = new ArrayList<>(); List<List<List<Double>>> results = new ArrayList<>();
try { try {
String itemNames = exaHistoryReqVo.getItemName(); String itemNames = exaHistoryReqVo.getItemName();
List<String> pointName = Arrays.asList(itemNames.split(",")); List<String> pointName = Arrays.asList(itemNames.split(","));
pointName.forEach(entity -> { pointName.forEach(entity -> {
List<String> result = new ArrayList<>(); List<List<Double>> result = new ArrayList<>();
exaHistoryReqVo.setItemName(entity); exaHistoryReqVo.setItemName(entity);
result = getHistory(EXA_IP,exaHistoryReqVo); result = getHistory(EXA_IP, exaHistoryReqVo);
results.add(result); results.add(result);
}); });
} catch (Exception e) { } catch (Exception e) {
@ -222,8 +200,8 @@ public class EXAUtils {
} }
//写入点号 //写入点号
public String setPoint(String EXA_IP,Point point) throws IOException { public String setPoint(String EXA_IP, Point point) throws IOException {
String requestPathAddItem = "http://"+EXA_IP+":9000/exawebapi/exaitem/AddItem"; String requestPathAddItem = "http://" + EXA_IP + ":9000/exawebapi/exaitem/AddItem";
String param = JSON.toJSONString(point); String param = JSON.toJSONString(point);
String result = Request.Post(requestPathAddItem) String result = Request.Post(requestPathAddItem)
.addHeader("Content-type", "application/json") .addHeader("Content-type", "application/json")
@ -240,7 +218,7 @@ public class EXAUtils {
List<Object> result = new ArrayList<>(); List<Object> result = new ArrayList<>();
try { try {
// 目标 RPC 服务的 URL // 目标 RPC 服务的 URL
String url = "http://"+EXA_IP+":9000/exawebapi/exagroup/getgroups"; String url = "http://" + EXA_IP + ":9000/exawebapi/exagroup/getgroups";
//创建HttpClient对象 //创建HttpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpClient httpClient = HttpClients.createDefault();
/* /*
@ -283,8 +261,8 @@ public class EXAUtils {
return result; return result;
} }
public String deletePoint(String EXA_IP,String ItemName){ public String deletePoint(String EXA_IP, String ItemName) {
String requestPathDeleteItem ="http://"+EXA_IP+":9000/exawebapi/exaitem/DeleteItem?ItemName="+ItemName; String requestPathDeleteItem = "http://" + EXA_IP + ":9000/exawebapi/exaitem/DeleteItem?ItemName=" + ItemName;
// 创建HttpClient // 创建HttpClient
try (CloseableHttpClient httpClient = HttpClients.createDefault()) { try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
// 创建HttpDelete请求 // 创建HttpDelete请求

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; package cn.iocoder.yudao.server;
import com.github.fppt.jedismock.RedisServer; import com.github.fppt.jedismock.RedisServer;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; 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/ 文章 * 如果你碰到启动的问题请认真阅读 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} @SuppressWarnings("SpringComponentScan") // 忽略 IDEA 无法识别 ${yudao.info.base-package}
@SpringBootApplication(scanBasePackages = {"${yudao.info.base-package}.server", "${yudao.info.base-package}.module"}) @SpringBootApplication(scanBasePackages = {"${yudao.info.base-package}.server", "${yudao.info.base-package}.module"})
@MapperScan("cn.iocoder.yudao.module.alert.dao.mapper")
public class YudaoServerApplication { public class YudaoServerApplication {
public static void main(String[] args) { public static void main(String[] args) {

Loading…
Cancel
Save