From cc32f5b2fda0cfa27236f745b8e8440973400603 Mon Sep 17 00:00:00 2001 From: hardstylewyl <827778732@qq.com> Date: Fri, 20 Dec 2024 15:21:36 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E6=8E=A8=E9=80=81=E8=A1=8C=E4=B8=BA?= =?UTF-8?q?=E9=99=90=E5=88=B6=E6=8E=A8=E9=80=81=E9=85=8D=E7=BD=AE=E7=9A=84?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=B1=BB=E5=9E=8B=E5=92=8C=E8=A6=81=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E7=9A=84=E8=BD=A8=E8=BF=B9=E6=89=80=E5=B1=9E=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=9A=84=E8=AE=A2=E5=8D=95=E7=B1=BB=E5=9E=8B=E5=BF=85?= =?UTF-8?q?=E9=A1=BB=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit update: 进行删除/推送操作时,订单无轨迹时轨迹代码下拉应该显示为空, - 删除过滤外部服务商轨迹 - 推送过滤订单类型不一致轨迹 opt: 配置MQ,舰艇和轨迹推送完成回传 --- .../EventHandlers/TrackPushEventHandler.cs | 8 +++++++ .../Rabbit/TrackPushCompletedEventHandler.cs | 4 ++-- .../TrackContents/TrackContentService.cs | 24 +++++++++++++------ .../SjzyTrackApplicationModule.cs | 16 ++++++++++++- 4 files changed, 42 insertions(+), 10 deletions(-) diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs index 0dcaf748..7431244e 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs @@ -100,7 +100,9 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe // 推送新增,需要根据上一次的推送 推断 本次推送 是否可行 config = GetValidPushConfigAsync(_pushConfigs, order.LatestPushTrackCode, @event.TrackCode); if (config == null) continue; + // 是否自动推送 if (!config.IsAutoPush) continue; + //配置的类型如何和订单类型不一致则不允许推送 if (config.OrderType != order.OrderType) continue; var log = new TrackPushRecordIndex @@ -142,6 +144,9 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe if (config == null) continue; + //配置的类型如何和订单类型不一致则不允许推送 + if (config.OrderType != order.OrderType) continue; + var log = new TrackPushRecordIndex { OptionType = @event.OptionType.ToString(), @@ -202,6 +207,9 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe var items = new List(); foreach (var order in _orders) { + //配置的类型如何和订单类型不一致则不允许推送 + if (config.OrderType != order.OrderType) continue; + var log = new TrackPushRecordIndex { OptionType = @event.OptionType.ToString(), diff --git a/src/SJZY.Track.Application/Rabbit/TrackPushCompletedEventHandler.cs b/src/SJZY.Track.Application/Rabbit/TrackPushCompletedEventHandler.cs index e467213d..5dd5e7ed 100644 --- a/src/SJZY.Track.Application/Rabbit/TrackPushCompletedEventHandler.cs +++ b/src/SJZY.Track.Application/Rabbit/TrackPushCompletedEventHandler.cs @@ -67,11 +67,11 @@ public class TrackPushCompletedEventHandler : ITransientDependency, IRabbitHandl var optionType = Base64Helper.DeSerialize(@event.Attach); if (optionType == OptionType.新增.ToString()) { - logStr = JsonConvert.DeserializeObject(@event.RequestParams)!.Log; + logStr = JsonConvert.DeserializeObject>(@event.RequestParams)!.First().Log; } else if (optionType == OptionType.修改.ToString()) { - logStr = JsonConvert.DeserializeObject(@event.RequestParams)!.Log; + logStr = JsonConvert.DeserializeObject>(@event.RequestParams)!.First().Log;; } if (logStr.IsNullOrEmpty()) throw new InvalidOperationException(); diff --git a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs index 78c97d7b..95fed12e 100644 --- a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs +++ b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs @@ -13,7 +13,6 @@ using SJZY.Track.Domain.Aggregates.TrackFlagAggregate; using SJZY.Track.Domain.Aggregates.TrackStatusAggregate; using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate; using SJZY.Track.Domain.Dtos.TrackContents; -using SJZY.Track.Domain.Dtos.TrackTemplate; using SJZY.Track.Domain.Enums; using SJZY.Track.Domain.Queries; @@ -290,6 +289,11 @@ public class TrackContentService : ApplicationService if (order == default) throw new BusinessException(message: "订单不存在!"); + var res = new UnifyResultDto>(true) + { + Data = new List() + }; + //获取轨迹详情 var trackDetails = await _trackDetailsEsRepository.GetListAsync(order.Id); @@ -298,6 +302,17 @@ public class TrackContentService : ApplicationService { trackDetails = trackDetails.Where(m => m.Source != (int) TrackSourceEnum.ExternalServiceProvide).ToList(); } + //进行推送时,匹配订单类型一致的轨迹 + if (input.TrackOptionType == TrackOptionType.推送) + { + trackDetails = trackDetails.Where(t => t.OrderType == order.OrderType).ToList(); + } + + //进行删除和推送行为无任何轨迹内容,直接返回为空即可 + if (input.TrackOptionType is TrackOptionType.删除 or TrackOptionType.推送 && trackDetails.Count == 0) + { + return res; + } //获取当前子系统下所有的轨迹内容 var contentList = await _trackContentRepository.GetListBySystemIdAsync(input.SystemId); @@ -312,11 +327,6 @@ public class TrackContentService : ApplicationService contentList = contentList.Where(m => template.Contains(m.Code)).ToList(); } - var res = new UnifyResultDto>(true) - { - Data = new List() - }; - foreach (var item in contentList) { //新增时跳过已存在轨迹内容 @@ -351,7 +361,7 @@ public class TrackContentService : ApplicationService } - //修改操作,查轨迹内容列表反映明细表数据,重新构造响应数据 + //修改/删除/推送 操作,查轨迹内容列表反映明细表数据,重新构造响应数据 var matchContent = new List(); var contents = res.Data.Select(x => new { diff --git a/src/SJZY.Track.Application/SjzyTrackApplicationModule.cs b/src/SJZY.Track.Application/SjzyTrackApplicationModule.cs index 9318e6ca..a26eb785 100644 --- a/src/SJZY.Track.Application/SjzyTrackApplicationModule.cs +++ b/src/SJZY.Track.Application/SjzyTrackApplicationModule.cs @@ -142,7 +142,8 @@ public class SjzyTrackApplicationModule : AbpModule options.PoolSize = configuration.GetValue("RabbitMQ:PoolSize"); options.Declarations = new List>() { - o=>o.ExchangeDeclare(GlobalConst.TrackChangeExchange, ExchangeType.Topic, true), + o => o.ExchangeDeclare(GlobalConst.TrackChangeExchange, ExchangeType.Topic, true), + o => o.ExchangeDeclare(GlobalConst.TrackPushExchange, ExchangeType.Topic, true) }; options.Consumes = new List { @@ -158,6 +159,19 @@ public class SjzyTrackApplicationModule : AbpModule o.QueueBind(GlobalConst.TrackRefreshSubscribe, GlobalConst.InterfaceRelayExchange, GlobalConst.TrackRefreshSubscribe); } + }, + new() + { + Queue = GlobalConst.TrackPushCompletedSubscribe, + FetchCount = configuration.GetValue("TrackApp:TrackRefreshFetchCount"), + FailedRequeue = false, + Declaration = o => + { + o.ExchangeDeclare(GlobalConst.InterfaceRelayExchange, ExchangeType.Direct, true); + o.QueueDeclare(GlobalConst.TrackPushCompletedSubscribe, true); + o.QueueBind(GlobalConst.TrackPushCompletedSubscribe, GlobalConst.InterfaceRelayExchange, + GlobalConst.TrackPushCompletedSubscribe); + } } }; }, typeof(SjzyTrackApplicationModule).Assembly);