From 3acd1afd66ca3cf246f6326f0e15b7dc71f87f52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Fri, 6 Nov 2026 14:24:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E4=BB=98=E6=AC=BE?= =?UTF-8?q?=E7=94=B3=E8=AF=B7A103-2=E8=BF=9E=E7=BB=AD=E4=B8=A4=E8=BD=AE?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=B6=88=E5=A4=B1=E8=87=AA=E5=8A=A8=E8=A7=A3?= =?UTF-8?q?=E9=94=81=E5=85=9C=E5=BA=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 回写未查得不再Redis计数解锁,保持现状等待下一轮;unlockBill 仅保留金蝶删单回调触发,避免金蝶单据实际存在时误解锁清空本地金蝶单据编号/内码 - 附三笔误解锁单据(FKSQ-00000287/88/89)还原SQL:doc/sql/transport/lqj/temp/restore_3_payment_application_kingdee_unlock_20261106.sql --- .../service/IPaymentApplicationService.java | 9 ++- .../impl/KingdeeBillLockServiceImpl.java | 4 +- .../impl/PaymentApplicationServiceImpl.java | 65 +------------------ 3 files changed, 8 insertions(+), 70 deletions(-) diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/IPaymentApplicationService.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/IPaymentApplicationService.java index 5824514a..1cf969ba 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/IPaymentApplicationService.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/IPaymentApplicationService.java @@ -89,14 +89,13 @@ public interface IPaymentApplicationService extends BaseService log.warn("金蝶删单回调暂不支持的单据类型:targetBillType={}(映射预留)", lockRecord.getTargetBillType()); 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 4c4b0e0f..8f81a0f0 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 @@ -26,7 +26,6 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; -import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.jackson.JsonUtil; import org.springblade.core.tool.utils.BeanUtil; @@ -135,7 +134,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; -import java.util.concurrent.TimeUnit; import java.util.function.Consumer; import java.util.stream.Collectors; @@ -153,12 +151,6 @@ public class PaymentApplicationServiceImpl extends BaseServiceImpl= PAY_RESULT_MISS_UNLOCK_ROUNDS) { - log.warn("付款申请[{}]A103-2 连续[{}]轮未查得金蝶付款申请单,判定金蝶侧已反审核删除,执行解锁", - application.getPaymentNo(), rounds); - self().unlockBill(application.getId(), "A103-2 连续" + rounds + "轮查询消失"); - } else { - log.warn("付款申请[{}]A103-2 未查得金蝶付款申请单(第[{}]轮),金蝶侧可能已反审核删除,下一轮复核", - application.getPaymentNo(), rounds); - } - } - - /** A103-2 消失轮次计数键 */ - private String payApplyMissKey(Long id) { - return PAY_RESULT_MISS_KEY_PREFIX + id; - } - - /** 清除 A103-2 消失轮次计数(金蝶重新查得或单据解锁后调用) */ - private void clearPayApplyMissKey(Long id) { - if (id == null) return; - try { - bladeRedis.getStringRedisTemplate().delete(payApplyMissKey(id)); - } catch (Exception exception) { - log.warn("付款申请[{}]清除 A103-2 消失轮次计数失败", id, exception); - } - } - @Override public List syncKingdeeBatch(List ids) { if (ids == null || ids.isEmpty()) throw new ServiceException("请至少选择一条审批通过的付款申请"); @@ -963,7 +905,7 @@ public class PaymentApplicationServiceImpl extends BaseServiceImpl payApplyMap.putAll(this.latestPayApplyBySrcCode(this.queryPayApplyPagesByBillNo(batch)))); this.batchForeach(fallbackSrcCodes, PAY_RESULT_QUERY_BATCH, batch -> payApplyMap.putAll(this.latestPayApplyBySrcCode(this.queryPayApplyPages(batch)))); - // 逐单回写:查得即回填并清零消失计数;未查得累计消失轮次(批次其余单据正常返回,排除服务整体故障) + // 逐单回写:未查得保持现状等待下一轮,查得即回填(解锁仅由金蝶删单回调触发) for (PaymentApplication application : applications) { BfiPayApplyVO payApply = payApplyMap.get(application.getPaymentNo()); if (payApply == null) { - // 累计消失轮次,连续两轮视为金蝶已反审核删除,解锁置失败交人工核实重推 - this.handlePayApplyMissed(application); continue; } - this.clearPayApplyMissKey(application.getId()); try { // 返回 true 表示付款完成(终态),预结算/正式结算联动由 applyPayApplyResult 内部处理 if (self.applyPayApplyResult(application, payApply)) {