diff --git a/src/SJZY.Track.Application.Contract/Events/TrackDeleteEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackDeleteEvent.cs index cbf0e16b..f395e972 100644 --- a/src/SJZY.Track.Application.Contract/Events/TrackDeleteEvent.cs +++ b/src/SJZY.Track.Application.Contract/Events/TrackDeleteEvent.cs @@ -26,4 +26,10 @@ public class TrackDeleteEvent /// 已经处理过的订单 /// public List Visited { get; set; } = new(); + + public override string ToString() + { + return $"[TrackDelete by {OperationMan}] SubSystemId: {SubSystemId}, OrderIds: {string.Join(",", + OrderIds)}, TrackCodes: {string.Join(",", TrackCodes)}"; + } } diff --git a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs index cb4fcdf4..021c5da6 100644 --- a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs +++ b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs @@ -58,4 +58,11 @@ public class TrackUpsertEvent /// 时区缺失和发生地缺失标记,1表示时区,2表示发生地,3表示两种 /// public int DeficiencyTagValue { get; set; } + + public override string ToString() + { + return + $"[{(IsAdd ? "TrackInsert" : "TrackUpdate")} by {OperationMan}] SubSystemId: {SubSystemId}, OrderIds: {string.Join(",", + OrderIdentifiers.Select(x => x.OrderId))}, TrackCode: {TrackCode}, TrackPlace: {TrackPlace}, TrackTime: {TrackTime}"; + } } diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs index 0757ab91..91baa677 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs @@ -32,7 +32,7 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe var dup = @event.Visited.Intersect(@event.OrderIds).ToArray(); if (dup.Any()) { - LogHelper.Error($"删除轨迹时,发现循环依赖:{dup.JoinAsString(",")}"); + LogHelper.Warn($"删除轨迹时,发现循环依赖:{dup.JoinAsString(",")}", true); return; } @@ -58,7 +58,7 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe if (mapCodes.Count == 0) { - //throw new BusinessException(message: "订单跨子系统,未配置内容映射,请联系管理员"); + LogHelper.Warn($"订单跨子系统,未配置内容映射,请联系管理员:{@event}", true); continue; } diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs index dc157801..af36c318 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs @@ -36,7 +36,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe var dup = @event.Visited.Intersect(orderIds).ToArray(); if (dup.Any()) { - LogHelper.Error($"{(@event.IsAdd ? "添加" : "修改")}轨迹时,发现循环依赖:{dup.JoinAsString(",")}"); + LogHelper.Warn($"{(@event.IsAdd ? "添加" : "修改")}轨迹时,发现循环依赖:{dup.JoinAsString(",")}", true); return; } @@ -108,20 +108,19 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe private async Task HandleTrackAsync(TrackUpsertEvent @event, List canNextOrderIds) { - var content = await _provideQueries.GetTrackContentAsync(@event.SubSystemId, @event.TrackCode); + var trackContent = await _provideQueries.GetTrackContentAsync(@event.SubSystemId, @event.TrackCode); - if (content == null) return; + if (trackContent == null) + { + // 找不到轨迹内容,直接结束 + LogHelper.Warn($"找不到轨迹内容:{@event}", true); + return; + } var orderIds = @event.OrderIdentifiers.Select(x => x.OrderId).ToArray(); - var tracks = await _trackDetailsRepository.GetListAsync(orderIds, @event.TrackCode, true); - // important:轨迹code相同,时间、发生地不同的,允许存在多条!! - var newOrderIds = orderIds - .Except(tracks - .Where(x => x.TrackTime == @event.TrackTime && x.TrackPlace == @event.TrackPlace) - .Select(x => x.OrderId) - ).ToArray(); - var trackContents = await _provideQueries.MatchTrackContentAsync(newOrderIds, @event.TrackCode); + // important:轨迹code相同,时间、发生地不同的,可能存在多条!! + var tracks = await _trackDetailsRepository.GetListAsync(orderIds, @event.TrackCode, true); var insertTracks = new List(); @@ -148,22 +147,12 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe OriginTrackContent = @event.TrackRefreshData.OriginTrackContent ?? GlobalConst.EmptyString, OriginTrackDataHash = @event.TrackRefreshData.OriginTrackDataHash ?? GlobalConst.EmptyString, CreateUser = @event.OperationMan ?? GlobalConst.SystemUser, - CreateTime = DateTime.Now + CreateTime = DateTime.Now, + TrackStatus = trackContent.TrackStatus, + TrackContent = trackContent.TrackContent, + TrackEnContent = trackContent.TrackEnContent }; - // 根据轨迹code在订单模板内容中寻找匹配的 - var trackContent = trackContents.FirstOrDefault(x => x.OrderId == order.OrderId); - if (trackContent == default) - { - // 订单所绑定的模板,没有一条内容可以匹配发生的轨迹 - continue; - } - - track.TrackStatus = trackContent.Status; - track.TrackCode = trackContent.TrackCode; - track.TrackContent = trackContent.Content; - track.TrackEnContent = trackContent.EnContent; - track.IsCanDelete = trackContent.IsCanDelete; track.ZeroTrackTime = Math.Abs(track.TrackTimeZone - GlobalConst.NoneTrackTimeZone) < 1 ? track.TrackTime : track.TrackTime.Subtract(TimeSpan.FromHours(track.TrackTimeZone)); @@ -199,9 +188,9 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe CustomId = @event.CustomId, OrderIds = canNextOrderIds.ToArray(), IsCompleted = @event.TrackRefreshData.IsCompleted, - TrackContent = content.TrackContent, - TrackEnContent = content.TrackEnContent, - TrackStatusId = content.TrackStatusId, + TrackContent = trackContent.TrackContent, + TrackEnContent = trackContent.TrackEnContent, + TrackStatusId = trackContent.TrackStatusId, TrackPlace = @event.TrackPlace, TrackTime = @event.TrackTime, TrackTimeZone = @event.TrackTimeZone, @@ -219,8 +208,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe TrackCode = @event.TrackCode, SystemPushInfo = new SystemPushStruct { - TrackStatus = content.TrackStatus, - TrackContent = content.TrackContent, + TrackStatus = trackContent.TrackStatus, + TrackContent = trackContent.TrackContent, TrackPlace = @event.TrackPlace, TrackTime = @event.TrackTime, TrackTimeZone = @event.TrackTimeZone diff --git a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs index 0e3311c7..4369adb7 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs @@ -82,11 +82,6 @@ public class TrackDetailsIndex : IdBaseIndex /// public DateTime ZeroTrackTime { get; set; } - /// - /// 是否可删 - /// - public bool IsCanDelete { get; set; } - /// /// 创建人 /// diff --git a/src/SJZY.Track.Domain/Dtos/TrackDetails/MatchTrackContentDto.cs b/src/SJZY.Track.Domain/Dtos/TrackDetails/MatchTrackContentDto.cs deleted file mode 100644 index f5fca327..00000000 --- a/src/SJZY.Track.Domain/Dtos/TrackDetails/MatchTrackContentDto.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace SJZY.Track.Domain.Dtos.TrackDetails; - -public class MatchTrackContentDto -{ - /// - /// 订单Id - /// - public int OrderId { get; set; } - - /// - /// 轨迹内容code - /// - public string TrackCode { get; set; } = null!; - - /// - /// 轨迹内容 - /// - public string Content { get; set; } = null!; - - /// - /// 轨迹内容英文 - /// - public string EnContent { get; set; } = null!; - - /// - /// 轨迹状态 - /// - public string Status { get; set; } = null!; - - /// - /// 是否可删 - /// - public bool IsCanDelete { get; set; } -} diff --git a/src/SJZY.Track.Domain/Dtos/TrackDetails/MatchTrackContentsDto.cs b/src/SJZY.Track.Domain/Dtos/TrackDetails/MatchTrackContentsDto.cs deleted file mode 100644 index 22aba6a0..00000000 --- a/src/SJZY.Track.Domain/Dtos/TrackDetails/MatchTrackContentsDto.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace SJZY.Track.Domain.Dtos.TrackDetails; - -public class MatchTrackContentsDto -{ - /// - /// 轨迹代码 - /// - public string TrackCode { get; set; } = null!; - - /// - /// 是否支持删除 - /// - public bool IsCanDelete { get; set; } -} diff --git a/src/SJZY.Track.Domain/Dtos/TrackDetails/TrackDetailsQueryInput.cs b/src/SJZY.Track.Domain/Dtos/TrackDetails/TrackDetailsQueryInput.cs deleted file mode 100644 index c78da560..00000000 --- a/src/SJZY.Track.Domain/Dtos/TrackDetails/TrackDetailsQueryInput.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace SJZY.Track.Domain.Dtos.TrackDetails; - -public class TrackDetailsQueryInput : PageInfoInput -{ - /// - /// 单号 - /// - public List OrderNos { get; set; } = new(); -} diff --git a/src/SJZY.Track.Domain/Queries/IProvideQueries.cs b/src/SJZY.Track.Domain/Queries/IProvideQueries.cs index 92d5f54b..7538ab8a 100644 --- a/src/SJZY.Track.Domain/Queries/IProvideQueries.cs +++ b/src/SJZY.Track.Domain/Queries/IProvideQueries.cs @@ -1,6 +1,5 @@ using SJZY.Track.Domain.Dtos.Order; using SJZY.Track.Domain.Dtos.TrackContents; -using SJZY.Track.Domain.Dtos.TrackDetails; namespace SJZY.Track.Domain.Queries; @@ -9,14 +8,6 @@ namespace SJZY.Track.Domain.Queries; /// public interface IProvideQueries { - /// - /// 根据订单id找到订单模板,匹配模板命中的轨迹内容 - /// - /// 订单ids - /// 轨迹代码 - /// - Task> MatchTrackContentAsync(int[] orderIds, string code); - /// /// 根据子系统内容映射,得到映射后的轨迹code /// diff --git a/src/SJZY.Track.Repository/Queries/ProvideQueries.cs b/src/SJZY.Track.Repository/Queries/ProvideQueries.cs index 76d227b7..8436806d 100644 --- a/src/SJZY.Track.Repository/Queries/ProvideQueries.cs +++ b/src/SJZY.Track.Repository/Queries/ProvideQueries.cs @@ -1,10 +1,8 @@ using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.TrackContentAggregate; using SJZY.Track.Domain.Aggregates.TrackStatusAggregate; -using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate; using SJZY.Track.Domain.Dtos.Order; using SJZY.Track.Domain.Dtos.TrackContents; -using SJZY.Track.Domain.Dtos.TrackDetails; using SJZY.Track.Domain.Queries; using SJZY.Track.Domain.VEntities; @@ -24,26 +22,6 @@ public class ProvideQueries : ISugarRepository, IProvideQueries, Context = SqlsugarScopeBasic.GetContextSafely("default"); } - /// - public async Task> MatchTrackContentAsync(int[] orderIds, string code) - { - if (orderIds.Length == 0) return new List(); - return await Context.Queryable() - .LeftJoin((x, a) => x.TrackTemplateId == a.TrackTemplateId) - .LeftJoin((x, a, b) => a.TrackContentId == b.Id) - .LeftJoin((x, a, b, c) => b.TrackStatusId == c.Id) - .Where((x, a, b) => orderIds.Contains(x.OrderId) && b.Code == code) - .Select((x, a, b, c) => new MatchTrackContentDto - { - OrderId = x.OrderId, - TrackCode = b.Code, - Content = b.Content, - EnContent = b.EnContent, - Status = c.Status - }) - .ToListAsync(); - } - /// public async Task> MapTrackCodesAsync(int upSubSystemId, int subSystemId, params string[] trackCodes) {