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();
}