From 159ac8b029010407c2e1bc8e672eb64dccf90fcf Mon Sep 17 00:00:00 2001 From: moyongzhen <2534173414@qq.com> Date: Thu, 29 Feb 2024 21:09:25 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E7=9A=84=E8=BD=A8=E8=BF=B9=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AutoMapper/OrderAutoMapperProfile.cs | 4 ++ .../ProvideServices/GetPageTrackOrderInput.cs | 60 ++++++++++++++++-- .../Services/ProvideServices/OrderService.cs | 9 +-- .../Dtos/Order/GetPageTrackOrderInputVO.cs | 57 +++++++++++++++-- src/SJZY.Track.Repository/OrderRepository.cs | 62 +++++++++++++------ 5 files changed, 159 insertions(+), 33 deletions(-) diff --git a/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs b/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs index fabc4fdd..a8d93386 100644 --- a/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs +++ b/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs @@ -1,7 +1,9 @@ using AutoMapper; +using AutoMapper.Internal.Mappers; using SJZY.Track.Application.Dtos.ProvideServices; using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Dtos.Order; +using System.Diagnostics; namespace SJZY.Track.Application.AutoMapper; @@ -18,5 +20,7 @@ public class OrderAutoMapperProfile : Profile CreateMap(MemberList.None); CreateMap(MemberList.None); + CreateMap(MemberList.None); + CreateMap, UnifyPageResultDto>(MemberList.None); } } \ No newline at end of file diff --git a/src/SJZY.Track.Application/Dtos/ProvideServices/GetPageTrackOrderInput.cs b/src/SJZY.Track.Application/Dtos/ProvideServices/GetPageTrackOrderInput.cs index 4709c862..06335e34 100644 --- a/src/SJZY.Track.Application/Dtos/ProvideServices/GetPageTrackOrderInput.cs +++ b/src/SJZY.Track.Application/Dtos/ProvideServices/GetPageTrackOrderInput.cs @@ -26,7 +26,7 @@ namespace SJZY.Track.Application.Dtos.ProvideServices /// /// 创建时间截止 /// - public DateTime? createTimeEnd { get; set; } + public DateTime? CreateTimeEnd { get; set; } } /// @@ -40,11 +40,63 @@ namespace SJZY.Track.Application.Dtos.ProvideServices public int Id { get; set; } /// - /// 订单类型 + /// 订单类型id /// - public string OrderType { get; set; } + public int OrderType { get; set; } + /// + /// 订单号 + /// + public string? OrderNumber { get; set; } - public string OrderNumber { get; set; } + /// + /// 轨迹模版 + /// + public string? TrackTemplateNames { get; set; } + + /// + /// 客户简称 + /// + public string? CustomerShortName { get; set; } + + /// + /// 客户代码 + /// + public string? CustomerCode { get; set; } + + /// + /// 订单明细(json) + /// + public string? OrderDetails { get; set; } + + /// + /// 最新轨迹内容 + /// + public string? NewestTrackContent { get; set; } + + /// + /// 最新轨迹内容英文 + /// + public string? NewestTrackEnContent { get; set; } + + /// + /// 最新轨迹发生地 + /// + public string? NewestTrackPlace { get; set; } + + /// + /// 是否完结 + /// + public bool IsFinish { get; set; } + + /// + /// 创建时间 + /// + public DateTime? CreateTime { get; set; } + + /// + /// 子系统 + /// + public string SubSystem { get; set; } } } diff --git a/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs b/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs index f75a8de9..8b6b8e19 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs @@ -1,4 +1,5 @@ -using SJZY.Track.Application.Dtos.ProvideServices; +using SJZY.Expand.ABP.Core.Common.Dto; +using SJZY.Track.Application.Dtos.ProvideServices; using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Dtos.Order; @@ -91,9 +92,9 @@ public class OrderService : ApplicationService public async Task> GetPageTrackOrder(GetPageTrackOrderInput input) { var vo = ObjectMapper.Map(input); - var jj = await _orderRepository.GetPageTrackOrder(vo); - - return null; + var pageList = await _orderRepository.GetPageTrackOrder(vo); + var pageResultDto = ObjectMapper.Map, UnifyPageResultDto>(pageList); + return pageResultDto; } #endregion diff --git a/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs b/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs index 5dcbafaf..c95fae3e 100644 --- a/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs +++ b/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs @@ -40,16 +40,63 @@ namespace SJZY.Track.Domain.Dtos.Order public int Id { get; set; } /// - /// 订单类型 + /// 订单类型id /// - public string OrderType { get; set; } + public int OrderType { get; set; } - - public string OrderNumber { get; set; } + /// + /// 订单号 + /// + public string? OrderNumber { get; set; } /// /// 轨迹模版 /// - public string TrackTemplateNames { get; set; } + public string? TrackTemplateNames { get; set; } + + /// + /// 客户简称 + /// + public string? CustomerShortName { get; set; } + + /// + /// 客户代码 + /// + public string? CustomerCode { get; set; } + + /// + /// 订单明细(json) + /// + public string? OrderDetails { get; set; } + + /// + /// 最新轨迹内容 + /// + public string? NewestTrackContent { get; set; } + + /// + /// 最新轨迹内容英文 + /// + public string? NewestTrackEnContent { get; set; } + + /// + /// 最新轨迹发生地 + /// + public string? NewestTrackPlace { get; set; } + + /// + /// 是否完结 + /// + public bool IsFinish { get; set; } + + /// + /// 创建时间 + /// + public DateTime? CreateTime { get; set; } + + /// + /// 子系统 + /// + public string SubSystem { get; set; } } } diff --git a/src/SJZY.Track.Repository/OrderRepository.cs b/src/SJZY.Track.Repository/OrderRepository.cs index c932f142..1d7ebfa2 100644 --- a/src/SJZY.Track.Repository/OrderRepository.cs +++ b/src/SJZY.Track.Repository/OrderRepository.cs @@ -1,6 +1,10 @@ -using SJZY.Track.Domain; +using Nest; +using SJZY.Track.Domain; using SJZY.Track.Domain.Aggregates.OrderAggregate; +using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate; using SJZY.Track.Domain.Dtos.Order; +using SJZY.Track.Domain.VEntities; +using SJZY.Track.Repository.VData.Entitys; namespace SJZY.Track.Repository; @@ -81,29 +85,47 @@ public class OrderRepository : BasicRepository, IOrderRepository, I /// public async Task> GetPageTrackOrder(GetPageTrackOrderInputVO input) { - //await Context.Queryable((a,b)= ); - //await Context.Queryable((a, b) => new JoinQueryInfos(JoinType.Left, a.Id==b.OrderId)) - // .GroupBy((a, b) => new { a.Id }) - // .Select((a, b) => new TrackOrderVO - // { - // Id=a.Id, - // OrderNumber=a.OrderNo, - // TrackTemplateNames = SqlFunc.AggregateConcat(b.) + var pageList = await Context.Queryable() + .LeftJoin((a, b) => a.CustomId==b.Id) + .LeftJoin((a, b, c) => a.SubSystemId==c.Id) + .Select((a, b, c) => new TrackOrderVO + { + Id = a.Id, + OrderNumber= a.OrderNo, + OrderType = a.OrderType, + CustomerShortName= b.Abbreviation, + CustomerCode= b.Code, + TrackTemplateNames = "", + OrderDetails="", + NewestTrackContent= a.LatestTrackContent, + NewestTrackEnContent= a.LatestTrackEnContent, + NewestTrackPlace= a.LatestTrackPlace, + IsFinish=a.IsCompleted, + CreateTime=a.CreateTime, + SubSystem= c.CnName + }) + .ToPagedListAsync(input.PageIndex, input.PageSize); + + if (pageList.List.Any()) + { + var orderIds = pageList.List.Select(a => a.Id); + //查询轨迹模版 - // }).ToPageListAsync(input.PageIndex, input.PageSize); + var trackTemplateList = await Context.Queryable() + .LeftJoin((a, b) => a.TrackTemplateId==b.Id) + .Where((a, b) => orderIds.Contains(a.OrderId)) + .Select((a, b) => new { OrderId = a.OrderId, Name = b.Name }) + .ToListAsync(); - //await Context.Queryable() - // .Includes(a => a.OrderTemplates) - // .Select(a => new TrackOrderVO - // { - // Id=a.Id, - // OrderNumber=a.OrderNo, - // TrackTemplateNames = SqlFunc.Subqueryable().Where(z=>z.OrderId==a.Id).SelectStringJoin(z=>z.) - // }) - // .ToPageListAsync(input.PageIndex, input.PageSize); + pageList.List.ForEach(a => + { + var templateListOfOrderId = trackTemplateList.Where(b => b.OrderId== a.Id); + a.TrackTemplateNames = templateListOfOrderId.Select(c => c.Name).JoinAsString(","); + }); + } - return null; + return pageList; } #endregion From 2998d69ed967eb3cde148a16ba3013dbd014c5e0 Mon Sep 17 00:00:00 2001 From: moyongzhen <2534173414@qq.com> Date: Fri, 1 Mar 2024 09:11:27 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=BD=A8=E8=BF=B9=E6=A0=87=E8=AE=B0?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E8=BE=93=E5=85=A5=E5=8F=82=E6=95=B0=EF=BC=8C?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2=E7=B1=BB=E5=9E=8B=E5=8A=A0=E4=B8=8A?= =?UTF-8?q?=20=3F=20=E5=8F=AF=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dtos/TrackFlags/EditTrackFlagInput.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SJZY.Track.Application/Dtos/TrackFlags/EditTrackFlagInput.cs b/src/SJZY.Track.Application/Dtos/TrackFlags/EditTrackFlagInput.cs index 05c9b56c..901f5e5a 100644 --- a/src/SJZY.Track.Application/Dtos/TrackFlags/EditTrackFlagInput.cs +++ b/src/SJZY.Track.Application/Dtos/TrackFlags/EditTrackFlagInput.cs @@ -26,12 +26,12 @@ namespace SJZY.Track.Application.Dtos.TrackFlags /// /// 标记 /// - public string Flag { get; set; } + public string? Flag { get; set; } /// /// 代码 /// - public string Code { get; set; } + public string? Code { get; set; } /// /// 是否完结 From c3886b1d8b45222930626d00ae3c1943b8942bfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9F=B3=E6=96=87=E7=BF=94?= <878130837@qq.com> Date: Fri, 1 Mar 2024 09:26:11 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=AE=8C=E6=88=90=20=E8=BD=A8=E8=BF=B9?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E9=85=8D=E7=BD=AE=E5=88=97=E8=A1=A8=20?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AutoMapper/TrackPullAutoMapperProfile.cs | 17 ++++----- .../AutoMapper/TrackPushAutoMapperProfile.cs | 10 +++++ .../Services/TrackPull/TrackPullService.cs | 1 - .../Services/TrackPush/TrackPushService.cs | 38 +++++++++++++++++++ .../ITrackPushConfigRepository.cs | 6 ++- .../GetTrackPullConfigPageOutputVO.cs | 2 +- .../GetTrackPushConfigPageOutputVO.cs | 26 +++++++++++++ .../TrackPushConfigRepository.cs | 29 ++++++++++++++ 8 files changed, 117 insertions(+), 12 deletions(-) create mode 100644 src/SJZY.Track.Application/AutoMapper/TrackPushAutoMapperProfile.cs create mode 100644 src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs create mode 100644 src/SJZY.Track.Domain/Dtos/TrackPush/GetTrackPushConfigPageOutputVO.cs diff --git a/src/SJZY.Track.Application/AutoMapper/TrackPullAutoMapperProfile.cs b/src/SJZY.Track.Application/AutoMapper/TrackPullAutoMapperProfile.cs index 3577eceb..da6207a5 100644 --- a/src/SJZY.Track.Application/AutoMapper/TrackPullAutoMapperProfile.cs +++ b/src/SJZY.Track.Application/AutoMapper/TrackPullAutoMapperProfile.cs @@ -3,16 +3,15 @@ using SJZY.Track.Application.Dtos.TrackPull; using SJZY.Track.Domain.Aggregates.TrackPullAggregate; using Volo.Abp.AutoMapper; -namespace SJZY.Track.Application.AutoMapper +namespace SJZY.Track.Application.AutoMapper; + +public class TrackPullAutoMapperProfile : Profile { - public class TrackPullAutoMapperProfile : Profile + public TrackPullAutoMapperProfile() { - public TrackPullAutoMapperProfile() - { - CreateMap(MemberList.None); - CreateMap(MemberList.None).Ignore(dest => dest.Id) - .ForMember(dest => dest.IsPush, opt => opt.MapFrom(source => false)); - CreateMap(MemberList.None); - } + CreateMap(MemberList.None); + CreateMap(MemberList.None).Ignore(dest => dest.Id) + .ForMember(dest => dest.IsPush, opt => opt.MapFrom(source => false)); + CreateMap(MemberList.None); } } \ No newline at end of file diff --git a/src/SJZY.Track.Application/AutoMapper/TrackPushAutoMapperProfile.cs b/src/SJZY.Track.Application/AutoMapper/TrackPushAutoMapperProfile.cs new file mode 100644 index 00000000..420b0e23 --- /dev/null +++ b/src/SJZY.Track.Application/AutoMapper/TrackPushAutoMapperProfile.cs @@ -0,0 +1,10 @@ +using AutoMapper; + +namespace SJZY.Track.Application.AutoMapper; + +public class TrackPushAutoMapperProfile : Profile +{ + public TrackPushAutoMapperProfile() + { + } +} \ No newline at end of file diff --git a/src/SJZY.Track.Application/Services/TrackPull/TrackPullService.cs b/src/SJZY.Track.Application/Services/TrackPull/TrackPullService.cs index f76abe50..fcd56e92 100644 --- a/src/SJZY.Track.Application/Services/TrackPull/TrackPullService.cs +++ b/src/SJZY.Track.Application/Services/TrackPull/TrackPullService.cs @@ -2,7 +2,6 @@ using SJZY.Expand.ABP.Core.Localization; using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.Track.Application.Dtos.TrackPull; -using SJZY.Track.Application.Dtos.TrackTemplates; using SJZY.Track.Application.Localization; using SJZY.Track.Domain.Aggregates.TrackPullAggregate; using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate; diff --git a/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs b/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs new file mode 100644 index 00000000..b04e1194 --- /dev/null +++ b/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs @@ -0,0 +1,38 @@ +using Microsoft.Extensions.Localization; +using SJZY.Track.Application.Localization; +using SJZY.Track.Domain.Aggregates.TrackPushAggregate; +using SJZY.Track.Domain.Dtos.Common; +using SJZY.Track.Domain.Dtos.TrackPush; +using Volo.Abp.DependencyInjection; + +namespace SJZY.Track.Application.Services.TrackPush; + +/// +/// 轨迹推送 +/// +[ApiExplorerSettings(GroupName = "轨迹推送")] +[Route("/Track/PushConfig")] +public class TrackPushService : ApplicationService, ITransientDependency +{ + private readonly IStringLocalizer _stringLocalizer; + private readonly ITrackPushConfigRepository _trackPushConfigRepository; + + public TrackPushService( + IStringLocalizer stringLocalizer, + ITrackPushConfigRepository trackPushConfigRepository) + { + _stringLocalizer = stringLocalizer; + _trackPushConfigRepository = trackPushConfigRepository; + } + + /// + /// 轨迹推送配置列表 + /// + /// + /// + [HttpPost("GetPage")] + public async Task> GetPageAsync([FromBody] KeywordsInputVO input) + { + return await _trackPushConfigRepository.GetPageAsync(input); + } +} \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushConfigRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushConfigRepository.cs index abceffa6..82866c1f 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushConfigRepository.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushConfigRepository.cs @@ -1,5 +1,9 @@ -namespace SJZY.Track.Domain.Aggregates.TrackPushAggregate; +using SJZY.Track.Domain.Dtos.Common; +using SJZY.Track.Domain.Dtos.TrackPush; + +namespace SJZY.Track.Domain.Aggregates.TrackPushAggregate; public interface ITrackPushConfigRepository : IBasicRepository { + Task> GetPageAsync(KeywordsInputVO input); } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Dtos/TrackPull/GetTrackPullConfigPageOutputVO.cs b/src/SJZY.Track.Domain/Dtos/TrackPull/GetTrackPullConfigPageOutputVO.cs index e45b7de8..15d25401 100644 --- a/src/SJZY.Track.Domain/Dtos/TrackPull/GetTrackPullConfigPageOutputVO.cs +++ b/src/SJZY.Track.Domain/Dtos/TrackPull/GetTrackPullConfigPageOutputVO.cs @@ -7,7 +7,7 @@ public class GetTrackPullConfigPageOutputVO /// public DateTime? CreateTime { get; set; } - public int? Id { get; set; } + public int Id { get; set; } /// /// 服务商名称 diff --git a/src/SJZY.Track.Domain/Dtos/TrackPush/GetTrackPushConfigPageOutputVO.cs b/src/SJZY.Track.Domain/Dtos/TrackPush/GetTrackPushConfigPageOutputVO.cs new file mode 100644 index 00000000..9b2e3a83 --- /dev/null +++ b/src/SJZY.Track.Domain/Dtos/TrackPush/GetTrackPushConfigPageOutputVO.cs @@ -0,0 +1,26 @@ +namespace SJZY.Track.Domain.Dtos.TrackPush; + +public class GetTrackPushConfigPageOutputVO +{ + /// + /// 创建时间 + /// + public DateTime? CreateTime { get; set; } + + /// + /// 客户名称 + /// + public string CustomName { get; set; } + + public int Id { get; set; } + + /// + /// 子系统名称 + /// + public string SubSystem { get; set; } + + /// + /// 模板名称 + /// + public string TrackTemplate { get; set; } +} \ No newline at end of file diff --git a/src/SJZY.Track.Repository/TrackPushConfigRepository.cs b/src/SJZY.Track.Repository/TrackPushConfigRepository.cs index 32c71905..a69f2406 100644 --- a/src/SJZY.Track.Repository/TrackPushConfigRepository.cs +++ b/src/SJZY.Track.Repository/TrackPushConfigRepository.cs @@ -1,8 +1,37 @@ using SJZY.Track.Domain.Aggregates.TrackPushAggregate; +using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate; +using SJZY.Track.Domain.Dtos.Common; +using SJZY.Track.Domain.Dtos.TrackPush; +using SJZY.Track.Domain.VEntities; +using SJZY.Track.Repository.VData.Entitys; namespace SJZY.Track.Repository; public class TrackPushConfigRepository : BasicRepository, ITrackPushConfigRepository, IScopedDependency { + public async Task> GetPageAsync(KeywordsInputVO input) + { + return await AsQueryable() + .LeftJoin((trackPush, system) => trackPush.SubSystemId == system.Id && !system.IsDeleted) + .LeftJoin((trackPush, system, externalSubject) => trackPush.CustomId == externalSubject.Id && !externalSubject.IsDeleted) + .LeftJoin((trackPush, system, externalSubject, template) => SqlFunc.SplitIn(trackPush.TrackTemplateId, template.Id.ToString()) && !template.IsDeleted) + .Filter(null, true) + .Where(trackPush => !trackPush.IsDeleted) + .WhereIF(input.SubSystemId.HasValue, trackPush => trackPush.SubSystemId == input.SubSystemId) + .WhereIF(!input.Keywords.IsNullOrWhiteSpace(), (trackPush, system, externalSubject, template) => externalSubject.Name.Contains(input.Keywords) || template.Name.Contains(input.Keywords)) + .OrderByDescending(trackPush => trackPush.CreateTime) + .Select((trackPush, system, externalSubject, template) => new GetTrackPushConfigPageOutputVO + { + Id = trackPush.Id, + SubSystem = system.CnName, + CustomName = externalSubject.Abbreviation, + TrackTemplate = SqlFunc.Subqueryable() + .Where(template => SqlFunc.SplitIn(trackPush.TrackTemplateId, template.Id.ToString()) && !template.IsDeleted) + .SelectStringJoin(template => template.Name, ","), + CreateTime = trackPush.CreateTime + }) + .Distinct() + .ToPagedListAsync(input.PageIndex, input.PageSize); + } } \ No newline at end of file