Merge remote-tracking branch 'origin/S01-轨迹中台' into S01-轨迹中台

This commit is contained in:
李鹏军 2024-03-01 09:39:50 +08:00
commit 4c7a94bfff
14 changed files with 278 additions and 47 deletions

View File

@ -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<OrderFligthInfo, OrderFlightEntity>(MemberList.None);
CreateMap<GetPageTrackOrderInput, GetPageTrackOrderInputVO>(MemberList.None);
CreateMap<TrackOrderVO, TrackOrderDto>(MemberList.None);
CreateMap<UnifyPageResultDto<TrackOrderVO>, UnifyPageResultDto<TrackOrderDto>>(MemberList.None);
}
}

View File

@ -3,8 +3,8 @@ 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 TrackPullAutoMapperProfile()
@ -15,4 +15,3 @@ namespace SJZY.Track.Application.AutoMapper
CreateMap<UpdateTrackPullContentInput, TrackPullContentConfigEntity>(MemberList.None);
}
}
}

View File

@ -0,0 +1,10 @@
using AutoMapper;
namespace SJZY.Track.Application.AutoMapper;
public class TrackPushAutoMapperProfile : Profile
{
public TrackPushAutoMapperProfile()
{
}
}

View File

@ -26,7 +26,7 @@ namespace SJZY.Track.Application.Dtos.ProvideServices
/// <summary>
/// 创建时间截止
/// </summary>
public DateTime? createTimeEnd { get; set; }
public DateTime? CreateTimeEnd { get; set; }
}
/// <summary>
@ -40,11 +40,63 @@ namespace SJZY.Track.Application.Dtos.ProvideServices
public int Id { get; set; }
/// <summary>
/// 订单类型
/// 订单类型id
/// </summary>
public string OrderType { get; set; }
public int OrderType { get; set; }
/// <summary>
/// 订单号
/// </summary>
public string? OrderNumber { get; set; }
public string OrderNumber { get; set; }
/// <summary>
/// 轨迹模版
/// </summary>
public string? TrackTemplateNames { get; set; }
/// <summary>
/// 客户简称
/// </summary>
public string? CustomerShortName { get; set; }
/// <summary>
/// 客户代码
/// </summary>
public string? CustomerCode { get; set; }
/// <summary>
/// 订单明细(json)
/// </summary>
public string? OrderDetails { get; set; }
/// <summary>
/// 最新轨迹内容
/// </summary>
public string? NewestTrackContent { get; set; }
/// <summary>
/// 最新轨迹内容英文
/// </summary>
public string? NewestTrackEnContent { get; set; }
/// <summary>
/// 最新轨迹发生地
/// </summary>
public string? NewestTrackPlace { get; set; }
/// <summary>
/// 是否完结
/// </summary>
public bool IsFinish { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime? CreateTime { get; set; }
/// <summary>
/// 子系统
/// </summary>
public string SubSystem { get; set; }
}
}

View File

@ -26,12 +26,12 @@ namespace SJZY.Track.Application.Dtos.TrackFlags
/// <summary>
/// 标记
/// </summary>
public string Flag { get; set; }
public string? Flag { get; set; }
/// <summary>
/// 代码
/// </summary>
public string Code { get; set; }
public string? Code { get; set; }
/// <summary>
/// 是否完结

View File

@ -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<UnifyPageResultDto<TrackOrderDto>> GetPageTrackOrder(GetPageTrackOrderInput input)
{
var vo = ObjectMapper.Map<GetPageTrackOrderInput, GetPageTrackOrderInputVO>(input);
var jj = await _orderRepository.GetPageTrackOrder(vo);
return null;
var pageList = await _orderRepository.GetPageTrackOrder(vo);
var pageResultDto = ObjectMapper.Map<UnifyPageResultDto<TrackOrderVO>, UnifyPageResultDto<TrackOrderDto>>(pageList);
return pageResultDto;
}
#endregion

View File

@ -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;

View File

@ -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;
/// <summary>
/// 轨迹推送
/// </summary>
[ApiExplorerSettings(GroupName = "轨迹推送")]
[Route("/Track/PushConfig")]
public class TrackPushService : ApplicationService, ITransientDependency
{
private readonly IStringLocalizer<TrackLocalizationResource> _stringLocalizer;
private readonly ITrackPushConfigRepository _trackPushConfigRepository;
public TrackPushService(
IStringLocalizer<TrackLocalizationResource> stringLocalizer,
ITrackPushConfigRepository trackPushConfigRepository)
{
_stringLocalizer = stringLocalizer;
_trackPushConfigRepository = trackPushConfigRepository;
}
/// <summary>
/// 轨迹推送配置列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("GetPage")]
public async Task<UnifyPageResultDto<GetTrackPushConfigPageOutputVO>> GetPageAsync([FromBody] KeywordsInputVO input)
{
return await _trackPushConfigRepository.GetPageAsync(input);
}
}

