Browse Source

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

Reviewed-on: http://120.26.116.243:3000/root/alert-backend/pulls/33
pull/34/head
xiaojinfei 1 month ago
parent
commit
7cedbc65c6
  1. 1
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/exa/vo/EXAHttp.java
  2. 16
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/instant/vo/pointInfo.java
  3. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/vo/WarnRespVO.java
  4. 12
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/vo/WarnSaveReqVO.java
  5. 4
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/warnController.java
  6. 6
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/report/Report.java
  7. 3
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/warn/WarnDO.java
  8. 62
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/exa/EXAServiceImpl.java
  9. 18
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/instant/InstantServiceImpl.java
  10. 28
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/utils/EXAUtils.java

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

@ -26,6 +26,5 @@ public class EXAHttp {
private String UpperUpperLimit;
private String LowerLowerLimit;
@JSONField(name = "Value") // 映射JSON字段名
// 解析时自动将JSON中的"desc"映射到description字段
private String Value;
}

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

@ -6,19 +6,19 @@ import lombok.Data;
@Data
public class pointInfo {
@JsonProperty(value="PointId")
@JsonProperty(value="pointId")
@Schema(description = "点号", example = "id")
private String PointId;
private String pointId;
@JsonProperty(value="Description")
@JsonProperty(value="description")
@Schema(description = "描述", example = "yudao")
private String Description;
private String description;
@JsonProperty(value="Unit")
@JsonProperty(value="unit")
@Schema(description = "单位", example = "yudao")
private String Unit;
private String unit;
@JsonProperty(value="Type")
@JsonProperty(value="type")
@Schema(description = "类型(输入-false;输出-true;ANN-空)", example = "yudao")
private Object Type;
private Object type;
}

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

