fix: 首次创建轨迹订单无跟踪号时用客户单号占位
All checks were successful
Build and Deploy / deploy (push) Successful in 1m1s

轨迹侧 TrackNo 必填,后续有真实跟踪号再 Upsert 更新。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zzh 2026-10-15 09:14:52 +08:00
parent 5fd25d479c
commit a30958843b
2 changed files with 26 additions and 4 deletions

View File

@ -68,10 +68,18 @@ internal sealed class SmallBagTrackUpsertRequestBuilder(
} }
/// <summary> /// <summary>
/// 仅取运单跟踪号;无值则空串,不回落运单号/客户单号等。 /// 轨迹侧 TrackNo 必填。有真实跟踪号用跟踪号;尚未下发时先用客户单号占位,后续有 TrackNo 再 Upsert 更新。
/// </summary> /// </summary>
internal static string ResolveTrackNo(Order order) => internal static string ResolveTrackNo(Order order)
order.TrackNo?.Trim() ?? string.Empty; {
var trackNo = order.TrackNo?.Trim() ?? string.Empty;
if (!string.IsNullOrWhiteSpace(trackNo))
{
return trackNo;
}
return order.ClientNo?.Trim() ?? string.Empty;
}
internal static string? PickSupplierCodeFromProviders( internal static string? PickSupplierCodeFromProviders(
IEnumerable<SalesProductAllocationProviderSnapshotDto> providers, IEnumerable<SalesProductAllocationProviderSnapshotDto> providers,

View File

@ -20,14 +20,28 @@ public class SmallBagTrackUpsertRequestBuilderTests
} }
[Fact] [Fact]
public void ResolveTrackNo_EmptyWhenTrackNoMissing() public void ResolveTrackNo_FallsBackToClientNoWhenTrackNoMissing()
{ {
var order = new Order var order = new Order
{ {
ServiceNo = "IDE2607221859123456", ServiceNo = "IDE2607221859123456",
ClientNo = "CNO-001",
TrackNo = null TrackNo = null
}; };
Assert.Equal("CNO-001", SmallBagTrackUpsertRequestBuilder.ResolveTrackNo(order));
}
[Fact]
public void ResolveTrackNo_EmptyWhenTrackNoAndClientNoMissing()
{
var order = new Order
{
ServiceNo = "IDE2607221859123456",
TrackNo = null,
ClientNo = null
};
Assert.Equal(string.Empty, SmallBagTrackUpsertRequestBuilder.ResolveTrackNo(order)); Assert.Equal(string.Empty, SmallBagTrackUpsertRequestBuilder.ResolveTrackNo(order));
} }