feat: 获取告警类型对应的要素
This commit is contained in:
parent
0dfd6d04cd
commit
3b10901fda
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user