From b22714e749fe189547191099897c4a619b8735f7 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Fri, 6 Feb 2026 09:39:40 +0800 Subject: [PATCH 1/3] =?UTF-8?q?demand:=20=20=20=20TMS=E7=B3=BB=E7=BB=9F=20?= =?UTF-8?q?-=20=E5=AE=A2=E6=88=B7=E8=B4=A6=E5=8D=95=E7=AE=A1=E7=90=86=20-?= =?UTF-8?q?=20=E4=B8=9A=E5=8A=A1=E9=94=80=E8=B4=A6=E7=94=B3=E8=AF=B7=20-?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E5=8A=A0=E8=BF=90=E5=8D=95=E5=8F=B7?= =?UTF-8?q?=E9=94=80=E8=B4=A6=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/EmisWriteoffApplyDetailMapper.java | 12 ++++++++ .../impl/EmisWriteoffApplyServiceImpl.java | 28 +++++++++++++++++-- .../mapper/EmisWriteoffApplyDetailMapper.xml | 13 +++++++++ 3 files changed, 50 insertions(+), 3 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWriteoffApplyDetailMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWriteoffApplyDetailMapper.java index 53f90239d..6dcff46cd 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWriteoffApplyDetailMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWriteoffApplyDetailMapper.java @@ -10,9 +10,11 @@ */ package com.xdadan.erp.emis.mapper; +import java.math.BigDecimal; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xdadan.erp.emis.domain.EmisWriteoffApplyDetail; +import org.apache.ibatis.annotations.Param; /** * @ClassName EmisWriteoffApplyDetailMapper @@ -104,4 +106,14 @@ public interface EmisWriteoffApplyDetailMapper extends BaseMapper + * - 来自 auditCenterPass:申请金额 + 已收金额 <= 账单应收金额 + * - 非 auditCenterPass:申请金额 + 该运单历史申请金额(所有 bl_center_confirmed != 1 的申请明细之和) + 已收金额 <= 账单应收金额 + *

+ * + * @param fromAuditCenterPass 是否来自财务中心审核通过(auditCenterPass) + */ + private void validateWriteoffAmount(EmisWriteoffApply emisWriteoffApply, boolean fromAuditCenterPass) + throws EmisBizError { if (CollectionUtils.isEmpty(emisWriteoffApply.getDetailList())) { throw new EmisBizError("销账申请明细不能为空"); } @@ -170,7 +185,14 @@ public class EmisWriteoffApplyServiceImpl extends EmisBaseService implements IEm } // 验证:申请金额 + 已收金额 <= 账单应收金额 - BigDecimal totalAmount = detail.getApplyMoney().add(receivedAmount); + BigDecimal historyApplyAmount = BigDecimal.ZERO; + if (!fromAuditCenterPass) { + BigDecimal dbSum = emisWriteoffApplyDetailMapper.sumHistoryApplyMoneyByBillCode(detail.getBillCode(), + emisWriteoffApply.getId()); + historyApplyAmount = dbSum != null ? dbSum : BigDecimal.ZERO; + } + + BigDecimal totalAmount = detail.getApplyMoney().add(historyApplyAmount).add(receivedAmount); if (totalAmount.compareTo(recMoney) > 0) { throw new EmisBizError("运单号 " + detail.getBillCode() + " 的申请金额(" + detail.getApplyMoney() + ") + 已收金额(" + receivedAmount + ") = " + totalAmount + " 超过运单应收金额(" @@ -431,8 +453,8 @@ public class EmisWriteoffApplyServiceImpl extends EmisBaseService implements IEm .selectEmisWriteoffApplyDetailListByApplyIdWithDetails(existingApply.getId()); existingApply.setDetailList(detailList); - // 验证销账金额 - validateWriteoffAmount(existingApply); + // 验证销账金额(财务中心审核通过场景不纳入“历史申请金额”) + validateWriteoffAmount(existingApply, true); // 先更新相关业务数据(在更新审核状态之前进行验证和更新) detailList = updateRelatedBusinessData(existingApply, true); diff --git a/emis-biz/src/main/resources/mapper/EmisWriteoffApplyDetailMapper.xml b/emis-biz/src/main/resources/mapper/EmisWriteoffApplyDetailMapper.xml index c1c653a36..15d419ffb 100644 --- a/emis-biz/src/main/resources/mapper/EmisWriteoffApplyDetailMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisWriteoffApplyDetailMapper.xml @@ -252,6 +252,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" left join emis_site dest_site on w.dispatch_underling_site_code = dest_site.site_code and dest_site.del_flag = '0' + + +