From 1c9471df8902efd9304f37ede4fc9d0353ac7f50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Sun, 18 Oct 2026 14:31:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BB=98=E6=AC=BE=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E5=8F=91=E5=8F=B7=E5=90=AB=E9=80=BB=E8=BE=91=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=8D=A0=E4=BD=8D=E5=B9=B6=E5=8B=BE=E7=A8=BD=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=EF=BC=8C=E9=98=B2=E5=8D=95=E5=8F=B7=E5=A4=8D?= =?UTF-8?q?=E7=94=A8=E6=92=9E=E9=87=91=E8=9D=B6=E9=98=B2=E9=87=8D=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit nextNo 改为含逻辑删除单据取当天最大序号+1,删除后单号不再复用(此前复用同号推送金蝶时按防重键匹配到旧单转更新,报已提交状态下的单据不允许修改);A103-2 勾稽回填前校验金蝶同号单金额与本单一致,不一致拦截并提示财务核实 --- .../mapper/PaymentApplicationMapper.java | 14 ++++++++++++++ .../impl/PaymentApplicationServiceImpl.java | 19 ++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/mapper/PaymentApplicationMapper.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/mapper/PaymentApplicationMapper.java index 770dc202..2f8af3b1 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/mapper/PaymentApplicationMapper.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/mapper/PaymentApplicationMapper.java @@ -21,9 +21,23 @@ package org.springblade.transport.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import org.springblade.transport.pojo.entity.PaymentApplication; +import java.util.List; + /** 付款申请 Mapper。 @author Chill */ @Mapper public interface PaymentApplicationMapper extends BaseMapper { + + /** + * 按前缀查询单号(含逻辑删除单据):发号占位用,删除后的单号不复用, + * 避免 A103-3/A103-1 推送时防重键(awrp_src_code)撞金蝶已有单据(已提交单据不允许修改)。 + * + * @param pattern 单号匹配模式(如 'FKD20261018%') + */ + @Select("SELECT payment_no FROM blade_payment_application WHERE payment_no LIKE #{pattern}") + List selectPaymentNosIncludingDeleted(@Param("pattern") String pattern); + } diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java index f8860776..4b387c48 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/PaymentApplicationServiceImpl.java @@ -1040,6 +1040,13 @@ public class PaymentApplicationServiceImpl extends BaseServiceImpllambdaQuery().likeRight(PaymentApplication::getPaymentNo, prefix)) + 1); } + private String nextNo() { + String prefix = "FKD" + LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE); + // 单号占用含逻辑删除单据:删除后不复用单号,避免推送时防重键撞金蝶已有单据(已提交单据不允许修改) + int max = this.baseMapper.selectPaymentNosIncludingDeleted(prefix + "%").stream() + .map(no -> no.length() > prefix.length() ? no.substring(prefix.length()) : "") + .filter(no -> no.matches("\\d+")) + .map(Integer::valueOf) + .max(Integer::compareTo) + .orElse(0); + return prefix + String.format("%05d", max + 1); + } private BigDecimal nonNegative(BigDecimal value, String name) { if (value == null || value.compareTo(BigDecimal.ZERO) < 0) throw new ServiceException(name + "不能小于0"); return value; } private BigDecimal money(BigDecimal value) { return value == null ? BigDecimal.ZERO : value; } private String limit(String value, int length) { if (value != null && value.length() > length) throw new ServiceException("备注不能超过" + length + "个字符"); return value; }