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'
+
+
+