diff --git a/application/src/main/java/org/thingsboard/server/service/cf/ctx/state/SimpleCalculatedFieldState.java b/application/src/main/java/org/thingsboard/server/service/cf/ctx/state/SimpleCalculatedFieldState.java index 7f21f8d2e7..a837b5ebde 100644 --- a/application/src/main/java/org/thingsboard/server/service/cf/ctx/state/SimpleCalculatedFieldState.java +++ b/application/src/main/java/org/thingsboard/server/service/cf/ctx/state/SimpleCalculatedFieldState.java @@ -67,6 +67,8 @@ public class SimpleCalculatedFieldState extends BaseCalculatedFieldState { ObjectNode valuesNode = JacksonUtil.newObjectNode(); if (result instanceof Double doubleValue) { valuesNode.put(outputName, doubleValue); + } else if (result instanceof Long longValue) { + valuesNode.put(outputName, longValue); } else if (result instanceof Integer integerValue) { valuesNode.put(outputName, integerValue); } else { diff --git a/common/util/src/main/java/org/thingsboard/common/util/NumberUtils.java b/common/util/src/main/java/org/thingsboard/common/util/NumberUtils.java index 6681557c87..203aacfd06 100644 --- a/common/util/src/main/java/org/thingsboard/common/util/NumberUtils.java +++ b/common/util/src/main/java/org/thingsboard/common/util/NumberUtils.java @@ -32,8 +32,8 @@ public class NumberUtils { return BigDecimal.valueOf(value).setScale(precision, RoundingMode.HALF_UP).floatValue(); } - public static int toInt(double value) { - return BigDecimal.valueOf(value).setScale(0, RoundingMode.HALF_UP).intValue(); + public static long toLong(double value) { + return BigDecimal.valueOf(value).setScale(0, RoundingMode.HALF_UP).longValue(); } public static Object roundResult(double value, Integer precision) { @@ -41,7 +41,7 @@ public class NumberUtils { return value; } if (precision.equals(0)) { - return toInt(value); + return toLong(value); } return toFixed(value, precision); } diff --git a/common/util/src/test/java/org/thingsboard/common/util/NumberUtilsTest.java b/common/util/src/test/java/org/thingsboard/common/util/NumberUtilsTest.java index 1a1bf326e6..91b53da787 100644 --- a/common/util/src/test/java/org/thingsboard/common/util/NumberUtilsTest.java +++ b/common/util/src/test/java/org/thingsboard/common/util/NumberUtilsTest.java @@ -45,17 +45,19 @@ public class NumberUtilsTest { } @Test - public void toInt() { - assertThat(NumberUtils.toInt(doubleVal)).isEqualTo(1729); - assertThat(NumberUtils.toInt(12.8)).isEqualTo(13); - assertThat(NumberUtils.toInt(28.0)).isEqualTo(28); + public void toLong() { + assertThat(NumberUtils.toLong(doubleVal)).isEqualTo(1729L); + assertThat(NumberUtils.toLong(12.8)).isEqualTo(13L); + assertThat(NumberUtils.toLong(28.0)).isEqualTo(28L); + assertThat(NumberUtils.toLong(3_980_173_734.0)).isEqualTo(3_980_173_734L); } @Test public void roundResult() { assertThat(NumberUtils.roundResult(doubleVal, null)).isEqualTo(1729.1729); - assertThat(NumberUtils.roundResult(doubleVal, 0)).isEqualTo(1729); + assertThat(NumberUtils.roundResult(doubleVal, 0)).isEqualTo(1729L); assertThat(NumberUtils.roundResult(doubleVal, 2)).isEqualTo(1729.17); + assertThat(NumberUtils.roundResult(3_980_173_734.0, 0)).isEqualTo(3_980_173_734L); } }