From ee05cc8cff6155541f4e108bf98a5cf47afcbfb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com> Date: Fri, 1 Mar 2024 11:53:29 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/SJZY.Track.Api/SjzyTrackApiModule.cs | 2 +- .../Dtos/ProvideServices/TrackUpsertEvent.cs | 6 ++ .../Services/ProvideServices/TrackCustomer.cs | 2 +- .../Services/ProvideServices/TrackService.cs | 1 + .../OrderAggregate/IOrderRepository.cs | 38 +++++--- .../OrderAggregate/OrderLinkEntity.cs | 13 +++ .../Repositories/OrderRepository.cs | 92 +++++++++++-------- .../SJZY.Track.Infrastructure.csproj | 1 + 8 files changed, 104 insertions(+), 51 deletions(-) create mode 100644 src/SJZY.Track.Application.Contract/Dtos/ProvideServices/TrackUpsertEvent.cs diff --git a/src/SJZY.Track.Api/SjzyTrackApiModule.cs b/src/SJZY.Track.Api/SjzyTrackApiModule.cs index 443495ce..102be9d7 100644 --- a/src/SJZY.Track.Api/SjzyTrackApiModule.cs +++ b/src/SJZY.Track.Api/SjzyTrackApiModule.cs @@ -37,6 +37,7 @@ namespace SJZY.Track.Api var environment = context.Services.GetHostingEnvironment(); var configuration = context.Services.GetConfiguration(); context.Services.AddSwagger(); + //过滤器相关配置 context.Services.AddMvc(options => { @@ -60,7 +61,6 @@ namespace SJZY.Track.Api Configure(options => options.OutputDateTimeFormat = "yyyy-MM-dd HH:mm:ss"); Configure(options => { options.IsEnabled = false; }); - context.Services.AddRedis(); } diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/TrackUpsertEvent.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/TrackUpsertEvent.cs new file mode 100644 index 00000000..b6f64a7a --- /dev/null +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/TrackUpsertEvent.cs @@ -0,0 +1,6 @@ +namespace SJZY.Track.Application.Contract.Dtos.ProvideServices; + +public class TrackUpsertEvent +{ + public int Order { get; set; } +} \ No newline at end of file diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackCustomer.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackCustomer.cs index d4c57f4c..9f722217 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackCustomer.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackCustomer.cs @@ -5,5 +5,5 @@ namespace SJZY.Track.Application.Services.ProvideServices; public class TrackCustomer : ITransientDependency, ICapSubscribe { - public const string CapSubscribe = "SJZY.FMC.VoucherRedundantCalc"; + public const string CapSubscribe = "SJZY.Track.Upsert"; } \ No newline at end of file diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs index a6a5f932..0210a0ac 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs @@ -81,6 +81,7 @@ public class TrackService : ApplicationService } // 根据订单关联关系向下刷,不同子系统还需要做内容映射 + var links = await _orderRepository.GetLinkedOrderIdsAsync(orderId); // 推送 return true; diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs index 93d162e2..136375c5 100644 --- a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs +++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs @@ -20,6 +20,30 @@ public interface IOrderRepository : IBasicRepository /// Task> GetPageTrackOrder(GetPageTrackOrderInputVO input); + /// + /// 更新订单 + /// + /// + /// + Task UpdateOrderAsync(OrderEntity order); + + /// + /// 删除订单 + /// + /// + /// + Task DeleteOrderAsync(int orderId); + + + #region 订单关联 + + /// + /// 根据订单id,获取关联的订单id集合 + /// + /// + /// + Task> GetLinkedOrderIdsAsync(int orderId); + /// /// 关联订单 /// @@ -34,17 +58,5 @@ public interface IOrderRepository : IBasicRepository /// Task UnLinkByIdsAsync(List linkIds); - /// - /// 更新订单 - /// - /// - /// - Task UpdateOrderAsync(OrderEntity order); - - /// - /// 删除订单 - /// - /// - /// - Task DeleteOrderAsync(int orderId); + #endregion } \ 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 112fc472..71231e99 100644 --- a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderLinkEntity.cs +++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderLinkEntity.cs @@ -12,6 +12,18 @@ public class OrderLinkEntity : ICreateBaicEntity, ISoftDeleteBasicEntity, IEntit [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)] public int Id { get; set; } + /// + /// 订单id + /// + [SugarColumn(ColumnName = "OrderId")] + public int OrderId { get; set; } + + /// + /// 关联的订单id + /// + [SugarColumn(ColumnName = "LinkOrderId")] + public int LinkOrderId { get; set; } + /// /// 订单类型 /// @@ -24,6 +36,7 @@ public class OrderLinkEntity : ICreateBaicEntity, ISoftDeleteBasicEntity, IEntit [SugarColumn(ColumnName = "OrderNo")] public string OrderNo { get; set; } = null!; + /// /// 关联的订单类型 /// diff --git a/src/SJZY.Track.Infrastructure/Repositories/OrderRepository.cs b/src/SJZY.Track.Infrastructure/Repositories/OrderRepository.cs index 2771e10c..7fb36b99 100644 --- a/src/SJZY.Track.Infrastructure/Repositories/OrderRepository.cs +++ b/src/SJZY.Track.Infrastructure/Repositories/OrderRepository.cs @@ -1,5 +1,4 @@ -using Nest; -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; @@ -18,16 +17,6 @@ public class OrderRepository : BasicRepository, IOrderRepository, I .ExecuteCommandAsync(); } - public async Task LinkOrderAsync(List orderLinkEntities) - { - await Context.Insertable(orderLinkEntities).ExecuteCommandAsync(); - } - - public async Task UnLinkByIdsAsync(List linkIds) - { - await Context.Deleteable(linkIds).ExecuteCommandAsync(); - } - public async Task UpdateOrderAsync(OrderEntity order) { using var tran = TransactionHelper.GetReadCommitted(); @@ -62,6 +51,29 @@ public class OrderRepository : BasicRepository, IOrderRepository, I tran.Complete(); } + #region 订单关联 + + public async Task> GetLinkedOrderIdsAsync(int orderId) + { + return await Context.Queryable() + .LeftJoin((a, b) => a.Id == b.OrderId) + .Where(a => a.Id == orderId) + .Select((a, b) => b.LinkOrderId) + .ToListAsync(); + } + + public async Task LinkOrderAsync(List orderLinkEntities) + { + await Context.Insertable(orderLinkEntities).ExecuteCommandAsync(); + } + + public async Task UnLinkByIdsAsync(List linkIds) + { + await Context.Deleteable(linkIds).ExecuteCommandAsync(); + } + + #endregion + #region 轨迹订单明细 /// @@ -86,31 +98,37 @@ public class OrderRepository : BasicRepository, IOrderRepository, I public async Task> GetPageTrackOrder(GetPageTrackOrderInputVO input) { var pageList = await Context.Queryable() - .LeftJoin((a, b) => a.CustomId==b.Id) - .LeftJoin((a, b, c) => a.SubSystemId==c.Id) - .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) - .Select((a, b, c) => new TrackOrderVO - { - Id = a.Id, - OrderNumber= a.OrderNo, - OrderType = a.OrderType, - CustomerShortName= b.Abbreviation, - CustomerCode= b.Code, - TrackTemplateNames = SqlFunc.Subqueryable().LeftJoin((aa, bb) => aa.TrackTemplateId==bb.Id) - .Where((aa, bb) => a.Id==aa.OrderId).SelectStringJoin((aa, bb) => bb.Name, ","), - NewestTrackContent= a.LatestTrackContent, - NewestTrackEnContent= a.LatestTrackEnContent, - NewestTrackPlace= a.LatestTrackPlace, - IsFinish=a.IsCompleted, - CreateTime=a.CreateTime, - SubSystem= c.CnName - }) - .ToPagedListAsync(input.PageIndex, input.PageSize); + .LeftJoin((a, b) => a.CustomId == b.Id) + .LeftJoin((a, b, c) => a.SubSystemId == c.Id) + .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) + .Select((a, b, c) => new TrackOrderVO + { + Id = a.Id, + OrderNumber = a.OrderNo, + OrderType = a.OrderType, + CustomerShortName = b.Abbreviation, + CustomerCode = b.Code, + TrackTemplateNames = SqlFunc.Subqueryable() + .LeftJoin((aa, bb) => aa.TrackTemplateId == bb.Id) + .Where((aa, bb) => a.Id == aa.OrderId).SelectStringJoin((aa, bb) => bb.Name, ","), + NewestTrackContent = a.LatestTrackContent, + NewestTrackEnContent = a.LatestTrackEnContent, + NewestTrackPlace = a.LatestTrackPlace, + IsFinish = a.IsCompleted, + CreateTime = a.CreateTime, + SubSystem = c.CnName + }) + .ToPagedListAsync(input.PageIndex, input.PageSize); + #region 暂时注释 + //if (pageList.List.Any()) //{ // var orderIds = pageList.List.Select(a => a.Id); @@ -129,7 +147,9 @@ public class OrderRepository : BasicRepository, IOrderRepository, I // a.TrackTemplateNames = templateListOfOrderId.Select(c => c.Name).JoinAsString(","); // }); //} + #endregion + return pageList; } diff --git a/src/SJZY.Track.Infrastructure/SJZY.Track.Infrastructure.csproj b/src/SJZY.Track.Infrastructure/SJZY.Track.Infrastructure.csproj index f9bee800..938fe9a1 100644 --- a/src/SJZY.Track.Infrastructure/SJZY.Track.Infrastructure.csproj +++ b/src/SJZY.Track.Infrastructure/SJZY.Track.Infrastructure.csproj @@ -4,6 +4,7 @@ net7.0 True preview + SJZY.Track.Repository From 6580831a4ad1425ae947e0ac420ec3601c81626b Mon Sep 17 00:00:00 2001 From: moyongzhen <2534173414@qq.com> Date: Fri, 1 Mar 2024 11:54:22 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=BD=A8=E8=BF=B9=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E8=AE=A2=E5=8D=95id=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ITrackDetailsRepository.cs | 1 + .../Repositories/TrackDetailsRepository.cs | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs index 444dd072..89d812a1 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs @@ -13,4 +13,5 @@ public interface ITrackDetailsRepository Task> GetListAsync(int orderType, List orderNos); Task<(List list, long total)> GetListAsync(TrackDetailsQueryInput input); + Task> GetListAsync(int orderId); } \ No newline at end of file diff --git a/src/SJZY.Track.Infrastructure/Repositories/TrackDetailsRepository.cs b/src/SJZY.Track.Infrastructure/Repositories/TrackDetailsRepository.cs index 2737c39d..c23a28fd 100644 --- a/src/SJZY.Track.Infrastructure/Repositories/TrackDetailsRepository.cs +++ b/src/SJZY.Track.Infrastructure/Repositories/TrackDetailsRepository.cs @@ -37,7 +37,7 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract(index.Id, u => u .Index(IndexName) .Doc(index) - //.Refresh(Refresh.True) // 可选:立即刷新索引使更改立即可见 + //.Refresh(Refresh.True) // 可选:立即刷新索引使更改立即可见 ); if (!response.IsValid) throw new Exception($"数据修改失败,原因:{response.DebugInformation}"); @@ -73,6 +73,21 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract> GetListAsync(int orderId) + { + var data = await Context.SearchAsync(x => x + .Source(s => s.Includes(fd => fd + .Field(f => f.TrackStatus) + .Field(f => f.TrackCode) + .Field(f => f.TrackContent) + .Field(f => f.TrackPlace) + .Field(f => f.TrackTime) + .Field(f => f.TraceTimeZone) + )).Query(q => q.Terms(t => t.Field(f => f.OrderId).Terms(orderId)))); + + return data?.Documents?.ToList(); + } + public async Task<(List list, long total)> GetListAsync(TrackDetailsQueryInput input) { if (input.OrderNos.Count < 1) return default; From a54f071769f720133534afe85df5c1b3fad93f4b 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 14:10:37 +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=86=85=E5=AE=B9=E8=AF=A6?= =?UTF-8?q?=E6=83=85=20=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/TrackPush/TrackPushService.cs | 11 ++++ .../ITrackPushConfigRepository.cs | 2 + .../GetTrackPushContentDetailOutputVO.cs | 61 +++++++++++++++++++ .../Repositories/TrackPushConfigRepository.cs | 13 ++++ 4 files changed, 87 insertions(+) create mode 100644 src/SJZY.Track.Domain/Dtos/TrackPush/GetTrackPushContentDetailOutputVO.cs diff --git a/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs b/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs index f303cc4c..a862e224 100644 --- a/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs +++ b/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs @@ -57,4 +57,15 @@ public class TrackPushService : ApplicationService, ITransientDependency { return await _trackPushConfigRepository.GetDetailAsync(id); } + + /// + /// 轨迹推送配置内容详情 + /// + /// + /// + [HttpGet("GetContentDetail")] + public async Task GetContentDetailAsync(int id) + { + return await _trackPushConfigRepository.GetContentDetailAsync(id); + } } \ 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 9050f090..39b19ad2 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushConfigRepository.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushConfigRepository.cs @@ -10,4 +10,6 @@ public interface ITrackPushConfigRepository : IBasicRepository> GetContentPageAsync(GetTrackPushContentPageInputVO input); Task GetDetailAsync(int id); + + Task GetContentDetailAsync(int id); } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Dtos/TrackPush/GetTrackPushContentDetailOutputVO.cs b/src/SJZY.Track.Domain/Dtos/TrackPush/GetTrackPushContentDetailOutputVO.cs new file mode 100644 index 00000000..2bad0d5a --- /dev/null +++ b/src/SJZY.Track.Domain/Dtos/TrackPush/GetTrackPushContentDetailOutputVO.cs @@ -0,0 +1,61 @@ +namespace SJZY.Track.Domain.Dtos.TrackPush; + +public class GetTrackPushContentDetailOutputVO +{ + /// + /// 轨迹内容代码 + /// + public string Code { get; set; } + + /// + /// 推送扩展字段 + /// + public string ExpandFieldsValue { get; set; } + + public int Id { get; set; } + + /// + /// 推送单号类型 + /// + public int OrderNoType { get; set; } + + /// + /// 推送轨迹排序 + /// + public int Sort { get; set; } + + /// + /// 推送轨迹内容代码 + /// + public string TrackContentCodeValue { get; set; } + + /// + /// 轨迹内容id + /// + public int TrackContentId { get; set; } + + /// + /// 推送轨迹内容 + /// + public string TrackContentValue { get; set; } + + /// + /// 推送轨迹内容英文 + /// + public string TrackEnContentValue { get; set; } + + /// + /// 轨迹推送配置id + /// + public int TrackPullConfigId { get; set; } + + /// + /// 推送轨迹状态 + /// + public string TrackStatusValue { get; set; } + + /// + /// 推送轨迹时区 + /// + public string TrackTimeZone { get; set; } +} \ No newline at end of file diff --git a/src/SJZY.Track.Infrastructure/Repositories/TrackPushConfigRepository.cs b/src/SJZY.Track.Infrastructure/Repositories/TrackPushConfigRepository.cs index d5180da1..d1ce352b 100644 --- a/src/SJZY.Track.Infrastructure/Repositories/TrackPushConfigRepository.cs +++ b/src/SJZY.Track.Infrastructure/Repositories/TrackPushConfigRepository.cs @@ -69,4 +69,17 @@ public class TrackPushConfigRepository : BasicRepository, }, true) .SingleAsync(); } + + public async Task GetContentDetailAsync(int id) + { + return await Context.Queryable() + .InnerJoin((pushContent, trackContent) => pushContent.TrackContentId == trackContent.Id) + .Where(pushContent => pushContent.Id == id) + .Select((pushContent, trackContent) => new GetTrackPushContentDetailOutputVO + { + Id = pushContent.Id, + Code = trackContent.Code + "-" + trackContent.Content, + }, true) + .SingleAsync(); + } } \ No newline at end of file