update: 补充入参模型

This commit is contained in:
hardstylewyl 2025-01-13 16:31:44 +08:00
parent 60324b0e26
commit 183ea314e3
4 changed files with 49 additions and 2 deletions

View File

@ -10,4 +10,14 @@ public class BatchDeleteTrackInput : OrderNosInfo
[Required]
[MaxLength(500)]
public List<TrackIdentifierDto> TrackIdentifiers { get; set; } = new();
/// <summary>
/// 重复的情况下,用什么字段比较
/// </summary>
public string? CompareFields { get; set; }
/// <summary>
/// 重复的情况下,比较值
/// </summary>
public object? CompareValue { get; set; }
}

View File

@ -17,4 +17,14 @@ public class DeleteTrackInput : OrderNoInfo
/// 轨迹ESId集合,非必填,如果有优先级最高
/// </summary>
public List<string>? EsIds { get; set; }
/// <summary>
/// 重复的情况下,用什么字段比较
/// </summary>
public string? CompareFields { get; set; }
/// <summary>
/// 重复的情况下,比较值
/// </summary>
public object? CompareValue { get; set; }
}

View File

@ -9,4 +9,14 @@ public class PushTrackInput : OrderNosInfo
/// </summary>
[Required]
public string TrackCode { get; set; } = null!;
/// <summary>
/// 重复的情况下,用什么字段比较
/// </summary>
public string? CompareFields { get; set; }
/// <summary>
/// 重复的情况下,比较值
/// </summary>
public object? CompareValue { get; set; }
}

View File

@ -245,7 +245,7 @@ public partial class TrackService : ApplicationService, ITrackService
var extraDict = System.Text.Json.JsonSerializer.Deserialize<Dictionary<string, object>>(y.Extra);
if (extraDict!.TryGetValue(input.CompareFields!, out var compareValue))
{
//tips:可能会有问题
//todo:需要修改JsonElement和object的逻辑
return compareValue.Equals(input.CompareValue);
}
@ -358,7 +358,24 @@ public partial class TrackService : ApplicationService, ITrackService
TrackSourceEnum.ExternalServiceProvide);
//当要删除的轨迹标识出现交叉则不允许删除
var intersect = tracks.Select(x => $"{x.TrackCode}{x.TrackTime}")
var intersect = tracks
.WhereIf(!input.CompareFields.IsNullOrWhiteSpace(), y =>
{
if (string.IsNullOrWhiteSpace(y.Extra))
{
throw new BusinessException(message: "轨迹extra为空无法使用比较字段比较,请检查轨迹");
}
var extraDict = System.Text.Json.JsonSerializer.Deserialize<Dictionary<string, object>>(y.Extra);
if (extraDict!.TryGetValue(input.CompareFields!, out var compareValue))
{
//todo:需要修改JsonElement和object的逻辑
return compareValue.Equals(input.CompareValue);
}
return false;
})
.Select(x => $"{x.TrackCode}{x.TrackTime}")
.Intersect(input.TrackIdentifiers.Select(y => $"{y.TrackCode}{y.TrackTime}")).ToList();
if (intersect.Count > 0)
{