diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/FormalSettlementServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/FormalSettlementServiceImpl.java index 9e9f1b1e..497919f0 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/FormalSettlementServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/FormalSettlementServiceImpl.java @@ -865,16 +865,17 @@ public class FormalSettlementServiceImpl extends BaseServiceImpl 500 ? failReason.substring(0, 500) : failReason; + // 条件更新:仅审批通过且未同步的单据落"生成失败"状态与失败原因,未审批/已同步/已删除单据自动跳过保持原状态 int updated = baseMapper.update(null, Wrappers.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.lambdaUpdate() .eq(SettlementAdjustment::getFormalSettlementId, id)