feat: 获取告警类型对应的要素

This commit is contained in:
tangwei 2026-07-23 09:11:22 +08:00
parent 0dfd6d04cd
commit 3b10901fda
4 changed files with 142 additions and 1 deletions

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.qgc_base.domain.MsWarnRuleB;
import com.yfd.platform.qgc_sys.warnRule.vo.WarnYsVo;
import java.util.List;
@ -15,4 +16,9 @@ public interface IMsWarnRuleBService extends IService<MsWarnRuleB> {
boolean add(MsWarnRuleB entity, String source);
boolean update(MsWarnRuleB entity, String source);
boolean delete(List<String> ids, String source);
/**
* 获取告警类型对应的要素列表
*/
List<WarnYsVo> getAllYs(String ruleType);
}

View File

@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
import com.yfd.platform.qgc_base.domain.MsWarnRuleB;
import com.yfd.platform.qgc_base.mapper.MsWarnRuleBMapper;
import com.yfd.platform.qgc_base.service.IMsOperationLogService;
import com.yfd.platform.qgc_base.service.IMsWarnRuleBService;
import com.yfd.platform.qgc_sys.warnRule.vo.WarnYsVo;
import com.yfd.platform.utils.DataSourceRequestUtil;
import com.yfd.platform.utils.DictCodeToNameConverter;
import com.yfd.platform.utils.CodeToNameMetadataBo;
@ -18,7 +20,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 预警规则配置 Service 实现类
@ -45,6 +49,9 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl<MsWarnRuleBMapper, MsWar
@Resource
private DictCodeToNameConverter dictCodeToNameConverter;
@Resource
private MicroservicDynamicSQLMapper microservicDynamicSQLMapper;
@Override
public Page<MsWarnRuleB> queryPageList(DataSourceRequest request) {
Page<MsWarnRuleB> page = DataSourceRequestUtil.executeQuery(request, MsWarnRuleB.class, this);
@ -92,4 +99,66 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl<MsWarnRuleBMapper, MsWar
}
return count > 0;
}
@Override
public List<WarnYsVo> getAllYs(String ruleType) {
String dbRuleType = getOldRuleType(ruleType);
String sql = "SELECT t2.TB_ID AS tbId, t2.YS, t3.YS_SHOW_NAME AS ysName\n" +
"FROM MS_WARN_RULE_B t1\n" +
"INNER JOIN MS_WARN_RULE_DETAIL_B t2 ON t1.ID = t2.RULE_ID\n" +
"INNER JOIN ST_YS_B t3 ON t2.YS = t3.YS\n" +
"WHERE t1.RULE_TYPE = #{ruleType}\n" +
" AND t1.IS_DELETED = 0\n" +
" AND t2.IS_DELETED = 0\n" +
"GROUP BY t2.TB_ID, t2.YS, t3.YS_SHOW_NAME";
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("ruleType", dbRuleType);
return microservicDynamicSQLMapper.getAllListWithResultType(sql, paramMap, WarnYsVo.class);
}
/**
* 旧版规则类型枚举映射
*/
private String getOldRuleType(String ruleType) {
if ("WQ".equals(ruleType)) {
return "WQLVL";
} else if ("WT".equals(ruleType)) {
return "WTMN";
} else if ("QGC".equals(ruleType)) {
return "EQMN";
} else if ("RZ".equals(ruleType)) {
return "RSVRFSR";
}
return ruleType;
}
/**
* DataSourceRequest 过滤条件中提取指定字段的值
*/
private String getFilterFieldValue(DataSourceRequest request, String fieldName) {
if (request == null || request.getFilter() == null) {
return null;
}
return findFilterValue(request.getFilter(), fieldName);
}
private String findFilterValue(DataSourceRequest.FilterDescriptor filter, String fieldName) {
if (filter == null) {
return null;
}
// 直接匹配
if (fieldName.equals(filter.getField()) && filter.getValue() != null) {
return filter.getValue().toString();
}
// 递归子过滤器
if (filter.getFilters() != null) {
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
String value = findFilterValue(child, fieldName);
if (value != null) {
return value;
}
}
}
return null;
}
}

View File

@ -2,7 +2,6 @@ package com.yfd.platform.qgc_sys.warnRule.controller;
import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.config.ResponseResult;
import com.yfd.platform.qgc_base.domain.MsWarnRuleB;
import com.yfd.platform.qgc_base.service.IMsWarnRuleBService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -30,4 +29,42 @@ public class MsWarnRuleBController {
public ResponseResult getKendoList(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(msWarnRuleBService.queryPageList(dataSourceRequest));
}
@PostMapping("/ysList")
@Operation(summary = "获取告警类型对应的要素")
public ResponseResult getAllYs(@RequestBody DataSourceRequest dataSourceRequest) {
String ruleType = getFilterFieldValue(dataSourceRequest, "ruleType");
if (ruleType == null || ruleType.isEmpty()) {
return ResponseResult.error("ruleType 不能为空");
}
return ResponseResult.successData(msWarnRuleBService.getAllYs(ruleType));
}
/**
* DataSourceRequest 过滤条件中提取指定字段的值
*/
private String getFilterFieldValue(DataSourceRequest request, String fieldName) {
if (request == null || request.getFilter() == null) {
return null;
}
return findFilterValue(request.getFilter(), fieldName);
}
private String findFilterValue(DataSourceRequest.FilterDescriptor filter, String fieldName) {
if (filter == null) {
return null;
}
if (fieldName.equals(filter.getField()) && filter.getValue() != null) {
return filter.getValue().toString();
}
if (filter.getFilters() != null) {
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
String value = findFilterValue(child, fieldName);
if (value != null) {
return value;
}
}
}
return null;
}
}

View File

@ -0,0 +1,29 @@
package com.yfd.platform.qgc_sys.warnRule.vo;
import lombok.Data;
import java.math.BigDecimal;
/**
* 告警类型对应的要素VO
*/
@Data
public class WarnYsVo {
/** 监测表id */
private String tbId;
/** 要素编码 */
private String ys;
/** 要素名称 */
private String ysName;
/** 最小值 */
private BigDecimal minVal;
/** 最大值 */
private BigDecimal maxVal;
/** 描述 */
private String mark;
}