From 2e125f8662e558c747bf5869f0005172ea168b22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com> Date: Thu, 29 Feb 2024 20:12:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AutoMapper/OrderAutoMapperProfile.cs | 6 +- .../Dtos/ProvideServices/DeleteOrderInput.cs | 20 +--- .../Dtos/ProvideServices/OrderNoInfo.cs | 19 +++ ...reateOrderInput.cs => UpsertOrderInput.cs} | 2 +- .../Dtos/ProvideServices/UpsertTrackInput.cs | 24 ++++ .../ProvideServices/OrderLinkService.cs | 1 + .../Services/ProvideServices/OrderService.cs | 12 +- .../ProvideServices/TrackQueryService.cs | 42 +++---- .../Services/ProvideServices/TrackService.cs | 84 ++++++++++++- .../OrderAggregate/IOrderRepository.cs | 16 +-- .../OrderAggregate/OrderFlightEntity.cs | 10 +- .../OrderAggregate/OrderLinkEntity.cs | 10 +- .../OrderAggregate/OrderTemplateEntity.cs | 17 ++- .../TrackContentEntity.cs | 6 +- .../ITrackDetailsRepository.cs | 8 +- .../TrackDetailsIndex.cs | 2 +- .../TrackStatusAggregate/TrackStatusEntity.cs | 6 +- .../ITrackTemplateRepository.cs | 5 +- .../Dtos/Order/OrderIdentifier.cs | 23 ++++ ...TemplateDto.cs => OrderTemplateLinkDto.cs} | 4 +- .../Dtos/TrackDetails/MatchTrackContentDto.cs | 19 +++ ...ntOrderlyDto.cs => OrderedTrackCodeDto.cs} | 2 +- src/SJZY.Track.Domain/IBasicRepository.cs | 4 +- .../{ => Queries}/IBasicQuery.cs | 2 +- .../Queries/ITrackQueries.cs | 34 ++++++ src/SJZY.Track.Repository/BasicQuery.cs | 2 +- src/SJZY.Track.Repository/DataBaseContext.cs | 110 +++++++++--------- src/SJZY.Track.Repository/OrderRepository.cs | 35 +++--- .../Queries/TrackQueries.cs | 78 +++++++++++++ .../SJZYTrackRepositoryModule.cs | 4 +- .../TrackDetailsRepository.cs | 55 ++++++--- .../TrackTemplateRepository.cs | 40 +++---- 32 files changed, 504 insertions(+), 198 deletions(-) create mode 100644 src/SJZY.Track.Application/Dtos/ProvideServices/OrderNoInfo.cs rename src/SJZY.Track.Application/Dtos/ProvideServices/{CreateOrderInput.cs => UpsertOrderInput.cs} (93%) create mode 100644 src/SJZY.Track.Application/Dtos/ProvideServices/UpsertTrackInput.cs create mode 100644 src/SJZY.Track.Domain/Dtos/Order/OrderIdentifier.cs rename src/SJZY.Track.Domain/Dtos/Order/{OrderTemplateDto.cs => OrderTemplateLinkDto.cs} (70%) create mode 100644 src/SJZY.Track.Domain/Dtos/TrackDetails/MatchTrackContentDto.cs rename src/SJZY.Track.Domain/Dtos/TrackTemplate/{TemplateContentOrderlyDto.cs => OrderedTrackCodeDto.cs} (86%) rename src/SJZY.Track.Domain/{ => Queries}/IBasicQuery.cs (96%) create mode 100644 src/SJZY.Track.Domain/Queries/ITrackQueries.cs create mode 100644 src/SJZY.Track.Repository/Queries/TrackQueries.cs diff --git a/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs b/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs index 4a0bb612..fabc4fdd 100644 --- a/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs +++ b/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs @@ -1,5 +1,4 @@ using AutoMapper; -using AutoMapper.Internal.Mappers; using SJZY.Track.Application.Dtos.ProvideServices; using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Dtos.Order; @@ -10,15 +9,14 @@ public class OrderAutoMapperProfile : Profile { public OrderAutoMapperProfile() { - CreateMap(MemberList.None); + 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); + CreateMap(MemberList.None); } } \ No newline at end of file diff --git a/src/SJZY.Track.Application/Dtos/ProvideServices/DeleteOrderInput.cs b/src/SJZY.Track.Application/Dtos/ProvideServices/DeleteOrderInput.cs index b48f8af7..c4fba2a8 100644 --- a/src/SJZY.Track.Application/Dtos/ProvideServices/DeleteOrderInput.cs +++ b/src/SJZY.Track.Application/Dtos/ProvideServices/DeleteOrderInput.cs @@ -1,23 +1,5 @@ -using System.ComponentModel.DataAnnotations; - -namespace SJZY.Track.Application.Dtos.ProvideServices; +namespace SJZY.Track.Application.Dtos.ProvideServices; public class DeleteOrderInput : OrderNoInfo { -} - -public class OrderNoInfo -{ - /// - /// 订单类型,必填 - /// - [Required] - public int OrderType { get; set; } - - /// - /// 订单号,必填 - /// - [Required] - [MaxLength(100)] - public string OrderNo { get; set; } = null!; } \ No newline at end of file diff --git a/src/SJZY.Track.Application/Dtos/ProvideServices/OrderNoInfo.cs b/src/SJZY.Track.Application/Dtos/ProvideServices/OrderNoInfo.cs new file mode 100644 index 00000000..6f98fafc --- /dev/null +++ b/src/SJZY.Track.Application/Dtos/ProvideServices/OrderNoInfo.cs @@ -0,0 +1,19 @@ +using System.ComponentModel.DataAnnotations; + +namespace SJZY.Track.Application.Dtos.ProvideServices; + +public class OrderNoInfo +{ + /// + /// 订单类型,必填 + /// + [Required] + public int OrderType { get; set; } + + /// + /// 订单号,必填 + /// + [Required] + [MaxLength(100)] + public string OrderNo { get; set; } = null!; +} \ No newline at end of file diff --git a/src/SJZY.Track.Application/Dtos/ProvideServices/CreateOrderInput.cs b/src/SJZY.Track.Application/Dtos/ProvideServices/UpsertOrderInput.cs similarity index 93% rename from src/SJZY.Track.Application/Dtos/ProvideServices/CreateOrderInput.cs rename to src/SJZY.Track.Application/Dtos/ProvideServices/UpsertOrderInput.cs index 47888316..c03d2478 100644 --- a/src/SJZY.Track.Application/Dtos/ProvideServices/CreateOrderInput.cs +++ b/src/SJZY.Track.Application/Dtos/ProvideServices/UpsertOrderInput.cs @@ -2,7 +2,7 @@ namespace SJZY.Track.Application.Dtos.ProvideServices; -public class CreateOrderInput : UpdateOrderInput +public class UpsertOrderInput : UpdateOrderInput { /// /// 客户id diff --git a/src/SJZY.Track.Application/Dtos/ProvideServices/UpsertTrackInput.cs b/src/SJZY.Track.Application/Dtos/ProvideServices/UpsertTrackInput.cs new file mode 100644 index 00000000..fa2112ee --- /dev/null +++ b/src/SJZY.Track.Application/Dtos/ProvideServices/UpsertTrackInput.cs @@ -0,0 +1,24 @@ +namespace SJZY.Track.Application.Dtos.ProvideServices; + +public class UpsertTrackInput : OrderNoInfo +{ + /// + /// 轨迹内容代码 + /// + public string TrackCode { get; set; } + + /// + /// 轨迹发生地 + /// + public string TrackPlace { get; set; } + + /// + /// 轨迹发生时间 + /// + public DateTime TrackTime { get; set; } + + /// + /// 轨迹发生时区 + /// + public float TraceTimeZone { get; set; } +} \ No newline at end of file diff --git a/src/SJZY.Track.Application/Services/ProvideServices/OrderLinkService.cs b/src/SJZY.Track.Application/Services/ProvideServices/OrderLinkService.cs index d4ec1f87..e21ca538 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/OrderLinkService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/OrderLinkService.cs @@ -1,5 +1,6 @@ using SJZY.Track.Application.Dtos.ProvideServices; using SJZY.Track.Domain.Aggregates.OrderAggregate; +using SJZY.Track.Domain.Queries; namespace SJZY.Track.Application.Services.ProvideServices; diff --git a/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs b/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs index 1c5c25dd..f75a8de9 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs @@ -23,8 +23,8 @@ public class OrderService : ApplicationService /// /// /// - [HttpPost("Order/CreateOrUpdate")] - public async Task CreateOrUpdateOrderAsync(CreateOrderInput input) + [HttpPost("Order/Upsert")] + public async Task UpsertAsync(UpsertOrderInput input) { var order = await _orderRepository.GetFirstAsync(x => x.OrderType == input.OrderType && x.OrderNo == input.OrderNo); @@ -35,7 +35,7 @@ public class OrderService : ApplicationService return "更新成功"; } - order = ObjectMapper.Map(input); + order = ObjectMapper.Map(input); order.SubSystemId = 1; order.OrderTemplates = ObjectMapper.Map, List>(input.Templates); order.OrderFlights = ObjectMapper.Map, List>(input.FlightInfos); @@ -60,12 +60,13 @@ public class OrderService : ApplicationService throw new BusinessException(message: $"订单:{input.OrderNo}不存在"); } - await _orderRepository.SoftDeleteAsync(x => x.Id == orderId); + await _orderRepository.DeleteOrderAsync(orderId); return true; } #region 轨迹订单明细 + /// /// 根据轨迹订单id获取轨迹订单明细列表 /// @@ -76,9 +77,11 @@ public class OrderService : ApplicationService { return null; } + #endregion #region 轨迹订单列表 + /// /// 获取分页的轨迹订单 /// @@ -92,6 +95,7 @@ public class OrderService : ApplicationService return null; } + #endregion private async Task UpdateOrderAsync(UpdateOrderInput input, OrderEntity order) diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackQueryService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackQueryService.cs index 7792631f..587c316b 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackQueryService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackQueryService.cs @@ -1,7 +1,6 @@ using SJZY.Track.Application.Dtos.ProvideServices; -using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; -using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate; +using SJZY.Track.Domain.Queries; namespace SJZY.Track.Application.Services.ProvideServices; @@ -12,15 +11,13 @@ namespace SJZY.Track.Application.Services.ProvideServices; public class TrackQueryService : ApplicationService { private readonly ITrackDetailsRepository _trackDetailsRepository; - private readonly IOrderRepository _orderRepository; - private readonly ITrackTemplateRepository _trackTemplateRepository; + private readonly ITrackQueries _trackQueries; - public TrackQueryService(ITrackDetailsRepository trackDetailsRepository, IOrderRepository orderRepository, - ITrackTemplateRepository trackTemplateRepository) + public TrackQueryService(ITrackDetailsRepository trackDetailsRepository, + ITrackQueries trackQueries) { _trackDetailsRepository = trackDetailsRepository; - _orderRepository = orderRepository; - _trackTemplateRepository = trackTemplateRepository; + _trackQueries = trackQueries; } /// @@ -29,8 +26,8 @@ public class TrackQueryService : ApplicationService /// /// /// - [HttpPost("TrackQuery/GetByOrderNos")] - public async Task> GetByOrderNosAsync(GetTrackInput input) + [HttpPost("Track/Query")] + public async Task> QueryAsync(GetTrackInput input) { if (input.OrderNos.Count > 500) { @@ -38,8 +35,8 @@ public class TrackQueryService : ApplicationService } var res = new List(); - input.OrderNos = input.OrderNos.Distinct().ToList(); - var details = await _trackDetailsRepository.GetListAsync(input.OrderNos); + input.OrderNos = input.OrderNos.Distinct().ToList(); // 单号去重 + var details = await _trackDetailsRepository.GetListAsync(input.OrderType, input.OrderNos); var isTurn = input.TimeZone != 0; foreach (var group in details.GroupBy(x => x.OrderId)) @@ -78,18 +75,21 @@ public class TrackQueryService : ApplicationService list.ForEach(item => item.TrackDetails.Sort((a, b) => b.Time.CompareTo(a.Time))); break; case SortMethod.ByTemplate: - var orderTemplates = await _orderRepository.GetOrderTemplatesAsync(input.OrderType, input.OrderNos); + var orderTemplates = await _trackQueries + .GetOrderTemplateLinksAsync(input.OrderType, input.OrderNos); var distinctTemplateIds = orderTemplates.Select(x => x.TemplateId).Distinct().ToList(); - var templateContent = - await _trackTemplateRepository.GetTemplateContentOrderlyAsync(distinctTemplateIds); + var templateContent = await _trackQueries.GetOrderedTrackCodesAsync(distinctTemplateIds); list.ForEach(item => { - var template = orderTemplates.FirstOrDefault(x => x.OrderNo == item.OrderNo); - if (template == default) return; - var codes = templateContent - .Where(x => x.TemplateId == template.TemplateId) - .Select(x => x.Code) - .ToList(); + var codes = new List(); + // 多模板拼接显示 + foreach (var orderTemplate in orderTemplates.Where(x => x.OrderNo == item.OrderNo)) + { + codes.AddRange(templateContent + .Where(t => t.TemplateId == orderTemplate.TemplateId) + .Select(t => t.Code)); + } + item.TrackDetails = item.TrackDetails .Where(x => codes.Contains(x.Code)) // 剔除不在模板内容中的元素 .OrderBy(x => codes.IndexOf(x.Code)) // 按照在模板内容的位置排序 diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs index c5cddf06..5147ae93 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs @@ -1,5 +1,85 @@ -namespace SJZY.Track.Application.Services.ProvideServices; +using SJZY.Track.Application.Dtos.ProvideServices; +using SJZY.Track.Domain.Aggregates.OrderAggregate; +using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; +using SJZY.Track.Domain.Queries; +using SJZY.UserCenter.HttpApi.Services; -public class TrackService +namespace SJZY.Track.Application.Services.ProvideServices; + +/// +/// 轨迹服务 +/// +[ApiExplorerSettings(GroupName = "提供接口")] +public class TrackService : ApplicationService { + private readonly IOrderRepository _orderRepository; + private readonly ITrackDetailsRepository _trackDetailsRepository; + private readonly ITrackQueries _trackQueries; + + public TrackService(ITrackQueries trackQueries, IOrderRepository orderRepository, + ITrackDetailsRepository trackDetailsRepository) + { + _trackQueries = trackQueries; + _orderRepository = orderRepository; + _trackDetailsRepository = trackDetailsRepository; + } + + /// + /// 新增/更新订单轨迹接口 + /// + /// + /// + /// + [HttpPost("Track/Upsert")] + public async Task UpsertTrackAsync(UpsertTrackInput input) + { + var orderId = await _orderRepository.GetFirstAsync(x => + x.OrderType == input.OrderType && x.OrderNo == input.OrderNo, x => x.Id); + if (orderId == default) + { + throw new BusinessException(message: $"订单:{input.OrderNo}不存在"); + } + + // 不存在则新增轨迹,存在则更新 + var track = await _trackDetailsRepository.GetFirstOrDefaultAsync(orderId, input.TrackCode); + if (track == default) + { + var trackContent = await _trackQueries.MatchTrackContentAsync(orderId, input.TrackCode); + if (trackContent == default) + { + throw new BusinessException(message: $"订单:{input.OrderNo} 所绑定的模板,没有一条内容可以匹配轨迹代码:{input.TrackCode}"); + } + + track = new TrackDetailsIndex + { + OrderId = orderId, + OrderNo = input.OrderNo, + OrderType = input.OrderType, + TrackStatus = trackContent.Status, + TrackCode = input.TrackCode, + TrackContent = trackContent.Content, + TrackEnContent = trackContent.EnContent, + TrackPlace = input.TrackPlace, + TrackTime = input.TrackTime, + TraceTimeZone = input.TraceTimeZone, + CreateUserId = CurrentUserRequest.CurrentUser.UserId, + CreateTime = DateTime.Now + }; + await _trackDetailsRepository.CreateAsync(track); + } + else + { + track.UpdateUserId = CurrentUserRequest.CurrentUser.UserId; + track.UpdateTime = DateTime.Now; + track.TrackPlace = input.TrackPlace; + track.TrackTime = input.TrackTime; + track.TraceTimeZone = input.TraceTimeZone; + await _trackDetailsRepository.UpdateAsync(track); + } + + // 根据订单关联关系向下刷,不同子系统还需要做内容映射 + + // 推送 + return true; + } } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs index ded90121..93d162e2 100644 --- a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs +++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs @@ -10,15 +10,8 @@ public interface IOrderRepository : IBasicRepository /// /// Task CreateOrderAsync(OrderEntity order); - Task> GetOrderDetails(GetOrderDetailsInputVO input); - /// - /// 根据订单号,获取订单模板 - /// - /// 订单类型 - /// - /// - Task> GetOrderTemplatesAsync(int orderType, List distinctOrderNumbers); + Task> GetOrderDetails(GetOrderDetailsInputVO input); /// /// 获取分页的轨迹订单 @@ -47,4 +40,11 @@ public interface IOrderRepository : IBasicRepository /// /// Task UpdateOrderAsync(OrderEntity order); + + /// + /// 删除订单 + /// + /// + /// + Task DeleteOrderAsync(int orderId); } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderFlightEntity.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderFlightEntity.cs index c76d4d54..4e5f2017 100644 --- a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderFlightEntity.cs +++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderFlightEntity.cs @@ -4,7 +4,7 @@ /// 订单航班表(1:N) /// [SugarTable("t_order_flight")] -public class OrderFlightEntity : ICreateBaicEntity, IEntity +public class OrderFlightEntity : ICreateBaicEntity, ISoftDeleteBasicEntity, IEntity { /// /// 自增主键 @@ -33,10 +33,18 @@ public class OrderFlightEntity : ICreateBaicEntity, IEntity /// /// 创建人 /// + [SugarColumn(ColumnName = "CreateUserId")] public int CreateUserId { get; set; } /// /// 创建时间 /// + [SugarColumn(ColumnName = "CreateTime")] public DateTime? CreateTime { get; set; } + + /// + /// 是否删除 + /// + [SugarColumn(ColumnName = "IsDeleted")] + public bool IsDeleted { get; set; } } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderLinkEntity.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderLinkEntity.cs index 68b20740..112fc472 100644 --- a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderLinkEntity.cs +++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderLinkEntity.cs @@ -4,7 +4,7 @@ /// 轨迹订单关联表(1:N) /// [SugarTable("t_order_link")] -public class OrderLinkEntity : ICreateBaicEntity, IEntity +public class OrderLinkEntity : ICreateBaicEntity, ISoftDeleteBasicEntity, IEntity { /// /// 自增主键 @@ -39,10 +39,18 @@ public class OrderLinkEntity : ICreateBaicEntity, IEntity /// /// 创建人 /// + [SugarColumn(ColumnName = "CreateUserId")] public int CreateUserId { get; set; } /// /// 创建时间 /// + [SugarColumn(ColumnName = "CreateTime")] public DateTime? CreateTime { get; set; } + + /// + /// 是否删除 + /// + [SugarColumn(ColumnName = "IsDeleted")] + public bool IsDeleted { get; set; } } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderTemplateEntity.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderTemplateEntity.cs index 91219904..88559ae6 100644 --- a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderTemplateEntity.cs +++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderTemplateEntity.cs @@ -4,7 +4,7 @@ /// 轨迹订单模板表(1:N) /// [SugarTable("t_order_template")] -public class OrderTemplateEntity : ICreateBaicEntity, IEntity +public class OrderTemplateEntity : ICreateBaicEntity, ISoftDeleteBasicEntity, IEntity { /// /// 自增主键 @@ -30,6 +30,21 @@ public class OrderTemplateEntity : ICreateBaicEntity, IEntity [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; } } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/TrackContentEntity.cs b/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/TrackContentEntity.cs index adf4b23b..02fac985 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/TrackContentEntity.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/TrackContentEntity.cs @@ -16,19 +16,19 @@ public class TrackContentEntity : IFullAuditedBasicEntitys, IAggregateRoot /// 轨迹内容代码 /// [SugarColumn(ColumnName = "Code")] - public string Code { get; set; } + public string Code { get; set; } = null!; /// /// 轨迹内容 /// [SugarColumn(ColumnName = "Content")] - public string Content { get; set; } + public string Content { get; set; } = null!; /// /// 轨迹内容英文 /// [SugarColumn(ColumnName = "EnContent")] - public string EnContent { get; set; } + public string EnContent { get; set; } = null!; /// /// 子系统id diff --git a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs index 5e83c476..444dd072 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs @@ -4,9 +4,13 @@ namespace SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; public interface ITrackDetailsRepository { - Task WriteTrack(TrackDetailsIndex index); + Task GetFirstOrDefaultAsync(int orderId, string inputTrackCode); - Task> GetListAsync(List orderNos); + Task UpdateAsync(TrackDetailsIndex index); + + Task CreateAsync(TrackDetailsIndex index); + + Task> GetListAsync(int orderType, List orderNos); Task<(List list, long total)> GetListAsync(TrackDetailsQueryInput input); } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs index 9040ecc2..a8160da6 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs @@ -21,7 +21,7 @@ public class TrackDetailsIndex : IdBaseIndex /// /// 订单类型(主数据枚举TrackOrderType) /// - public string OrderType { get; set; } + public int OrderType { get; set; } /// /// 轨迹状态 diff --git a/src/SJZY.Track.Domain/Aggregates/TrackStatusAggregate/TrackStatusEntity.cs b/src/SJZY.Track.Domain/Aggregates/TrackStatusAggregate/TrackStatusEntity.cs index 7d1b1a0d..dd98a21d 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackStatusAggregate/TrackStatusEntity.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackStatusAggregate/TrackStatusEntity.cs @@ -16,13 +16,13 @@ public class TrackStatusEntity : IFullAuditedBasicEntitys, IAggregateRoot /// 轨迹状态代码 /// [SugarColumn(ColumnName = "Code")] - public string Code { get; set; } + public string Code { get; set; } = null!; /// /// 轨迹状态英文 /// [SugarColumn(ColumnName = "EnStatus")] - public string EnStatus { get; set; } + public string EnStatus { get; set; } = null!; /// /// 所属节点(主数据枚举ServiceNode) @@ -34,7 +34,7 @@ public class TrackStatusEntity : IFullAuditedBasicEntitys, IAggregateRoot /// 轨迹状态 /// [SugarColumn(ColumnName = "Status")] - public string Status { get; set; } + public string Status { get; set; } = null!; /// /// 子系统id diff --git a/src/SJZY.Track.Domain/Aggregates/TrackTemplateAggregate/ITrackTemplateRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackTemplateAggregate/ITrackTemplateRepository.cs index f7c5fb2b..13d2ff0a 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackTemplateAggregate/ITrackTemplateRepository.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackTemplateAggregate/ITrackTemplateRepository.cs @@ -4,8 +4,6 @@ namespace SJZY.Track.Domain.Aggregates.TrackTemplateAggregate; public interface ITrackTemplateRepository : IBasicRepository { - Task> GetTemplateContentOrderlyAsync(List distinctTemplateIds); - Task GetDetailAsync(int id); Task> GetPageTrackTemplate(GetPageTrackTemplateVO input); @@ -35,5 +33,6 @@ public interface ITrackTemplateRepository : IBasicRepository SoftDeleteContentAsync(int id); - Task> GetContentListAsync(Expression> whereExpression); + Task> GetContentListAsync( + Expression> whereExpression); } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Dtos/Order/OrderIdentifier.cs b/src/SJZY.Track.Domain/Dtos/Order/OrderIdentifier.cs new file mode 100644 index 00000000..248ec7e9 --- /dev/null +++ b/src/SJZY.Track.Domain/Dtos/Order/OrderIdentifier.cs @@ -0,0 +1,23 @@ +namespace SJZY.Track.Domain.Dtos.Order; + +/// +/// 订单标识符 +/// +public readonly struct OrderIdentifier +{ + public OrderIdentifier(int orderType, string orderNo) + { + OrderType = orderType; + OrderNo = orderNo; + } + + /// + /// 订单类型 + /// + public int OrderType { get; } + + /// + /// 订单号 + /// + public string OrderNo { get; } +} \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Dtos/Order/OrderTemplateDto.cs b/src/SJZY.Track.Domain/Dtos/Order/OrderTemplateLinkDto.cs similarity index 70% rename from src/SJZY.Track.Domain/Dtos/Order/OrderTemplateDto.cs rename to src/SJZY.Track.Domain/Dtos/Order/OrderTemplateLinkDto.cs index c2655b43..6ca82ed3 100644 --- a/src/SJZY.Track.Domain/Dtos/Order/OrderTemplateDto.cs +++ b/src/SJZY.Track.Domain/Dtos/Order/OrderTemplateLinkDto.cs @@ -1,11 +1,11 @@ namespace SJZY.Track.Domain.Dtos.Order; -public class OrderTemplateDto +public class OrderTemplateLinkDto { /// /// 订单号 /// - public string OrderNo { get; set; } + public string OrderNo { get; set; } = null!; /// /// 模板id diff --git a/src/SJZY.Track.Domain/Dtos/TrackDetails/MatchTrackContentDto.cs b/src/SJZY.Track.Domain/Dtos/TrackDetails/MatchTrackContentDto.cs new file mode 100644 index 00000000..c6e07352 --- /dev/null +++ b/src/SJZY.Track.Domain/Dtos/TrackDetails/MatchTrackContentDto.cs @@ -0,0 +1,19 @@ +namespace SJZY.Track.Domain.Dtos.TrackDetails; + +public class MatchTrackContentDto +{ + /// + /// 轨迹内容 + /// + public string Content { get; set; } + + /// + /// 轨迹内容英文 + /// + public string EnContent { get; set; } + + /// + /// 轨迹状态 + /// + public string Status { get; set; } +} \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Dtos/TrackTemplate/TemplateContentOrderlyDto.cs b/src/SJZY.Track.Domain/Dtos/TrackTemplate/OrderedTrackCodeDto.cs similarity index 86% rename from src/SJZY.Track.Domain/Dtos/TrackTemplate/TemplateContentOrderlyDto.cs rename to src/SJZY.Track.Domain/Dtos/TrackTemplate/OrderedTrackCodeDto.cs index d7ef08ef..60362986 100644 --- a/src/SJZY.Track.Domain/Dtos/TrackTemplate/TemplateContentOrderlyDto.cs +++ b/src/SJZY.Track.Domain/Dtos/TrackTemplate/OrderedTrackCodeDto.cs @@ -1,6 +1,6 @@ namespace SJZY.Track.Domain.Dtos.TrackTemplate; -public class TemplateContentOrderlyDto +public class OrderedTrackCodeDto { /// /// 模板id diff --git a/src/SJZY.Track.Domain/IBasicRepository.cs b/src/SJZY.Track.Domain/IBasicRepository.cs index b085429b..71bc3175 100644 --- a/src/SJZY.Track.Domain/IBasicRepository.cs +++ b/src/SJZY.Track.Domain/IBasicRepository.cs @@ -1,4 +1,6 @@ -namespace SJZY.Track.Domain; +using SJZY.Track.Domain.Queries; + +namespace SJZY.Track.Domain; public interface IBasicRepository : IBasicQuery where T : IAggregateRoot { diff --git a/src/SJZY.Track.Domain/IBasicQuery.cs b/src/SJZY.Track.Domain/Queries/IBasicQuery.cs similarity index 96% rename from src/SJZY.Track.Domain/IBasicQuery.cs rename to src/SJZY.Track.Domain/Queries/IBasicQuery.cs index f050d54d..894e72a9 100644 --- a/src/SJZY.Track.Domain/IBasicQuery.cs +++ b/src/SJZY.Track.Domain/Queries/IBasicQuery.cs @@ -1,4 +1,4 @@ -namespace SJZY.Track.Domain; +namespace SJZY.Track.Domain.Queries; public interface IBasicQuery where T : IEntity { diff --git a/src/SJZY.Track.Domain/Queries/ITrackQueries.cs b/src/SJZY.Track.Domain/Queries/ITrackQueries.cs new file mode 100644 index 00000000..df41882c --- /dev/null +++ b/src/SJZY.Track.Domain/Queries/ITrackQueries.cs @@ -0,0 +1,34 @@ +using SJZY.Track.Domain.Dtos.Order; +using SJZY.Track.Domain.Dtos.TrackDetails; +using SJZY.Track.Domain.Dtos.TrackTemplate; + +namespace SJZY.Track.Domain.Queries; + +/// +/// 提供接口专用查询 +/// +public interface ITrackQueries +{ + /// + /// 根据订单号,获取订单模板 + /// + /// 订单类型 + /// 订单号 + /// + Task> GetOrderTemplateLinksAsync(int orderType, List orderNumbers); + + /// + /// 根据订单模板,获取有序的轨迹code + /// + /// 模板id + /// + Task> GetOrderedTrackCodesAsync(List templateIds); + + /// + /// 根据订单id找到订单模板,匹配模板命中的轨迹内容 + /// + /// 订单id + /// 轨迹代码 + /// + Task MatchTrackContentAsync(int orderId, string code); +} \ No newline at end of file diff --git a/src/SJZY.Track.Repository/BasicQuery.cs b/src/SJZY.Track.Repository/BasicQuery.cs index 275b3b4d..4d8e70d1 100644 --- a/src/SJZY.Track.Repository/BasicQuery.cs +++ b/src/SJZY.Track.Repository/BasicQuery.cs @@ -1,5 +1,5 @@ using System.Linq.Expressions; -using SJZY.Track.Domain; +using SJZY.Track.Domain.Queries; using SJZY.Track.Domain.SeedWork; namespace SJZY.Track.Repository; diff --git a/src/SJZY.Track.Repository/DataBaseContext.cs b/src/SJZY.Track.Repository/DataBaseContext.cs index 14dbada8..88539836 100644 --- a/src/SJZY.Track.Repository/DataBaseContext.cs +++ b/src/SJZY.Track.Repository/DataBaseContext.cs @@ -1,77 +1,77 @@ -#pragma warning disable 1591 -using SJZY.UserCenter.HttpApi.Services; +using SJZY.UserCenter.HttpApi.Services; -namespace SJZY.Track.Repository +#pragma warning disable 1591 + +namespace SJZY.Track.Repository; + +/// +/// Sqlsugar 上下文对象 +/// +public class DataBaseContext { - /// - /// Sqlsugar 上下文对象 - /// - public class DataBaseContext + #region 审计属性自动赋值 + + public static void OnExcutingAction(object oldValue, DataFilterModel entityInfo) { + //过滤掉 "v_" 开头的表 + if (entityInfo.EntityColumnInfo.DbTableName.StartsWith("v_", StringComparison.OrdinalIgnoreCase)) + throw new Exception("非法的操作,不允许编辑映射表"); - #region 审计属性自动赋值 - - public static void OnExcutingAction(object oldValue, DataFilterModel entityInfo) + //新增 + if (entityInfo.OperationType == DataFilterType.InsertByObject) { - //过滤掉 "v_" 开头的表 - if (entityInfo.EntityColumnInfo.DbTableName.StartsWith("v_", StringComparison.OrdinalIgnoreCase)) - throw new Exception("非法的操作,不允许编辑映射表"); - - //新增 - if (entityInfo.OperationType == DataFilterType.InsertByObject) + if (entityInfo.PropertyName == nameof(ICreateBaicEntity.CreateTime)) + entityInfo.SetValue(DateTime.Now); + if (entityInfo.PropertyName == nameof(ICreateBaicEntity.CreateUserId)) { - if (entityInfo.PropertyName == nameof(ICreateBaicEntity.CreateTime)) - entityInfo.SetValue(DateTime.Now); - if (entityInfo.PropertyName == nameof(ICreateBaicEntity.CreateUserId)) + if (oldValue == null || (int)oldValue == 0) { - if (oldValue == null || (int)oldValue == 0) + try + { + entityInfo.SetValue(CurrentUserRequest.CurrentUser?.UserId); + } + catch { - try - { - entityInfo.SetValue(CurrentUserRequest.CurrentUser?.UserId); - } - catch - { - - } } - //entityInfo.SetValue(CurrentUserRequest.CurrentUser.UserId); } + //entityInfo.SetValue(CurrentUserRequest.CurrentUser.UserId); } - //修改 - else if (entityInfo.OperationType == DataFilterType.UpdateByObject) + } + //修改 + else if (entityInfo.OperationType == DataFilterType.UpdateByObject) + { + if (entityInfo.PropertyName == nameof(IUpdateBasicEntity.UpdateTime)) + entityInfo.SetValue(DateTime.Now); + else if (entityInfo.PropertyName == nameof(IUpdateBasicEntity.UpdateUserId)) { - if (entityInfo.PropertyName == nameof(IUpdateBasicEntity.UpdateTime)) - entityInfo.SetValue(DateTime.Now); - else if (entityInfo.PropertyName == nameof(IUpdateBasicEntity.UpdateUserId)) + if (oldValue == null || (int)oldValue == 1) { - if (oldValue == null || (int)oldValue == 1) + try + { + entityInfo.SetValue(CurrentUserRequest.CurrentUser.UserId); + } + catch { - try - { - entityInfo.SetValue(CurrentUserRequest.CurrentUser.UserId); - } - catch - { - - } } - //entityInfo.SetValue(CurrentUserRequest.CurrentUser.UserId); } - //删除 - else if (entityInfo.PropertyName == nameof(IDeleteBasicEntity.IsDeleted)) + //entityInfo.SetValue(CurrentUserRequest.CurrentUser.UserId); + } + //删除 + else if (entityInfo.PropertyName == nameof(IDeleteBasicEntity.IsDeleted)) + { + var currentType = entityInfo.EntityValue.GetType(); + bool.TryParse( + currentType.GetProperty(entityInfo.PropertyName)?.GetValue(entityInfo.EntityValue)?.ToString(), + out bool isdelete); + if (isdelete) { - var currentType = entityInfo.EntityValue.GetType(); - bool.TryParse(currentType.GetProperty(entityInfo.PropertyName)?.GetValue(entityInfo.EntityValue)?.ToString(), out bool isdelete); - if (isdelete) - { - //currentType.GetProperty(nameof(IDeleteBasicEntity.DeleteUserId))?.SetValue(entityInfo.EntityValue, 5); - currentType.GetProperty(nameof(IDeleteBasicEntity.DeleteTime))?.SetValue(entityInfo.EntityValue, DateTime.Now); - } + //currentType.GetProperty(nameof(IDeleteBasicEntity.DeleteUserId))?.SetValue(entityInfo.EntityValue, 5); + currentType.GetProperty(nameof(IDeleteBasicEntity.DeleteTime)) + ?.SetValue(entityInfo.EntityValue, DateTime.Now); } } } - - #endregion 审计属性自动赋值 } + + #endregion 审计属性自动赋值 } \ No newline at end of file diff --git a/src/SJZY.Track.Repository/OrderRepository.cs b/src/SJZY.Track.Repository/OrderRepository.cs index 3196cbdd..c932f142 100644 --- a/src/SJZY.Track.Repository/OrderRepository.cs +++ b/src/SJZY.Track.Repository/OrderRepository.cs @@ -1,7 +1,5 @@ -using Microsoft.AspNetCore.Mvc; -using SJZY.Track.Domain; +using SJZY.Track.Domain; using SJZY.Track.Domain.Aggregates.OrderAggregate; -using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate; using SJZY.Track.Domain.Dtos.Order; namespace SJZY.Track.Repository; @@ -16,20 +14,6 @@ public class OrderRepository : BasicRepository, IOrderRepository, I .ExecuteCommandAsync(); } - public async Task> GetOrderTemplatesAsync(int orderType, - List distinctOrderNumbers) - { - return await AsQueryable() - .LeftJoin((a, b) => a.Id == b.OrderId) - .Where(a => a.OrderType == orderType && distinctOrderNumbers.Contains(a.OrderNo)) - .Select((a, b) => new OrderTemplateDto - { - OrderNo = a.OrderNo, - TemplateId = b.TrackTemplateId - }) - .ToListAsync(); - } - public async Task LinkOrderAsync(List orderLinkEntities) { await Context.Insertable(orderLinkEntities).ExecuteCommandAsync(); @@ -60,6 +44,20 @@ public class OrderRepository : BasicRepository, IOrderRepository, I tran.Complete(); } + public async Task DeleteOrderAsync(int orderId) + { + using var tran = TransactionHelper.GetReadCommitted(); + + // 软删订单主表 + await SoftDeleteAsync(x => x.Id == orderId); + + // 软删订单模板 + // 软删订单航班 + // 软删订单关联关系 + + tran.Complete(); + } + #region 轨迹订单明细 /// @@ -71,9 +69,11 @@ public class OrderRepository : BasicRepository, IOrderRepository, I { return null; } + #endregion #region 轨迹订单分页 + /// /// 获取分页的轨迹订单 /// @@ -105,5 +105,6 @@ public class OrderRepository : BasicRepository, IOrderRepository, I return null; } + #endregion } \ No newline at end of file diff --git a/src/SJZY.Track.Repository/Queries/TrackQueries.cs b/src/SJZY.Track.Repository/Queries/TrackQueries.cs new file mode 100644 index 00000000..da7c4dab --- /dev/null +++ b/src/SJZY.Track.Repository/Queries/TrackQueries.cs @@ -0,0 +1,78 @@ +using SJZY.Track.Domain.Aggregates.OrderAggregate; +using SJZY.Track.Domain.Aggregates.TrackContentAggregate; +using SJZY.Track.Domain.Aggregates.TrackStatusAggregate; +using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate; +using SJZY.Track.Domain.Dtos.Order; +using SJZY.Track.Domain.Dtos.TrackDetails; +using SJZY.Track.Domain.Dtos.TrackTemplate; +using SJZY.Track.Domain.Queries; + +namespace SJZY.Track.Repository.Queries; + +public class TrackQueries : ISugarRepository, ITrackQueries, + ITransientDependency +{ + public ISqlSugarClient Context { get; set; } + + public TrackQueries() + { + Context = SqlsugarScopeBasic.GetContextSafely("default"); + } + + public async Task> GetOrderTemplateLinksAsync(int orderType, + params string[] orderNumbers) + { + return await Context.Queryable() + .LeftJoin((a, b) => a.Id == b.OrderId) + .Where(a => a.OrderType == orderType && orderNumbers.Contains(a.OrderNo)) + .Select((a, b) => new OrderTemplateLinkDto + { + OrderNo = a.OrderNo, + TemplateId = b.TrackTemplateId + }) + .ToListAsync(); + } + + public async Task> GetOrderTemplateLinksAsync(int orderType, List orderNumbers) + { + return await Context.Queryable() + .LeftJoin((a, b) => a.Id == b.OrderId) + .Where(a => a.OrderType == orderType && orderNumbers.Contains(a.OrderNo)) + .Select((a, b) => new OrderTemplateLinkDto + { + OrderNo = a.OrderNo, + TemplateId = b.TrackTemplateId + }) + .ToListAsync(); + } + + public async Task> GetOrderedTrackCodesAsync(List templateIds) + { + return await Context.Queryable() + .LeftJoin((a, b) => a.TrackContentId == b.Id) + .Where(a => templateIds.Contains(a.TrackTemplateId)) + .OrderBy(a => a.Sort) + .Select((a, b) => new OrderedTrackCodeDto + { + TemplateId = a.Id, + Code = b.Code + }) + .ToListAsync(); + } + + public async Task MatchTrackContentAsync(int orderId, string code) + { + return await Context.Queryable() + .LeftJoin((x, a) => x.TrackTemplateId == a.TrackTemplateId) + .LeftJoin((x, a, b) => a.TrackContentId == b.Id) + .LeftJoin((x, a, b, c) => b.TrackStatusId == c.Id) + .Where((x, a, b) => x.OrderId == orderId && b.Code == code) + .Select((x, a, b, c) => new MatchTrackContentDto + { + Content = b.Content, + EnContent = b.EnContent, + Status = c.Status + }) + .FirstAsync(); + } +} \ No newline at end of file diff --git a/src/SJZY.Track.Repository/SJZYTrackRepositoryModule.cs b/src/SJZY.Track.Repository/SJZYTrackRepositoryModule.cs index a482fb7f..799c900a 100644 --- a/src/SJZY.Track.Repository/SJZYTrackRepositoryModule.cs +++ b/src/SJZY.Track.Repository/SJZYTrackRepositoryModule.cs @@ -3,6 +3,7 @@ using Microsoft.Extensions.DependencyInjection; using SJZY.Expand.ABP.Core.SqlSugar.Options; using SJZY.Expand.ElasticSearch; using SJZY.Track.Domain; +using SJZY.Track.Domain.Queries; using Volo.Abp.Autofac; using Volo.Abp.Modularity; @@ -44,9 +45,6 @@ public class SJZYTrackRepositoryModule : AbpModule } - - - public override void ConfigureServices(ServiceConfigurationContext context) { context.Services.AddTransient(typeof(IBasicQuery<>), typeof(BasicQuery<>)); diff --git a/src/SJZY.Track.Repository/TrackDetailsRepository.cs b/src/SJZY.Track.Repository/TrackDetailsRepository.cs index 3a0677b9..ef51db46 100644 --- a/src/SJZY.Track.Repository/TrackDetailsRepository.cs +++ b/src/SJZY.Track.Repository/TrackDetailsRepository.cs @@ -1,6 +1,4 @@ using Nest; -using SJZY.Expand.ABP.Core.Logger; -using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.Expand.ElasticSearch.Services; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Dtos.TrackDetails; @@ -10,26 +8,49 @@ namespace SJZY.Track.Repository; internal class TrackDetailsRepository : ElasticSearchContextAbstract, ITrackDetailsRepository, ITransientDependency { + public string IndexName => $"{TrackDetailsIndex.IndexName}-{DateTime.Now:yyyy.MM.dd}"; + public TrackDetailsRepository(ConnectionFactory connectionFactory) : base(connectionFactory) { } - public async Task WriteTrack(TrackDetailsIndex index) + public async Task GetFirstOrDefaultAsync(int orderId, string trackCode) { - try + var r = await Context.SearchAsync(s => s + .Index($"{TrackDetailsIndex.IndexName}-{DateTime.Now:yyyy.MM.dd}") + .Query(q => + q.Term(t => t.Field(f => f.OrderId).Value(orderId)) + && q.Term(t => t.Field(f => f.TrackCode).Value(trackCode)) + ) + ); + + if (r.IsValid) { - //await Context.IndexDocumentAsync(idx); - var response = await Context.IndexAsync(index, - request => request.Index($"{TrackDetailsIndex.IndexName}-{DateTime.Now:yyyy.MM.dd}")); - if (!response.IsValid) LogHelper.Error("数据添加失败,原因:" + response.DebugInformation); - } - catch (Exception ex) - { - LogHelper.Error($"日志插入ES失败:{ex.Message}。{index.ToJson()}"); + return r.Documents.FirstOrDefault(); } + + return default; } - public async Task> GetListAsync(List orderNos) + public async Task UpdateAsync(TrackDetailsIndex index) + { + var response = await Context.UpdateAsync(index.Id, u => u + .Index(IndexName) + .Doc(index) + //.Refresh(Refresh.True) // 可选:立即刷新索引使更改立即可见 + ); + if (!response.IsValid) + throw new Exception($"数据修改失败,原因:{response.DebugInformation}"); + } + + public async Task CreateAsync(TrackDetailsIndex index) + { + var response = await Context.IndexAsync(index, request => request.Index(IndexName)); + if (!response.IsValid) + throw new Exception($"数据添加失败,原因:{response.DebugInformation}"); + } + + public async Task> GetListAsync(int orderType, List orderNos) { if (orderNos.Count < 1) return new List(); @@ -42,9 +63,11 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract f.TrackTime) .Field(f => f.TraceTimeZone) )) - .Query(q => q.Terms(t => t - .Field(f => f.OrderNo) - .Terms(orderNos))) + .Query(q => + q.Terms(t => t + .Field(f => f.OrderNo) + .Terms(orderNos)) + && q.Term(f => f.OrderType, orderType)) ); return data.Documents.ToList(); diff --git a/src/SJZY.Track.Repository/TrackTemplateRepository.cs b/src/SJZY.Track.Repository/TrackTemplateRepository.cs index 41569c12..43fff1f5 100644 --- a/src/SJZY.Track.Repository/TrackTemplateRepository.cs +++ b/src/SJZY.Track.Repository/TrackTemplateRepository.cs @@ -10,24 +10,8 @@ using SJZY.Track.Repository.Enum; namespace SJZY.Track.Repository; -/// public class TrackTemplateRepository : BasicRepository, ITrackTemplateRepository, IScopedDependency { - public async Task> GetTemplateContentOrderlyAsync(List distinctTemplateIds) - { - return await Context.Queryable() - .LeftJoin((a, b) => a.Id == b.TrackTemplateId) - .LeftJoin((a, b, c) => b.TrackContentId == c.Id) - .Where(a => distinctTemplateIds.Contains(a.Id)) - .OrderBy((a, b) => b.Sort) - .Select((a, b, c) => new TemplateContentOrderlyDto - { - TemplateId = a.Id, - Code = c.Code - }) - .ToListAsync(); - } - /// /// 获取轨迹模版明细 /// @@ -40,13 +24,13 @@ public class TrackTemplateRepository : BasicRepository, ITr .Where((a, b) => a.Id == id) .Select((a, b) => new GetTrackTemplateDetailVO - { - Id = a.Id, - Code = a.Code, - Name = a.Name, - SubSystemId = a.SubSystemId, - SubSystem = b.CnName - }).FirstAsync(); + { + Id = a.Id, + Code = a.Code, + Name = a.Name, + SubSystemId = a.SubSystemId, + SubSystem = b.CnName + }).FirstAsync(); return detail; } @@ -58,13 +42,14 @@ public class TrackTemplateRepository : BasicRepository, ITr /// public async Task> GetPageTrackTemplate(GetPageTrackTemplateVO input) { - UnifyPageResultDto pagedList = new UnifyPageResultDto(); - pagedList = await Context.Queryable() + UnifyPageResultDto pagedList = await Context.Queryable() .LeftJoin((a, b) => a.SubSystemId == b.Id) .WhereIF(input.SubSystemId > 0, (a, b) => a.SubSystemId == input.SubSystemId) .WhereIF(!input.Keywords.IsNullOrWhiteSpace(), (a, b) => a.Name.Contains(input.Keywords) || a.Code.Contains(input.Keywords)) - .OrderByIF(input.TrackTemplateId > 0, (a, b) => SqlFunc.IIF(a.Id == input.TrackTemplateId, SqlFunc.DateAdd(SqlFunc.GetDate(), 1), a.CreateTime), OrderByType.Desc) + .OrderByIF(input.TrackTemplateId > 0, + (a, b) => SqlFunc.IIF(a.Id == input.TrackTemplateId, SqlFunc.DateAdd(SqlFunc.GetDate(), 1), + a.CreateTime), OrderByType.Desc) .Select((a, b) => new GetTrackTemplateListVO { Id = a.Id, @@ -168,7 +153,8 @@ public class TrackTemplateRepository : BasicRepository, ITr .ExecuteCommandHasChangeAsync(); } - public async Task> GetContentListAsync(Expression> whereExpression) + public async Task> GetContentListAsync( + Expression> whereExpression) { return await Context.Queryable().Where(whereExpression).ToListAsync(); }