@ -30,6 +30,8 @@ public class WarnRespVO {
private String mpName;
private String equation;
private String outputPoint;
private String unit;

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

@ -18,15 +18,15 @@ public class WarnSaveReqVO {
private Long id;
@Schema(description = "实例编号", example = "1")
@NotNull(message = "实例编号不能为空")
// @NotNull(message = "实例编号不能为空")
private Long mpId;
@Schema(description = "点号", example = "1")
@NotNull(message = "点号不能为空")
// @NotNull(message = "点号不能为空")
private String pointId;
@Schema(description = "点号", example = "1")
@NotNull(message = "点号不能为空")
// @NotNull(message = "点号不能为空")
private String pointName;
@Schema(description = "光子牌", example = "1")
@ -34,15 +34,15 @@ public class WarnSaveReqVO {
private String gzpName;
@Schema(description = "报警表达式", example = "1")
@NotNull(message = "报警表达式不能为空")
// @NotNull(message = "报警表达式不能为空")
private String equation;
@Schema(description = "输出点号", example = "1")
@NotNull(message = "输出点号不能为空")
// @NotNull(message = "输出点号不能为空")
private String outputPoint;
@Schema(description = "单位", example = "1")
@NotNull(message = "单位不能为空")
// @NotNull(message = "单位不能为空")
private String unit;
@Schema(description = "参与报警", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")

4
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/warn/warnController.java

@ -36,7 +36,7 @@ public class warnController {
@GetMapping("/page")
@Operation(summary = "获得预警分页列表")
@PreAuthorize("@ss.hasPermission('run:warn:query')")
public CommonResult<PageResult<WarnRespVO>> getInstantPage(@Valid WarnPageReqVO pageReqVO) {
public CommonResult<PageResult<WarnRespVO>> getWarnPage(@Valid WarnPageReqVO pageReqVO) {
PageResult<WarnDO> pageResult = warnService.getWarnPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, WarnRespVO.class));
}
@ -52,7 +52,7 @@ public class warnController {
@PutMapping("/update")
@Operation(summary = "修改预警")
@PreAuthorize("@ss.hasPermission('run:warn:update')")
public CommonResult<Boolean> updateInstant(@Valid @RequestBody WarnSaveReqVO updateReqVO) {
public CommonResult<Boolean> updateWarn(@Valid @RequestBody WarnSaveReqVO updateReqVO) {
warnService.updateWarn(updateReqVO);
return success(true);
}

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

@ -7,12 +7,14 @@ import java.util.List;
@Data
public class Report {
public List<point> assess;
//相较于windows版本字段有变化
public List<point> assessRows;
@Data
public static class point
{
public String PointId;
public String pointId;
public double amplitude;
public int index;
}

3
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dal/dataobject/warn/WarnDO.java

@ -28,7 +28,8 @@ public class WarnDO extends BaseDO {
private String formula;
private String unit;
private String equation;
private String outputPoint;
//报警类型-id
private Long alarmLevel;
//报警类型

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

@ -36,6 +36,14 @@ public class EXAServiceImpl implements EXAService {
@Value("${EXA.ip}")
private String EXA_IP;
//根据测点名称测点描述模糊查询
/**
* 根据测点名称测点描述模糊查询
*
* @param reqVO 分页条件和测点名称测点描述模糊查询对象
* @return 分页结果
*/
@Override
public PageResult<EXAHttp> getEXAPage(EXAPageReqVO reqVO) throws IOException, URISyntaxException {
List<EXAHttp> exaListAll = exaUtils.getPointInfo(EXA_IP,reqVO);
@ -47,6 +55,12 @@ public class EXAServiceImpl implements EXAService {
return result;
}
/**
* 根据点号列表查询实时值--循环每个点号效率慢
*
* @param list 点号列表
* @return 分页结果
*/
@Override
public List<EXAHttp> getEXAListNow(List<EXAHttp> list) throws URISyntaxException, IOException {
@ -62,20 +76,44 @@ public class EXAServiceImpl implements EXAService {
return list;
}
/**
* 根据多个点号查询实时值--批量查询效率高
*
* @param list 点号列表
* @return 分页结果
*/
@Override
public EXAResult getEXAListNowReal(EXANowListReqVO list) throws URISyntaxException, IOException {
return exaUtils.getNowDataList(EXA_IP,list);
}
/**
* 根据点号查询实时值
*
* @param itemName 点号
* @return 分页结果
*/
@Override
public String getEXANow(String itemName) throws URISyntaxException, IOException {
return exaUtils.getNowData(EXA_IP,itemName).get(0);
}
/**
* 根据点号查询历史值
*
* @param exaHistoryReqVo 点号查询历史值对象
* @return 分页结果
*/
@Override
public List<List<Double>> getEXAHistory(EXAHistoryReqVO exaHistoryReqVo) {
return exaUtils.getHistory(EXA_IP,exaHistoryReqVo);
}
/**
* 根据多个点号查询历史值
*
* @param exaHistoryReqVo 点号查询历史值对象
* @return 分页结果
*/
@Override
public List<List<List<Double>>> getEXAHistorys(EXAHistoryReqVO exaHistoryReqVo) {
return exaUtils.getHistorys(EXA_IP,exaHistoryReqVo);
@ -85,16 +123,33 @@ public class EXAServiceImpl implements EXAService {
public String createPoint(Point pointVo) throws IOException {
return exaUtils.setPoint(EXA_IP,pointVo);
}
/**
* 查询EXA所有分组信息
*
* @return 分页结果
*/
@Override
public List<Object> getEXAGroupInfo() throws URISyntaxException, IOException {
return exaUtils.getGroup(EXA_IP);
}
/**
* 删除EXA点号
*
* @param ItemName 点号
* @return 分页结果
*/
@Override
public String deletePoint(String ItemName){
return exaUtils.deletePoint(EXA_IP,ItemName);
}
/**
* 导入EXA点号
*
* @param importPoints 导入点号列表
* @param isUpdateSupport 是否支持更新
* @return 分页结果
*/
@Override
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
public EXAPointImportRespVO importPointList(List<Point> importPoints, boolean isUpdateSupport) {
@ -120,6 +175,7 @@ public class EXAServiceImpl implements EXAService {
return respVO;
}
@Override
public List<PointOptionItemVO> getPointOptionList(String search) {
try {

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

@ -244,7 +244,7 @@ public class InstantServiceImpl implements InstantService {
Report reportObj = JsonUtils.parseObject(report.getReport(), Report.class);
// 此处可根据业务需求处理解析后的Report对象(如后续预警逻辑)
// 循环getInputInfo构建并插入预警记录
for (int j = 0; j < reportObj.getAssess().size(); j++) {
for (int j = 0; j < reportObj.getAssessRows().size(); j++) {
WarnSaveReqVO warnSaveReqVO = new WarnSaveReqVO();
@ -252,14 +252,14 @@ public class InstantServiceImpl implements InstantService {
// warn.setId(insertId);
//设置实例id
warnSaveReqVO.setMpId(instant.getId());
warnSaveReqVO.setPointId(createReqVO.getInputInfo().get(reportObj.getAssess().get(j).getIndex()));
warnSaveReqVO.setPointName(createReqVO.getInputName().get(reportObj.getAssess().get(j).getIndex()));
warnSaveReqVO.setGzpName(createReqVO.getInputName().get(reportObj.getAssess().get(j).getIndex()));
warnSaveReqVO.setEquation("[" + createReqVO.getBiasPointInfo().get(reportObj.getAssess().get(j).getIndex()) + "]>UPLIMIT or [" + createReqVO.getBiasPointInfo().get(reportObj.getAssess().get(j).getIndex()) + "]<LOWLIMIT");
warnSaveReqVO.setUplimit(reportObj.getAssess().get(j).getAmplitude());
warnSaveReqVO.setLowlimit(-reportObj.getAssess().get(j).getAmplitude());
warnSaveReqVO.setOutputPoint(createReqVO.getOutPointInfo().get(reportObj.getAssess().get(j).getIndex()));
warnSaveReqVO.setUnit(createReqVO.getUnit().get(reportObj.getAssess().get(j).getIndex()));
warnSaveReqVO.setPointId(createReqVO.getInputInfo().get(reportObj.getAssessRows().get(j).getIndex()));
warnSaveReqVO.setPointName(createReqVO.getInputName().get(reportObj.getAssessRows().get(j).getIndex()));
warnSaveReqVO.setGzpName(createReqVO.getInputName().get(reportObj.getAssessRows().get(j).getIndex()));
warnSaveReqVO.setEquation("[" + createReqVO.getBiasPointInfo().get(reportObj.getAssessRows().get(j).getIndex()) + "]>UPLIMIT or [" + createReqVO.getBiasPointInfo().get(reportObj.getAssessRows().get(j).getIndex()) + "]<LOWLIMIT");
warnSaveReqVO.setUplimit(reportObj.getAssessRows().get(j).getAmplitude());
warnSaveReqVO.setLowlimit(-reportObj.getAssessRows().get(j).getAmplitude());
warnSaveReqVO.setOutputPoint(createReqVO.getOutPointInfo().get(reportObj.getAssessRows().get(j).getIndex()));
warnSaveReqVO.setUnit(createReqVO.getUnit().get(reportObj.getAssessRows().get(j).getIndex()));
// 设置其他必要字段(根据实际业务补充)
warnSaveReqVO.setWarnStatus(1L); // 示例:设置初始状态

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

@ -150,7 +150,13 @@ public class EXAUtils {
return result;
}
/**
* 根据多个点号查询实时值
*
* @param EXA_IP EXA 地址
* @param exaNowListReqVO 传入对象页数页数量查询条件
* @return exa列表
*/
public EXAResult getNowDataList(String EXA_IP,EXANowListReqVO exaNowListReqVO) throws URISyntaxException, IOException {
EXAResult result = new EXAResult();
try {
@ -174,9 +180,10 @@ public class EXAUtils {
/**
* 根据分页条件和测点名称测点描述模糊查询
* 根据点号开始时间结束时间查询历史数据
*
* @param exaHistoryReqVo 传入对象点号开始时间结束时间
* itemName 单点号
* @return exa列表
*/
public List<List<Double>> getHistory(String exaIp, EXAHistoryReqVO req) {
@ -221,6 +228,15 @@ public class EXAUtils {
return result;
}
// 批量查询历史数据
/**
* 批量查询历史数据
*
* @param EXA_IP EXA 地址
* @param exaHistoryReqVo 传入对象点号开始时间结束时间
* itemName 逗号分隔的点号列表
* @return exa列表
*/
public List<List<List<Double>>> getHistorys(String EXA_IP, EXAHistoryReqVO exaHistoryReqVo) {
List<List<List<Double>>> results = new ArrayList<>();
@ -239,7 +255,13 @@ public class EXAUtils {
return results;
}
//写入点号
/**
* 写入点号
*
* @param EXA_IP EXA 地址
* @param point 点号对象
* @return 写入结果
*/
public String setPoint(String EXA_IP, Point point) throws IOException {
String requestPathAddItem = "http://" + EXA_IP + ":9000/exawebapi/EXAItem/AddItemStd";
String param = JSON.toJSONString(point);

Loading…
Cancel
Save