diff --git a/src/TrackCenter.Application/Dtos/ProvideServices/FindOrderPullConfigsOutput.cs b/src/TrackCenter.Application/Dtos/ProvideServices/FindOrderPullConfigsOutput.cs new file mode 100644 index 00000000..7591ccec --- /dev/null +++ b/src/TrackCenter.Application/Dtos/ProvideServices/FindOrderPullConfigsOutput.cs @@ -0,0 +1,35 @@ +using TrackCenter.Domain.Aggregates.OrderAggregate; + +namespace TrackCenter.Application.Dtos.ProvideServices; + +public class FindOrderPullConfigsOutput +{ + public int Total { get; set; } + + public List Items { get; set; } = []; + + public List NotFoundOrderNos { get; set; } = []; +} + +public class FindOrderPullConfigsItem +{ + public string OrderNo { get; set; } = string.Empty; + + public string ServiceCode { get; set; } = string.Empty; + + public string? PullOrderNo { get; set; } + + public string StartCode { get; set; } = string.Empty; + + public string EndCode { get; set; } = string.Empty; + + public int SilenceTime { get; set; } + + public int StopTime { get; set; } + + public TrackPullStatus PullStatus { get; set; } + + public DateTime StartTime { get; set; } + + public DateTime EndTime { get; set; } +} diff --git a/src/TrackCenter.Application/Services/ProvideServices/OrderService.PullConfigs.cs b/src/TrackCenter.Application/Services/ProvideServices/OrderService.PullConfigs.cs index 4237f8c5..2edea9eb 100644 --- a/src/TrackCenter.Application/Services/ProvideServices/OrderService.PullConfigs.cs +++ b/src/TrackCenter.Application/Services/ProvideServices/OrderService.PullConfigs.cs @@ -6,6 +6,49 @@ namespace TrackCenter.Application.Services.ProvideServices; public partial class OrderService { + /// + /// 查询订单拉取配置 + /// + /// + /// + [HttpPost("Order/FindOrderPullConfigs")] + public async Task FindOrderPullConfigsAsync(OrderNosInfo input) + { + var orderNos = input.OrderNos + .Where(x => !string.IsNullOrWhiteSpace(x)) + .Distinct() + .ToList(); + if (orderNos.Count == 0) + { + return new FindOrderPullConfigsOutput(); + } + + var pullConfigs = await _orderRepository.FindOrderPullConfigsAsync(input.AppKey, input.OrderType, orderNos); + var foundOrderNos = pullConfigs + .Select(x => x.OrderNo) + .Distinct() + .ToHashSet(); + + return new FindOrderPullConfigsOutput + { + Total = pullConfigs.Count, + Items = pullConfigs.Select(x => new FindOrderPullConfigsItem + { + OrderNo = x.OrderNo, + ServiceCode = x.ServiceCode, + PullOrderNo = x.PullOrderNo, + StartCode = x.StartCode, + EndCode = x.EndCode, + SilenceTime = x.SilenceTime, + StopTime = x.StopTime, + PullStatus = x.PullStatus, + StartTime = x.StartTime, + EndTime = x.EndTime + }).ToList(), + NotFoundOrderNos = orderNos.Where(x => !foundOrderNos.Contains(x)).ToList() + }; + } + /// /// 修改订单拉取信息(轻易勿动) /// diff --git a/src/TrackCenter.Domain/Aggregates/OrderAggregate/IOrderRepository.cs b/src/TrackCenter.Domain/Aggregates/OrderAggregate/IOrderRepository.cs index caf47253..5b1714bf 100644 --- a/src/TrackCenter.Domain/Aggregates/OrderAggregate/IOrderRepository.cs +++ b/src/TrackCenter.Domain/Aggregates/OrderAggregate/IOrderRepository.cs @@ -139,6 +139,18 @@ public interface IOrderRepository : IBasicRepository /// Task ClearPullStatusAsync(); + /// + /// 查询订单拉取配置 + /// + /// + /// + /// + /// + Task> FindOrderPullConfigsAsync( + string appKey, + TrackOrderType orderType, + List orderNos); + /// /// 更新订单拉取配置,根据服务商 /// diff --git a/src/TrackCenter.Domain/Dtos/Order/FindOrderPullConfigsOutputVO.cs b/src/TrackCenter.Domain/Dtos/Order/FindOrderPullConfigsOutputVO.cs new file mode 100644 index 00000000..74321f81 --- /dev/null +++ b/src/TrackCenter.Domain/Dtos/Order/FindOrderPullConfigsOutputVO.cs @@ -0,0 +1,26 @@ +using TrackCenter.Domain.Aggregates.OrderAggregate; + +namespace TrackCenter.Domain.Dtos.Order; + +public class FindOrderPullConfigsOutputVO +{ + public string OrderNo { get; set; } = string.Empty; + + public string ServiceCode { get; set; } = string.Empty; + + public string? PullOrderNo { get; set; } + + public string StartCode { get; set; } = string.Empty; + + public string EndCode { get; set; } = string.Empty; + + public int SilenceTime { get; set; } + + public int StopTime { get; set; } + + public TrackPullStatus PullStatus { get; set; } + + public DateTime StartTime { get; set; } + + public DateTime EndTime { get; set; } +} diff --git a/src/TrackCenter.Repository/Repositories/OrderRepository.cs b/src/TrackCenter.Repository/Repositories/OrderRepository.cs index 9ca31c0f..672c2402 100644 --- a/src/TrackCenter.Repository/Repositories/OrderRepository.cs +++ b/src/TrackCenter.Repository/Repositories/OrderRepository.cs @@ -500,6 +500,37 @@ public class OrderRepository : BasicRepository, IOrderRepository, I .ExecuteCommandAsync(); } + public async Task> FindOrderPullConfigsAsync( + string appKey, + TrackOrderType orderType, + List orderNos) + { + if (orderNos.Count == 0) + { + return []; + } + + return await Context.Queryable() + .InnerJoin((order, pullStatus) => order.Id == pullStatus.OrderId) + .Where((order, pullStatus) => order.AppKey == appKey + && order.OrderType == orderType + && orderNos.Contains(order.OrderNo)) + .Select((order, pullStatus) => new FindOrderPullConfigsOutputVO + { + OrderNo = order.OrderNo, + ServiceCode = pullStatus.ServiceProviderCode, + PullOrderNo = pullStatus.OrderNo, + StartCode = pullStatus.StartTrackCode, + EndCode = pullStatus.EndTrackCode, + SilenceTime = pullStatus.SilenceBeforeStart, + StopTime = pullStatus.SilenceAfterEnd, + PullStatus = pullStatus.PullStatus, + StartTime = pullStatus.StartTime, + EndTime = pullStatus.EndTime + }) + .ToListAsync(); + } + public async Task UpdateOrderPullConfigForServiceProviderAsync( UpdateOrderPullConfigsInputVo inputVo) {