From 2ab6fd9b7327b0f688e612e5f97698631250d77e Mon Sep 17 00:00:00 2001 From: RB Date: Thu, 25 Apr 2024 12:02:56 +0800 Subject: [PATCH] hotfix: ALWAYS_PARSE_INTEGRAL_NUMBER_INTO_DECIMAL --- .../rebuild/core/service/trigger/impl/FieldWriteback.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/rebuild/core/service/trigger/impl/FieldWriteback.java b/src/main/java/com/rebuild/core/service/trigger/impl/FieldWriteback.java index 075d1b758..fc4034c68 100644 --- a/src/main/java/com/rebuild/core/service/trigger/impl/FieldWriteback.java +++ b/src/main/java/com/rebuild/core/service/trigger/impl/FieldWriteback.java @@ -47,6 +47,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.BooleanUtils; import org.apache.commons.lang.StringUtils; +import java.math.BigDecimal; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Collections; @@ -456,7 +457,7 @@ public class FieldWriteback extends FieldAggregation { // 数字字段置 `0` if (varField != null && (varField.getType() == FieldType.LONG || varField.getType() == FieldType.DECIMAL)) { - value = 0; + value = 0L; } else if (fieldVarsN2NPath.contains(fieldName) || (isN2NField != null && isN2NField.getType() == FieldType.REFERENCE_LIST)) { // Keep NULL @@ -477,6 +478,10 @@ public class FieldWriteback extends FieldAggregation { value = value.toString(); } + // v3.6.3 强制使用 BigDecimal 高精度 + if (value instanceof Long) value = BigDecimal.valueOf((Long) value); + else if (value instanceof Integer) value = BigDecimal.valueOf((Integer) value); + envMap.put(fieldName, value); }