diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushContentConfigDto.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushContentConfigDto.cs index f778ada8..8984a769 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushContentConfigDto.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushContentConfigDto.cs @@ -73,7 +73,6 @@ public class TrackPushContentConfigDto /// 扩展字段参数值 /// public string? ExpandFieldsValue { get; set; } - /// /// 时间格式枚举 diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackStatus/GetTrackStatusDetailDto.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackStatus/GetTrackStatusDetailDto.cs index fe39c418..b77a4a41 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/TrackStatus/GetTrackStatusDetailDto.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/TrackStatus/GetTrackStatusDetailDto.cs @@ -36,5 +36,10 @@ /// 轨迹内容英文 /// public string EntrackStatus { get; set; } + + /// + /// 节点名称 + /// + public string? NodeName { get; set; } } } \ No newline at end of file diff --git a/src/SJZY.Track.Application.Contract/Events/PullChangeBottomLineUpdateOrderEvent.cs b/src/SJZY.Track.Application.Contract/Events/PullChangeBottomLineUpdateOrderEvent.cs deleted file mode 100644 index ed59fce6..00000000 --- a/src/SJZY.Track.Application.Contract/Events/PullChangeBottomLineUpdateOrderEvent.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace SJZY.Track.Application.Contract.Events; - -public class PullChangeBottomLineUpdateOrderEvent -{ - public List OrderIds { get; set; } = null!; - - /// - /// 时区缺失和发生地缺失标记,1表示时区,2表示发生地,3表示两种 - /// - public int DeficiencyTagValue { get; set; } -} \ No newline at end of file diff --git a/src/SJZY.Track.Application.Contract/Events/TrackChangeAfterUpdateOrderEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackChangeAfterUpdateOrderEvent.cs index 385b01f1..2eb42c61 100644 --- a/src/SJZY.Track.Application.Contract/Events/TrackChangeAfterUpdateOrderEvent.cs +++ b/src/SJZY.Track.Application.Contract/Events/TrackChangeAfterUpdateOrderEvent.cs @@ -56,4 +56,9 @@ public class TrackChangeAfterUpdateOrderEvent /// 轨迹内容代码 /// public string? TrackCode { get; set; } + + /// + /// 时区缺失和发生地缺失标记,1表示时区,2表示发生地,3表示两种 + /// + public int DeficiencyTagValue { get; set; } } \ No newline at end of file diff --git a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs index 621a441c..2884b824 100644 --- a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs +++ b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs @@ -53,4 +53,9 @@ public class TrackUpsertEvent public List Visited { get; set; } = new(); public TrackRefreshStruct TrackRefreshData { get; set; } + + /// + /// 时区缺失和发生地缺失标记,1表示时区,2表示发生地,3表示两种 + /// + public int DeficiencyTagValue { get; set; } } \ No newline at end of file diff --git a/src/SJZY.Track.Application/AutoMapper/TrackPullAutoMapperProfile.cs b/src/SJZY.Track.Application/AutoMapper/TrackPullAutoMapperProfile.cs index c2409eea..8ca802aa 100644 --- a/src/SJZY.Track.Application/AutoMapper/TrackPullAutoMapperProfile.cs +++ b/src/SJZY.Track.Application/AutoMapper/TrackPullAutoMapperProfile.cs @@ -15,6 +15,7 @@ public class TrackPullAutoMapperProfile : Profile .ForMember(dest => dest.IsPush, opt => opt.MapFrom(source => false)); CreateMap(MemberList.None) .ForMember(dest => dest.TrackKeyword, opt => opt.MapFrom(src => string.Join(',', src.TrackKeywords))) + .ForMember(dest => dest.TrackZonePlaceValue, opt => opt.MapFrom(src => string.Join(',', src.TrackTimePlaceValue))) .ForMember(dest => dest.TrackKeywordReverse, opt => opt.MapFrom(src => string.Join(',', src.TrackKeywordReverses))); CreateMap(MemberList.None); CreateMap(MemberList.None); diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/PullChangeBottomLineUpdateOrderEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/PullChangeBottomLineUpdateOrderEventHandler.cs deleted file mode 100644 index cccaf7eb..00000000 --- a/src/SJZY.Track.Application/CAP/EventHandlers/PullChangeBottomLineUpdateOrderEventHandler.cs +++ /dev/null @@ -1,26 +0,0 @@ -using DotNetCore.CAP; -using SJZY.Track.Application.Contract.Events; -using SJZY.Track.Domain.Aggregates.OrderAggregate; -using SJZY.Track.Domain.Consts; -using Volo.Abp.DependencyInjection; - -namespace SJZY.Track.Application.CAP.EventHandlers; - -/// -/// 拉去轨迹后,执行了兜底操作还是失败的标记操作 -/// -public class PullChangeBottomLineUpdateOrderEventHandler :ITransientDependency, ICapSubscribe -{ - private readonly IOrderRepository _orderRepository; - - public PullChangeBottomLineUpdateOrderEventHandler(IOrderRepository orderRepository) - { - _orderRepository = orderRepository; - } - - [CapSubscribe(GlobalConst.PullChangeBottomLineUpdateOrderSubscribe)] - public async Task ConsumerAsync(PullChangeBottomLineUpdateOrderEvent @event) - { - var rows =await _orderRepository.UpdateBatchIdsAsync(@event.OrderIds, @event.DeficiencyTagValue); - } -} \ No newline at end of file diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs index eef4d26a..2d9540aa 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs @@ -48,6 +48,12 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa } } + // 执行轨迹兜底时 时区缺失和发生地缺失标记,1表示时区,2表示发生地,3表示两种 + if (@event.DeficiencyTagValue > 0 && @event.DeficiencyTagValue<=3) + { + order.DeficiencyTag = @event.DeficiencyTagValue; + } + if (!order.IsCompleted) { order.IsCompleted = @event.IsCompleted; @@ -75,7 +81,7 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa await _orderRepository.UpdateRangeAsync(updateOrders, x => new { x.IsCompleted, x.LatestTrackContent, x.LatestTrackEnContent, x.LatestTrackPlace, x.LatestTrackTime, - x.LatestTrackTimeZone,x.IsTriggerPull + x.LatestTrackTimeZone,x.IsTriggerPull,x.DeficiencyTag }); // 预警计算 diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackRefreshEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackRefreshEventHandler.cs index 8afe8e0c..8411bf76 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackRefreshEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackRefreshEventHandler.cs @@ -225,6 +225,16 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe return; } + int deficiencyTagValue = 0; + // 触发了兜底,但是没有兜底住,对订单进行标记 + if (hasPlaceBottomLine || hasTimezoneBottomLine) + { + //1表示时区,2表示发生地,3表示两种 + var placeTagValue = hasPlaceBottomLine ? 2 : 0; + var timezoneTagValue = hasTimezoneBottomLine ? 1 : 0; + deficiencyTagValue = placeTagValue + timezoneTagValue; + } + // 新增/更新轨迹 var trackUpsertEvent = new TrackUpsertEvent { @@ -237,6 +247,7 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe OrderType = context.OrderType, } }, + TrackRefreshData = new TrackRefreshStruct { ServiceProviderName = context.ServiceProviderName, @@ -250,26 +261,13 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe TrackCode = matchedContentConfig.TrackContentCode, TrackPlace = trackPlace ?? GlobalConst.EmptyString, TrackTime = trackTime ?? DateTime.Now, - TrackTimeZone = trackTimeZone ?? 8 + TrackTimeZone = trackTimeZone ?? 8, + DeficiencyTagValue = deficiencyTagValue }; trackUpsertEvent.IsAdd = !await _trackDetailsRepository.AnyByCodeAsync(context.OrderId, matchedContentConfig.TrackContentCode); await _capPublisher.PublishAsync(GlobalConst.TrackUpsertForRefreshSubscribe, trackUpsertEvent); - - // 触发了兜底,但是没有兜底住,对订单进行标记 - if (hasPlaceBottomLine || hasTimezoneBottomLine) - { - //1表示时区,2表示发生地,3表示两种 - var placeTagValue = hasPlaceBottomLine ? 2 : 0; - var timezoneTagValue = hasTimezoneBottomLine ? 1 : 0; - PullChangeBottomLineUpdateOrderEvent deficiencyTagEvent = new PullChangeBottomLineUpdateOrderEvent - { - OrderIds = new List(){context.OrderId}, - DeficiencyTagValue = placeTagValue+timezoneTagValue - }; - await _capPublisher.PublishAsync(GlobalConst.PullChangeBottomLineUpdateOrderSubscribe, deficiencyTagEvent); - } } /// diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs index 5e73128b..703900c5 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs @@ -194,7 +194,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe TrackPlace = @event.TrackPlace, TrackTime = @event.TrackTime, TrackTimeZone = @event.TrackTimeZone, - TrackCode = @event.TrackCode + TrackCode = @event.TrackCode, + DeficiencyTagValue = @event.DeficiencyTagValue }); // 触发轨迹推送事件(异步) diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs index c7663f86..3ad8cc46 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs @@ -22,17 +22,17 @@ public class TrackPushService : ApplicationService private readonly ICapPublisher _capPublisher; private readonly ITrackPushRecordsRepository _trackPushRecordsRepository; private readonly IHttpClientProxy _requestCurrentUserService; - TrackPushEventHandler _trackPushEventHandler; + public TrackPushService(IOrderRepository orderRepository , ICapPublisher capPublisher , ITrackPushRecordsRepository trackPushRecordsRepository, - IHttpClientProxy requestCurrentUserService, TrackPushEventHandler trackPushEventHandler) + IHttpClientProxy requestCurrentUserService) { _orderRepository = orderRepository; _capPublisher = capPublisher; _trackPushRecordsRepository = trackPushRecordsRepository; _requestCurrentUserService = requestCurrentUserService; - _trackPushEventHandler = trackPushEventHandler; + } /// @@ -43,24 +43,6 @@ public class TrackPushService : ApplicationService [HttpPost("Track/Push")] public async Task PushTrackAsync(PushTrackInput input) { - var trackPushEvenst = new TrackPushEvent -{ - OptionType = OptionType.新增, // Assuming OptionType.新增 corresponds to 1 - SubSystemId = 9534, - CustomId = 228618, - OrderIds = new int[] { 1 }, - TrackCode = "CP", - OperationMan = "郑志红", - SystemPushInfo = new SystemPushStruct - { - TrackStatus = null, - TrackContent = null, - TrackPlace = null, - TrackTime = DateTime.Parse("0001-01-01T00:00:00"), - TrackTimeZone = 0.0f - } -}; - await _trackPushEventHandler.ConsumerAsync(trackPushEvenst); input.OrderNos = input.OrderNos.Where(x => !x.IsNullOrWhiteSpace()).Distinct().ToList(); // 单号去重、去空 var orders = await _orderRepository.GetArrayAsync(x => diff --git a/src/SJZY.Track.Domain/Aggregates/TrackStatusAggregate/TrackStatusEntity.cs b/src/SJZY.Track.Domain/Aggregates/TrackStatusAggregate/TrackStatusEntity.cs index dd98a21d..0b200c1c 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackStatusAggregate/TrackStatusEntity.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackStatusAggregate/TrackStatusEntity.cs @@ -25,7 +25,7 @@ public class TrackStatusEntity : IFullAuditedBasicEntitys, IAggregateRoot public string EnStatus { get; set; } = null!; /// - /// 所属节点(主数据枚举ServiceNode) + /// 所属节点(来自表 t_track_node) 之前是枚举,后续调整为表 /// [SugarColumn(ColumnName = "Node")] public int Node { get; set; } diff --git a/src/SJZY.Track.Domain/Consts/GlobalConst.MQ.cs b/src/SJZY.Track.Domain/Consts/GlobalConst.MQ.cs index 1b853ffe..378f0b89 100644 --- a/src/SJZY.Track.Domain/Consts/GlobalConst.MQ.cs +++ b/src/SJZY.Track.Domain/Consts/GlobalConst.MQ.cs @@ -56,9 +56,4 @@ public partial class GlobalConst /// 关联订单后补轨迹 /// public const string OrderLinkAfterFillTrack = "SJZY.Track.OrderLinkAfterFillTrack"; - - /// - /// 拉取轨迹触发兜底后更新订单 - /// - public const string PullChangeBottomLineUpdateOrderSubscribe = "SJZY.Track.PullChangeBottomLineUpdateOrder"; } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Dtos/TrackStatus/GetTrackStatusDetailVO.cs b/src/SJZY.Track.Domain/Dtos/TrackStatus/GetTrackStatusDetailVO.cs index 66de23a9..76c4ac32 100644 --- a/src/SJZY.Track.Domain/Dtos/TrackStatus/GetTrackStatusDetailVO.cs +++ b/src/SJZY.Track.Domain/Dtos/TrackStatus/GetTrackStatusDetailVO.cs @@ -36,4 +36,9 @@ public class GetTrackStatusDetailVO /// 轨迹内容英文 /// public string EntrackStatus { get; set; } + + /// + /// 节点名称 + /// + public string? NodeName { get; set; } } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Enums/DateTimeFormatEnum.cs b/src/SJZY.Track.Domain/Enums/DateTimeFormatEnum.cs index 37e3c4fc..f7d68b5e 100644 --- a/src/SJZY.Track.Domain/Enums/DateTimeFormatEnum.cs +++ b/src/SJZY.Track.Domain/Enums/DateTimeFormatEnum.cs @@ -5,6 +5,11 @@ namespace SJZY.Track.Domain.Enums; /// public enum DateTimeFormatEnum { + /// + /// 默认 + /// + None = 0, + /// /// 时间戳 /// diff --git a/src/SJZY.Track.Repository/Repositories/TrackStatusRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackStatusRepository.cs index a4abd5b5..7ea0fb26 100644 --- a/src/SJZY.Track.Repository/Repositories/TrackStatusRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/TrackStatusRepository.cs @@ -1,3 +1,4 @@ +using SJZY.Track.Domain.Aggregates.TrackNodeAggregate; using SJZY.Track.Domain.Aggregates.TrackStatusAggregate; using SJZY.Track.Domain.Dtos.TrackStatus; using SJZY.Track.Domain.VEntities; @@ -14,9 +15,10 @@ public class TrackStatusRepository : BasicRepository, ITrackS public async Task GetDetailAsync(int id) { var detail = await Context.Queryable() - .LeftJoin((a, b) => a.SubSystemId == b.Id&&b.IsDeleted==false) - .Where((a, b) => a.Id == id) - .Select((a, b) => new GetTrackStatusDetailVO + .InnerJoin((a,t)=>a.Node==t.Id) + .LeftJoin((a, t,b) => a.SubSystemId == b.Id&&b.IsDeleted==false) + .Where((a,t, b) => a.Id == id) + .Select((a, t,b) => new GetTrackStatusDetailVO { Id = a.Id, SubSystemId = a.SubSystemId, @@ -24,7 +26,8 @@ public class TrackStatusRepository : BasicRepository, ITrackS Code = a.Code, EntrackStatus = a.EnStatus, NodeId = a.Node, - TrackStatus = a.Status + TrackStatus = a.Status, + NodeName = t.NodeName }) .FirstAsync(); return detail;