diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackInput.cs index fbfeef37..4476f53f 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackInput.cs @@ -34,9 +34,4 @@ public enum SortMethod /// 按轨迹发生时间降序 /// ByTrackTimeDesc, - - /// - /// 按订单模板排序 - /// - ByTemplate } diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs index feaf64f9..72df17e3 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs @@ -17,6 +17,19 @@ public class TrackDetail public string? Content { get; set; } public string? OriginContent { get; set; } public string Location { get; set; } = null!; + + /// + /// 发生时间 + /// public DateTime Time { get; set; } + + /// + /// 轨迹时区 + /// public float? TimeZone { get; set; } + + /// + /// 是否对外 + /// + public bool IsDisplay { get; set; } } diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs index e5bb28c6..19db347d 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs @@ -1,6 +1,7 @@ using SJZY.Track.Application.Contract.Dtos.ProvideServices; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Consts; +using SJZY.UserCenter.HttpApi.Services; namespace SJZY.Track.Application.Services.ProvideServices; @@ -25,11 +26,32 @@ public partial class TrackService throw new BusinessException(message: "最多只能查询500单"); } + var subSystemId = CurrentUserRequest.SubSystemId; + var res = new List(); input.OrderNos = input.OrderNos.Where(x => !x.IsNullOrWhiteSpace()).Distinct().ToList(); // 单号去重、去空 var details = await _trackDetailsRepository.GetListAsync(input.OrderType, input.OrderNos); + // 是否对外 + var trackCodes = details.Select(x => x.TrackCode) + .Where(x => x != GlobalConst.EmptyString) + .Distinct() + .ToList(); + + var trackContentDic = new Dictionary(); + if (!trackCodes.IsNullOrEmpty()) + { + var trackContents = await _trackContentRepository.GetListAsync(x => + x.SubSystemId == subSystemId && trackCodes.Contains(x.Code), + x => new + { + x.Code, + x.IsExternal + }); + trackContents.ForEach(x => trackContentDic.Add(x.Code, x.IsExternal)); + } + foreach (var group in details.GroupBy(x => x.OrderId)) { var item = new GetTrackOutput(); @@ -48,12 +70,14 @@ public partial class TrackService : x.ZeroTrackTime.AddHours(input.TimeZone ?? 8), TimeZone = Math.Abs(x.TrackTimeZone - GlobalConst.NoneTrackTimeZone) < 1 ? null - : input.TimeZone ?? 8 + : input.TimeZone ?? 8, + IsDisplay = trackContentDic.TryGetValue(x.TrackCode, out var isExternal) && isExternal }).ToList(); res.Add(item); } + // 排序 TracksOrdered(res, input); return new UnifyResultDto>(true, res, "操作成功"); @@ -70,8 +94,6 @@ public partial class TrackService case SortMethod.ByTrackTimeDesc: list.ForEach(item => item.TrackDetails.Sort((a, b) => b.Time.CompareTo(a.Time))); break; - case SortMethod.ByTemplate: - break; default: throw new ArgumentOutOfRangeException(nameof(input.SortMethod), input.SortMethod, "不支持的排序方式"); } diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs index 3edb1e64..1ce25fd7 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs @@ -3,9 +3,9 @@ using SJZY.Track.Application.Contract.Dtos.ProvideServices; using SJZY.Track.Application.Contract.Events; using SJZY.Track.Application.Contract.Services; using SJZY.Track.Domain.Aggregates.OrderAggregate; +using SJZY.Track.Domain.Aggregates.TrackContentAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Consts; -using SJZY.Track.Domain.Queries; using SJZY.UserCenter.HttpApi.Services; using Volo.Abp.Http.Client.DynamicProxying; @@ -20,17 +20,16 @@ public partial class TrackService : ApplicationService, ITrackService { private readonly ICapPublisher _capPublisher; private readonly IOrderRepository _orderRepository; - private readonly IProvideQueries _provideQueries; private readonly IHttpClientProxy _requestCurrentUserService; + private readonly ITrackContentRepository _trackContentRepository; - public TrackService(IOrderRepository orderRepository, IProvideQueries provideQueries, ICapPublisher capPublisher, - ITrackDetailsRepository trackDetailsRepository, + public TrackService(IOrderRepository orderRepository, ICapPublisher capPublisher, + ITrackDetailsRepository trackDetailsRepository, ITrackContentRepository trackContentRepository, IHttpClientProxy requestCurrentUserService) { _orderRepository = orderRepository; - _provideQueries = provideQueries; - _provideQueries = provideQueries; _capPublisher = capPublisher; + _trackContentRepository = trackContentRepository; _requestCurrentUserService = requestCurrentUserService; _trackDetailsRepository = trackDetailsRepository; }