dev-xjf #33

Merged
xiaojinfei merged 2 commits from dev-xjf into master 1 month ago
  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 UpperUpperLimit;
private String LowerLowerLimit; private String LowerLowerLimit;
@JSONField(name = "Value") // 映射JSON字段名 @JSONField(name = "Value") // 映射JSON字段名
// 解析时自动将JSON中的"desc"映射到description字段
private String Value; 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 @Data
public class pointInfo { public class pointInfo {
@JsonProperty(value="PointId") @JsonProperty(value="pointId")
@Schema(description = "点号", example = "id") @Schema(description = "点号", example = "id")
private String PointId; private String pointId;
@JsonProperty(value="Description") @JsonProperty(value="description")
@Schema(description = "描述", example = "yudao") @Schema(description = "描述", example = "yudao")
private String Description; private String description;
@JsonProperty(value="Unit") @JsonProperty(value="unit")
@Schema(description = "单位", example = "yudao") @Schema(description = "单位", example = "yudao")
private String Unit; private String unit;
@JsonProperty(value="Type") @JsonProperty(value="type")
@Schema(description = "类型(输入-false;输出-true;ANN-空)", example = "yudao") @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 mpName;
private String equation;
private String outputPoint;
private String unit; 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; private Long id;
@Schema(description = "实例编号", example = "1") @Schema(description = "实例编号", example = "1")
@NotNull(message = "实例编号不能为空") // @NotNull(message = "实例编号不能为空")
private Long mpId; private Long mpId;
@Schema(description = "点号", example = "1") @Schema(description = "点号", example = "1")
@NotNull(message = "点号不能为空") // @NotNull(message = "点号不能为空")
private String pointId; private String pointId;
@Schema(description = "点号", example = "1") @Schema(description = "点号", example = "1")
@NotNull(message = "点号不能为空") // @NotNull(message = "点号不能为空")
private String pointName; private String pointName;
@Schema(description = "光子牌", example = "1") @Schema(description = "光子牌", example = "1")
@ -34,15 +34,15 @@ public class WarnSaveReqVO {
private String gzpName; private String gzpName;
@Schema(description = "报警表达式", example = "1") @Schema(description = "报警表达式", example = "1")
@NotNull(message = "报警表达式不能为空") // @NotNull(message = "报警表达式不能为空")
private String equation; private String equation;
@Schema(description = "输出点号", example = "1") @Schema(description = "输出点号", example = "1")
@NotNull(message = "输出点号不能为空") // @NotNull(message = "输出点号不能为空")
private String outputPoint; private String outputPoint;
@Schema(description = "单位", example = "1") @Schema(description = "单位", example = "1")
@NotNull(message = "单位不能为空") // @NotNull(message = "单位不能为空")
private String unit; private String unit;
@Schema(description = "参与报警", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @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") @GetMapping("/page")
@Operation(summary = "获得预警分页列表") @Operation(summary = "获得预警分页列表")
@PreAuthorize("@ss.hasPermission('run:warn:query')") @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); PageResult<WarnDO> pageResult = warnService.getWarnPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, WarnRespVO.class)); return success(BeanUtils.toBean(pageResult, WarnRespVO.class));
} }
@ -52,7 +52,7 @@ public class warnController {
@PutMapping("/update") @PutMapping("/update")
@Operation(summary = "修改预警") @Operation(summary = "修改预警")
@PreAuthorize("@ss.hasPermission('run:warn:update')") @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); warnService.updateWarn(updateReqVO);
return success(true); 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 @Data
public class Report { public class Report {
public List<point> assess; //相较于windows版本字段有变化
public List<point> assessRows;
@Data @Data
public static class point public static class point
{ {
public String PointId; public String pointId;
public double amplitude; public double amplitude;
public int index; 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 formula;
private String unit; private String unit;
private String equation;
private String outputPoint;
//报警类型-id //报警类型-id
private Long alarmLevel; 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}") @Value("${EXA.ip}")
private String EXA_IP; private String EXA_IP;
//根据测点名称测点描述模糊查询
/**
* 根据测点名称测点描述模糊查询
*
* @param reqVO 分页条件和测点名称测点描述模糊查询对象
* @return 分页结果
*/
@Override @Override
public PageResult<EXAHttp> getEXAPage(EXAPageReqVO reqVO) throws IOException, URISyntaxException { public PageResult<EXAHttp> getEXAPage(EXAPageReqVO reqVO) throws IOException, URISyntaxException {
List<EXAHttp> exaListAll = exaUtils.getPointInfo(EXA_IP,reqVO); List<EXAHttp> exaListAll = exaUtils.getPointInfo(EXA_IP,reqVO);
@ -47,6 +55,12 @@ public class EXAServiceImpl implements EXAService {
return result; return result;
} }
/**
* 根据点号列表查询实时值--循环每个点号效率慢
*
* @param list 点号列表
* @return 分页结果
*/
@Override @Override
public List<EXAHttp> getEXAListNow(List<EXAHttp> list) throws URISyntaxException, IOException { public List<EXAHttp> getEXAListNow(List<EXAHttp> list) throws URISyntaxException, IOException {
@ -62,20 +76,44 @@ public class EXAServiceImpl implements EXAService {
return list; return list;
} }
/**
* 根据多个点号查询实时值--批量查询效率高
*
* @param list 点号列表
* @return 分页结果
*/
@Override @Override
public EXAResult getEXAListNowReal(EXANowListReqVO list) throws URISyntaxException, IOException { public EXAResult getEXAListNowReal(EXANowListReqVO list) throws URISyntaxException, IOException {
return exaUtils.getNowDataList(EXA_IP,list); return exaUtils.getNowDataList(EXA_IP,list);
} }
/**
* 根据点号查询实时值
*
* @param itemName 点号
* @return 分页结果
*/
@Override @Override
public String getEXANow(String itemName) throws URISyntaxException, IOException { public String getEXANow(String itemName) throws URISyntaxException, IOException {
return exaUtils.getNowData(EXA_IP,itemName).get(0); return exaUtils.getNowData(EXA_IP,itemName).get(0);
} }
/**
* 根据点号查询历史值
*
* @param exaHistoryReqVo 点号查询历史值对象
* @return 分页结果
*/
@Override @Override
public List<List<Double>> getEXAHistory(EXAHistoryReqVO exaHistoryReqVo) { public List<List<Double>> getEXAHistory(EXAHistoryReqVO exaHistoryReqVo) {
return exaUtils.getHistory(EXA_IP,exaHistoryReqVo); return exaUtils.getHistory(EXA_IP,exaHistoryReqVo);
} }
/**
* 根据多个点号查询历史值
*
* @param exaHistoryReqVo 点号查询历史值对象
* @return 分页结果
*/
@Override @Override
public List<List<List<Double>>> getEXAHistorys(EXAHistoryReqVO exaHistoryReqVo) { public List<List<List<Double>>> getEXAHistorys(EXAHistoryReqVO exaHistoryReqVo) {
return exaUtils.getHistorys(EXA_IP,exaHistoryReqVo); return exaUtils.getHistorys(EXA_IP,exaHistoryReqVo);
@ -85,16 +123,33 @@ public class EXAServiceImpl implements EXAService {
public String createPoint(Point pointVo) throws IOException { public String createPoint(Point pointVo) throws IOException {
return exaUtils.setPoint(EXA_IP,pointVo); return exaUtils.setPoint(EXA_IP,pointVo);
} }
/**
* 查询EXA所有分组信息
*
* @return 分页结果
*/
@Override @Override
public List<Object> getEXAGroupInfo() throws URISyntaxException, IOException { public List<Object> getEXAGroupInfo() throws URISyntaxException, IOException {
return exaUtils.getGroup(EXA_IP); return exaUtils.getGroup(EXA_IP);
} }
/**
* 删除EXA点号
*
* @param ItemName 点号
* @return 分页结果
*/
@Override
public String deletePoint(String ItemName){ public String deletePoint(String ItemName){
return exaUtils.deletePoint(EXA_IP,ItemName); return exaUtils.deletePoint(EXA_IP,ItemName);
} }
/**
* 导入EXA点号
*
* @param importPoints 导入点号列表
* @param isUpdateSupport 是否支持更新
* @return 分页结果
*/
@Override @Override
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入 @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
public EXAPointImportRespVO importPointList(List<Point> importPoints, boolean isUpdateSupport) { public EXAPointImportRespVO importPointList(List<Point> importPoints, boolean isUpdateSupport) {
@ -120,6 +175,7 @@ public class EXAServiceImpl implements EXAService {
return respVO; return respVO;
} }
@Override @Override
public List<PointOptionItemVO> getPointOptionList(String search) { public List<PointOptionItemVO> getPointOptionList(String search) {
try { 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 reportObj = JsonUtils.parseObject(report.getReport(), Report.class);
// 此处可根据业务需求处理解析后的Report对象(如后续预警逻辑) // 此处可根据业务需求处理解析后的Report对象(如后续预警逻辑)
// 循环getInputInfo构建并插入预警记录 // 循环getInputInfo构建并插入预警记录
for (int j = 0; j < reportObj.getAssess().size(); j++) { for (int j = 0; j < reportObj.getAssessRows().size(); j++) {
WarnSaveReqVO warnSaveReqVO = new WarnSaveReqVO(); WarnSaveReqVO warnSaveReqVO = new WarnSaveReqVO();
@ -252,14 +252,14 @@ public class InstantServiceImpl implements InstantService {
// warn.setId(insertId); // warn.setId(insertId);
//设置实例id //设置实例id
warnSaveReqVO.setMpId(instant.getId()); warnSaveReqVO.setMpId(instant.getId());
warnSaveReqVO.setPointId(createReqVO.getInputInfo().get(reportObj.getAssess().get(j).getIndex())); warnSaveReqVO.setPointId(createReqVO.getInputInfo().get(reportObj.getAssessRows().get(j).getIndex()));
warnSaveReqVO.setPointName(createReqVO.getInputName().get(reportObj.getAssess().get(j).getIndex())); warnSaveReqVO.setPointName(createReqVO.getInputName().get(reportObj.getAssessRows().get(j).getIndex()));
warnSaveReqVO.setGzpName(createReqVO.getInputName().get(reportObj.getAssess().get(j).getIndex())); warnSaveReqVO.setGzpName(createReqVO.getInputName().get(reportObj.getAssessRows().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.setEquation("[" + createReqVO.getBiasPointInfo().get(reportObj.getAssessRows().get(j).getIndex()) + "]>UPLIMIT or [" + createReqVO.getBiasPointInfo().get(reportObj.getAssessRows().get(j).getIndex()) + "]<LOWLIMIT");
warnSaveReqVO.setUplimit(reportObj.getAssess().get(j).getAmplitude()); warnSaveReqVO.setUplimit(reportObj.getAssessRows().get(j).getAmplitude());
warnSaveReqVO.setLowlimit(-reportObj.getAssess().get(j).getAmplitude()); warnSaveReqVO.setLowlimit(-reportObj.getAssessRows().get(j).getAmplitude());
warnSaveReqVO.setOutputPoint(createReqVO.getOutPointInfo().get(reportObj.getAssess().get(j).getIndex())); warnSaveReqVO.setOutputPoint(createReqVO.getOutPointInfo().get(reportObj.getAssessRows().get(j).getIndex()));
warnSaveReqVO.setUnit(createReqVO.getUnit().get(reportObj.getAssess().get(j).getIndex())); warnSaveReqVO.setUnit(createReqVO.getUnit().get(reportObj.getAssessRows().get(j).getIndex()));
// 设置其他必要字段(根据实际业务补充) // 设置其他必要字段(根据实际业务补充)
warnSaveReqVO.setWarnStatus(1L); // 示例:设置初始状态 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; return result;
} }
/**
* 根据多个点号查询实时值
*
* @param EXA_IP EXA 地址
* @param exaNowListReqVO 传入对象页数页数量查询条件
* @return exa列表
*/
public EXAResult getNowDataList(String EXA_IP,EXANowListReqVO exaNowListReqVO) throws URISyntaxException, IOException { public EXAResult getNowDataList(String EXA_IP,EXANowListReqVO exaNowListReqVO) throws URISyntaxException, IOException {
EXAResult result = new EXAResult(); EXAResult result = new EXAResult();
try { try {
@ -174,9 +180,10 @@ public class EXAUtils {
/** /**
* 根据分页条件和测点名称测点描述模糊查询 * 根据点号开始时间结束时间查询历史数据
* *
* @param exaHistoryReqVo 传入对象点号开始时间结束时间 * @param exaHistoryReqVo 传入对象点号开始时间结束时间
* itemName 单点号
* @return exa列表 * @return exa列表
*/ */
public List<List<Double>> getHistory(String exaIp, EXAHistoryReqVO req) { public List<List<Double>> getHistory(String exaIp, EXAHistoryReqVO req) {
@ -221,6 +228,15 @@ public class EXAUtils {
return result; return result;
} }
// 批量查询历史数据
/**
* 批量查询历史数据
*
* @param EXA_IP EXA 地址
* @param exaHistoryReqVo 传入对象点号开始时间结束时间
* itemName 逗号分隔的点号列表
* @return exa列表
*/
public List<List<List<Double>>> getHistorys(String EXA_IP, EXAHistoryReqVO exaHistoryReqVo) { public List<List<List<Double>>> getHistorys(String EXA_IP, EXAHistoryReqVO exaHistoryReqVo) {
List<List<List<Double>>> results = new ArrayList<>(); List<List<List<Double>>> results = new ArrayList<>();
@ -239,7 +255,13 @@ public class EXAUtils {
return results; return results;
} }
//写入点号 /**
* 写入点号
*
* @param EXA_IP EXA 地址
* @param point 点号对象
* @return 写入结果
*/
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/AddItemStd"; String requestPathAddItem = "http://" + EXA_IP + ":9000/exawebapi/EXAItem/AddItemStd";
String param = JSON.toJSONString(point); String param = JSON.toJSONString(point);

Loading…
Cancel
Save