fix: 修复正式结算单同步金蝶失败原因未落库导致列表仅显示兜底提示

This commit is contained in:
刘泉佳
2026-10-28 19:32:57 +08:00
parent 30ba7c6b3a
commit 830acee00e
@@ -865,16 +865,17 @@ public class FormalSettlementServiceImpl extends BaseServiceImpl<FormalSettlemen
@Transactional(rollbackFor = Exception.class)
public void markKingdeeSyncFailed(Long id, String reason) {
if (id == null) return;
// 条件更新:仅审批通过且未同步的单据落"生成失败"状态,未审批/已同步/已删除单据自动跳过保持原状态
// 失败原因截断留档,与列长 varchar(500) 对齐
String failReason = Func.toStrWithEmpty(reason, "未知异常");
String columnReason = failReason.length() > 500 ? failReason.substring(0, 500) : failReason;
// 条件更新:仅审批通过且未同步的单据落"生成失败"状态与失败原因,未审批/已同步/已删除单据自动跳过保持原状态
int updated = baseMapper.update(null, Wrappers.<FormalSettlement>lambdaUpdate()
.eq(FormalSettlement::getId, id)
.eq(FormalSettlement::getApprovalStatus, TransportBusiConstant.APPROVED)
.ne(FormalSettlement::getKingdeeSyncStatus, KingdeeBfiConstant.KINGDEE_STATUS_SYNCED)
.set(FormalSettlement::getKingdeeSyncStatus, KingdeeBfiConstant.KINGDEE_STATUS_FAILED));
.set(FormalSettlement::getKingdeeSyncStatus, KingdeeBfiConstant.KINGDEE_STATUS_FAILED)
.set(FormalSettlement::getKingdeeFailReason, columnReason));
if (updated > 0) {
// 失败原因截断留档,与列长 varchar(500) 对齐
String failReason = Func.toStrWithEmpty(reason, "未知异常");
String columnReason = failReason.length() > 500 ? failReason.substring(0, 500) : failReason;
// 结算调整单回填:未推送场景审批通过后自动推送失败,调整单置 failed + 失败原因供「推送金蝶」重试
settlementAdjustmentMapper.update(null, Wrappers.<SettlementAdjustment>lambdaUpdate()
.eq(SettlementAdjustment::getFormalSettlementId, id)