diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpdateOrderInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpdateOrderInput.cs index 3bb10008..2d6e3115 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpdateOrderInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpdateOrderInput.cs @@ -70,7 +70,7 @@ public class UpdateOrderInput : OrderNoInfo /// /// 拉取配置信息 /// - public List PullConfigInfos { get; set; } + public List? PullConfigInfos { get; set; } } public class PullConfigInfo diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertOrderInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertOrderInput.cs index 86e0c6fb..7ec458f0 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertOrderInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertOrderInput.cs @@ -11,21 +11,6 @@ public class UpsertOrderInput : UpdateOrderInput public int CustomId { get; set; } } -public class OrderTemplateInfo -{ - /// - /// 模板id - /// - [Required] - [Range(1, Int32.MaxValue)] - public int TemplateId { get; set; } - - /// - /// 服务商id - /// - public int? ServiceProviderId { get; set; } -} - public class OrderFlightInfo { /// diff --git a/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs b/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs index 725c984a..8fc8a9d4 100644 --- a/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs +++ b/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs @@ -18,9 +18,6 @@ public class OrderAutoMapperProfile : Profile CreateMap(MemberList.None); CreateMap(MemberList.None); - CreateMap(MemberList.None) - .ForMember(dest => dest.ServiceProviderId, opt => opt.MapFrom(m => m.ServiceProviderId ?? 0)) - .ForMember(dest => dest.TrackTemplateId, opt => opt.MapFrom(m => m.TemplateId)); CreateMap(MemberList.None); CreateMap(MemberList.None); diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs index ac572f91..bc573988 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs @@ -4,7 +4,6 @@ using SJZY.Track.Application.Contract.Events; using SJZY.Track.Application.Contract.Services; using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Consts; -using SJZY.Track.Domain.Dtos.Order; using SJZY.Track.Domain.Queries; using Volo.Abp.DependencyInjection; @@ -35,7 +34,6 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa if (orders.Count == 0) return; var updateOrders = new List(); - var providerDic = await GetProviderDic(@event.OrderIds); foreach (var order in orders) { if (order.LatestTrackContent != @event.TrackContent) @@ -59,20 +57,6 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa order.IsCompleted = @event.IsCompleted; } - if (!string.IsNullOrEmpty(@event.TrackCode) && providerDic.TryGetValue(order.Id, out var provider)) - { - var config = - await _trackPullCacheService.GetPullParamsWithContentAsync(provider.SubSystemId, - provider.ServiceProviderId); - - if (!string.IsNullOrEmpty(config?.ParamConfig.TrackContentCode) && - config.ParamConfig.TrackContentCode!.ToLower() == @event.TrackCode.ToLower()) - { - // 触发拉取节点 - order.IsTriggerPull = 1; - } - } - order.LatestTrackContent = @event.TrackContent; order.LatestTrackEnContent = @event.TrackEnContent; order.LatestTrackPlace = @event.TrackPlace; @@ -90,7 +74,6 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa x.LatestTrackPlace, x.LatestTrackTime, x.LatestTrackTimeZone, - x.IsTriggerPull, x.DeficiencyTag }); @@ -122,7 +105,6 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa IsTransit = order.IsTransit, LeavePort = order.LeavePort, ProductCode = order.ProductCode, - IsTriggerPull = order.IsTriggerPull }); } @@ -149,16 +131,4 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa }).ToList() }; } - - /// - /// 获取服务商字典 - /// - /// - /// - private async Task> GetProviderDic(int[] orderIds) - { - var providerList = await _provideQueries.FindOrderWithServiceProviderAsync(orderIds); - return providerList.GroupBy(val => val.OrderId) - .ToDictionary(val => val.Key, val => val.First()); - } } diff --git a/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs b/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs index 590391f0..6dfc8654 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs @@ -4,6 +4,7 @@ using SJZY.Track.Application.Contract.Dtos.ProvideServices; using SJZY.Track.Application.Contract.Services; using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; +using SJZY.Track.Domain.Consts; using SJZY.Track.Domain.Queries; using SJZY.UserCenter.HttpApi.Services; @@ -67,8 +68,11 @@ public partial class OrderService : ApplicationService, IOrderService order = ObjectMapper.Map(input); order.SubSystemId = subSystemId; order.OrderFlights = ObjectMapper.Map, List>(input.FlightInfos); + order.OrderPullStatus = BuiltOrderPullStatus(input.PullConfigInfos); var orderId = await _orderRepository.CreateOrderAsync(order); + + // 写入操作日志 var indexForAdd = new OrderOperationRecordIndex { OrderId = orderId, @@ -78,9 +82,9 @@ public partial class OrderService : ApplicationService, IOrderService CreateUserId = CurrentUserRequest.CurrentUser.UserId, CreateTime = DateTime.Now }; - _ = _orderOperationRecordRepository.AddAsync(indexForAdd); + return new UnifyResultDto(true, new IdBaseDto { Id = orderId @@ -118,4 +122,22 @@ public partial class OrderService : ApplicationService, IOrderService order.OrderFlights = ObjectMapper.Map, List>(input.FlightInfos); await _orderRepository.UpdateOrderAsync(order); } + + + private List BuiltOrderPullStatus(List? pullConfigInfos) + { + if (pullConfigInfos == null) return new List(); + + return pullConfigInfos.Select(x => new OrderPullStatusEntity + { + ServiceProviderCode = x.ServiceCode, + PullStatus = TrackPullStatus.Init, + StartTrackCode = x.StartCode ?? GlobalConst.EmptyString, + EndTrackCode = x.EndCode ?? GlobalConst.EmptyString, + SilenceBeforeStart = x.SilenceTime, + SilenceAfterEnd = x.StopTime, + StartTime = DateTime.MaxValue, + EndTime = DateTime.MaxValue, + }).ToList(); + } } diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs index 9752cf7d..626e667a 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs @@ -54,11 +54,9 @@ public class TrackPullService : ApplicationService throw new BusinessException(message: "一个能更新的都没有"); } - foreach (var group in orders.GroupBy(x => new { - x.ServiceProviderId, x.ServiceProviderName, x.SubSystemId, x.OrderType diff --git a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs index 0e1dc988..aa33fb92 100644 --- a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs +++ b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs @@ -6,8 +6,6 @@ using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackPushAggregate; using SJZY.Track.Domain.Consts; using SJZY.Track.Domain.Dtos.Order; -using SJZY.Track.Domain.Enums; -using SJZY.Track.Domain.Queries; namespace SJZY.Track.Application.Services.TrackOrders; @@ -19,19 +17,16 @@ public class TrackOrderService : ApplicationService private readonly IOrderRepository _orderRepository; private readonly ITrackContentRepository _trackContentRepository; private readonly ITrackDetailsRepository _trackDetailsRepository; - private readonly ITrackOrderQueries _trackOrderQueries; private readonly ITrackPushRecordsRepository _trackPushRecordsRepository; public TrackOrderService( IOrderRepository orderRepository, - ITrackOrderQueries trackOrderQueries, ITrackDetailsRepository trackDetailsRepository, ITrackContentRepository trackContentRepository, ITrackPushRecordsRepository trackPushRecordsRepository, IOrderOperationRecordRepository orderOperationRecordRepository) { _orderRepository = orderRepository; - _trackOrderQueries = trackOrderQueries; _trackDetailsRepository = trackDetailsRepository; _trackContentRepository = trackContentRepository; _trackPushRecordsRepository = trackPushRecordsRepository; @@ -46,10 +41,10 @@ public class TrackOrderService : ApplicationService /// /// [HttpPost("GetTrackOrderList")] - public async Task> GetPageTrackOrder(GetPageTrackOrderInput input) + public async Task> GetTrackOrderPagedList(GetPageTrackOrderInput input) { var vo = ObjectMapper.Map(input); - var pageList = await _trackOrderQueries.GetPageTrackOrder(vo); + var pageList = await _orderRepository.GetTrackOrderPagedList(vo); var pageResultDto = ObjectMapper.Map, UnifyPageResultDto>(pageList); return pageResultDto; @@ -72,23 +67,6 @@ public class TrackOrderService : ApplicationService }); } - /// - /// 获取轨迹计数器 - /// - /// - [HttpGet("GetTrackCounter")] - public async Task GetTrackCounterAsync() - { - var counts = await _trackOrderQueries.GetTrackProblemCountsAsync(); - - return new GetTrackCounterOutput - { - TotalCount = counts.Sum(x => x.Count), - ErrorCount = counts.FirstOrDefault(x => x.ProblemType == (int) TrackProblemType.Error)?.Count ?? 0, - WarnCount = counts.FirstOrDefault(x => x.ProblemType == (int) TrackProblemType.Warn)?.Count ?? 0, - }; - } - /// /// 获取轨迹推送记录 /// diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs index 767aefd5..d71e24b6 100644 --- a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs +++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs @@ -4,6 +4,13 @@ namespace SJZY.Track.Domain.Aggregates.OrderAggregate; public interface IOrderRepository : IBasicRepository { + /// + /// 获取分页的轨迹订单 + /// + /// + /// + Task> GetTrackOrderPagedList(GetPageTrackOrderInputVO input); + /// /// 创建订单 /// diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderEntity.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderEntity.cs index 104b4867..9a24699e 100644 --- a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderEntity.cs +++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderEntity.cs @@ -168,14 +168,10 @@ public class OrderEntity : IFullAuditedBasicEntitys, IAggregateRoot [SugarColumn(ColumnName = "ArrivalProvince")] public string? ArrivalProvince { get; set; } - /// - /// 是否触发拉取,1表示触发 - /// - [SugarColumn(ColumnName = "IsTriggerPull")] - public short? IsTriggerPull { get; set; } - [SugarColumn(IsIgnore = true)] public List OrderFlights { get; set; } + [SugarColumn(IsIgnore = true)] public List OrderPullStatus { get; set; } + public void ResetTrackInfo() { IsCompleted = false; diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderTemplateEntity.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderTemplateEntity.cs deleted file mode 100644 index 6a1d9a8f..00000000 --- a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderTemplateEntity.cs +++ /dev/null @@ -1,50 +0,0 @@ -namespace SJZY.Track.Domain.Aggregates.OrderAggregate; - -/// -/// 轨迹订单模板表(1:N) -/// -[SugarTable("t_order_template")] -public class OrderTemplateEntity : ICreateBaicEntity, ISoftDeleteBasicEntity, IEntity -{ - /// - /// 自增主键 - /// - [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)] - public int Id { get; set; } - - /// - /// 订单id - /// - [SugarColumn(ColumnName = "OrderId")] - public int OrderId { get; set; } - - /// - /// 服务商id - /// - [SugarColumn(ColumnName = "ServiceProviderId")] - public int ServiceProviderId { get; set; } - - /// - /// 模板id - /// - [SugarColumn(ColumnName = "TrackTemplateId")] - public int TrackTemplateId { get; set; } - - /// - /// 创建人 - /// - [SugarColumn(ColumnName = "CreateUserId")] - public int CreateUserId { get; set; } - - /// - /// 创建时间 - /// - [SugarColumn(ColumnName = "CreateTime")] - public DateTime CreateTime { get; set; } - - /// - /// 是否删除 - /// - [SugarColumn(ColumnName = "IsDeleted")] - public bool IsDeleted { get; set; } -} diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderTrackPullStatusEntity.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderTrackPullStatusEntity.cs new file mode 100644 index 00000000..56071d89 --- /dev/null +++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderTrackPullStatusEntity.cs @@ -0,0 +1,80 @@ +namespace SJZY.Track.Domain.Aggregates.OrderAggregate; + +/// +/// 订单轨迹拉取状态表(1:N) +/// +[SugarTable("t_order_pull_status")] +public class OrderPullStatusEntity : ICreateBaicEntity, IEntity +{ + /// + /// 自增主键 + /// + [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)] + public int Id { get; set; } + + /// + /// 订单id + /// + [SugarColumn(ColumnName = "OrderId")] + public int OrderId { get; set; } + + /// + /// 服务商code + /// + [SugarColumn(ColumnName = "ServiceProviderCode")] + public string ServiceProviderCode { get; set; } + + /// + /// 拉取状态 + /// + [SugarColumn(ColumnName = "PullStatus")] + public TrackPullStatus PullStatus { get; set; } + + /// + /// 开始轨迹code + /// + [SugarColumn(ColumnName = "StartTrackCode")] + public string StartTrackCode { get; set; } + + /// + /// 结束轨迹code + /// + [SugarColumn(ColumnName = "EndTrackCode")] + public string EndTrackCode { get; set; } + + /// + /// 开始前的静默(小时) + /// + [SugarColumn(ColumnName = "SilenceBeforeStart")] + public int SilenceBeforeStart { get; set; } + + /// + /// 结束后的静默(小时) + /// + [SugarColumn(ColumnName = "SilenceAfterEnd")] + public int SilenceAfterEnd { get; set; } + + /// + /// 定时任务开始时间(计算量) + /// + [SugarColumn(ColumnName = "StartTime")] + public DateTime StartTime { get; set; } + + /// + /// 定时任务结束时间(计算量) + /// + [SugarColumn(ColumnName = "EndTime")] + public DateTime EndTime { get; set; } + + /// + /// 创建人 + /// + [SugarColumn(ColumnName = "CreateUserId")] + public int CreateUserId { get; set; } + + /// + /// 创建时间 + /// + [SugarColumn(ColumnName = "CreateTime")] + public DateTime CreateTime { get; set; } +} diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/TrackPullStatus.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/TrackPullStatus.cs new file mode 100644 index 00000000..8054353e --- /dev/null +++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/TrackPullStatus.cs @@ -0,0 +1,29 @@ +namespace SJZY.Track.Domain.Aggregates.OrderAggregate; + +public enum TrackPullStatus +{ + /// + /// 初始态 + /// + Init = 0, + + /// + /// 开始前的静默 + /// + SilenceBeforeStart, + + /// + /// 拉取中 + /// + Pulling, + + /// + /// 结束后的静默 + /// + SilenceAfterEnd, + + /// + /// 拉取完成 + /// + Completed +} diff --git a/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs b/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs index 90327672..7d473d1f 100644 --- a/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs +++ b/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs @@ -68,11 +68,6 @@ public class TrackOrderVO /// public string? OrderNumber { get; set; } - /// - /// 轨迹模版 - /// - public string? TrackTemplateNames { get; set; } - /// /// 客户简称 /// @@ -133,11 +128,6 @@ public class TrackOrderVO /// public int SubSystemId { get; set; } - /// - /// 轨迹模板Id数组 - /// - public List? TrackTemplateIds { get; set; } - /// /// 问题类型(主数据枚举TrackQuestionType) /// diff --git a/src/SJZY.Track.Domain/Dtos/Order/OrderWithServiceProviderVO.cs b/src/SJZY.Track.Domain/Dtos/Order/OrderWithServiceProviderVO.cs index 9356a80d..4e328abb 100644 --- a/src/SJZY.Track.Domain/Dtos/Order/OrderWithServiceProviderVO.cs +++ b/src/SJZY.Track.Domain/Dtos/Order/OrderWithServiceProviderVO.cs @@ -9,8 +9,6 @@ public class OrderWithServiceProviderVO /// public int OrderType { get; set; } - public int ServiceProviderId { get; set; } - /// /// 服务商code /// diff --git a/src/SJZY.Track.Domain/Queries/IProvideQueries.cs b/src/SJZY.Track.Domain/Queries/IProvideQueries.cs index 7538ab8a..f8c10e15 100644 --- a/src/SJZY.Track.Domain/Queries/IProvideQueries.cs +++ b/src/SJZY.Track.Domain/Queries/IProvideQueries.cs @@ -27,19 +27,12 @@ public interface IProvideQueries /// /// 获取服务商下所有单(未完成的) /// - /// + /// /// /// /// - Task> FindOrderWithServiceProviderAsync(int serviceProvider, int pageIndex, + Task> FindOrderWithServiceProviderAsync(int serviceProviderId, int pageIndex, int pageSize = 1000); Task GetTrackContentAsync(int subSystemId, string trackCode); - - /// - /// 查找订单和服务商信息 - /// - /// 订单id - /// 订单和服务商信息 - Task> FindOrderWithServiceProviderAsync(int[] orderIds); } diff --git a/src/SJZY.Track.Domain/Queries/ITrackOrderQueries.cs b/src/SJZY.Track.Domain/Queries/ITrackOrderQueries.cs deleted file mode 100644 index ccfc2e7d..00000000 --- a/src/SJZY.Track.Domain/Queries/ITrackOrderQueries.cs +++ /dev/null @@ -1,19 +0,0 @@ -using SJZY.Track.Domain.Dtos.Order; - -namespace SJZY.Track.Domain.Queries; - -public interface ITrackOrderQueries -{ - /// - /// 获取分页的轨迹订单 - /// - /// - /// - Task> GetPageTrackOrder(GetPageTrackOrderInputVO input); - - /// - /// 获取轨迹各个问题数 - /// - /// - Task> GetTrackProblemCountsAsync(); -} diff --git a/src/SJZY.Track.Repository/Queries/ProvideQueries.cs b/src/SJZY.Track.Repository/Queries/ProvideQueries.cs index 8436806d..a06b71e2 100644 --- a/src/SJZY.Track.Repository/Queries/ProvideQueries.cs +++ b/src/SJZY.Track.Repository/Queries/ProvideQueries.cs @@ -37,14 +37,13 @@ public class ProvideQueries : ISugarRepository, IProvideQueries, public async Task> FindOrderWithServiceProviderAsync(List orderNos) { return await Context.Queryable() - .LeftJoin((a, b) => a.Id == b.OrderId) - .LeftJoin((a, b, c) => b.ServiceProviderId == c.Id) + .LeftJoin((a, b) => a.Id == b.OrderId) + .LeftJoin((a, b, c) => b.ServiceProviderCode == c.Code) .Where(a => !a.IsCompleted && orderNos.Contains(a.OrderNo)) .Select((a, b, c) => new OrderWithServiceProviderVO { OrderNo = a.OrderNo, OrderType = a.OrderType, - ServiceProviderId = b.ServiceProviderId, ServiceProviderCode = c.Code, ServiceProviderName = c.Name, SubSystemId = a.SubSystemId @@ -53,18 +52,17 @@ public class ProvideQueries : ISugarRepository, IProvideQueries, } /// - public async Task> FindOrderWithServiceProviderAsync(int serviceProvider, + public async Task> FindOrderWithServiceProviderAsync(int serviceProviderId, int pageIndex, int pageSize = 1000) { return await Context.Queryable() - .RightJoin((a, b) => a.Id == b.OrderId) - .LeftJoin((a, b, c) => b.ServiceProviderId == c.Id) - .Where((a, b) => b.ServiceProviderId == serviceProvider && !a.IsCompleted && a.IsTriggerPull == 1) + .RightJoin((a, b) => a.Id == b.OrderId) + .LeftJoin((a, b, c) => b.ServiceProviderCode == c.Code) + .Where((a, b, c) => c.Id == serviceProviderId && !a.IsCompleted) .Select((a, b, c) => new OrderWithServiceProviderVO { OrderNo = a.OrderNo, OrderType = a.OrderType, - ServiceProviderId = b.ServiceProviderId, ServiceProviderCode = c.Code, ServiceProviderName = c.Name, SubSystemId = a.SubSystemId @@ -74,21 +72,6 @@ public class ProvideQueries : ISugarRepository, IProvideQueries, .ToListAsync(); } - /// - public async Task> FindOrderWithServiceProviderAsync(int[] orderIds) - { - return await Context.Queryable() - .InnerJoin((a, b) => a.Id == b.OrderId) - .Where((a, b) => orderIds.Contains(a.Id) && !a.IsCompleted) - .Select((a, b) => new OrderTransportDto - { - OrderId = a.Id, - ServiceProviderId = b.ServiceProviderId, - SubSystemId = a.SubSystemId - }) - .ToListAsync(); - } - /// public async Task GetTrackContentAsync(int subSystemId, string trackCode) { diff --git a/src/SJZY.Track.Repository/Queries/TrackOrderQueries.cs b/src/SJZY.Track.Repository/Queries/TrackOrderQueries.cs deleted file mode 100644 index 18eb21a0..00000000 --- a/src/SJZY.Track.Repository/Queries/TrackOrderQueries.cs +++ /dev/null @@ -1,101 +0,0 @@ -using SJZY.Track.Domain.Aggregates.OrderAggregate; -using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate; -using SJZY.Track.Domain.Dtos.Order; -using SJZY.Track.Domain.Enums; -using SJZY.Track.Domain.Queries; -using SJZY.Track.Domain.VEntities; - -namespace SJZY.Track.Repository.Queries; - -public class TrackOrderQueries : ISugarRepository, ITrackOrderQueries, - ITransientDependency -{ - public TrackOrderQueries() - { - Context = SqlsugarScopeBasic.GetContextSafely("default"); - } - - public ISqlSugarClient Context { get; set; } - - /// - /// 获取分页的轨迹订单 - /// - /// - /// - public async Task> GetPageTrackOrder(GetPageTrackOrderInputVO input) - { - var pageList = await Context.Queryable() - .LeftJoin((a, b) => a.CustomId == b.Id && b.IsDeleted == false) - .LeftJoin((a, b, c) => a.SubSystemId == c.Id && c.IsDeleted == false) - .WhereIF(input.SubSystemId > 0, (a, b, c) => a.SubSystemId == input.SubSystemId) - .WhereIF(!input.OrderNos.IsNullOrEmpty(), (a, b, c) => input.OrderNos!.Contains(a.OrderNo)) - .WhereIF(input.CreateTimeStart.HasValue && input.CreateTimeEnd.HasValue, - (a, b, c) => a.CreateTime >= input.CreateTimeStart && a.CreateTime <= input.CreateTimeEnd) - .WhereIF(input.CreateTimeStart.HasValue && (!input.CreateTimeEnd.HasValue), - (a, b, c) => a.CreateTime >= input.CreateTimeStart) - .WhereIF((!input.CreateTimeStart.HasValue) && input.CreateTimeEnd.HasValue, - (a, b, c) => a.CreateTime <= input.CreateTimeEnd) - .WhereIF(input.CustomerId > 0, (a, b, c) => a.CustomId == input.CustomerId) - .WhereIF(input.TrackOrderType > 0, (a, b, c) => a.OrderType == input.TrackOrderType) - .WhereIF(input.TabType > 0, (a, b, c) => a.QuestionType == input.TabType) - .WhereIF(input.TabType == (int) TrackProblemType.Warn, (a, b, c) => !a.IsCompleted) - .OrderByDescending((a, b, c) => a.CreateTime) - .Select((a, b, c) => new TrackOrderVO - { - Id = a.Id, - OrderNumber = a.OrderNo, - OrderType = a.OrderType, - QuestionType = a.QuestionType, - CustomerShortName = b.Abbreviation, - CustomerCode = b.Code, - CustomerId = a.CustomId, - NewestTrackContent = a.LatestTrackContent, - NewestTrackEnContent = a.LatestTrackEnContent, - NewestTrackPlace = a.LatestTrackPlace, - NewestTrackTime = a.LatestTrackTime, - IsFinish = a.IsCompleted, - CreateTime = a.CreateTime, - SubSystem = c.CnName, - SubSystemId = c.Id - }) - .ToPagedListAsync(input.PageIndex, input.PageSize); - - if (pageList.List.Any()) - { - //查询也需要最新的轨迹 - var orderIds = pageList.List.Select(a => a.Id).ToList(); - //查询轨迹模版 - var trackTemplateList = await Context.Queryable() - .LeftJoin((a, b) => a.TrackTemplateId == b.Id) - .Where((a, b) => orderIds.Contains(a.OrderId)) - .Select((a, b) => new - { - a.OrderId, - b.Name, - TemplateId = b.Id - }) - .ToListAsync(); - pageList.List.ForEach(a => - { - a.TrackTemplateNames = trackTemplateList.Where(b => b.OrderId == a.Id).Select(x => x.Name) - .JoinAsString(","); - a.TrackTemplateIds = trackTemplateList.Where(b => b.OrderId == a.Id).Where(b => b.TemplateId > 0) - .Select(x => x.TemplateId).ToList(); - }); - } - - return pageList; - } - - public async Task> GetTrackProblemCountsAsync() - { - return await Context.Queryable() - .GroupBy(x => x.QuestionType) - .Select(x => new GetTrackCounterVO - { - ProblemType = x.QuestionType, - Count = SqlFunc.AggregateCount(1) - }) - .ToListAsync(); - } -} diff --git a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs index b89ed57c..60bf4d27 100644 --- a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs @@ -1,11 +1,54 @@ using SJZY.Track.Domain; using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Dtos.Order; +using SJZY.Track.Domain.Enums; +using SJZY.Track.Domain.VEntities; namespace SJZY.Track.Repository.Repositories; public class OrderRepository : BasicRepository, IOrderRepository, ITransientDependency { + public async Task> GetTrackOrderPagedList(GetPageTrackOrderInputVO input) + { + var pageList = await Context.Queryable() + .LeftJoin((a, b) => a.CustomId == b.Id && b.IsDeleted == false) + .LeftJoin((a, b, c) => a.SubSystemId == c.Id && c.IsDeleted == false) + .WhereIF(input.SubSystemId > 0, (a, b, c) => a.SubSystemId == input.SubSystemId) + .WhereIF(!input.OrderNos.IsNullOrEmpty(), (a, b, c) => input.OrderNos!.Contains(a.OrderNo)) + .WhereIF(input.CreateTimeStart.HasValue && input.CreateTimeEnd.HasValue, + (a, b, c) => a.CreateTime >= input.CreateTimeStart && a.CreateTime <= input.CreateTimeEnd) + .WhereIF(input.CreateTimeStart.HasValue && (!input.CreateTimeEnd.HasValue), + (a, b, c) => a.CreateTime >= input.CreateTimeStart) + .WhereIF((!input.CreateTimeStart.HasValue) && input.CreateTimeEnd.HasValue, + (a, b, c) => a.CreateTime <= input.CreateTimeEnd) + .WhereIF(input.CustomerId > 0, (a, b, c) => a.CustomId == input.CustomerId) + .WhereIF(input.TrackOrderType > 0, (a, b, c) => a.OrderType == input.TrackOrderType) + .WhereIF(input.TabType > 0, (a, b, c) => a.QuestionType == input.TabType) + .WhereIF(input.TabType == (int) TrackProblemType.Warn, (a, b, c) => !a.IsCompleted) + .OrderByDescending((a, b, c) => a.CreateTime) + .Select((a, b, c) => new TrackOrderVO + { + Id = a.Id, + OrderNumber = a.OrderNo, + OrderType = a.OrderType, + QuestionType = a.QuestionType, + CustomerShortName = b.Abbreviation, + CustomerCode = b.Code, + CustomerId = a.CustomId, + NewestTrackContent = a.LatestTrackContent, + NewestTrackEnContent = a.LatestTrackEnContent, + NewestTrackPlace = a.LatestTrackPlace, + NewestTrackTime = a.LatestTrackTime, + IsFinish = a.IsCompleted, + CreateTime = a.CreateTime, + SubSystem = c.CnName, + SubSystemId = c.Id + }) + .ToPagedListAsync(input.PageIndex, input.PageSize); + + return pageList; + } + public async Task CreateOrderAsync(OrderEntity order) { using var tran = TransactionHelper.GetReadCommitted(); @@ -13,6 +56,8 @@ public class OrderRepository : BasicRepository, IOrderRepository, I var orderId = await InsertReturnIdentityAsync(order); order.OrderFlights.ForEach(x => x.OrderId = orderId); await Context.Insertable(order.OrderFlights).ExecuteCommandAsync(); + order.OrderPullStatus.ForEach(x => x.OrderId = orderId); + await Context.Insertable(order.OrderPullStatus).ExecuteCommandAsync(); tran.Complete(); @@ -42,7 +87,7 @@ public class OrderRepository : BasicRepository, IOrderRepository, I }); // 更新订单模板 - await Context.Deleteable().Where(x => x.OrderId == order.Id).ExecuteCommandAsync(); + await Context.Deleteable().Where(x => x.OrderId == order.Id).ExecuteCommandAsync(); // 更新订单航班 await Context.Deleteable().Where(x => x.OrderId == order.Id).ExecuteCommandAsync();