diff --git a/src/SJZY.Track.Application.Contract/Dtos/Warning/Complete/CompleteWarningDetailsDto.cs b/src/SJZY.Track.Application.Contract/Dtos/Warning/Complete/CompleteWarningDetailsDto.cs index f4e14d89..39285568 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/Warning/Complete/CompleteWarningDetailsDto.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/Warning/Complete/CompleteWarningDetailsDto.cs @@ -59,9 +59,9 @@ public class CompleteWarningDetailsDto public string CustomName { get; set; } /// - /// 缺失轨迹状态 + /// 缺失轨迹状态 e.g [ {1:"状态1",2:"状态2"} , {3:"状态3",4:"状态4"} ] /// - public List MissingTrackStatus { get; set; } + public List> MissingTrackStatus { get; set; } //视图属性 tips:从es即时拿取 diff --git a/src/SJZY.Track.Application/Services/Warning/CompleteWarningService.cs b/src/SJZY.Track.Application/Services/Warning/CompleteWarningService.cs index e956fd80..aed5db94 100644 --- a/src/SJZY.Track.Application/Services/Warning/CompleteWarningService.cs +++ b/src/SJZY.Track.Application/Services/Warning/CompleteWarningService.cs @@ -1,3 +1,4 @@ +using Nest; using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.Track.Application.Contract.Dtos.Warning; using SJZY.Track.Application.Contract.Dtos.Warning.Complete; @@ -180,7 +181,7 @@ public class CompleteWarningService : ApplicationService Status = x.Status, CustomId = x.CustomId, CustomName = customDict.GetValueOrDefault(x.CustomId, GlobalConst.EmptyString), - MissingTrackStatus = BuildMissingTrackStatus(x.MissingTrackStatusIds), + MissingTrackStatus = BuildMissingTrackStatus(x), LatestTrackStatus = orderIdTrack?.TrackStatus, LatestTrackContent = orderIdTrack?.TrackContent, LatestTrackPlace = orderIdTrack?.TrackPlace, @@ -213,22 +214,11 @@ public class CompleteWarningService : ApplicationService } // 构建缺失轨迹状态 - List BuildMissingTrackStatus(string statusIds) + List> BuildMissingTrackStatus(CompleteWarningDetailsIndex detail) { - var trackStatus = statusIds.Split(',').Select(x => - { - if (!int.TryParse(x, out var id)) return null; - - var trackStatusName = trackStatusDict.GetValueOrDefault(id); - if (string.IsNullOrWhiteSpace(trackStatusName)) return null; - return new TrackStatusDto - { - TrackStatusId = id, - TrackStatus = trackStatusName - }; - }).Where(x => x != null); - - return trackStatus.ToList()!; + return detail.GetMissingTrackStatusIdGroups() + .Select(g => g.ToDictionary(id => id.ToString(), id => trackStatusDict.GetValueOrDefault(id, GlobalConst.EmptyString))) + .ToList(); } // 格式化时区 diff --git a/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Complete/CompleteWarningDetailsIndex.cs b/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Complete/CompleteWarningDetailsIndex.cs index 1a915873..bf529ce9 100644 --- a/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Complete/CompleteWarningDetailsIndex.cs +++ b/src/SJZY.Track.Domain/Aggregates/WarningAggregate/Complete/CompleteWarningDetailsIndex.cs @@ -42,4 +42,12 @@ public sealed class CompleteWarningDetailsIndex : IdBaseIndex //审计属性 public DateTime CreateTime { get; set; } // 预警创建时间 public DateTime? ProcessedTime { get; set; } // 预警处理时间 + + public List> GetMissingTrackStatusIdGroups() + { + return MissingTrackStatusIds + .Split(",") + .Select(g => g.Split('/').Select(int.Parse).ToHashSet()) + .ToList(); + } }