From 86c4c07708b080cbf32641548432bad66780c455 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Thu, 10 Sep 2026 21:55:02 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessDocumentOrderAdjustService.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/mhd_oms/src/main/java/com/mhd/oms/application/service/businessDocumentOrder/BusinessDocumentOrderAdjustService.java b/mhd_oms/src/main/java/com/mhd/oms/application/service/businessDocumentOrder/BusinessDocumentOrderAdjustService.java index 079568f45..18623eb98 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/application/service/businessDocumentOrder/BusinessDocumentOrderAdjustService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/application/service/businessDocumentOrder/BusinessDocumentOrderAdjustService.java @@ -506,21 +506,25 @@ public class BusinessDocumentOrderAdjustService { } /** - * 是否修改了金额:主表金额列变化 或 明细 amount 变化 + * 是否修改了金额:主表金额/费用列变化 或 明细 amount 变化 */ private boolean isAmountChanged(BusinessDocumentOrder dbOrder, BusinessDocumentOrder front, boolean hasFeeDetail, List dbFeeList, List newFeeList) { - // a) 主表金额列比对 + // a) 主表金额/费用列比对(金额列用 BigDecimal 比对,字符串列用 equals 比对) boolean mainChanged = FEE_FIELDS.stream().anyMatch(field -> { Object newVal = BeanUtil.getFieldValue(front, field); if (newVal == null) { return false; } Object oldVal = BeanUtil.getFieldValue(dbOrder, field); - BigDecimal old = oldVal == null ? BigDecimal.ZERO : (BigDecimal) oldVal; - BigDecimal now = (BigDecimal) newVal; - return old.compareTo(now) != 0; + if (newVal instanceof BigDecimal || oldVal instanceof BigDecimal) { + BigDecimal old = oldVal == null ? BigDecimal.ZERO : new BigDecimal(oldVal.toString()); + BigDecimal now = new BigDecimal(newVal.toString()); + return old.compareTo(now) != 0; + } + // 字符串字段(结算币种/收款账户等) + return !newVal.toString().equals(oldVal == null ? "" : oldVal.toString()); }); if (mainChanged) { return true;