fix: 付款特批未完成时跳过金蝶同步,特批通过后自动补推
This commit is contained in:
+11
@@ -22,7 +22,9 @@ package org.springblade.transport.listener;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springblade.transport.config.BfiProperties;
|
||||
import org.springblade.transport.constant.HcsSyncConstant;
|
||||
import org.springblade.transport.event.KingdeeBillApprovedEvent;
|
||||
import org.springblade.transport.pojo.entity.PaymentApplication;
|
||||
import org.springblade.transport.service.IFormalSettlementService;
|
||||
import org.springblade.transport.service.IInvoiceApplicationService;
|
||||
import org.springblade.transport.service.IInvoiceReceiptService;
|
||||
@@ -115,6 +117,15 @@ public class KingdeeApprovalSyncListener {
|
||||
if (!bfiProperties.getAutoSync().isPayment()) {
|
||||
return;
|
||||
}
|
||||
// 付款特批未完成(高风险/黑名单/额度超额)时金蝶必然拒推:跳过而非置失败,
|
||||
// 特批通过后由 HcsPaymentSyncSupport 重新发布本事件自动补推
|
||||
PaymentApplication payment = paymentApplicationService.getById(id);
|
||||
if (payment != null && payment.getHcsSpecStatus() != null
|
||||
&& List.of(HcsSyncConstant.SPEC_STATUS_NEED, HcsSyncConstant.SPEC_STATUS_PUSHING,
|
||||
HcsSyncConstant.SPEC_STATUS_PROCESSING).contains(payment.getHcsSpecStatus())) {
|
||||
log.info("付款申请[{}]审批通过自动同步金蝶跳过(付款特批未完成):hcsSpecStatus={}", id, payment.getHcsSpecStatus());
|
||||
return;
|
||||
}
|
||||
log.info("付款申请[{}]审批通过自动同步金蝶开始", id);
|
||||
String kingdeeBillId = paymentApplicationService.syncKingdee(id);
|
||||
log.info("付款申请[{}]审批通过自动同步金蝶完成:kingdeeBillId={}", id, kingdeeBillId);
|
||||
|
||||
+16
@@ -34,8 +34,10 @@ import org.springblade.hcs.config.HcsProperties;
|
||||
import org.springblade.hcs.dto.HcsLegalResultDTO;
|
||||
import org.springblade.transport.constant.HcsSyncConstant;
|
||||
import org.springblade.transport.constant.TransportBusiConstant;
|
||||
import org.springblade.transport.event.KingdeeBillApprovedEvent;
|
||||
import org.springblade.transport.mapper.PaymentApplicationMapper;
|
||||
import org.springblade.transport.pojo.entity.PaymentApplication;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
@@ -66,6 +68,7 @@ public class HcsPaymentSyncSupport {
|
||||
private final HcsProperties hcsProperties;
|
||||
private final HcsSpecPaySyncSupport hcsSpecPaySyncSupport;
|
||||
private final HcsPerfRecordSyncSupport hcsPerfRecordSyncSupport;
|
||||
private final ApplicationEventPublisher eventPublisher;
|
||||
|
||||
/**
|
||||
* 推送付款申请到 HCS:特批(如需)→ 履约记录(新建/更新)→ 回填整体同步状态
|
||||
@@ -140,6 +143,7 @@ public class HcsPaymentSyncSupport {
|
||||
syncPaymentOnSpecResult(payment, HcsSyncConstant.SPEC_STATUS_APPROVED.equals(result));
|
||||
payment.setHcsSpecStatus(result);
|
||||
paymentApplicationMapper.updateById(payment);
|
||||
publishKingdeeAutoSyncOnSpecApproved(payment, result);
|
||||
log.info("HCS特批结果人工确认:paymentNo={},specFdId={},结果={}", payment.getPaymentNo(), payment.getHcsSpecFdId(), result);
|
||||
return "特批结果已确认:" + result;
|
||||
}
|
||||
@@ -179,10 +183,22 @@ public class HcsPaymentSyncSupport {
|
||||
syncPaymentOnSpecResult(payment, HcsSyncConstant.SPEC_STATUS_APPROVED.equals(status));
|
||||
payment.setHcsSpecStatus(status);
|
||||
paymentApplicationMapper.updateById(payment);
|
||||
publishKingdeeAutoSyncOnSpecApproved(payment, status);
|
||||
log.info("付款特批结果推送处理完成:paymentNo={},结果={},reason={}", payment.getPaymentNo(), status, param.getReason());
|
||||
return "特批结果已处理:" + status;
|
||||
}
|
||||
|
||||
/**
|
||||
* 特批通过后自动补推金蝶:审批通过时因特批挂起已跳过同步(见 KingdeeApprovalSyncListener),
|
||||
* 此处重新发布审批通过事件复用同一条自动推送链(开关、失败落库与重推兜底口径不变)
|
||||
*/
|
||||
private void publishKingdeeAutoSyncOnSpecApproved(PaymentApplication payment, String specStatus) {
|
||||
if (!HcsSyncConstant.SPEC_STATUS_APPROVED.equals(specStatus)) {
|
||||
return;
|
||||
}
|
||||
eventPublisher.publishEvent(new KingdeeBillApprovedEvent(KingdeeBillApprovedEvent.BIZ_PAYMENT_APPLICATION, payment.getId()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 特批结果联动付款审批状态(handleLegalResult 与 confirmSpecResult 共用,仅改字段,随 updateById 落库):
|
||||
* approved 恢复"审批通过"展示并放行(审批状态保持 approved,金蝶推送门禁解除);
|
||||
|
||||
Reference in New Issue
Block a user