From 8e8c5dc2f4aca52d998ba7459cc282fb0c258917 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 27 Jul 2026 15:36:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qgc_base/service/IMsWarnRuleBService.java | 2 +- .../service/impl/MsWarnRuleBServiceImpl.java | 93 ++++++++++++++----- .../entity/vo/OverviewVmsstbprptVo.java | 1 + .../controller/MsWarnRuleBController.java | 62 +++++++------ .../qgc_sys/warnRule/vo/WarnYsVo.java | 6 ++ 5 files changed, 111 insertions(+), 53 deletions(-) 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 05607c7f..5c3ea2d5 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 @@ -24,7 +24,7 @@ public interface IMsWarnRuleBService extends IService { /** * 获取告警类型对应的要素列表 */ - List getAllYs(String ruleType); + List getAllYs(String ruleId,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 ee9490de..b48ed9a8 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 @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_base.service.impl; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -25,10 +26,12 @@ import com.yfd.platform.qgc_sys.warnRule.vo.WarnYsVo; import com.yfd.platform.utils.*; import jakarta.annotation.Resource; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -115,18 +118,59 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl 0; } + /** + * 最小值 + */ + private BigDecimal minVal; + + /** + * 最大值 + */ + private BigDecimal maxVal; + @Override - public List getAllYs(String ruleType) { + public List getAllYs(String ruleId, 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 ='" + dbRuleType + "'\n" + - " AND t1.IS_DELETED = 0\n" + - " AND t2.IS_DELETED = 0\n" + - "GROUP BY t2.TB_ID, t2.YS, t3.YS_SHOW_NAME"; + boolean hasRuleId = (ruleId != null && !ruleId.isEmpty()); + + // 动态构建 SELECT 子句 + StringBuilder selectClause = new StringBuilder( + "SELECT t2.TB_ID AS tbId, t2.YS, t3.YS_SHOW_NAME AS ysName" + ); + // 有 ruleId 时额外查询 MIN_VAL 和 MAX_VAL + if (hasRuleId) { + selectClause.append(",t2.WARN_LEVEL,t2.MARK,t2.LVL, t2.MIN_VAL, t2.MAX_VAL"); + } + + // 动态构建 GROUP BY 子句(与 SELECT 对应) + StringBuilder groupByClause = new StringBuilder( + "GROUP BY t2.TB_ID, t2.YS, t3.YS_SHOW_NAME" + ); + if (hasRuleId) { + groupByClause.append(",t2.WARN_LEVEL,t2.MARK,t2.LVL, t2.MIN_VAL, t2.MAX_VAL"); + } + + // 基础 FROM / JOIN 和固定过滤条件(删除标志) + String fromJoin = "\nFROM MS_WARN_RULE_B t1" + + "\nINNER JOIN MS_WARN_RULE_DETAIL_B t2 ON t1.ID = t2.RULE_ID" + + "\nINNER JOIN ST_YS_B t3 ON t2.YS = t3.YS" + + "\nWHERE t1.IS_DELETED = 0" + + "\n AND t2.IS_DELETED = 0"; + + // 动态条件(使用占位符) + String condition; Map paramMap = new HashMap<>(); + if (hasRuleId) { + condition = "\n AND t1.ID = #{map.ruleId}"; + paramMap.put("ruleId", ruleId); + } else { + condition = "\n AND t1.RULE_TYPE = #{map.ruleType}"; + paramMap.put("ruleType", dbRuleType); + } + + // 组装完整 SQL + String sql = selectClause + fromJoin + condition + "\n" + groupByClause; + return microservicDynamicSQLMapper.getAllListWithResultType(sql, paramMap, WarnYsVo.class); } @@ -139,11 +183,11 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl detail = vo.getDetail(); Integer lvl = null; - if (!CollectionUtils.isEmpty(detail) && detail.get(0) != null && detail.get(0).getLvl() != null) { - lvl = Integer.parseInt(detail.get(0).getLvl()); + if (!CollectionUtils.isEmpty(detail) && detail.getFirst() != null && detail.getFirst().getLvl() != null) { + lvl = Integer.parseInt(detail.getFirst().getLvl()); } List detailBList = new ArrayList<>(); @@ -156,10 +200,13 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl dataSourceResult = new DataSourceResult<>(); StringBuilder sql = new StringBuilder(); sql.append("SELECT id AS bindId, STCD, STNM, STTP_CODE AS sttpCode, RULE_NAME AS ruleName, ") - .append("RULE_TYPE AS ruleType, recordUser, MODIFY_TIME AS modifyTime, isShow, RULE_CODE AS ruleCode ") - .append("FROM (\n") - .append("SELECT t1.ID, t1.STCD, t3.STNM, t3.STTP_CODE, t2.RULE_NAME, t2.RULE_TYPE, ") - .append("t2.RECORD_USER AS recordUser, t2.MODIFY_TIME, t2.DESCRIPTION, t2.IS_SHOW AS isShow, t2.RULE_CODE ") - .append("FROM MS_WARN_RULE_STBPRP_B t1\n") - .append("INNER JOIN MS_WARN_RULE_B t2 ON t1.RULE_ID = t2.ID\n") - .append("INNER JOIN V_MS_STBPRP_T t3 ON t1.STCD = t3.STCD\n") - .append("WHERE t2.RULE_CODE IN ('common','custom')\n") - .append(") WHERE 1=1"); + .append("RULE_TYPE AS ruleType, recordUser, MODIFY_TIME AS modifyTime, isShow, RULE_CODE AS ruleCode ") + .append("FROM (\n") + .append("SELECT t1.ID, t1.STCD, t3.STNM, t3.STTP_CODE, t2.RULE_NAME, t2.RULE_TYPE, ") + .append("t2.RECORD_USER AS recordUser, t2.MODIFY_TIME, t2.DESCRIPTION, t2.IS_SHOW AS isShow, t2.RULE_CODE ") + .append("FROM MS_WARN_RULE_STBPRP_B t1\n") + .append("INNER JOIN MS_WARN_RULE_B t2 ON t1.RULE_ID = t2.ID\n") + .append("INNER JOIN V_MS_STBPRP_T t3 ON t1.STCD = t3.STCD\n") + .append("WHERE t2.RULE_CODE IN ('common','custom')\n") + .append(") WHERE 1=1"); Map params = new HashMap<>(); // 处理过滤条件 diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/overview/entity/vo/OverviewVmsstbprptVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/overview/entity/vo/OverviewVmsstbprptVo.java index 62120e64..2a9dd782 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/overview/entity/vo/OverviewVmsstbprptVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/overview/entity/vo/OverviewVmsstbprptVo.java @@ -52,6 +52,7 @@ public class OverviewVmsstbprptVo implements Serializable { private BigDecimal inv; private Integer invinmn; private Date stdsdt; + private String precis; private Date pststdt; private Date pesstdt; private Date swdt; 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 40ac8a3c..ec387386 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 @@ -1,9 +1,11 @@ package com.yfd.platform.qgc_sys.warnRule.controller; +import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; import com.yfd.platform.qgc_base.service.IMsWarnRuleBService; import com.yfd.platform.qgc_sys.warnRule.vo.MsWarnRuleBVo; +import com.yfd.platform.utils.QgcQueryWrapperUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; @@ -33,11 +35,13 @@ public class MsWarnRuleBController { @PostMapping("/ysList") @Operation(summary = "获取告警类型对应的要素") public ResponseResult getAllYs(@RequestBody DataSourceRequest dataSourceRequest) { - String ruleType = getFilterFieldValue(dataSourceRequest, "ruleType"); + DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); + String ruleType = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "ruleType"); + String ruleId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "ruleId"); if (ruleType == null || ruleType.isEmpty()) { return ResponseResult.error("ruleType 不能为空"); } - return ResponseResult.successData(msWarnRuleBService.getAllYs(ruleType)); + return ResponseResult.successData(msWarnRuleBService.getAllYs(ruleId,ruleType)); } @PostMapping("/addOrUpdate") @@ -108,31 +112,31 @@ public class MsWarnRuleBController { return ResponseResult.successData(msWarnRuleBService.getRuleListByStcd(stcd, ruleType, lvl)); } - /** - * 从 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; - } +// /** +// * 从 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 index 6c83c04d..6f9c9c22 100644 --- 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 @@ -15,6 +15,12 @@ public class WarnYsVo { /** 要素编码 */ private String ys; + /** 等级 */ + private String lvl; + + /** 告警等级 */ + private String warnLevel; + /** 要素名称 */ private String ysName;