From 092bc1a8cdd883e44484429e1cbe6e06f4e5b294 Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Wed, 8 Apr 2026 15:48:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=98=AF=E5=90=A6=E5=9B=9B?= =?UTF-8?q?=E8=88=8D=E4=BA=94=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/base/entity/ReportLabelList.java | 1 + .../Impl/LabelDataProcessorServiceImpl.java | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gaotao/modules/base/entity/ReportLabelList.java b/src/main/java/com/gaotao/modules/base/entity/ReportLabelList.java index c98f761..f548a91 100644 --- a/src/main/java/com/gaotao/modules/base/entity/ReportLabelList.java +++ b/src/main/java/com/gaotao/modules/base/entity/ReportLabelList.java @@ -32,6 +32,7 @@ public class ReportLabelList { private Integer decimalPlaces; private Boolean showDecimalPlaces; private Boolean thousandsSeparator; + private Boolean roundHalfUp; @TableField(exist = false) private Integer digits; @TableField(exist = false) diff --git a/src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java b/src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java index fa802e9..1277395 100644 --- a/src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java +++ b/src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java @@ -646,7 +646,7 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService // 尝试解析为数字 BigDecimal number = new BigDecimal(text.trim()); return formatNumber(number, element.getDecimalPlaces(), - element.getShowDecimalPlaces(), element.getThousandsSeparator()); + element.getShowDecimalPlaces(), element.getThousandsSeparator(), element.getRoundHalfUp()); } catch (NumberFormatException e) { log.debug("文本无法解析为数字,保持原样: {}", text); return text; @@ -655,6 +655,14 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService @Override public String formatNumber(Object value, Integer decimalPlaces, Boolean showDecimalPlaces, Boolean thousandsSeparator) { + return formatNumber(value, decimalPlaces, showDecimalPlaces, thousandsSeparator, true); + } + + /** + * 格式化数字数据(支持四舍五入或截断) + */ + private String formatNumber(Object value, Integer decimalPlaces, Boolean showDecimalPlaces, + Boolean thousandsSeparator, Boolean roundHalfUp) { if (value == null) { return ""; } @@ -683,8 +691,9 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService // 创建格式化器 DecimalFormat formatter = createNumberFormatter(scale, Boolean.TRUE.equals(thousandsSeparator)); - // 设置舍入模式 - formatter.setRoundingMode(RoundingMode.HALF_UP); + // 设置舍入模式:默认四舍五入;取消勾选时按小数位截断 + boolean useHalfUp = roundHalfUp == null || Boolean.TRUE.equals(roundHalfUp); + formatter.setRoundingMode(useHalfUp ? RoundingMode.HALF_UP : RoundingMode.DOWN); return formatter.format(number); @@ -1231,6 +1240,7 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService copy.setDecimalPlaces(original.getDecimalPlaces()); copy.setShowDecimalPlaces(original.getShowDecimalPlaces()); copy.setThousandsSeparator(original.getThousandsSeparator()); + copy.setRoundHalfUp(original.getRoundHalfUp()); copy.setDigits(original.getDigits()); copy.setStep(original.getStep());