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;