diff --git a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java index 4e4d8a9c2c..863f3061db 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java +++ b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java @@ -87,6 +87,9 @@ public class ChartDataManage { if (ObjectUtils.isNotEmpty(AuthUtils.getUser())) { chartExtRequest.setUser(AuthUtils.getUser().getUserId()); } + if (view.getChartExtRequest() == null) { + view.setChartExtRequest(chartExtRequest); + } //excel导出,如果是从仪表板获取图表数据,则仪表板的查询模式,查询结果的数量,覆盖图表对应的属性 if (view.getIsExcelExport()) { diff --git a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewThresholdManage.java b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewThresholdManage.java index 8ea51c24c0..94a9821e85 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewThresholdManage.java +++ b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewThresholdManage.java @@ -8,7 +8,9 @@ import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.extensions.view.dto.ChartViewDTO; import io.dataease.extensions.view.filter.FilterTreeItem; import io.dataease.extensions.view.filter.FilterTreeObj; +import io.dataease.utils.DateUtils; import io.dataease.utils.JsonUtil; +import io.dataease.utils.LogUtil; import jakarta.annotation.Resource; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; @@ -101,41 +103,63 @@ public class ChartViewThresholdManage { return " 或 "; } + private String convertStyle(String htmlString) { + String regex = ""; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(htmlString); + if (matcher.find()) { + String styleAttribute = matcher.group(); + String newStyle = styleAttribute.replace("background: #3370FF33", "background: #FFFFFF") + .replace("color: #2b5fd9", "color: #000000"); + return matcher.replaceAll(Matcher.quoteReplacement(newStyle)); + } + return htmlString; + } public ThresholdCheckVO checkThreshold(ThresholdCheckRequest request) throws Exception { String thresholdTemplate = request.getThresholdTemplate(); String thresholdRules = request.getThresholdRules(); Long chartId = request.getChartId(); - ChartViewDTO chart = chartViewManege.getChart(chartId); - Map data = chart.getData(); - List> tableRow = (List>) data.get("tableRow"); - List fields = (List) data.get("fields"); - Map fieldMap = fields.stream().collect(Collectors.toMap(DatasetTableFieldDTO::getId, item -> item)); - FilterTreeObj filterTreeObj = JsonUtil.parseObject(thresholdRules, FilterTreeObj.class); - List> rows = filterRows(tableRow, filterTreeObj, fieldMap); - if (CollectionUtils.isEmpty(rows)) { - return new ThresholdCheckVO(false, null, null, null); - } - String regex = "]*id=\"changeText-(\\d+)(?!0$)(?!1$)\"[^>]*>.*?"; - Pattern pattern = Pattern.compile(regex, Pattern.DOTALL); - Matcher matcher = pattern.matcher(thresholdTemplate); - StringBuilder sb = new StringBuilder(); - while (matcher.find()) { - long id = Long.parseLong(matcher.group(1)); - // 根据id从map中获取替换文本 - DatasetTableFieldDTO fieldDTO = fieldMap.get(id); - String fieldDTOName = fieldDTO.getName(); - String dataeaseName = fieldDTO.getDataeaseName(); - List valueList = rows.stream().map(row -> row.get(dataeaseName).toString()).collect(Collectors.toList()); - String replacement = fieldDTOName + ": " + JsonUtil.toJSONString(valueList); - // 替换文本 - matcher.appendReplacement(sb, replacement); - } - matcher.appendTail(sb); + try { + ChartViewDTO chart = chartViewManege.getChart(chartId); + Map data = chart.getData(); + List> tableRow = (List>) data.get("tableRow"); + List fields = (List) data.get("fields"); + Map fieldMap = fields.stream().collect(Collectors.toMap(DatasetTableFieldDTO::getId, item -> item)); + FilterTreeObj filterTreeObj = JsonUtil.parseObject(thresholdRules, FilterTreeObj.class); + List> rows = filterRows(tableRow, filterTreeObj, fieldMap); + if (CollectionUtils.isEmpty(rows)) { + return new ThresholdCheckVO(false, null, null, null); + } + String regex = "]*id=\"changeText-(\\d+)(?!0$)(?!1$)\"[^>]*>.*?"; + Pattern pattern = Pattern.compile(regex, Pattern.DOTALL); + Matcher matcher = pattern.matcher(thresholdTemplate); + StringBuilder sb = new StringBuilder(); + while (matcher.find()) { + long id = Long.parseLong(matcher.group(1)); + // 根据id从map中获取替换文本 + DatasetTableFieldDTO fieldDTO = fieldMap.get(id); + if (ObjectUtils.isEmpty(fieldDTO)) continue; + String fieldDTOName = fieldDTO.getName(); + String dataeaseName = fieldDTO.getDataeaseName(); + List valueList = rows.stream().map(row -> row.get(dataeaseName).toString()).collect(Collectors.toList()); + String replacement = fieldDTOName + ": " + JsonUtil.toJSONString(valueList); + // 替换文本 + matcher.appendReplacement(sb, replacement); + } + matcher.appendTail(sb); - // 输出替换后的HTML内容 - String result = sb.toString(); - return new ThresholdCheckVO(true, result, null, null); + // 输出替换后的HTML内容 + String msgContent = sb.toString(); + msgContent = msgContent.replace("[检测时间]", DateUtils.time2String(System.currentTimeMillis())); + Long tableId = chart.getTableId(); + String s = convertThresholdRules(tableId, thresholdRules); + String result = convertStyle(msgContent.replace("[触发告警]", s)); + return new ThresholdCheckVO(true, result, null, null); + } catch (Exception e) { + LogUtil.error(e.getMessage(), new Throwable(e)); + return new ThresholdCheckVO(false, null, e.getMessage(), null); + } } public List> filterRows(List> rows, FilterTreeObj conditionTree, Map fieldMap) { diff --git a/de-xpack b/de-xpack index f46bb27330..b0891ed098 160000 --- a/de-xpack +++ b/de-xpack @@ -1 +1 @@ -Subproject commit f46bb2733054d6c3f034522c549817b1b7ddcd54 +Subproject commit b0891ed09873a48be31e2d2558aaf3751130a88d diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/threshold/dto/BaseReciDTO.java b/sdk/api/api-base/src/main/java/io/dataease/api/threshold/dto/BaseReciDTO.java index 0b00283e7b..52e3a0d082 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/threshold/dto/BaseReciDTO.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/threshold/dto/BaseReciDTO.java @@ -13,9 +13,9 @@ public class BaseReciDTO implements Serializable { private List reciFlagList; - private List uidList; + private List uidList; - private List ridList; + private List ridList; private List emailList;