From fc7d09ce8b096bacebb7e8775eba0d323b6643a4 Mon Sep 17 00:00:00 2001 From: zhouhao Date: Wed, 15 Oct 2025 16:56:08 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logback/ShortenedThrowableConverter.java | 3 +- .../engine/alarm/DefaultAlarmHandler.java | 2 +- .../AlarmRecordRankMeasurement.java | 75 ++++++++----------- 3 files changed, 35 insertions(+), 45 deletions(-) diff --git a/jetlinks-components/logging-component/src/main/java/org/jetlinks/community/logging/logback/ShortenedThrowableConverter.java b/jetlinks-components/logging-component/src/main/java/org/jetlinks/community/logging/logback/ShortenedThrowableConverter.java index c7193730..df1561b9 100644 --- a/jetlinks-components/logging-component/src/main/java/org/jetlinks/community/logging/logback/ShortenedThrowableConverter.java +++ b/jetlinks-components/logging-component/src/main/java/org/jetlinks/community/logging/logback/ShortenedThrowableConverter.java @@ -31,8 +31,9 @@ public class ShortenedThrowableConverter extends ThrowableHandlingConverter { public static void writeStackTraceElement(StringBuilder builder, StackTraceElementProxy[] elements) { int unimportantCount = 0; + int count = 0; for (StackTraceElementProxy element : elements) { - if (ExceptionUtils.compactEnabled && ExceptionUtils.isUnimportant(element.getStackTraceElement())) { + if (ExceptionUtils.compactEnabled && count++>2 && ExceptionUtils.isUnimportant(element.getStackTraceElement())) { unimportantCount++; continue; } diff --git a/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/alarm/DefaultAlarmHandler.java b/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/alarm/DefaultAlarmHandler.java index 7125bc91..924a2289 100644 --- a/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/alarm/DefaultAlarmHandler.java +++ b/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/alarm/DefaultAlarmHandler.java @@ -174,7 +174,7 @@ public class DefaultAlarmHandler implements AlarmHandler { ReactiveLock lock = ReactiveLockHolder .getLock("triggerAlarm:" + recordId); return this - .getRecordCache(createRecordId(relieveInfo)) + .getRecordCache(recordId) .flatMap(cache -> { if (relieveInfo.getRelieveTime() == null) { relieveInfo.setRelieveTime(System.currentTimeMillis()); diff --git a/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/measurement/AlarmRecordRankMeasurement.java b/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/measurement/AlarmRecordRankMeasurement.java index 2ee1b967..41432003 100644 --- a/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/measurement/AlarmRecordRankMeasurement.java +++ b/jetlinks-manager/rule-engine-manager/src/main/java/org/jetlinks/community/rule/engine/measurement/AlarmRecordRankMeasurement.java @@ -14,22 +14,21 @@ * limitations under the License. */ package org.jetlinks.community.rule.engine.measurement; - import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import org.jetlinks.community.dashboard.*; import org.jetlinks.community.dashboard.supports.StaticMeasurement; +import org.jetlinks.community.rule.engine.service.AlarmHistoryService; +import org.jetlinks.community.timeseries.query.Aggregation; +import org.jetlinks.community.timeseries.query.AggregationData; +import org.jetlinks.community.timeseries.query.AggregationQueryParam; import org.jetlinks.core.metadata.ConfigMetadata; import org.jetlinks.core.metadata.DataType; import org.jetlinks.core.metadata.DefaultConfigMetadata; import org.jetlinks.core.metadata.types.IntType; import org.jetlinks.core.metadata.types.StringType; -import org.jetlinks.community.dashboard.*; -import org.jetlinks.community.rule.engine.service.AlarmHistoryService; -import org.jetlinks.community.timeseries.query.Aggregation; -import org.jetlinks.community.timeseries.query.AggregationData; -import org.jetlinks.community.timeseries.query.AggregationQueryParam; import reactor.core.publisher.Flux; import java.time.LocalDateTime; @@ -53,12 +52,12 @@ public class AlarmRecordRankMeasurement extends StaticMeasurement { static ConfigMetadata aggConfigMetadata = new DefaultConfigMetadata() - .add("time", "周期", "例如: 1h,10m,30s", StringType.GLOBAL) - .add("agg", "聚合类型", "count,sum,avg,max,min", StringType.GLOBAL) - .add("format", "时间格式", "如: MM-dd:HH", StringType.GLOBAL) - .add("limit", "最大数据量", "", StringType.GLOBAL) - .add("from", "时间从", "", StringType.GLOBAL) - .add("to", "时间至", "", StringType.GLOBAL); + .add("time", "周期", "例如: 1h,10m,30s", StringType.GLOBAL) + .add("agg", "聚合类型", "count,sum,avg,max,min", StringType.GLOBAL) + .add("format", "时间格式", "如: MM-dd:HH", StringType.GLOBAL) + .add("limit", "最大数据量", "", StringType.GLOBAL) + .add("from", "时间从", "", StringType.GLOBAL) + .add("to", "时间至", "", StringType.GLOBAL); class AggRecordRankDimension implements MeasurementDimension { @@ -88,20 +87,20 @@ public class AlarmRecordRankMeasurement extends StaticMeasurement { aggregationQueryParam.setTimeProperty("alarmTime"); return aggregationQueryParam - .groupBy(parameter.getString("group", "targetId")) - .count("targetId", "count") - .agg("targetId", Aggregation.TOP) - .agg("targetName", Aggregation.TOP) - .limit(parameter.getInt("limit").orElse(1)) - .from(parameter - .getDate("from") - .orElseGet(() -> Date - .from(LocalDateTime - .now() - .plusDays(-1) - .atZone(ZoneId.systemDefault()) - .toInstant()))) - .to(parameter.getDate("to").orElse(new Date())); + .groupBy(parameter.getString("group", "targetId")) + .count("targetId", "count") + .agg("targetId", Aggregation.TOP) + .agg("targetName", Aggregation.TOP) + .limit(parameter.getInt("limit").orElse(1)) + .from(parameter + .getDate("from") + .orElseGet(() -> Date + .from(LocalDateTime + .now() + .plusDays(-1) + .atZone(ZoneId.systemDefault()) + .toInstant()))) + .to(parameter.getDate("to").orElse(new Date())); } @Override @@ -116,29 +115,19 @@ public class AlarmRecordRankMeasurement extends StaticMeasurement { AggregationQueryParam param = createQueryParam(parameter); return param - .execute(historyService::aggregation) - .groupBy(a -> a.getString("targetId", null)) - .flatMap(fluxGroup -> fluxGroup.reduce(AggregationData::merge)) - .sort(comparator) - .map(data -> SimpleMeasurementValue.of(new SimpleResult(data), 0)) - .take(param.getLimit()); - } - - public Flux getValue(AggregationQueryParam param, Comparator comparator) { - return param - .execute(historyService::aggregation) - .groupBy(a -> a.getString("targetId", null)) - .flatMap(fluxGroup -> fluxGroup.reduce(AggregationData::merge)) - .sort(comparator) - .map(data -> SimpleMeasurementValue.of(new SimpleResult(data), 0)) - .take(param.getLimit()); + .execute(historyService::aggregation) + .groupBy(a -> a.getString("targetId", null),Integer.MAX_VALUE) + .flatMap(fluxGroup -> fluxGroup.reduce(AggregationData::merge)) + .sort(comparator) + .map(data -> SimpleMeasurementValue.of(new SimpleResult(data), 0)) + .take(param.getLimit()); } @Getter @Setter @AllArgsConstructor @NoArgsConstructor - class SimpleResult { + public static class SimpleResult { private String targetId;