From fae534a2562d47432f642389768e676679123600 Mon Sep 17 00:00:00 2001
From: xiaolipro <2357729423@qq.com>
Date: Tue, 3 Sep 2024 17:41:33 +0800
Subject: [PATCH] =?UTF-8?q?=E3=80=904.=E5=AF=B9=E5=A4=96=E8=BD=A8=E8=BF=B9?=
=?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=BD=A8=E8=BF=B9=E7=9A=84=E6=8E=A5=E5=8F=A3?=
=?UTF-8?q?=E3=80=91=20https://www.tapd.cn/60863849/prong/tasks/view/11608?=
=?UTF-8?q?63849001027880?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Dtos/ProvideServices/GetTrackInput.cs | 5 ----
.../Dtos/ProvideServices/GetTrackOutput.cs | 13 +++++++++
.../ProvideServices/TrackService.Query.cs | 28 +++++++++++++++++--
.../Services/ProvideServices/TrackService.cs | 11 ++++----
4 files changed, 43 insertions(+), 14 deletions(-)
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;
}