View File

@ -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<TrackPushConfigEntity>
{
Task<UnifyPageResultDto<GetTrackPushConfigPageOutputVO>> GetPageAsync(KeywordsInputVO input);
}

View File

@ -40,16 +40,63 @@ namespace SJZY.Track.Domain.Dtos.Order
public int Id { get; set; }
/// <summary>
/// 订单类型
/// 订单类型id
/// </summary>
public string OrderType { get; set; }
public int OrderType { get; set; }
public string OrderNumber { get; set; }
/// <summary>
/// 订单号
/// </summary>
public string? OrderNumber { get; set; }
/// <summary>
/// 轨迹模版
/// </summary>
public string TrackTemplateNames { get; set; }
public string? TrackTemplateNames { get; set; }
/// <summary>
/// 客户简称
/// </summary>
public string? CustomerShortName { get; set; }
/// <summary>
/// 客户代码
/// </summary>
public string? CustomerCode { get; set; }
/// <summary>
/// 订单明细(json)
/// </summary>
public string? OrderDetails { get; set; }
/// <summary>
/// 最新轨迹内容
/// </summary>
public string? NewestTrackContent { get; set; }
/// <summary>
/// 最新轨迹内容英文
/// </summary>
public string? NewestTrackEnContent { get; set; }
/// <summary>
/// 最新轨迹发生地
/// </summary>
public string? NewestTrackPlace { get; set; }
/// <summary>
/// 是否完结
/// </summary>
public bool IsFinish { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime? CreateTime { get; set; }
/// <summary>
/// 子系统
/// </summary>
public string SubSystem { get; set; }
}
}

View File

@ -7,7 +7,7 @@ public class GetTrackPullConfigPageOutputVO
/// </summary>
public DateTime? CreateTime { get; set; }
public int? Id { get; set; }
public int Id { get; set; }
/// <summary>
/// 服务商名称

View File

@ -0,0 +1,26 @@
namespace SJZY.Track.Domain.Dtos.TrackPush;
public class GetTrackPushConfigPageOutputVO
{
/// <summary>
/// 创建时间
/// </summary>
public DateTime? CreateTime { get; set; }
/// <summary>
/// 客户名称
/// </summary>
public string CustomName { get; set; }
public int Id { get; set; }
/// <summary>
/// 子系统名称
/// </summary>
public string SubSystem { get; set; }
/// <summary>
/// 模板名称
/// </summary>
public string TrackTemplate { get; set; }
}

View File

@ -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.Infrastructure.Repositories;
@ -81,29 +85,47 @@ public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, I
/// <returns></returns>
public async Task<UnifyPageResultDto<TrackOrderVO>> GetPageTrackOrder(GetPageTrackOrderInputVO input)
{
//await Context.Queryable<OrderEntity, OrderTemplateEntity>((a,b)= );
//await Context.Queryable<OrderEntity, OrderTemplateEntity>((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<OrderEntity>()
.LeftJoin<VExternalSubjectEntity>((a, b) => a.CustomId==b.Id)
.LeftJoin<VSystemEntity>((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<OrderTemplateEntity>()
.LeftJoin<TrackTemplateEntity>((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<OrderEntity>()
// .Includes(a => a.OrderTemplates)
// .Select(a => new TrackOrderVO
// {
// Id=a.Id,
// OrderNumber=a.OrderNo,
// TrackTemplateNames = SqlFunc.Subqueryable<OrderTemplateEntity>().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

View File

@ -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.Infrastructure.Repositories;
public class TrackPushConfigRepository : BasicRepository<TrackPushConfigEntity>, ITrackPushConfigRepository,
IScopedDependency
{
public async Task<UnifyPageResultDto<GetTrackPushConfigPageOutputVO>> GetPageAsync(KeywordsInputVO input)
{
return await AsQueryable()
.LeftJoin<VSystemEntity>((trackPush, system) => trackPush.SubSystemId == system.Id && !system.IsDeleted)
.LeftJoin<VExternalSubjectEntity>((trackPush, system, externalSubject) => trackPush.CustomId == externalSubject.Id && !externalSubject.IsDeleted)
.LeftJoin<TrackTemplateEntity>((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<TrackTemplateEntity>()
.Where(template => SqlFunc.SplitIn(trackPush.TrackTemplateId, template.Id.ToString()) && !template.IsDeleted)
.SelectStringJoin(template => template.Name, ","),
CreateTime = trackPush.CreateTime
})
.Distinct()
.ToPagedListAsync(input.PageIndex, input.PageSize);
}
}