feat: PullChangeBottomLineUpdateOrderEvent 事件迁移

This commit is contained in:
钟喜旺 2024-07-31 10:21:27 +08:00
parent f1d15c34df
commit 6b43722fa6
16 changed files with 59 additions and 86 deletions

View File

@ -73,7 +73,6 @@ public class TrackPushContentConfigDto
/// 扩展字段参数值
/// </summary>
public string? ExpandFieldsValue { get; set; }
/// <summary>
/// 时间格式枚举

View File

@ -36,5 +36,10 @@
/// 轨迹内容英文
/// </summary>
public string EntrackStatus { get; set; }
/// <summary>
/// 节点名称
/// </summary>
public string? NodeName { get; set; }
}
}

View File

@ -1,11 +0,0 @@
namespace SJZY.Track.Application.Contract.Events;
public class PullChangeBottomLineUpdateOrderEvent
{
public List<int> OrderIds { get; set; } = null!;
/// <summary>
/// 时区缺失和发生地缺失标记,1表示时区,2表示发生地,3表示两种
/// </summary>
public int DeficiencyTagValue { get; set; }
}

View File

@ -56,4 +56,9 @@ public class TrackChangeAfterUpdateOrderEvent
/// 轨迹内容代码
/// </summary>
public string? TrackCode { get; set; }
/// <summary>
/// 时区缺失和发生地缺失标记,1表示时区,2表示发生地,3表示两种
/// </summary>
public int DeficiencyTagValue { get; set; }
}

View File

@ -53,4 +53,9 @@ public class TrackUpsertEvent
public List<int> Visited { get; set; } = new();
public TrackRefreshStruct TrackRefreshData { get; set; }
/// <summary>
/// 时区缺失和发生地缺失标记,1表示时区,2表示发生地,3表示两种
/// </summary>
public int DeficiencyTagValue { get; set; }
}

View File

@ -15,6 +15,7 @@ public class TrackPullAutoMapperProfile : Profile
.ForMember(dest => dest.IsPush, opt => opt.MapFrom(source => false));
CreateMap<EditTrackPullContentInput, TrackPullContentConfigEntity>(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<GetTrackPullConfigDetailOutputVO, TrackPullParamConfigDto>(MemberList.None);
CreateMap<GetTrackPullContentListCacheVO, TrackPullContentConfigDto>(MemberList.None);

View File

@ -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;
/// <summary>
/// 拉去轨迹后,执行了兜底操作还是失败的标记操作
/// </summary>
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);
}
}

View File

@ -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
});
// 预警计算

View File

@ -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<int>(){context.OrderId},
DeficiencyTagValue = placeTagValue+timezoneTagValue
};
await _capPublisher.PublishAsync(GlobalConst.PullChangeBottomLineUpdateOrderSubscribe, deficiencyTagEvent);
}
}
/// <summary>

View File

@ -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
});
// 触发轨迹推送事件(异步)

View File

@ -22,17 +22,17 @@ public class TrackPushService : ApplicationService
private readonly ICapPublisher _capPublisher;
private readonly ITrackPushRecordsRepository _trackPushRecordsRepository;
private readonly IHttpClientProxy<IRequestCurrentUserService> _requestCurrentUserService;
TrackPushEventHandler _trackPushEventHandler;
public TrackPushService(IOrderRepository orderRepository
, ICapPublisher capPublisher
, ITrackPushRecordsRepository trackPushRecordsRepository,
IHttpClientProxy<IRequestCurrentUserService> requestCurrentUserService, TrackPushEventHandler trackPushEventHandler)
IHttpClientProxy<IRequestCurrentUserService> requestCurrentUserService)
{
_orderRepository = orderRepository;
_capPublisher = capPublisher;
_trackPushRecordsRepository = trackPushRecordsRepository;
_requestCurrentUserService = requestCurrentUserService;
_trackPushEventHandler = trackPushEventHandler;
}
/// <summary>
@ -43,24 +43,6 @@ public class TrackPushService : ApplicationService
[HttpPost("Track/Push")]
public async Task<string> 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 =>

View File

@ -25,7 +25,7 @@ public class TrackStatusEntity : IFullAuditedBasicEntitys, IAggregateRoot
public string EnStatus { get; set; } = null!;
/// <summary>
/// 所属节点(主数据枚举ServiceNode)
/// 所属节点(来自表 t_track_node) 之前是枚举,后续调整为表
/// </summary>
[SugarColumn(ColumnName = "Node")]
public int Node { get; set; }

View File

@ -56,9 +56,4 @@ public partial class GlobalConst
/// 关联订单后补轨迹
/// </summary>
public const string OrderLinkAfterFillTrack = "SJZY.Track.OrderLinkAfterFillTrack";
/// <summary>
/// 拉取轨迹触发兜底后更新订单
/// </summary>
public const string PullChangeBottomLineUpdateOrderSubscribe = "SJZY.Track.PullChangeBottomLineUpdateOrder";
}

View File

@ -36,4 +36,9 @@ public class GetTrackStatusDetailVO
/// 轨迹内容英文
/// </summary>
public string EntrackStatus { get; set; }
/// <summary>
/// 节点名称
/// </summary>
public string? NodeName { get; set; }
}

View File

@ -5,6 +5,11 @@ namespace SJZY.Track.Domain.Enums;
/// </summary>
public enum DateTimeFormatEnum
{
/// <summary>
/// 默认
/// </summary>
None = 0,
/// <summary>
/// 时间戳
/// </summary>

View File

@ -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<TrackStatusEntity>, ITrackS
public async Task<GetTrackStatusDetailVO?> GetDetailAsync(int id)
{
var detail = await Context.Queryable<TrackStatusEntity>()
.LeftJoin<VSystemEntity>((a, b) => a.SubSystemId == b.Id&&b.IsDeleted==false)
.Where((a, b) => a.Id == id)
.Select((a, b) => new GetTrackStatusDetailVO
.InnerJoin<TrackNodeEntity>((a,t)=>a.Node==t.Id)
.LeftJoin<VSystemEntity>((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<TrackStatusEntity>, ITrackS
Code = a.Code,
EntrackStatus = a.EnStatus,
NodeId = a.Node,
TrackStatus = a.Status
TrackStatus = a.Status,
NodeName = t.NodeName
})
.FirstAsync();
return detail;