diff --git a/njcn-common/pom.xml b/njcn-common/pom.xml index ff91f43..3b9639f 100644 --- a/njcn-common/pom.xml +++ b/njcn-common/pom.xml @@ -24,6 +24,7 @@ 1.68 2.13.4.1 2.17.0 + 3.0.2 1.7.32 1.2.12 4.4.0 @@ -97,6 +98,13 @@ ${jackson.jsr310.version} + + com.google.code.findbugs + jsr305 + ${jsr-version} + + + org.springframework.boot diff --git a/njcn-common/src/main/java/com/njcn/common/utils/PubUtils.java b/njcn-common/src/main/java/com/njcn/common/utils/PubUtils.java new file mode 100644 index 0000000..3cc15ff --- /dev/null +++ b/njcn-common/src/main/java/com/njcn/common/utils/PubUtils.java @@ -0,0 +1,64 @@ +package com.njcn.common.utils; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +/** + * @author hongawen + * @version 1.0 + * @data 2025/3/28 11:23 + */ +public class PubUtils { + + /** + * 根据参数返回double的四舍五入值 + * + * @param i 保留的位数 + * @param value double原值 + */ + public static double doubleRound(int i, double value) { + BigDecimal bp = new BigDecimal(value); + return bp.setScale(i, RoundingMode.HALF_UP).doubleValue(); + } + + /** + * 根据参数返回double的四舍五入值 + * + * @param i 保留的位数 + * @param value double原值 + */ + public static String doubleRoundStr(int i, double value) { + BigDecimal bp = new BigDecimal(value); + return bp.setScale(i, RoundingMode.HALF_UP).toPlainString(); + } + + public static void sortByDoubleValue(List> list, String sortKey) { + if (list == null || list.isEmpty()) { + return; + } + + list.sort((map1, map2) -> { + Double value1 = parseDoubleSafely(map1.get(sortKey)); + Double value2 = parseDoubleSafely(map2.get(sortKey)); + return Double.compare(value1, value2); + }); + } + + private static double parseDoubleSafely(String value) { + return Optional.ofNullable(value) + .map(v -> { + try { + return Double.parseDouble(v); + } catch (NumberFormatException e) { + // 无效值排在最前 + return Double.MIN_VALUE; + } + }) + // null值排在最前 + .orElse(Double.MIN_VALUE); + } + +}