diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsWarnRuleBService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsWarnRuleBService.java index d15d8d16..68cba268 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsWarnRuleBService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsWarnRuleBService.java @@ -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 { boolean add(MsWarnRuleB entity, String source); boolean update(MsWarnRuleB entity, String source); boolean delete(List ids, String source); + + /** + * 获取告警类型对应的要素列表 + */ + List getAllYs(String ruleType); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java index e5e4501a..b86dd078 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java @@ -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 queryPageList(DataSourceRequest request) { Page page = DataSourceRequestUtil.executeQuery(request, MsWarnRuleB.class, this); @@ -92,4 +99,66 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl 0; } + + @Override + public List 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 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; + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/controller/MsWarnRuleBController.java b/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/controller/MsWarnRuleBController.java index 3a82f1db..8ce549d4 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/controller/MsWarnRuleBController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/controller/MsWarnRuleBController.java @@ -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; + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/vo/WarnYsVo.java b/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/vo/WarnYsVo.java new file mode 100644 index 00000000..6c83c04d --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/vo/WarnYsVo.java @@ -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; +}