From 0b224b8379d76b9b069116c1c36a9e92620daaf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com> Date: Wed, 6 Mar 2024 10:26:07 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E8=BD=A8=E8=BF=B9=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=BE=AA=E7=8E=AF=E4=BE=9D=E8=B5=96=E9=97=AE=E9=A2=98=E3=80=81?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E6=98=8E=E7=BB=86=E5=AF=B9=E5=A4=96=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Events/TrackUpsertEvent.cs | 9 +++++++-- .../EventHandlers/TrackUpsertEventHandler.cs | 3 +++ .../Services/ProvideServices/OrderLinkService.cs | 8 ++++++-- .../Services/ProvideServices/TrackQueryService.cs | 4 ++-- .../ProviderService/UpsertTrackInputValidation.cs | 13 +++++++++++++ .../Dtos/TrackTemplate/OrderedTrackCodeDto.cs | 7 ++++++- src/SJZY.Track.Repository/Queries/ProvideQueries.cs | 3 ++- 7 files changed, 39 insertions(+), 8 deletions(-) create mode 100644 src/SJZY.Track.Application/Validations/ProviderService/UpsertTrackInputValidation.cs diff --git a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs index 16d8c9ce..04f91415 100644 --- a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs +++ b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs @@ -18,14 +18,19 @@ public class TrackUpsertEvent : UpsertTrackInput /// 子系统id /// public int SubSystemId { get; set; } - + /// /// 订单是否推送完成(异步维护) /// public bool IsPushCompleted { get; set; } - + /// /// 上游子系统id /// public int UpSubSystemId { get; set; } + + /// + /// 已经处理过的订单 + /// + public List Visited { get; set; } = new(); } \ No newline at end of file diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs index 08969864..fd15e042 100644 --- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs +++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs @@ -32,6 +32,9 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe [CapSubscribe(GlobalConst.TrackUpsertSubscribe)] public async Task ConsumerAsync(TrackUpsertEvent @event) { + if (@event.Visited.Contains(@event.OrderId)) return; + @event.Visited.Add(@event.OrderId); + // 不同子系统需要做内容映射 if (@event.UpSubSystemId != 0 && @event.UpSubSystemId != @event.SubSystemId) { diff --git a/src/SJZY.Track.Application/Services/ProvideServices/OrderLinkService.cs b/src/SJZY.Track.Application/Services/ProvideServices/OrderLinkService.cs index 77805cf7..c4a6d1db 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/OrderLinkService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/OrderLinkService.cs @@ -43,8 +43,10 @@ public class OrderLinkService : ApplicationService if (input.LinkOrderNos.Count < 1 || input.LinkOrderType == 0) return true; - // 单号去重,去空 - input.LinkOrderNos = input.LinkOrderNos.Where(x => !x.IsNullOrWhiteSpace()).Distinct().ToList(); + // 单号去重,去空,去自己 + input.LinkOrderNos = input.LinkOrderNos + .Where(x => !x.IsNullOrWhiteSpace() && x != input.OrderNo) + .Distinct().ToList(); // 解绑 if (!input.IsLink) return await UnLinkOrderAsync(input); @@ -78,6 +80,8 @@ public class OrderLinkService : ApplicationService LinkOrderType = input.LinkOrderType }).ToList()); + // todo:补轨迹 + return true; } diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackQueryService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackQueryService.cs index 8b6fd2cc..6980ef05 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackQueryService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackQueryService.cs @@ -1,7 +1,6 @@ using SJZY.Track.Application.Contract.Dtos.ProvideServices; using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; -using SJZY.Track.Domain.Dtos.Order; using SJZY.Track.Domain.Queries; namespace SJZY.Track.Application.Services.ProvideServices; @@ -91,7 +90,8 @@ public class TrackQueryService : ApplicationService foreach (var orderTemplate in orderTemplates.Where(x => x.OrderNo == item.OrderNo)) { codes.AddRange(templateContent - .Where(t => t.TemplateId == orderTemplate.TemplateId) + .Where(t => t.TemplateId == orderTemplate.TemplateId) // 按模板 + .Where(t => t.IsExternal) // 过滤不对外的 .Select(t => t.Code)); } diff --git a/src/SJZY.Track.Application/Validations/ProviderService/UpsertTrackInputValidation.cs b/src/SJZY.Track.Application/Validations/ProviderService/UpsertTrackInputValidation.cs new file mode 100644 index 00000000..ba7e6366 --- /dev/null +++ b/src/SJZY.Track.Application/Validations/ProviderService/UpsertTrackInputValidation.cs @@ -0,0 +1,13 @@ +using FluentValidation; +using SJZY.Track.Application.Contract.Dtos.ProvideServices; + +namespace SJZY.Track.Application.Validations.ProviderService; + +public class UpsertTrackInputValidation : AbstractValidator, IValidationEnabled +{ + public UpsertTrackInputValidation() + { + RuleFor(x => x.TrackTime).NotNull(); + RuleFor(x => x.TraceTimeZone).NotNull(); + } +} \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Dtos/TrackTemplate/OrderedTrackCodeDto.cs b/src/SJZY.Track.Domain/Dtos/TrackTemplate/OrderedTrackCodeDto.cs index 60362986..cb31744d 100644 --- a/src/SJZY.Track.Domain/Dtos/TrackTemplate/OrderedTrackCodeDto.cs +++ b/src/SJZY.Track.Domain/Dtos/TrackTemplate/OrderedTrackCodeDto.cs @@ -10,5 +10,10 @@ public class OrderedTrackCodeDto /// /// 轨迹内容代码 /// - public string Code { get; set; } + public string Code { get; set; } = null!; + + /// + /// 是否对外 + /// + public bool IsExternal { get; set; } } \ No newline at end of file diff --git a/src/SJZY.Track.Repository/Queries/ProvideQueries.cs b/src/SJZY.Track.Repository/Queries/ProvideQueries.cs index a44a15bc..119ba0aa 100644 --- a/src/SJZY.Track.Repository/Queries/ProvideQueries.cs +++ b/src/SJZY.Track.Repository/Queries/ProvideQueries.cs @@ -57,7 +57,8 @@ public class ProvideQueries : ISugarRepository, IProvideQueries, .Select((a, b) => new OrderedTrackCodeDto { TemplateId = a.TrackTemplateId, - Code = b.Code + Code = b.Code, + IsExternal = a.IsExternal }) .ToListAsync(); }